Date: Sat, 1 Dec 2001 22:32:15 -0500 (EST) From: "Andrew R. Reiter" <arr@FreeBSD.org> To: Edwin Culp <eculp@encontacto.net> Cc: current@FreeBSD.org Subject: Re: Fatal trap 12 on kernel from sometime Nov. 30. Message-ID: <Pine.NEB.3.96L.1011201222934.11340A-100000@fledge.watson.org> In-Reply-To: <3C099C39.3040305@encontacto.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Edwin, The following is the current fix in place: Index: ip_output.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/ip_output.c,v retrieving revision 1.142 retrieving revision 1.143 diff -u -r1.142 -r1.143 --- ip_output.c 4 Nov 2001 22:56:25 -0000 1.142 +++ ip_output.c 1 Dec 2001 13:48:16 -0000 1.143 @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)ip_output.c 8.3 (Berkeley) 1/21/94 - * $FreeBSD: src/sys/netinet/ip_output.c,v 1.142 2001/11/04 22:56:25 luigi Exp $ + * $FreeBSD: src/sys/netinet/ip_output.c,v 1.143 2001/12/01 13:48:16 ru Exp $ */ #define _IP_VHL @@ -123,11 +123,11 @@ struct mbuf *m = m0; int hlen = sizeof (struct ip); int len, off, error = 0; + struct route iproute; struct sockaddr_in *dst; struct in_ifaddr *ia; int isbroadcast, sw_csum; #ifdef IPSEC - struct route iproute; struct socket *so = NULL; struct secpolicy *sp = NULL; #endif @@ -188,9 +188,6 @@ #ifdef DIAGNOSTIC if ((m->m_flags & M_PKTHDR) == 0) panic("ip_output no HDR"); - if (!ro) - panic("ip_output no route, proto = %d", - mtod(m, struct ip *)->ip_p); #endif if (opt) { m = ip_insertoptions(m, opt, &len); @@ -213,6 +210,11 @@ hlen = IP_VHL_HL(ip->ip_vhl) << 2; } + /* Route packet. */ + if (ro == NULL) { + ro = &iproute; + bzero(ro, sizeof(*ro)); + } dst = (struct sockaddr_in *)&ro->ro_dst; /* * If there is a cached route, Index: ip_mroute.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/ip_mroute.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -r1.68 -r1.69 --- ip_mroute.c 29 Oct 2001 02:19:19 -0000 1.68 +++ ip_mroute.c 1 Dec 2001 13:48:16 -0000 1.69 @@ -9,7 +9,7 @@ * Modified by Bill Fenner, PARC, April 1995 * * MROUTING Revision: 3.5 - * $FreeBSD: src/sys/netinet/ip_mroute.c,v 1.68 2001/10/29 02:19:19 dillon Exp $ + * $FreeBSD: src/sys/netinet/ip_mroute.c,v 1.69 2001/12/01 13:48:16 ru Exp $ */ #include "opt_mrouting.h" @@ -1867,7 +1867,6 @@ { struct ip_moptions imo; int error; - static struct route ro; int s = splnet(); if (vifp->v_flags & VIFF_TUNNEL) { @@ -1886,7 +1885,7 @@ * should get rejected because they appear to come from * the loopback interface, thus preventing looping. */ - error = ip_output(m, (struct mbuf *)0, &ro, + error = ip_output(m, (struct mbuf *)0, NULL, IP_FORWARDING, &imo); if (mrtdebug & DEBUG_XMIT) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1011201222934.11340A-100000>