]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/options.c
*** empty log message ***
[ppp.git] / pppd / options.c
index c288e53fc6d152b6ba3aa76a821ec2859752c5a7..9bb2f726a63df1800f074347f971182dfe22a2ae 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #ifndef lint
-static char rcsid[] = "$Id: options.c,v 1.34 1996/09/14 05:16:56 paulus Exp $";
+static char rcsid[] = "$Id: options.c,v 1.36 1996/10/08 04:35:03 paulus Exp $";
 #endif
 
 #include <ctype.h>
@@ -46,6 +46,9 @@ static char rcsid[] = "$Id: options.c,v 1.34 1996/09/14 05:16:56 paulus Exp $";
 #include "upap.h"
 #include "chap.h"
 #include "ccp.h"
+#ifdef CBCP_SUPPORT
+#include "cbcp.h"
+#endif
 
 #ifdef IPX_CHANGE
 #include "ipxcp.h"
@@ -137,6 +140,9 @@ static int setasyncmap __P((char **));
 static int setescape __P((char **));
 static int setmru __P((char **));
 static int setmtu __P((char **));
+#ifdef CBCP_SUPPORT
+static int setcbcp __P((char **));
+#endif
 static int nomru __P((void));
 static int nopcomp __P((void));
 static int setconnector __P((char **));
@@ -198,10 +204,11 @@ static int setipparam __P((char **));
 static int setpapcrypt __P((void));
 static int setidle __P((char **));
 static int setholdoff __P((char **));
+static int setdnsaddr __P((char **));
+static int resetipxproto __P((void));
 
 #ifdef IPX_CHANGE
 static int setipxproto __P((void));
-static int resetipxproto __P((void));
 static int setipxanet __P((void));
 static int setipxalcl __P((void));
 static int setipxarmt __P((void));
@@ -215,10 +222,6 @@ static int setipxcpconf __P((char **));
 static int setipxcpfails __P((char **));
 #endif /* IPX_CHANGE */
 
-#ifdef USE_MS_DNS
-static int setdnsaddr __P((char **));
-#endif
-
 static int number_option __P((char *, u_int32_t *, int));
 static int int_option __P((char *, int *));
 static int readable __P((int fd));
@@ -280,6 +283,9 @@ static struct cmd {
     {"domain", 1, setdomain},  /* Add given domain name to hostname*/
     {"mru", 1, setmru},                /* Set MRU value for negotiation */
     {"mtu", 1, setmtu},                /* Set our MTU */
+#ifdef CBCP_SUPPORT
+    {"callback", 1, setcbcp},  /* Ask for callback */
+#endif
     {"netmask", 1, setnetmask},        /* set netmask */
     {"passive", 0, setpassive},        /* Set passive mode */
     {"silent", 0, setsilent},  /* Set silent mode */
@@ -338,6 +344,9 @@ static struct cmd {
     {"papcrypt", 0, setpapcrypt},      /* PAP passwords encrypted */
     {"idle", 1, setidle},              /* idle time limit (seconds) */
     {"holdoff", 1, setholdoff},                /* set holdoff time (seconds) */
+    {"ms-dns", 1, setdnsaddr},         /* DNS address for the peer's use */
+    {"noipx",  0, resetipxproto},      /* Disable IPXCP (and IPX) */
+    {"-ipx",   0, resetipxproto},      /* Disable IPXCP (and IPX) */
 
 #ifdef IPX_CHANGE
     {"ipx-network",          1, setipxnetwork}, /* IPX network number */
@@ -355,15 +364,9 @@ static struct cmd {
     {"ipx-compression", 1, setipxcompression}, /* IPX compression number */
 #endif
     {"ipx",                 0, setipxproto},   /* Enable IPXCP (and IPX) */
-    {"noipx",               0, resetipxproto}, /* Disable IPXCP (and IPX) */
     {"+ipx",                0, setipxproto},   /* Enable IPXCP (and IPX) */
-    {"-ipx",                0, resetipxproto}, /* Disable IPXCP (and IPX) */
 #endif /* IPX_CHANGE */
 
-#ifdef USE_MS_DNS
-    {"ms-dns", 1, setdnsaddr}, /* DNS address(es) for the peer's use */
-#endif
-
     {NULL, 0, NULL}
 };
 
@@ -1159,6 +1162,21 @@ setmtu(argv)
     return (1);
 }
 
+#ifdef CBCP_SUPPORT
+static int
+setcbcp(argv)
+    char **argv;
+{
+    lcp_wantoptions[0].neg_cbcp = 1;
+    cbcp_protent.enabled_flag = 1;
+    cbcp[0].us_number = strdup(*argv);
+    if (cbcp[0].us_number == 0)
+       novm("callback number");
+    cbcp[0].us_type |= (1 << CB_CONF_USER);
+    cbcp[0].us_type |= (1 << CB_CONF_ADMIN);
+    return (1);
+}
+#endif
 
 /*
  * nopcomp - Disable Protocol field compression negotiation.
@@ -1725,10 +1743,8 @@ setname(argv)
        option_error("using the name option requires root privilege");
        return 0;
     }
-    if (our_name[0] == 0) {
-       strncpy(our_name, argv[0], MAXNAMELEN);
-       our_name[MAXNAMELEN-1] = 0;
-    }
+    strncpy(our_name, argv[0], MAXNAMELEN);
+    our_name[MAXNAMELEN-1] = 0;
     return 1;
 }
 
@@ -2095,6 +2111,35 @@ setholdoff(argv)
     return int_option(*argv, &holdoff);
 }
 
+/*
+ * setdnsaddr - set the dns address(es)
+ */
+static int
+setdnsaddr(argv)
+    char **argv;
+{
+    u_int32_t dns;
+    struct hostent *hp;
+
+    dns = inet_addr(*argv);
+    if (dns == -1) {
+       if ((hp = gethostbyname(*argv)) == NULL) {
+           option_error("invalid address parameter '%s' for ms-dns option",
+                        *argv);
+           return 0;
+       }
+       dns = *(u_int32_t *)hp->h_addr;
+    }
+
+    if (ipcp_allowoptions[0].dnsaddr[0] == 0) {
+       ipcp_allowoptions[0].dnsaddr[0] = dns;
+    } else {
+       ipcp_allowoptions[0].dnsaddr[1] = dns;
+    }
+
+    return (1);
+}
+
 #ifdef IPX_CHANGE
 static int
 setipxrouter (argv)
@@ -2256,36 +2301,11 @@ resetipxproto()
     ipxcp_protent.enabled_flag = 0;
     return 1;
 }
-#endif /* IPX_CHANGE */
-
-#ifdef USE_MS_DNS
-/*
- * setdnsaddr - set the dns address(es)
- */
+#else
 
 static int
-setdnsaddr(argv)
-    char **argv;
+resetipxproto()
 {
-    u_int32_t dns;
-    struct hostent *hp;
-
-    dns = inet_addr(*argv);
-    if (dns == -1) {
-       if ((hp = gethostbyname(*argv)) == NULL) {
-           option_error("invalid address parameter '%s' for ms-dns option",
-                        *argv);
-           return 0;
-       }
-       dns = *(u_int32_t *)hp->h_addr;
-    }
-
-    if (ipcp_allowoptions[0].dnsaddr[0] == 0) {
-       ipcp_allowoptions[0].dnsaddr[0] = dns;
-    } else {
-       ipcp_allowoptions[0].dnsaddr[1] = dns;
-    }
-
-    return (1);
+    return 1;
 }
-#endif /* USE_MS_DNS */
+#endif /* IPX_CHANGE */