Date: Tue, 08 Jul 1997 15:32:17 +0800 From: Peter Wemm <peter@spinner.dialix.com.au> To: Bill Fenner <fenner@parc.xerox.com> Cc: Julian Elischer <julian@FreeBSD.ORG>, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-sys@FreeBSD.ORG, wollman@FreeBSD.ORG Subject: Re: cvs commit: src/sys/net if.c Message-ID: <199707080732.PAA29282@spinner.dialix.com.au> In-Reply-To: Your message of "Mon, 07 Jul 1997 18:43:43 PDT." <97Jul7.184349pdt.177512@crevenia.parc.xerox.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Bill Fenner wrote:
> This should have been a 3-line fix. I don't understand why you chose
> to restructure the first section of code; it has now lost its
> parallelism with the next place that looks for a multicast address on
> the list.
>
> (e.g. the 2nd bit is
>
> for (ifma = ifp->if_multiaddrs.lh_first; ifma;
> ifma = ifma->ifma_link.le_next) {
> if (equal(ifma->ifma_addr, llsa))
> break;
> }
> if (ifma) {
> ...
>
> so why not leave the first bit looking like that too, or restructure
> the 2nd bit in the same way you restructured the 1st bit?)
I've not looked at the commit yet, but is this related to the in_ifdown
panics with ppp?
I had to make this patch a few days ago:
Index: netinet/raw_ip.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/raw_ip.c,v
retrieving revision 1.46
diff -u -4 -r1.46 raw_ip.c
--- raw_ip.c 1997/05/22 20:52:56 1.46
+++ raw_ip.c 1997/07/08 07:26:51
@@ -346,15 +346,17 @@
/*
* in_ifscrub kills the interface route.
*/
in_ifscrub(ia->ia_ifp, ia);
+#if 0
/*
* in_ifadown gets rid of all the rest of
* the routes. This is not quite the right
* thing to do, but at least if we are running
* a routing process they will come back.
*/
in_ifadown(&ia->ia_ifa);
+#endif
break;
}
}
break;
The problem was that killing pppd with routed active to it (eg: gated with a
dozen routes) would cause rtrequest(RTM_DELETE, ...) to explode a little
further down with really bad pointers. From what I could see, the
rt_key(..) value (meant to be a sockaddr *) was pointing off into the void
(perhaps it had been freed already?), the sa_family was bogus, and the
sa_family was being used as a bad index into an array for the route tree
and ending up with a very bogus rnh pointer in rtrequest().
I had not yet got around to doing a send-pr yet.
> Bill
>
Cheers,
-Peter
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199707080732.PAA29282>
