Subject: kern/10195: fxp0 (and possibly tlp0 and others) corrupt raw IP packets
To: None <gnats-bugs@gnats.netbsd.org>
From: None <chopps@merit.edu>
List: netbsd-bugs
Date: 05/24/2000 12:26:13
>Number:         10195
>Category:       kern
>Synopsis:       fxp0 (and possibly tlp0 and others) corrupt raw IP packets
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed May 24 12:27:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Christian E. Hopps
>Release:        May 7, 2000
>Organization:
	None
>Environment:
	
System: NetBSD defoe 1.4Y NetBSD 1.4Y (GATED) #13: Wed May 24 14:51:22 EDT 2000     chopps@sulfur:/usr/src/sys/arch/i386/compile/GATED i386

>Description:
	The ip_len field of a raw-IP packet that is comprised of at least
	2 mbufs in a chain is being byte-swapped, at least on i386, back
	into host order.  This byte-swap occurs sometime after queueing it
	on the actual interface output queue.  This was verified by examining
	the ip_len field in the mbuf immediately prior and after queueing in
	ether_output().

	Note: packets sent e.g., on SOCK_DRAM do not seem to be corrupted
	and also packets sent non-broadcast do not seem to be corrupted.

	The DGRAM case was not fully investigated.. It could be that
	for packets sent on a DGRAM socket different mbufs chaining occurs.

>How-To-Repeat:

	non-corrupting version:
		ping -n <broadcast>

	corrupting version:
		pin -s 144 -n <broadcast>

	The payload size of 144 forces the packet to be created with
	an mbuf chain instead of a single mbuf.

>Fix:

	Uknown.
>Release-Note:
>Audit-Trail:
>Unformatted: