From owner-freebsd-hackers Thu May 18 15:55:05 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id PAA24500 for hackers-outgoing; Thu, 18 May 1995 15:55:05 -0700 Received: from haywire.DIALix.COM (peter@haywire.DIALix.COM [192.203.228.65]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id PAA24489 for ; Thu, 18 May 1995 15:55:00 -0700 Received: (from peter@localhost) by haywire.DIALix.COM (8.6.12/8.6.12/DIALix) id GAA27348; Fri, 19 May 1995 06:54:51 +0800 Date: Fri, 19 May 1995 06:54:49 +0800 (WST) From: Peter Wemm To: hackers@FreeBSD.org Subject: Hmm. _really wierd_. Packets going out wrong interface... Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: hackers-owner@FreeBSD.org Precedence: bulk Something really wierd is going on.. When the system is choosing which interface a packet has to go out on, something is getting crossed over somewhere. Scenario: super small C-class subnet, 192.203.228.64 -> 192.203.228.79. .79 is broadcast address. .65 is haywire, .69 is jhome. Original config: haywire (SVR4, lachman tcp) ethernet at .65, netmask 0xfffffff0, and has a ppp link .65 -> .3, netmask also 0xfffffff0. This represents no problem, as all lookups that deal with IFF_POINTTOPOINT interfaces compare the destination address with the value being looked up. This prevents the need for large numbers of IP addresses for the server with lots of ppp/slip connections. it works reliably and deterministically. I tried that with a FreeBSD machine.. whooo.. that turned out to be interesting. I fired up the PPP link on jhome, .69 -> .3 with the same netmask, 0xfffffff0. I've been trying to figure out where the hell the broadcasts have gone. Talk about surprise.. The broadcasts destined for the local ethernet went out the PPP link! (so says tcpdump anyway..) It appears that even though the networking code goes to *great* lengths to make sure that destination address is the only one that counts on P2P links, there's still one or two left that are using (localaddr & netmask). So.. after killing and restarting gated, I then got: Data modified on freelist: word 0 of object 0xf0733c80 size 36 previous type in_multi (0xf066d440 != 0xdeadc0de) And.. I was just about to write that rwhod is broadcasting to the local ethernet to confuse the issue, I discover that it's currently going over the ppp link too... I was sure that it was going to ethernet before, but that might have been before I started messing with ifconfig. pinging the ethernet broadcast address yields a response from the ethernet hosts as expected (even though it's not got SO_BROADCAST set).. but things that DO have SO_BROADCAST seem to go out on the non-broadcast ppp link.. Real strange... The thought occurred that it might be an idea to try using the remote subnet for both addresses.. (ie: .3 -> .8 and vice versa), but that wont work when (if) the other end becomes a freebsd machine, because the remote end wont be able to broadcast to it's ethernet.. Puzzled.. -Peter