Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build-scoping issue in dhcpv4/nclient4/conn_unix.go (also: BSD support for nclient4) #526

Open
vista- opened this issue Mar 11, 2024 · 1 comment

Comments

@vista-
Copy link

vista- commented Mar 11, 2024

Hey folks,

I recently ran into an issue trying to build code that imports nclient4 on macOS/BSD-likes:

% GOOS=freebsd go build .
../../go/pkg/mod/github.com/insomniacslk/dhcp@v0.0.0-20240227161007-c728f5dd21c8/dhcpv4/nclient4/conn_unix.go:42:59: undefined: unix.ETH_P_IP

rawConn, err := packet.Listen(ifc, packet.Datagram, unix.ETH_P_IP, nil)

Upon looking this symbol up, I found that it is build-scoped to Linux platforms only: https://cs.opensource.google/go/x/sys/+/master:unix/zerrors_linux.go;drc=5710a32031f3498e357d801987a07d9638c4fa11;l=1091

which kind of conflicts with the build-scoping of the file itself:

// +build darwin freebsd linux netbsd openbsd dragonfly

Would it be possible to move this specific function into a Linux build-scoped file?

To give you some context: I'm working on a multi-platform DHCP "swiss knife", and I added support for BSD-likes in my code using the (now deprecated) github.com/mdlayher/raw module that you migrated off of. I couldn't find anything like it, and it seems like those wanting to use raw BSD network sockets are stuck with it for now.

If you folks happen to be interested in this code even with this caveat, please let me know and I'll work on "upstreaming" BSD support for the DHCPv4 client. :)

@hugelgupf
Copy link
Collaborator

I'm for it - both the Linux specific thing and upstreaming

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants