SO_BINDTODEVICE or equivalent?
Svatopluk Kraus
onwahe at gmail.com
Thu Apr 19 09:32:21 UTC 2012
Hi,
Use IP_RECVIF option.
For IP_SENDIF look at
http://lists.freebsd.org/pipermail/freebsd-net/2007-March/013510.html
I used the patch on my embedded FreeBSD 9.0 boxes and it works fine. I
modificated it slightly to match 9.0.
Svata
On Thu, Apr 19, 2012 at 7:41 AM, Attila Nagy <bra at fsn.hu> wrote:
>
> Hi,
> I want to solve the classic problem of a DHCP server: listening for
> broadcast UDP packets and figuring out what interface a packet has
> come in.
> The Linux solution is SO_BINDTODEVICE, which according to socket(7):
> SO_BINDTODEVICE
> Bind this socket to a particular device like "eth0", as
> specified in the passed interface name. If the name is an empty
> string or the option length is zero, the socket device binding
> is removed. The passed option is a variable-length
> null-terminated interface name string with the maximum size of
> IFNAMSIZ. If a socket is bound to an interface, only packets
> received from that particular interface are processed by the
> socket. Note that this only works for some socket types,
> particularly AF_INET sockets. It is not supported for packet
> sockets (use normal [1]bind(2) there).
>
> This makes it possible to listen on selected interfaces for
> (broadcast) packets. FreeBSD currently doesn't implement this feature.
> Any chances that somebody will do this?
> What alternatives would you recommend? Raw packet access (like BPF and
> RAW sockets) finally make the application to do more -mainly useless-
> work.
> Are there any other solutions, which doesn't require additional packet
> parsing?
> Thanks,
>
> References
>
> 1. http://linux.die.net/man/2/bind
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
More information about the freebsd-net
mailing list