]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/ipcp.c
Large patch from Frank Cusack <fcusack@fcusack.com> to add proper
[ppp.git] / pppd / ipcp.c
index 64d67fee85454b3d34a6df2d1493e5058fd07da3..3fc5f27f1736bdc9c1f1c597cabd777c4d653cf7 100644 (file)
@@ -17,7 +17,7 @@
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#define RCSID  "$Id: ipcp.c,v 1.58 2001/04/27 23:13:06 paulus Exp $"
+#define RCSID  "$Id: ipcp.c,v 1.60 2002/01/22 16:02:58 dfs Exp $"
 
 /*
  * TODO:
@@ -113,7 +113,7 @@ static int setvjslots __P((char **));
 static int setdnsaddr __P((char **));
 static int setwinsaddr __P((char **));
 static int setnetmask __P((char **));
-static int setipaddr __P((char *, char **, int));
+int setipaddr __P((char *, char **, int));
 static void printipaddr __P((option_t *, void (*)(void *, char *,...),void *));
 
 static option_t ipcp_option_list[] = {
@@ -371,8 +371,9 @@ setwinsaddr(argv)
  * setipaddr - Set the IP address
  * If doit is 0, the call is to check whether this option is
  * potentially an IP address specification.
+ * Not static so that plugins can call it to set the addresses
  */
-static int
+int
 setipaddr(arg, argv, doit)
     char *arg;
     char **argv;
@@ -655,8 +656,12 @@ ipcp_resetci(f)
     *go = *wo;
     if (!ask_for_local)
        go->ouraddr = 0;
-    if (ip_choose_hook)
+    if (ip_choose_hook) {
        ip_choose_hook(&wo->hisaddr);
+       if (wo->hisaddr) {
+           wo->accept_remote = 0;
+       }
+    }
 }
 
 
@@ -2018,7 +2023,9 @@ ipcp_printpkt(p, plen, printer, arg)
  */
 #define IP_HDRLEN      20      /* bytes */
 #define IP_OFFMASK     0x1fff
+#ifndef IPPROTO_TCP
 #define IPPROTO_TCP    6
+#endif
 #define TCP_HDRLEN     20
 #define TH_FIN         0x01