linux PF_PACKET compatibility

Julian Elischer julian at freebsd.org
Fri Feb 11 16:37:23 UTC 2011


On 2/11/11 1:36 AM, Da Rock wrote:
> On 02/11/11 18:17, Julian Elischer wrote:
>> On 2/10/11 11:22 PM, Da Rock wrote:
>>> "In recent versions of the Linux kernel (post-2.0 releases) a new 
>>> protocol family has been introduced, named PF_PACKET. This family 
>>> allows an application to send and receive packets dealing directly 
>>> with the network card driver, thus avoiding the usual protocol 
>>> stack-handling (e.g., IP/TCP or IP/UDP processing). That is, any 
>>> packet sent through the socket will be directly passed to the 
>>> Ethernet interface, and any packet received through the interface 
>>> will be directly passed to the application."
>>>
>>> I've been chasing the answer to a FreeBSD version of this (approx. 
>>> anyway), but I needed to find out what exactly PF_PACKET was 
>>> first. Finally found this answer here: 
>>> http://www.linuxjournal.com/article/4659
>>>
>>> I looked up man socket and I can see possibilities (in my mind 
>>> anyway), but I thought I'd be best to check if the gurus here 
>>> might have a better idea. My reason for this is I'm attempting to 
>>> build l2tpns (which supposedly builds on 7.3?! with no trouble), 
>>> and I'm chasing the errors which appear to be linuxisms mostly.
>>>
>>> So in man socket simply looking at the list of protocol families 
>>> I'd say network driver level would be similar to PF_LINK link 
>>> layer interface? Is there another man page I should be looking at 
>>> as well?
>>
>> We don't have an exact equivalent.. but we have ways of doing the 
>> same  thing.
>> one way that is suggested is to use pcap and bpf which I am pretty 
>> certain has been enhanced to allow sending as
>> well as receiving.
>> you can also hook directly to the interface using netgraph(4)
>> there are other ways too but those are the two that came to mind 
>> immediately.
> So I'm going to have to rewrite that interface entirely? Bugger! I 
> just can't fathom how this howto could even exist for l2tpns on 
> FreeBSD if it isn't even close to buildable... weird!
>
> http://kuapp.com/2010/07/14/how-to-setup-l2tpipsec-vpn-on-freebsd.html
>
> Thanks guys. I'll probably come back with more problems as I slowly 
> crack this one... :)


nothing in that page needs to talk to the network interface 
directly... what do you think does?



>>
>>
>>>
>>> FWIW my gmake output is this:
>>>
>>> gcc -Wall -Wformat-security -Wno-format-zero-length  -g -O3 -I. 
>>> -I/usr/include -I/usr/local/include  -DLIBDIR='"/lib/l2tpns"' 
>>> -DETCDIR='"/etc/l2tpns"' -DSTATISTICS -DSTAT_CALLS -DRINGBUFFER 
>>> -DHAVE_EPOLL -DBGP -c -o arp.o arp.c
>>> arp.c: In function 'sendarp':
>>> arp.c:34: error: storage size of 'sll' isn't known
>>> arp.c:59: error: 'PF_PACKET' undeclared (first use in this function)
>>> arp.c:59: error: (Each undeclared identifier is reported only once
>>> arp.c:59: error: for each function it appears in.)
>>> arp.c:62: error: 'AF_PACKET' undeclared (first use in this function)
>>> arp.c:34: warning: unused variable 'sll'
>>> gmake: *** [arp.o] Error 1
>>>
>>> I posted this over at -questions@ but it was suggested to try here 
>>> instead (or -net@). I figured this would be the best place to 
>>> start... :)
>>>
>>> Cheers
>>> _______________________________________________
>>> freebsd-hackers at freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>> To unsubscribe, send any mail to 
>>> "freebsd-hackers-unsubscribe at freebsd.org"
>>>
>>
>
>



More information about the freebsd-hackers mailing list