diff options
Diffstat (limited to 'dhcpv4/nclient4/conn_linux.go')
-rw-r--r-- | dhcpv4/nclient4/conn_linux.go | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/dhcpv4/nclient4/conn_linux.go b/dhcpv4/nclient4/conn_linux.go index af6485f..064e6ca 100644 --- a/dhcpv4/nclient4/conn_linux.go +++ b/dhcpv4/nclient4/conn_linux.go @@ -10,13 +10,10 @@ import ( "fmt" "io" "net" - "os" - "github.com/insomniacslk/dhcp/dhcpv4" "github.com/mdlayher/ethernet" "github.com/mdlayher/raw" "github.com/u-root/u-root/pkg/uio" - "golang.org/x/sys/unix" ) var ( @@ -26,41 +23,6 @@ var ( BroadcastMac = net.HardwareAddr([]byte{255, 255, 255, 255, 255, 255}) ) -// NewIPv4UDPConn returns a UDP connection bound to both the interface and port -// given based on a IPv4 DGRAM socket. The UDP connection allows broadcasting. -// -// The interface must already be configured. -func NewIPv4UDPConn(iface string, port int) (net.PacketConn, error) { - fd, err := unix.Socket(unix.AF_INET, unix.SOCK_DGRAM, unix.IPPROTO_UDP) - if err != nil { - return nil, fmt.Errorf("cannot get a UDP socket: %v", err) - } - f := os.NewFile(uintptr(fd), "") - // net.FilePacketConn dups the FD, so we have to close this in any case. - defer f.Close() - - // Allow broadcasting. - if err := unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_BROADCAST, 1); err != nil { - return nil, fmt.Errorf("cannot set broadcasting on socket: %v", err) - } - // Allow reusing the addr to aid debugging. - if err := unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1); err != nil { - return nil, fmt.Errorf("cannot set reuseaddr on socket: %v", err) - } - if len(iface) != 0 { - // Bind directly to the interface. - if err := dhcpv4.BindToInterface(fd, iface); err != nil { - return nil, fmt.Errorf("cannot bind to interface %s: %v", iface, err) - } - } - // Bind to the port. - if err := unix.Bind(fd, &unix.SockaddrInet4{Port: port}); err != nil { - return nil, fmt.Errorf("cannot bind to port %d: %v", port, err) - } - - return net.FilePacketConn(f) -} - // NewRawUDPConn returns a UDP connection bound to the interface and port // given based on a raw packet socket. All packets are broadcasted. // |