From 52ff8cacf66de3bf20d22df8445916f6a3811a46 Mon Sep 17 00:00:00 2001 From: Brian Somers Date: Sun, 10 May 1998 09:26:21 +0000 Subject: [PATCH] Allow /nn specifications in the `add' command. Suggested by: Garrett Wollman It's now possible to add myaddr 127.0.0.1 (add myaddr 255.255.255.255 127.0.0.1) add hisaddr/24 hisaddr (add hisaddr 255.255.255.0 hisaddr) add 0 hisaddr (add 0 0 hisaddr) add default hisaddr (add 0 0 hisaddr) --- usr.sbin/ppp/command.c | 23 ++++++++++++++++++----- usr.sbin/ppp/ppp.8 | 28 +++++++++++++++------------- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c index e5974cb09cc3..500147e847eb 100644 --- a/usr.sbin/ppp/command.c +++ b/usr.sbin/ppp/command.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: command.c,v 1.131.2.80 1998/05/08 18:49:53 brian Exp $ + * $Id: command.c,v 1.131.2.81 1998/05/08 18:50:14 brian Exp $ * */ #include @@ -123,7 +123,7 @@ #define NEG_DNS 50 const char Version[] = "2.0-beta"; -const char VersionDate[] = "$Date: 1998/05/08 18:49:53 $"; +const char VersionDate[] = "$Date: 1998/05/08 18:50:14 $"; static int ShowCommand(struct cmdargs const *); static int TerminalCommand(struct cmdargs const *); @@ -1436,9 +1436,19 @@ AddCommand(struct cmdargs const *arg) addrs = 0; if (arg->argc == arg->argn+2) { - if (strcasecmp(arg->argv[arg->argn], "default")) - return -1; - dest.s_addr = netmask.s_addr = INADDR_ANY; + if (!strcasecmp(arg->argv[arg->argn], "default")) + dest.s_addr = netmask.s_addr = INADDR_ANY; + else { + int width; + + if (!ParseAddr(&arg->bundle->ncp.ipcp, 1, arg->argv + arg->argn, + &dest, &netmask, &width)) + return -1; + if (!strncasecmp(arg->argv[arg->argn], "MYADDR", 6)) + addrs = ROUTE_DSTMYADDR; + else if (!strncasecmp(arg->argv[arg->argn], "HISADDR", 7)) + addrs = ROUTE_DSTHISADDR; + } gw = 1; } else { if (strcasecmp(arg->argv[arg->argn], "MYADDR") == 0) { @@ -1452,6 +1462,7 @@ AddCommand(struct cmdargs const *arg) netmask = GetIpAddr(arg->argv[arg->argn+1]); gw = 2; } + if (strcasecmp(arg->argv[arg->argn+gw], "HISADDR") == 0) { gateway = arg->bundle->ncp.ipcp.peer_ip; addrs |= ROUTE_GWHISADDR; @@ -1459,9 +1470,11 @@ AddCommand(struct cmdargs const *arg) gateway.s_addr = INADDR_ANY; else gateway = GetIpAddr(arg->argv[arg->argn+gw]); + if (bundle_SetRoute(arg->bundle, RTM_ADD, dest, gateway, netmask, arg->cmd->args ? 1 : 0)) route_Add(&arg->bundle->ncp.ipcp.route, addrs, dest, netmask, gateway); + return 0; } diff --git a/usr.sbin/ppp/ppp.8 b/usr.sbin/ppp/ppp.8 index cdfcdd2d8b1c..22f88cf2fd91 100644 --- a/usr.sbin/ppp/ppp.8 +++ b/usr.sbin/ppp/ppp.8 @@ -1,4 +1,4 @@ -.\" $Id: ppp.8,v 1.97.2.29 1998/05/08 18:49:59 brian Exp $ +.\" $Id: ppp.8,v 1.97.2.30 1998/05/08 18:50:24 brian Exp $ .Dd 20 September 1995 .Os FreeBSD .Dt PPP 8 @@ -920,7 +920,7 @@ on ui-gate (the receiver) should contain the following: ppp-in: set timeout 0 set ifaddr 10.0.4.1 10.0.4.2 - add 10.0.1.0 255.255.255.0 10.0.4.2 + add 10.0.1.0/24 10.0.4.2 .Ed .Pp You may also want to enable PAP or CHAP for security. To enable PAP, add @@ -954,7 +954,7 @@ ui-gate: set timeout 30 set log Phase Chat Connect hdlc LCP IPCP CCP tun set ifaddr 10.0.4.2 10.0.4.1 - add 10.0.2.0 255.255.255.0 10.0.4.1 + add 10.0.2.0/24 10.0.4.1 .Ed .Pp Again, if you're enabling PAP, you'll also need: @@ -1904,19 +1904,21 @@ not to make any utmp or wtmp entries. This is usually only necessary if you require the user to both login and authenticate themselves. .El .Pp -.It add[!] Ar dest mask gateway +.It add[!] Ar dest[/nn] [mask] gateway .Ar Dest -is the destination IP address and -.Ar mask -is its netmask. +is the destination IP address. The netmask is specified either as a +number of bits with +.Ar /nn +or as an IP number using +.Ar mask . .Ar 0 0 -refers to the default route, and it is possible to use the symbolic name +or simply +.Ar 0 +with no mask refers to the default route. It is also possible to use the +literal name .Sq default -in place of both the -.Ar dest -and -.Ar mask -arguments. +instead of +.Ar 0 . .Ar Gateway is the next hop gateway to get to the given .Ar dest