pst@anise.acc.com (Paul Traina) (09/23/89)
While working on our IP router, I came across two problems with A/UX's networking code. (a) ICMP echo packets with an odd length do not give the right checksum. Reproduce by: ping some.host.dom 30 works properly ping some.host.dom 31 produces no response. The remote host registers an invalid ICMP checksum. This checksum is always off by 1ED2 from the proper value. (b) IP frames going out over Ethernet are padded to a 16-bit boundary. This means that if I send out an odd-length TCP/IP packet, the last octet of the packet will be a zero (null), and the IP packet length field will include only the valid data (it won't count the null). It turns out that the Berkeley TCP/IP code will trim mbufs and ignore any padding after the valid IP data. Unfortunately, the router software I was using was much more strict on sanity checking and it dropped the packet because the length reported in the header was "incorrect." I'm not sure that this is *really* a bug, as an IMP talking 1822 will do nasty things like this too. If it can be fixed, please fix it. In the mean time, We've changed the router code to be less anally retentive when it comes to dealing with packets of an invalid length. -- The difference between this school and a cactus plant is that the cactus has the pricks on the outside.