4.2 ip source route bug?

Bob Walsh walsh at bbn-labs-b
Fri Jan 25 00:24:16 AEST 1985


The distributed 4.2 source routing is not properly done.  A source
routed packet looks like:

	IP header
			dst	128.11.1.1
	---------------------------------------
	IP options
				8.7.0.2
				9.9.9.9  <-
				192.23.2.1

The if_ifwithaddr() check should see if the IP header destination field
is on the current host.  It improperly checks to see if the next hop is
the current host.  It should:

		Is the current host 128.11.1.1 => if_ifwithaddr(128.11.1.1)

No, and strict source routing => ICMP error message
No, and loose source routing  => forward packet

Yes.  IP dst gets 9.9.9.9.  Store outgoing interface where 9.9.9.9 was.
Bump option pointer up by sizeof(struct in_addr).  If we're not on the
network of the new destination and it's a strictly source routed packet,
then generate an ICMP error message.  Otherwise, forward it.


bob walsh



More information about the Comp.unix.wizards mailing list