Binding sockets to devices in FreeBSD

Andreas T andreto at olsr.org
Thu Feb 19 01:55:15 PST 2004


Hi all,

I am developing an implementation of the Optimized LinkState Routing 
protocol(RFC3626) for Linux(www.olsr.org). OLSR is a routing protocol 
for mobile, multihop, wireless ad-hoc networks.

I would really like to have my code compile on FreeBSD - but there is 
one major issue.

OLSR sends control traffic broadcasted(IPv4) or multicasted(IPv6) on a 
pr.interface basis. That means that a node running OLSR on two 
interfaces a and b, would not always broadcast the same content in 
messages sent on a and b. This works fine using IPv4 and broadcast as 
long as the interfaces uses different broadcast addresses - but as soon 
as two interfaces is set up with the same broadcastaddress(or as soon as 
one uses IPv6 with the same multicastgroup) any message (sent on the 
broadcastsocket) will be transmitted on both interfaces.
I hope this made some sense :)

Bottom line is that one has to be able to control on which interface 
packets are sent. To do this in Linux i use the SO_BINDTODEVICE 
flag(with setsockopt(2)). That way I can have one socket for each 
interface OLSR is to use regradless of destinationaddress.

In FreeBSD there is no SO_BINDTODEVICE or equalivant as far as I can 
see. To me it seems like BPF could provide the functioning I need. Is 
this so? Can BPF in some way help me control on which interface packets 
are transmitted?
If so I would really appreciate some (pseudo or real)code examples to 
get me started or some links to such material - as I am totally new to 
the BPF interface(and the concept).

If BPF is not the way to go I would appreciate any help in finding a way 
of doing this in FreeBSD.

I could ofcause try to figure this out by myself - but as FreeBSD 
porting is not too high prioritized for now I figured I'd rather be lazy 
and ask you experts :)


Thanks!

regards,
Andreas T

-- 
Andreas Tønnesen(andreas at olsr.org)
UniK University Graduation Center
University of Oslo
http://www.olsr.org



More information about the freebsd-net mailing list