Date: Thu, 3 Jan 2002 22:34:05 -0800 (PST) From: Archie Cobbs <archie@dellroad.org> To: Scott Lamb <slamb@slamb.org> Cc: freebsd-net@FreeBSD.ORG Subject: Re: netgraph kernel panic Message-ID: <200201040634.g046Y5N23209@arch20m.dellroad.org> In-Reply-To: <20020104043335.GA87710@cairo.zsat.net> "from Scott Lamb at Jan 3, 2002 10:33:35 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Scott Lamb writes: > FreeBSD 4.5-PRERELEASE (as of a few days ago) is crashing consistently > when I try to initiate a PPTP connection to with mpd-netgraph 3.3 (from > ports). This is due to a problem caused by the peer's "outside" PPTP IP address (the one from mpd.links) being equal to its "inside" IP address (the one from "set ipcp ranges ..."). Make those different and it should stop crashing. Also, apply the patch below to prevent it from happening again. -Archie __________________________________________________________________________ Archie Cobbs * Packet Design * http://www.packetdesign.com Index: ipcp.c =================================================================== RCS file: /home/cvs/archie/mpd/src/ipcp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ipcp.c 2001/04/12 17:03:31 1.2 +++ ipcp.c 2001/12/16 03:47:25 1.3 @@ -19,6 +19,7 @@ #include "custom.h" #include "msg.h" #include "ngfunc.h" +#include "pptp.h" #include <netgraph.h> #include <sys/mbuf.h> @@ -607,7 +608,7 @@ switch (mode) { case MODE_REQ: if (!IpAddrInRange(&ipcp->conf.peer_allow, *ip) || !ip->s_addr) { - if (ipcp->peer_addr.s_addr == 0) +nak_ip: if (ipcp->peer_addr.s_addr == 0) Log(LG_IPCP, (" %s", "no IP address available for peer!")); if (Enabled(&ipcp->conf.options, IPCP_CONF_PRETENDIP)) { Log(LG_IPCP, (" pretending that %s is OK, will ignore", @@ -620,6 +621,17 @@ Log(LG_IPCP, (" NAKing with %s", inet_ntoa(*ip))); FsmNak(fp, opt); break; + } + if (bund->links[0]->phys->type == &gPptpPhysType) { + struct in_addr pip; + + lnk = bund->links[0]; + pip = PptpGetPeerIp(); + if (ip->s_addr == pip.s_addr) { + Log(LG_IPCP, + (" Same as PPTP IP; would cause routing loop")); + goto nak_ip; + } } Log(LG_IPCP, (" %s is OK", inet_ntoa(*ip))); ipcp->peer_addr = *ip; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201040634.g046Y5N23209>