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 [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to