X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Foptions.c;h=e7f95bf54f83d79b00370865febad357ab514c2f;hp=b54f95a98cad3d3d89b287ca0c29be96a1148df0;hb=e1746e5f6bc21a42ed4c0b35dc5271026d580a81;hpb=6f9174716453eb7f8571eccc48c1683947da2514 diff --git a/pppd/options.c b/pppd/options.c index b54f95a..e7f95bf 100644 --- a/pppd/options.c +++ b/pppd/options.c @@ -18,7 +18,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: options.c,v 1.21 1995/06/12 12:02:20 paulus Exp $"; +static char rcsid[] = "$Id: options.c,v 1.25 1995/10/27 03:39:14 paulus Exp $"; #endif #include @@ -138,7 +138,9 @@ static int setremote __P((char **)); static int setauth __P((void)); static int readfile __P((char **)); static int setdefaultroute __P((void)); +static int setnodefaultroute __P((void)); static int setproxyarp __P((void)); +static int setnoproxyarp __P((void)); static int setpersist __P((void)); static int setdologin __P((void)); static int setusehostname __P((void)); @@ -223,7 +225,9 @@ static struct cmd { {"auth", 0, setauth}, /* Require authentication from peer */ {"file", 1, readfile}, /* Take options from a file */ {"defaultroute", 0, setdefaultroute}, /* Add default route */ + {"-defaultroute", 0, setnodefaultroute}, /* disable defaultroute option */ {"proxyarp", 0, setproxyarp}, /* Add proxy ARP entry */ + {"-proxyarp", 0, setnoproxyarp}, /* disable proxyarp option */ {"persist", 0, setpersist}, /* Keep on reopening connection after close */ {"login", 0, setdologin}, /* Use system password database for UPAP */ {"noipdefault", 0, setnoipdflt}, /* Don't use name for default IP adrs */ @@ -1132,7 +1136,12 @@ static int setdomain(argv) char **argv; { - strncat(hostname, *argv, MAXNAMELEN - strlen(hostname)); + gethostname(hostname, MAXNAMELEN); + if (**argv != 0) { + if (**argv != '.') + strncat(hostname, ".", MAXNAMELEN - strlen(hostname)); + strncat(hostname, *argv, MAXNAMELEN - strlen(hostname)); + } hostname[MAXNAMELEN-1] = 0; return (1); } @@ -1413,7 +1422,7 @@ setxonxoff() lcp_wantoptions[0].asyncmap |= 0x000A0000; /* escape ^S and ^Q */ lcp_wantoptions[0].neg_asyncmap = 1; - crtscts = 2; + crtscts = -2; return (1); } @@ -1491,17 +1500,41 @@ setauth() static int setdefaultroute() { + if (!ipcp_allowoptions[0].default_route) { + fprintf(stderr, "%s: defaultroute option is disabled\n", progname); + return 0; + } ipcp_wantoptions[0].default_route = 1; return 1; } +static int +setnodefaultroute() +{ + ipcp_allowoptions[0].default_route = 0; + ipcp_wantoptions[0].default_route = 0; + return 1; +} + static int setproxyarp() { + if (!ipcp_allowoptions[0].proxy_arp) { + fprintf(stderr, "%s: proxyarp option is disabled\n", progname); + return 0; + } ipcp_wantoptions[0].proxy_arp = 1; return 1; } +static int +setnoproxyarp() +{ + ipcp_wantoptions[0].proxy_arp = 0; + ipcp_allowoptions[0].proxy_arp = 0; + return 1; +} + static int setpersist() {