Date: Tue, 7 Jul 1998 14:58:02 +0000 From: Samuel S Thomas <sthomas@lart.net> To: dg@root.com Cc: Poul-Henning Kamp <phk@critter.freebsd.dk>, freebsd-bugs@FreeBSD.ORG Subject: Re: kern/7191: FreeBSD 2.2.6 generates Source-route prohibited when not routing Message-ID: <19980707145802.D1918@lart.net> In-Reply-To: <199807071414.HAA24496@implode.root.com>; from David Greenman on Tue, Jul 07, 1998 at 07:14:33AM -0700 References: <19980707130918.F13836@lart.net> <199807071414.HAA24496@implode.root.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> It is probably a bug that source route IP options are processed at all > when a machine isn't configured for IP forwarding. While fixing this would > supress your warnings, it wouldn't fix the real problem which is why the > machine is seeing the packets in the first place. This is exactly my point. This is mentioned fairly clearly in rfc1122, also. I will agree to work with the PAO people on determining how those packets are getting to the IP layer without being discarded by the interface, so long as you core kernel-hacker types agree that the kernel should know whether or not it's routing, and check IP src/dst addresses accordingly. Fair enough? There does appear to be a check in their if_ep.c, though... I'll be the first to admit that my C hacking skills have gone unused for the past 3 years, and are a bit rusty in deference to my TCP/IP and routing skills, but it seems to me that this code should work as advertised. I'll need to kill a tree to get much deeper into it, though. #if NBPFILTER > 0 if (ifp->if_bpf) { bpf_mtap(ifp, top); /* * Note that the interface cannot be in promiscuous mode if there are * no BPF listeners. And if we are in promiscuous mode, we have to * check if this packet is really ours. */ eh = mtod(top, struct ether_header *); if ((ifp->if_flags & IFF_PROMISC) && (eh->ether_dhost[0] & 1) == 0 && bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, sizeof(eh->ether_dhost)) != 0 && bcmp(eh->ether_dhost, etherbroadcastaddr, sizeof(eh->ether_dhost)) != 0) { if (sc->top) { m_freem(sc->top); sc->top = 0; } ep_fset(F_RX_FIRST); #ifdef EP_LOCAL_STATS sc->rx_bpf_disc++; #endif while (inw(BASE + EP_STATUS) & S_COMMAND_IN_PROGRESS); outw(BASE + EP_COMMAND, SET_RX_EARLY_THRESH | RX_INIT_EARLY_THRESH); return; } } #endif To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980707145802.D1918>