From owner-freebsd-questions Wed Mar 22 04:01:35 1995 Return-Path: questions-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id EAA03037 for questions-outgoing; Wed, 22 Mar 1995 04:01:35 -0800 Received: from mitchell.cit.cornell.edu (MITCHELL.CIT.CORNELL.EDU [132.236.200.25]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id EAA03025 for ; Wed, 22 Mar 1995 04:01:33 -0800 Received: from mitchell.cit.cornell.edu (MITCHELL.CIT.CORNELL.EDU [132.236.200.25]) by mitchell.cit.cornell.edu (8.6.10/8.6.9) with ESMTP id HAA04926; Wed, 22 Mar 1995 07:01:24 -0500 Message-Id: <199503221201.HAA04926@mitchell.cit.cornell.edu> cc: freebsd-questions@FreeBSD.org To: gated-alpha@gated.cornell.edu Subject: Re: Gated is crashing my system! In-reply-to: Message from Thomas Pusateri on Tue, 21 Mar 1995 14:38:14 -0500.<9503211938.AA04017@NetEdge.COM> Organization: Information Technologies/Network Resources; Cornell University, Ithaca, NY X-Mailier: MH-E [version 4.1+] MH [version 6.8.1] MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 22 Mar 1995 07:01:23 -0500 From: Jeffrey C Honig Sender: questions-owner@FreeBSD.org Precedence: bulk > I don't have it handy, but maybe Jeff can send it to anyone interested > or I'll try and dig it up. Here is Tom's patch. Jeff *** in.c.latest Sun May 29 22:30:14 1994 --- in.c Tue Sep 13 10:21:05 1994 *************** *** 48,53 **** --- 48,60 ---- #include "in_var.h" #ifdef INET + #ifdef MULTICAST + /* + * save list of multicast addresses when interface addresses are changed + */ + static struct in_multi *in_multisave = 0; + #endif /* MULTICAST */ + /* * Formulate an Internet address from network + host. */ *************** *** 459,464 **** --- 466,475 ---- else printf("Didn't unlink inifadr from list\n"); } + #ifdef MULTICAST + /* save multicast addresses for change of address */ + in_multisave = oia->ia_multiaddrs; + #endif /* MULTICAST */ (void) m_free(dtom(oia)); break; *************** *** 573,580 **** if (ifp->if_flags & IFF_MULTICAST) { struct in_addr addr; ! addr.s_addr = htonl(INADDR_ALLHOSTS_GROUP); ! in_addmulti(&addr, ifp); } #endif return (error); --- 584,597 ---- if (ifp->if_flags & IFF_MULTICAST) { struct in_addr addr; ! if (in_multisave && in_multisave->inm_ifp == ifp) { ! ia->ia_multiaddrs = in_multisave; ! } ! else { ! addr.s_addr = htonl(INADDR_ALLHOSTS_GROUP); ! in_addmulti(&addr, ifp); ! } ! in_multisave = (struct in_multi *) 0; } #endif return (error);