[comp.unix.aux] two A/UX tcp/ip bugs

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.