tcpdump mailing list archives

Re: pcap_inject troubleshooting


From: Guy Harris <guy () alum mit edu>
Date: Mon, 12 Jan 2009 20:51:14 -0800


On Jan 12, 2009, at 8:44 PM, David Murray wrote:

I am writing an application using the libpcap library that is capable of caching and replaying frames. I originally wrote and tested this program using a embedded ALIX system that runs a 500Mhz Geode processor. I felt that the slow performance of this CPU was causing a few problems so I decided to try it out on a proper desktop PC. However, I am having problems with the pcap_inject function. While the other functions appear to work fine, pcap_inject is returning the error ?send: message too long?. The function also returns -1.

By printing out the packet size I know that this frame is 1552 bytes which is higher than the end-to-end MTU of 1500 bytes. However, this is also confusing, because when I run the same code on my embedded machine, which works, the packet size also appears to be 1552 bytes. The embedded machine is running a Debian variant called Voyage Linux whereas the Desktops I have tried this code on are running Ubuntu Intrepid. I have tried two IBM and Dell desktops and a range of wired NICs. Maybe a key difference between the two systems is that on the embedded system, packet injection occurs over a Atheros WiFi interface whereas on the desktops packet injection occurs over the Wired NIC.

I'm assuming your wired NICs are Ethernet NICs; the maximum payload size for Ethernet is 1500 bytes.

The maximum payload size for IEEE 802.11 is 2304 bytes, at least according to IEEE 802.11-1999:

        6.2.1.1.2 Semantics of the service primitive

                ...

The data parameter specifies the MSDU to be transmitted by the MAC sublayer entity. For IEEE 802.11, the
length of the MSDU must be less than or equal to 2304 octets.

1500 < 1552 < 2304.

-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.


Current thread: