Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Feb 2011 00:17:52 -0800
From:      Julian Elischer <julian@freebsd.org>
To:        Da Rock <freebsd-hackers@herveybayaustralia.com.au>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: linux PF_PACKET compatibility
Message-ID:  <4D54F0B0.7010503@freebsd.org>
In-Reply-To: <4D54E39D.1000505@herveybayaustralia.com.au>
References:  <4D54E39D.1000505@herveybayaustralia.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help
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.


>
> 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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to 
> "freebsd-hackers-unsubscribe@freebsd.org"
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D54F0B0.7010503>