//go:build freebsd || openbsd
// +build freebsd openbsd

package dhcpd

import (
	"net"
)

// broadcast sends resp to the broadcast address specific for network interface.
func (c *dhcpConn) broadcast(respData []byte, peer *net.UDPAddr) (n int, err error) {
	// Despite the fact that server4.NewIPv4UDPConn explicitly sets socket
	// options to allow broadcasting, it also binds the connection to a
	// specific interface.  On FreeBSD and OpenBSD net.UDPConn.WriteTo
	// causes errors while writing to the addresses that belong to another
	// interface.  So, use the broadcast address specific for the interface
	// bound.
	peer.IP = c.bcastIP

	return c.udpConn.WriteTo(respData, peer)
}