SO_BINDTODEVICE or equivalent?

Attila Nagy bra at fsn.hu
Fri Apr 20 12:53:25 UTC 2012


Hi,

Never heard of it, thanks!

On 04/19/12 11:32, Svatopluk Kraus wrote:
> 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



More information about the freebsd-net mailing list