Ethereal-users: Re: [Ethereal-users] OT: How does ethereal/libpcap determine the layer 3 type?
On Wednesday, September 3, 2003, at 7:02 AM, darren wrote:
I can understand that libpcap inserts the LCS header in front if it
gets a
new ARP type that does not match its list...just wondering which
command is
it exactly that libpcap use to fetch the L3 protocol type from the
kernel
network stack?
"recvfrom()". Conveniently, that's the same call it uses to fetch the
packet data; on a PF_PACKET socket, the "from" address returned by
"recvfrom()" is a "struct sockaddr_ll" that contains, among other
things, a "Physical layer protocol" value that's an Ethernet type value
for most packets, or a special value for Ethernet packets with 802.2
headers or with raw IPX-over-802.3.
See the "packet(7)" man page.
Any reason why my card driver strips the L2 header away when I specify
the
encapsulation type?
I don't know for certain, but it could be that the driver writer had no
clue what "mac.raw" is for in a skbuff structure. Drivers *SHOULD* be
setting "mac.raw" to point to the beginning of the raw packet data, but
perhaps some driver writers Don't Get It and set it to point to the
encapsulated data.
What type of card is this? (Vendor name.) And what driver does it use?