Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site brl-tgr.ARPA Path: utzoo!watmath!clyde!burl!ulysses!allegra!bellcore!decvax!genrad!teddy!panda!talcott!harvard!seismo!brl-tgr!tgr!walsh@bbn-labs-b From: Bob Walsh Newsgroups: net.unix-wizards Subject: Re: 4.2 ip source route bug? Message-ID: <7672@brl-tgr.ARPA> Date: Thu, 24-Jan-85 09:24:16 EST Article-I.D.: brl-tgr.7672 Posted: Thu Jan 24 09:24:16 1985 Date-Received: Mon, 28-Jan-85 06:57:37 EST Sender: news@brl-tgr.ARPA Organization: Ballistic Research Lab Lines: 28 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