summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1997-08-19 01:10:24 +0000
committerbrian <brian@FreeBSD.org>1997-08-19 01:10:24 +0000
commitf4cc1c34030b6b39140566167f95d436ae620cf8 (patch)
treef4aec5bd5512e3c3e7b029d26903acef851e30ac /usr.sbin/ppp
parent03ba12afe1091b81f6f14967da3302842700df2a (diff)
downloadFreeBSD-src-f4cc1c34030b6b39140566167f95d436ae620cf8.zip
FreeBSD-src-f4cc1c34030b6b39140566167f95d436ae620cf8.tar.gz
Correct the forth arg to "set ifaddr". If specified,
it gives the IP number that should be used for initial IPCP config requests, irrespective of MYADDR.
Diffstat (limited to 'usr.sbin/ppp')
-rw-r--r--usr.sbin/ppp/command.c15
-rw-r--r--usr.sbin/ppp/ipcp.c20
-rw-r--r--usr.sbin/ppp/ipcp.h5
-rw-r--r--usr.sbin/ppp/ppp.874
-rw-r--r--usr.sbin/ppp/ppp.8.m474
5 files changed, 132 insertions, 56 deletions
diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c
index 21b26bc..5896abf 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.68 1997/08/17 20:45:45 brian Exp $
+ * $Id: command.c,v 1.69 1997/08/18 20:15:09 brian Exp $
*
*/
#include <sys/types.h>
@@ -1093,11 +1093,14 @@ struct cmdtab *list;
int argc;
char **argv;
{
-
DefMyAddress.ipaddr.s_addr = DefHisAddress.ipaddr.s_addr = 0L;
+
if (argc > 4)
return -1;
+ HaveTriggerAddress = 0;
+ ifnetmask.s_addr = 0;
+
if (argc > 0) {
if (ParseAddr(argc, argv++,
&DefMyAddress.ipaddr,
@@ -1113,15 +1116,13 @@ char **argv;
if (--argc > 0) {
ifnetmask = GetIpAddr(*argv);
if (--argc > 0) {
- if (ParseAddr(argc, argv++,
- &DefTriggerAddress.ipaddr,
- &DefTriggerAddress.mask,
- &DefTriggerAddress.width) == 0)
- return 3;
+ TriggerAddress = GetIpAddr(*argv);
+ HaveTriggerAddress = 1;
}
}
}
}
+
/*
* For backwards compatibility, 0.0.0.0 means any address.
*/
diff --git a/usr.sbin/ppp/ipcp.c b/usr.sbin/ppp/ipcp.c
index ae5e405..90c6f36 100644
--- a/usr.sbin/ppp/ipcp.c
+++ b/usr.sbin/ppp/ipcp.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ipcp.c,v 1.22 1997/06/25 19:30:00 brian Exp $
+ * $Id: ipcp.c,v 1.23 1997/07/29 22:37:04 brian Exp $
*
* TODO:
* o More RFC1772 backwoard compatibility
@@ -42,7 +42,9 @@ extern void Prompt();
extern struct in_addr ifnetmask;
struct ipcpstate IpcpInfo;
-struct in_range DefMyAddress, DefHisAddress, DefTriggerAddress;
+struct in_range DefMyAddress, DefHisAddress;
+struct in_addr TriggerAddress;
+int HaveTriggerAddress;
#ifndef NOMSEXT
struct in_addr ns_entries[2], nbns_entries[2];
@@ -137,8 +139,10 @@ ReportIpcpStatus()
inet_ntoa(DefMyAddress.ipaddr), DefMyAddress.width);
fprintf(VarTerm, " His Address: %s/%d\n",
inet_ntoa(DefHisAddress.ipaddr), DefHisAddress.width);
- fprintf(VarTerm, " Negotiation: %s/%d\n",
- inet_ntoa(DefTriggerAddress.ipaddr), DefTriggerAddress.width);
+ if (HaveTriggerAddress)
+ fprintf(VarTerm, " Negotiation(trigger): %s\n", inet_ntoa(TriggerAddress));
+ else
+ fprintf(VarTerm, " Negotiation(trigger): MYADDR\n");
return 0;
}
@@ -151,7 +155,8 @@ IpcpDefAddress()
bzero(&DefMyAddress, sizeof(DefMyAddress));
bzero(&DefHisAddress, sizeof(DefHisAddress));
- bzero(&DefTriggerAddress, sizeof(DefTriggerAddress));
+ TriggerAddress.s_addr = 0;
+ HaveTriggerAddress = 0;
if (gethostname(name, sizeof(name)) == 0) {
hp = gethostbyname(name);
if (hp && hp->h_addrtype == AF_INET) {
@@ -180,8 +185,9 @@ IpcpInit()
* even though standard of PPP is defined full negotiation based.
* (e.g. "0.0.0.0" or Not "0.0.0.0")
*/
- if ( icp->want_ipaddr.s_addr == 0 ) {
- icp->want_ipaddr.s_addr = DefTriggerAddress.ipaddr.s_addr;
+ if (HaveTriggerAddress) {
+ icp->want_ipaddr.s_addr = TriggerAddress.s_addr;
+ LogPrintf(LogLCP, "Using trigger address %s\n", inet_ntoa(TriggerAddress));
}
if (Enabled(ConfVjcomp))
diff --git a/usr.sbin/ppp/ipcp.h b/usr.sbin/ppp/ipcp.h
index 864d974..4e84055 100644
--- a/usr.sbin/ppp/ipcp.h
+++ b/usr.sbin/ppp/ipcp.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ipcp.h,v 1.6 1997/02/22 16:10:22 peter Exp $
+ * $Id: ipcp.h,v 1.7 1997/06/09 03:27:24 brian Exp $
*
* TODO:
*/
@@ -65,7 +65,8 @@ struct in_range {
extern struct ipcpstate IpcpInfo;
extern struct in_range DefMyAddress;
extern struct in_range DefHisAddress;
-extern struct in_range DefTriggerAddress;
+extern struct in_addr TriggerAddress;
+extern int HaveTriggerAddress;
#ifndef NOMSEXT
extern struct in_addr ns_entries[2];
diff --git a/usr.sbin/ppp/ppp.8 b/usr.sbin/ppp/ppp.8
index b9195d3..55ab62a 100644
--- a/usr.sbin/ppp/ppp.8
+++ b/usr.sbin/ppp/ppp.8
@@ -1,4 +1,4 @@
-.\" $Id: ppp.8,v 1.49 1997/08/17 22:45:25 brian Exp $
+.\" $Id: ppp.8,v 1.50 1997/08/18 20:15:10 brian Exp $
.Dd 20 September 1995
.Os FreeBSD
.Dt PPP 8
@@ -937,34 +937,53 @@ To control this IPCP behavior, this implementation has the
.Dq set ifaddr
command for defining the local and remote IP address:
-.Nm set ifaddr
-.Op src_addr Op dst_addr Op netmask
+.Bd -literal -offset indent
+set ifaddr [src_addr [dst_addr [netmask [trigger_addr]]]]
+.Ed
-Where,
+where,
.Sq src_addr
-is the IP address that the local side is willing to use and
+is the IP address that the local side is willing to use,
+.Sq dst_addr
+is the IP address which the remote side should use and
+.Sq netmask
+is the netmask that should be used.
+.Sq Src_addr
+and
.Sq dst_addr
-is the IP address which the remote side should use.
+default to 0.0.0.0, and
+.Sq netmask
+defaults to whatever mask is appropriate for
+.Sq src_addr .
+It is only possible to make
.Sq netmask
-is interface netmask.
+smaller than the default. The usual value is 255.255.255.255.
+Some incorrect ppp implementations require that the peer negotiates
+a specific IP address instead of
+.Sq src_addr .
+If this is the case,
+.Sq trigger_addr
+may be used to specify this IP number. This will not affect the
+routing table unless the other side agrees with this proposed number.
.Bd -literal -offset indent
-set ifaddr 192.244.177.38 192.244.177.2 255.255.255.0
+set ifaddr 192.244.177.38 192.244.177.2 255.255.255.255 0.0.0.0
.Ed
The above specification means:
.Bl -bullet -compact
.It
-I strongly want to use 192.244.177.38 as my IP address, and I'll
-disagree if the peer suggests that I use another address.
+I will first suggest that my IP address should be 0.0.0.0, but I
+will only accept an address of 192.244.177.38.
.It
-I strongly insist that peer use 192.244.177.2 as own side address and
-don't permit it to use any IP address but 192.244.177.2. When peer
-request another IP address, I always suggest that it use 192.244.177.2.
+I strongly insist that the peer uses 192.244.177.2 as his own
+address and won't permit the use of any IP address but 192.244.177.2.
+When the peer requests another IP address, I will always suggest that
+it uses 192.244.177.2.
.It
-My interface netmask will be 255.255.255.0.
+The routing table entry will have a netmask of 0xffffffff.
.El
This is all fine when each side has a pre-determined IP address, however
@@ -1134,28 +1153,35 @@ rates of 28800 or more. In general, the serial speed should be about
four times the modem speed.
.It
-Use
+Use the
.Dq set ifaddr
command to define the IP address.
.Bl -bullet
.It
If you know what IP address your provider uses, then use it as the remote
-address, otherwise choose something like 10.0.0.2/0 (see below).
+address (dst_addr), otherwise choose something like 10.0.0.2/0 (see below).
.It
If your provider has assigned a particular IP address to you, then use
-it as your address.
+it as your address (src_addr).
.It
If your provider assigns your address dynamically, choose a suitably
unobtrusive and unspecific IP number as your address. 10.0.0.1/0 would
be appropriate. The bit after the / specifies how many bits of the
address you consider to be important, so if you wanted to insist on
something in the class C network 1.2.3.0, you could specify 1.2.3.1/24.
+.It
+If you find that your ISP accepts the first IP number that you suggest,
+specify third and forth arguments of
+.Dq 0.0.0.0 .
+This will force your ISP to assign a number. (The third argument will
+be ignored as it is less restrictive than the default mask for your
+.Sq src_addr .
.El
.Pp
An example for a connection where you don't know your IP number or your
ISPs IP number would be:
.Bd -literal -offset indent
-set ifaddr 10.10.10.10/0 10.10.11.11/0 255.255.255.0
+set ifaddr 10.10.10.10/0 10.10.11.11/0 0.0.0.0 0.0.0.0
.Ed
.It
@@ -1597,9 +1623,9 @@ This option is similar to the
option above. It allows the user to specify a set of characters that
will be `escaped' as they travel across the link.
-.It set ifaddr myaddr hisaddr mask
+.It set ifaddr [myaddr [hisaddr [netmask [triggeraddr]]]]
This command specifies the IP addresses that will be used during
-LCP negotiation. Addresses are specified using the format
+IPCP negotiation. Addresses are specified using the format
.Dl a.b.c.d/n
@@ -1608,6 +1634,14 @@ of the address we will insist on. If the /n bit is omitted, it
defaults to /32 unless the IP address is 0.0.0.0 in which case
the mask defaults to /0.
+If
+.Dq triggeraddr
+is specified, it is used in place of
+.Dq myaddr
+in the initial IPCP negotiation. However, only an address in the
+.Dq myaddr
+range will be accepted.
+
.It set log [+|-]value...
This command allows the adjustment of the current log level. Please
refer to the Logging Facility section for further details.
diff --git a/usr.sbin/ppp/ppp.8.m4 b/usr.sbin/ppp/ppp.8.m4
index b9195d3..55ab62a 100644
--- a/usr.sbin/ppp/ppp.8.m4
+++ b/usr.sbin/ppp/ppp.8.m4
@@ -1,4 +1,4 @@
-.\" $Id: ppp.8,v 1.49 1997/08/17 22:45:25 brian Exp $
+.\" $Id: ppp.8,v 1.50 1997/08/18 20:15:10 brian Exp $
.Dd 20 September 1995
.Os FreeBSD
.Dt PPP 8
@@ -937,34 +937,53 @@ To control this IPCP behavior, this implementation has the
.Dq set ifaddr
command for defining the local and remote IP address:
-.Nm set ifaddr
-.Op src_addr Op dst_addr Op netmask
+.Bd -literal -offset indent
+set ifaddr [src_addr [dst_addr [netmask [trigger_addr]]]]
+.Ed
-Where,
+where,
.Sq src_addr
-is the IP address that the local side is willing to use and
+is the IP address that the local side is willing to use,
+.Sq dst_addr
+is the IP address which the remote side should use and
+.Sq netmask
+is the netmask that should be used.
+.Sq Src_addr
+and
.Sq dst_addr
-is the IP address which the remote side should use.
+default to 0.0.0.0, and
+.Sq netmask
+defaults to whatever mask is appropriate for
+.Sq src_addr .
+It is only possible to make
.Sq netmask
-is interface netmask.
+smaller than the default. The usual value is 255.255.255.255.
+Some incorrect ppp implementations require that the peer negotiates
+a specific IP address instead of
+.Sq src_addr .
+If this is the case,
+.Sq trigger_addr
+may be used to specify this IP number. This will not affect the
+routing table unless the other side agrees with this proposed number.
.Bd -literal -offset indent
-set ifaddr 192.244.177.38 192.244.177.2 255.255.255.0
+set ifaddr 192.244.177.38 192.244.177.2 255.255.255.255 0.0.0.0
.Ed
The above specification means:
.Bl -bullet -compact
.It
-I strongly want to use 192.244.177.38 as my IP address, and I'll
-disagree if the peer suggests that I use another address.
+I will first suggest that my IP address should be 0.0.0.0, but I
+will only accept an address of 192.244.177.38.
.It
-I strongly insist that peer use 192.244.177.2 as own side address and
-don't permit it to use any IP address but 192.244.177.2. When peer
-request another IP address, I always suggest that it use 192.244.177.2.
+I strongly insist that the peer uses 192.244.177.2 as his own
+address and won't permit the use of any IP address but 192.244.177.2.
+When the peer requests another IP address, I will always suggest that
+it uses 192.244.177.2.
.It
-My interface netmask will be 255.255.255.0.
+The routing table entry will have a netmask of 0xffffffff.
.El
This is all fine when each side has a pre-determined IP address, however
@@ -1134,28 +1153,35 @@ rates of 28800 or more. In general, the serial speed should be about
four times the modem speed.
.It
-Use
+Use the
.Dq set ifaddr
command to define the IP address.
.Bl -bullet
.It
If you know what IP address your provider uses, then use it as the remote
-address, otherwise choose something like 10.0.0.2/0 (see below).
+address (dst_addr), otherwise choose something like 10.0.0.2/0 (see below).
.It
If your provider has assigned a particular IP address to you, then use
-it as your address.
+it as your address (src_addr).
.It
If your provider assigns your address dynamically, choose a suitably
unobtrusive and unspecific IP number as your address. 10.0.0.1/0 would
be appropriate. The bit after the / specifies how many bits of the
address you consider to be important, so if you wanted to insist on
something in the class C network 1.2.3.0, you could specify 1.2.3.1/24.
+.It
+If you find that your ISP accepts the first IP number that you suggest,
+specify third and forth arguments of
+.Dq 0.0.0.0 .
+This will force your ISP to assign a number. (The third argument will
+be ignored as it is less restrictive than the default mask for your
+.Sq src_addr .
.El
.Pp
An example for a connection where you don't know your IP number or your
ISPs IP number would be:
.Bd -literal -offset indent
-set ifaddr 10.10.10.10/0 10.10.11.11/0 255.255.255.0
+set ifaddr 10.10.10.10/0 10.10.11.11/0 0.0.0.0 0.0.0.0
.Ed
.It
@@ -1597,9 +1623,9 @@ This option is similar to the
option above. It allows the user to specify a set of characters that
will be `escaped' as they travel across the link.
-.It set ifaddr myaddr hisaddr mask
+.It set ifaddr [myaddr [hisaddr [netmask [triggeraddr]]]]
This command specifies the IP addresses that will be used during
-LCP negotiation. Addresses are specified using the format
+IPCP negotiation. Addresses are specified using the format
.Dl a.b.c.d/n
@@ -1608,6 +1634,14 @@ of the address we will insist on. If the /n bit is omitted, it
defaults to /32 unless the IP address is 0.0.0.0 in which case
the mask defaults to /0.
+If
+.Dq triggeraddr
+is specified, it is used in place of
+.Dq myaddr
+in the initial IPCP negotiation. However, only an address in the
+.Dq myaddr
+range will be accepted.
+
.It set log [+|-]value...
This command allows the adjustment of the current log level. Please
refer to the Logging Facility section for further details.
OpenPOWER on IntegriCloud