X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fipcp.c;h=3fc5f27f1736bdc9c1f1c597cabd777c4d653cf7;hp=64d67fee85454b3d34a6df2d1493e5058fd07da3;hb=05c09ae62d0b4ff67fb26c37a01e6a07bb593c0c;hpb=aac99e2604e20409d9f0538ceb8590c2f75220a0 diff --git a/pppd/ipcp.c b/pppd/ipcp.c index 64d67fe..3fc5f27 100644 --- a/pppd/ipcp.c +++ b/pppd/ipcp.c @@ -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