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