Some fixes so that the local IP address can be assigned by the peer
if no local IP address is specified on the command line (even though a default local IP address has been determined from the hostname).
This commit is contained in:
parent
0622d87221
commit
e332e61cb7
@ -18,13 +18,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$Id: ipcp.c,v 1.3 1993/11/10 01:34:12 paulus Exp $";
|
||||
static char rcsid[] = "$Id: ipcp.c,v 1.4 1994/02/22 00:11:57 paulus Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* Fix IP address negotiation (wantoptions or hisoptions).
|
||||
* Don't set zero IP addresses.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@ -242,6 +240,10 @@ ipcp_resetci(f)
|
||||
ipcp_options *wo = &ipcp_wantoptions[f->unit];
|
||||
|
||||
wo->req_addr = wo->neg_addr && ipcp_allowoptions[f->unit].neg_addr;
|
||||
if (wo->ouraddr == 0)
|
||||
wo->accept_local = 1;
|
||||
if (wo->hisaddr == 0)
|
||||
wo->accept_remote = 1;
|
||||
ipcp_gotoptions[f->unit] = *wo;
|
||||
cis_received[f->unit] = 0;
|
||||
}
|
||||
@ -501,17 +503,17 @@ ipcp_nakci(f, p, len)
|
||||
}
|
||||
|
||||
/*
|
||||
* Accept the peer's idea of our address if we don't know it.
|
||||
* Accept the peer's idea of his address if he knows it.
|
||||
* Accept the peer's idea of {our,his} address, if different
|
||||
* from our idea, only if the accept_{local,remote} flag is set.
|
||||
*/
|
||||
NAKCIADDR(CI_ADDR, neg_addr, go->old_addrs,
|
||||
if (!go->ouraddr && ciaddr1) { /* Do we know our address? */
|
||||
go->ouraddr = ciaddr1;
|
||||
if (go->accept_local && ciaddr1) { /* Do we know our address? */
|
||||
try.ouraddr = ciaddr1;
|
||||
IPCPDEBUG((LOG_INFO, "local IP address %s",
|
||||
ip_ntoa(ciaddr1)));
|
||||
}
|
||||
if (ciaddr2) { /* Does he know his? */
|
||||
go->hisaddr = ciaddr2;
|
||||
if (go->accept_remote && ciaddr2) { /* Does he know his? */
|
||||
try.hisaddr = ciaddr2;
|
||||
IPCPDEBUG((LOG_INFO, "remote IP address %s",
|
||||
ip_ntoa(ciaddr2)));
|
||||
}
|
||||
@ -572,11 +574,11 @@ ipcp_nakci(f, p, len)
|
||||
try.old_addrs = 1;
|
||||
GETLONG(l, p);
|
||||
ciaddr1 = htonl(l);
|
||||
if (ciaddr1)
|
||||
if (ciaddr1 && go->accept_local)
|
||||
try.ouraddr = ciaddr1;
|
||||
GETLONG(l, p);
|
||||
ciaddr2 = htonl(l);
|
||||
if (ciaddr2)
|
||||
if (ciaddr2 && go->accept_remote)
|
||||
try.hisaddr = ciaddr2;
|
||||
no.old_addrs = 1;
|
||||
break;
|
||||
@ -587,7 +589,7 @@ ipcp_nakci(f, p, len)
|
||||
try.old_addrs = 0;
|
||||
GETLONG(l, p);
|
||||
ciaddr1 = htonl(l);
|
||||
if (ciaddr1)
|
||||
if (ciaddr1 && go->accept_local)
|
||||
try.ouraddr = ciaddr1;
|
||||
no.neg_addr = 1;
|
||||
break;
|
||||
@ -778,7 +780,8 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
GETLONG(tl, p); /* Parse source address (his) */
|
||||
ciaddr1 = htonl(tl);
|
||||
IPCPDEBUG((LOG_INFO, "(%s:", ip_ntoa(ciaddr1)));
|
||||
if (wo->hisaddr && ciaddr1 != wo->hisaddr) {
|
||||
if (ciaddr1 != wo->hisaddr
|
||||
&& (ciaddr1 == 0 || !wo->accept_remote)) {
|
||||
orc = CONFNAK;
|
||||
if (!reject_if_disagree) {
|
||||
DECPTR(sizeof (long), p);
|
||||
@ -794,16 +797,18 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
GETLONG(tl, p); /* Parse desination address (ours) */
|
||||
ciaddr2 = htonl(tl);
|
||||
IPCPDEBUG((LOG_INFO, "%s)", ip_ntoa(ciaddr2)));
|
||||
if (wo->ouraddr && ciaddr2 != wo->ouraddr) {
|
||||
if (ciaddr2 != wo->ouraddr) {
|
||||
if (ciaddr2 == 0 || !wo->accept_local) {
|
||||
orc = CONFNAK;
|
||||
if (!reject_if_disagree) {
|
||||
DECPTR(sizeof (long), p);
|
||||
tl = ntohl(wo->ouraddr);
|
||||
PUTLONG(tl, p);
|
||||
}
|
||||
} else {
|
||||
go->ouraddr = ciaddr2; /* accept peer's idea */
|
||||
}
|
||||
}
|
||||
if (orc == CONFNAK)
|
||||
break;
|
||||
|
||||
ho->neg_addr = 1;
|
||||
ho->old_addrs = 1;
|
||||
@ -829,7 +834,8 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
GETLONG(tl, p); /* Parse source address (his) */
|
||||
ciaddr1 = htonl(tl);
|
||||
IPCPDEBUG((LOG_INFO, "(%s)", ip_ntoa(ciaddr1)));
|
||||
if (wo->hisaddr && ciaddr1 != wo->hisaddr) {
|
||||
if (ciaddr1 != wo->hisaddr
|
||||
&& (ciaddr1 == 0 || !wo->accept_remote)) {
|
||||
orc = CONFNAK;
|
||||
if (!reject_if_disagree) {
|
||||
DECPTR(sizeof (long), p);
|
||||
@ -838,9 +844,6 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
}
|
||||
}
|
||||
|
||||
if (orc == CONFNAK)
|
||||
break;
|
||||
|
||||
ho->neg_addr = 1;
|
||||
ho->hisaddr = ciaddr1;
|
||||
break;
|
||||
@ -880,8 +883,6 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
PUTCHAR(wo->cflag, p);
|
||||
}
|
||||
}
|
||||
if (orc == CONFNAK)
|
||||
break;
|
||||
ho->maxslotindex = maxslotindex;
|
||||
ho->cflag = wo->cflag;
|
||||
}
|
||||
@ -972,7 +973,7 @@ ipcp_up(f)
|
||||
/*
|
||||
* We must have a non-zero IP address for both ends of the link.
|
||||
*/
|
||||
if (ho->hisaddr == 0)
|
||||
if (!ho->neg_addr)
|
||||
ho->hisaddr = ipcp_wantoptions[f->unit].hisaddr;
|
||||
|
||||
if (ho->hisaddr == 0) {
|
||||
|
@ -16,7 +16,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: ipcp.h,v 1.3 1993/11/10 01:34:14 paulus Exp $
|
||||
* $Id: ipcp.h,v 1.4 1994/02/22 00:11:59 paulus Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -45,6 +45,8 @@ typedef struct ipcp_options {
|
||||
int proxy_arp : 1; /* Make proxy ARP entry for peer? */
|
||||
int neg_vj : 1; /* Van Jacobson Compression? */
|
||||
int old_vj : 1; /* use old (short) form of VJ option? */
|
||||
int accept_local : 1; /* accept peer's value for ouraddr */
|
||||
int accept_remote : 1; /* accept peer's value for hisaddr */
|
||||
u_short vj_protocol; /* protocol value to use in VJ option */
|
||||
u_char maxslotindex, cflag; /* values for RFC1332 VJ compression neg. */
|
||||
u_long ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$Id: options.c,v 1.4 1994/01/25 05:58:10 paulus Exp $";
|
||||
static char rcsid[] = "$Id: options.c,v 1.5 1994/02/22 00:12:01 paulus Exp $";
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
@ -85,6 +85,7 @@ static int setproxyarp __ARGS((void));
|
||||
static int setpersist __ARGS((void));
|
||||
static int setdologin __ARGS((void));
|
||||
static int setusehostname __ARGS((void));
|
||||
static int setnoipdflt __ARGS((void));
|
||||
static int setlcptimeout __ARGS((char **));
|
||||
static int setlcpterm __ARGS((char **));
|
||||
static int setlcpconf __ARGS((char **));
|
||||
@ -98,6 +99,8 @@ static int setpapreqs __ARGS((char **));
|
||||
static int setchaptimeout __ARGS((char **));
|
||||
static int setchapchal __ARGS((char **));
|
||||
static int setchapintv __ARGS((char **));
|
||||
static int setipcpaccl __ARGS((void));
|
||||
static int setipcpaccr __ARGS((void));
|
||||
|
||||
static int number_option __ARGS((char *, long *, int));
|
||||
|
||||
@ -125,6 +128,7 @@ extern int uselogin;
|
||||
extern char our_name[];
|
||||
extern char remote_name[];
|
||||
int usehostname;
|
||||
int disable_defaultip;
|
||||
|
||||
/*
|
||||
* Valid arguments.
|
||||
@ -172,6 +176,7 @@ static struct cmd {
|
||||
"proxyarp", 0, setproxyarp, /* Add proxy ARP entry */
|
||||
"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 */
|
||||
"lcp-restart", 1, setlcptimeout, /* Set timeout for LCP */
|
||||
"lcp-max-terminate", 1, setlcpterm, /* Set max #xmits for term-reqs */
|
||||
"lcp-max-configure", 1, setlcpconf, /* Set max #xmits for conf-reqs */
|
||||
@ -185,6 +190,8 @@ static struct cmd {
|
||||
"chap-restart", 1, setchaptimeout, /* Set timeout for CHAP */
|
||||
"chap-max-challenge", 1, setchapchal, /* Set max #xmits for challenge */
|
||||
"chap-interval", 1, setchapintv, /* Set interval for rechallenge */
|
||||
"ipcp-accept-local", 0, setipcpaccl, /* Accept peer's address for us */
|
||||
"ipcp-accept-remote", 0, setipcpaccr, /* Accept peer's address for it */
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -925,6 +932,39 @@ setipaddr(arg)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setnoipdflt - disable setipdefault()
|
||||
*/
|
||||
static int
|
||||
setnoipdflt()
|
||||
{
|
||||
disable_defaultip = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setipcpaccl - accept peer's idea of our address
|
||||
*/
|
||||
static int
|
||||
setipcpaccl()
|
||||
{
|
||||
ipcp_wantoptions[0].accept_local = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setipcpaccr - accept peer's idea of its address
|
||||
*/
|
||||
static int
|
||||
setipcpaccr()
|
||||
{
|
||||
ipcp_wantoptions[0].accept_remote = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setipdefault - default our local IP address based on our hostname.
|
||||
*/
|
||||
@ -938,7 +978,7 @@ setipdefault()
|
||||
/*
|
||||
* If local IP address already given, don't bother.
|
||||
*/
|
||||
if (wo->ouraddr != 0)
|
||||
if (wo->ouraddr != 0 || disable_defaultip)
|
||||
return;
|
||||
|
||||
/*
|
||||
@ -946,6 +986,7 @@ setipdefault()
|
||||
* and take the first IP address as our local IP address.
|
||||
* If there isn't an IP address for our hostname, too bad.
|
||||
*/
|
||||
wo->accept_local = 1; /* don't insist on this default value */
|
||||
if ((hp = gethostbyname(hostname)) == NULL)
|
||||
return;
|
||||
local = *(long *)hp->h_addr;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* $Id: patchlevel.h,v 1.5 1994/01/25 05:58:12 paulus Exp $ */
|
||||
#define PATCHLEVEL 3
|
||||
/* $Id: patchlevel.h,v 1.6 1994/02/22 00:12:03 paulus Exp $ */
|
||||
#define PATCHLEVEL 4
|
||||
|
||||
#define VERSION "2.0"
|
||||
#define DATE "10 Jan 94"
|
||||
#define DATE "9 Feb 94"
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" manual page [] for pppd 2.0
|
||||
.\" $Id: pppd.8,v 1.4 1993/11/28 23:35:34 paulus Exp $
|
||||
.\" $Id: pppd.8,v 1.5 1994/02/22 00:12:04 paulus Exp $
|
||||
.\" SH section heading
|
||||
.\" SS subsection heading
|
||||
.\" LP paragraph
|
||||
@ -111,10 +111,20 @@ old versions of \fIpppd\fR).
|
||||
.I <local_IP_address>\fB:\fI<remote_IP_address>
|
||||
Set the local and/or remote interface IP addresses. Either one may be
|
||||
omitted. The IP addresses can be specified with a host name or in
|
||||
"decimal dot" notation (e.g. "150.203.23.247"). The default local
|
||||
address is the (first) IP address of the system. The remote address
|
||||
will be obtained from the peer if not specified in any option. Thus,
|
||||
in simple cases, this option is not required.
|
||||
decimal dot notation (e.g. 150.234.56.78). The default local
|
||||
address is the (first) IP address of the system (unless the
|
||||
.B noipdefault
|
||||
option is given). The remote address will be obtained from the peer
|
||||
if not specified in any option. Thus, in simple cases, this option is
|
||||
not required.
|
||||
If a local and/or remote IP address is specified with this option,
|
||||
.I pppd
|
||||
will not accept a different value from the peer in the IPCP
|
||||
negotiation, unless the
|
||||
.B ipcp-accept-local
|
||||
and/or
|
||||
.B ipcp-accept-remote
|
||||
options are given, respectively.
|
||||
.TP
|
||||
.B -all
|
||||
Don't request or allow negotiation of any options for LCP and IPCP (use
|
||||
@ -228,6 +238,13 @@ system.
|
||||
Use the system password database for authenticating the peer using
|
||||
PAP.
|
||||
.TP
|
||||
.B noipdefault
|
||||
Disables the default behaviour when no local IP address is specified,
|
||||
which is to determine (if possible) the local IP address from the
|
||||
hostname. With this option, the peer will have to supply the local IP
|
||||
address during IPCP negotiation (unless it specified explicitly on the
|
||||
command line or in an options file).
|
||||
.TP
|
||||
.B lcp-restart \fI<n>
|
||||
Set the LCP restart interval (retransmission timeout) to <n> seconds
|
||||
(default 3).
|
||||
@ -280,6 +297,18 @@ Set the maximum number of CHAP challenge transmissions to <n> (default
|
||||
If this option is given,
|
||||
.I pppd
|
||||
will rechallenge the peer every <n> seconds.
|
||||
.TP
|
||||
.B ipcp-accept-local
|
||||
With this option,
|
||||
.I pppd
|
||||
will accept the peer's idea of our local IP address, even if the
|
||||
local IP address was specified in an option.
|
||||
.TP
|
||||
.B ipcp-accept-remote
|
||||
With this option,
|
||||
.I pppd
|
||||
will accept the peer's idea of its (remote) IP address, even if the
|
||||
remote IP address was specified in an option.
|
||||
.SH OPTIONS FILES
|
||||
Options can be taken from files as well as the command line.
|
||||
.I pppd
|
||||
|
@ -18,13 +18,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$Id: ipcp.c,v 1.3 1993/11/10 01:34:12 paulus Exp $";
|
||||
static char rcsid[] = "$Id: ipcp.c,v 1.4 1994/02/22 00:11:57 paulus Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* Fix IP address negotiation (wantoptions or hisoptions).
|
||||
* Don't set zero IP addresses.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@ -242,6 +240,10 @@ ipcp_resetci(f)
|
||||
ipcp_options *wo = &ipcp_wantoptions[f->unit];
|
||||
|
||||
wo->req_addr = wo->neg_addr && ipcp_allowoptions[f->unit].neg_addr;
|
||||
if (wo->ouraddr == 0)
|
||||
wo->accept_local = 1;
|
||||
if (wo->hisaddr == 0)
|
||||
wo->accept_remote = 1;
|
||||
ipcp_gotoptions[f->unit] = *wo;
|
||||
cis_received[f->unit] = 0;
|
||||
}
|
||||
@ -501,17 +503,17 @@ ipcp_nakci(f, p, len)
|
||||
}
|
||||
|
||||
/*
|
||||
* Accept the peer's idea of our address if we don't know it.
|
||||
* Accept the peer's idea of his address if he knows it.
|
||||
* Accept the peer's idea of {our,his} address, if different
|
||||
* from our idea, only if the accept_{local,remote} flag is set.
|
||||
*/
|
||||
NAKCIADDR(CI_ADDR, neg_addr, go->old_addrs,
|
||||
if (!go->ouraddr && ciaddr1) { /* Do we know our address? */
|
||||
go->ouraddr = ciaddr1;
|
||||
if (go->accept_local && ciaddr1) { /* Do we know our address? */
|
||||
try.ouraddr = ciaddr1;
|
||||
IPCPDEBUG((LOG_INFO, "local IP address %s",
|
||||
ip_ntoa(ciaddr1)));
|
||||
}
|
||||
if (ciaddr2) { /* Does he know his? */
|
||||
go->hisaddr = ciaddr2;
|
||||
if (go->accept_remote && ciaddr2) { /* Does he know his? */
|
||||
try.hisaddr = ciaddr2;
|
||||
IPCPDEBUG((LOG_INFO, "remote IP address %s",
|
||||
ip_ntoa(ciaddr2)));
|
||||
}
|
||||
@ -572,11 +574,11 @@ ipcp_nakci(f, p, len)
|
||||
try.old_addrs = 1;
|
||||
GETLONG(l, p);
|
||||
ciaddr1 = htonl(l);
|
||||
if (ciaddr1)
|
||||
if (ciaddr1 && go->accept_local)
|
||||
try.ouraddr = ciaddr1;
|
||||
GETLONG(l, p);
|
||||
ciaddr2 = htonl(l);
|
||||
if (ciaddr2)
|
||||
if (ciaddr2 && go->accept_remote)
|
||||
try.hisaddr = ciaddr2;
|
||||
no.old_addrs = 1;
|
||||
break;
|
||||
@ -587,7 +589,7 @@ ipcp_nakci(f, p, len)
|
||||
try.old_addrs = 0;
|
||||
GETLONG(l, p);
|
||||
ciaddr1 = htonl(l);
|
||||
if (ciaddr1)
|
||||
if (ciaddr1 && go->accept_local)
|
||||
try.ouraddr = ciaddr1;
|
||||
no.neg_addr = 1;
|
||||
break;
|
||||
@ -778,7 +780,8 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
GETLONG(tl, p); /* Parse source address (his) */
|
||||
ciaddr1 = htonl(tl);
|
||||
IPCPDEBUG((LOG_INFO, "(%s:", ip_ntoa(ciaddr1)));
|
||||
if (wo->hisaddr && ciaddr1 != wo->hisaddr) {
|
||||
if (ciaddr1 != wo->hisaddr
|
||||
&& (ciaddr1 == 0 || !wo->accept_remote)) {
|
||||
orc = CONFNAK;
|
||||
if (!reject_if_disagree) {
|
||||
DECPTR(sizeof (long), p);
|
||||
@ -794,16 +797,18 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
GETLONG(tl, p); /* Parse desination address (ours) */
|
||||
ciaddr2 = htonl(tl);
|
||||
IPCPDEBUG((LOG_INFO, "%s)", ip_ntoa(ciaddr2)));
|
||||
if (wo->ouraddr && ciaddr2 != wo->ouraddr) {
|
||||
if (ciaddr2 != wo->ouraddr) {
|
||||
if (ciaddr2 == 0 || !wo->accept_local) {
|
||||
orc = CONFNAK;
|
||||
if (!reject_if_disagree) {
|
||||
DECPTR(sizeof (long), p);
|
||||
tl = ntohl(wo->ouraddr);
|
||||
PUTLONG(tl, p);
|
||||
}
|
||||
} else {
|
||||
go->ouraddr = ciaddr2; /* accept peer's idea */
|
||||
}
|
||||
}
|
||||
if (orc == CONFNAK)
|
||||
break;
|
||||
|
||||
ho->neg_addr = 1;
|
||||
ho->old_addrs = 1;
|
||||
@ -829,7 +834,8 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
GETLONG(tl, p); /* Parse source address (his) */
|
||||
ciaddr1 = htonl(tl);
|
||||
IPCPDEBUG((LOG_INFO, "(%s)", ip_ntoa(ciaddr1)));
|
||||
if (wo->hisaddr && ciaddr1 != wo->hisaddr) {
|
||||
if (ciaddr1 != wo->hisaddr
|
||||
&& (ciaddr1 == 0 || !wo->accept_remote)) {
|
||||
orc = CONFNAK;
|
||||
if (!reject_if_disagree) {
|
||||
DECPTR(sizeof (long), p);
|
||||
@ -838,9 +844,6 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
}
|
||||
}
|
||||
|
||||
if (orc == CONFNAK)
|
||||
break;
|
||||
|
||||
ho->neg_addr = 1;
|
||||
ho->hisaddr = ciaddr1;
|
||||
break;
|
||||
@ -880,8 +883,6 @@ ipcp_reqci(f, inp, len, reject_if_disagree)
|
||||
PUTCHAR(wo->cflag, p);
|
||||
}
|
||||
}
|
||||
if (orc == CONFNAK)
|
||||
break;
|
||||
ho->maxslotindex = maxslotindex;
|
||||
ho->cflag = wo->cflag;
|
||||
}
|
||||
@ -972,7 +973,7 @@ ipcp_up(f)
|
||||
/*
|
||||
* We must have a non-zero IP address for both ends of the link.
|
||||
*/
|
||||
if (ho->hisaddr == 0)
|
||||
if (!ho->neg_addr)
|
||||
ho->hisaddr = ipcp_wantoptions[f->unit].hisaddr;
|
||||
|
||||
if (ho->hisaddr == 0) {
|
||||
|
@ -16,7 +16,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: ipcp.h,v 1.3 1993/11/10 01:34:14 paulus Exp $
|
||||
* $Id: ipcp.h,v 1.4 1994/02/22 00:11:59 paulus Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -45,6 +45,8 @@ typedef struct ipcp_options {
|
||||
int proxy_arp : 1; /* Make proxy ARP entry for peer? */
|
||||
int neg_vj : 1; /* Van Jacobson Compression? */
|
||||
int old_vj : 1; /* use old (short) form of VJ option? */
|
||||
int accept_local : 1; /* accept peer's value for ouraddr */
|
||||
int accept_remote : 1; /* accept peer's value for hisaddr */
|
||||
u_short vj_protocol; /* protocol value to use in VJ option */
|
||||
u_char maxslotindex, cflag; /* values for RFC1332 VJ compression neg. */
|
||||
u_long ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$Id: options.c,v 1.4 1994/01/25 05:58:10 paulus Exp $";
|
||||
static char rcsid[] = "$Id: options.c,v 1.5 1994/02/22 00:12:01 paulus Exp $";
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
@ -85,6 +85,7 @@ static int setproxyarp __ARGS((void));
|
||||
static int setpersist __ARGS((void));
|
||||
static int setdologin __ARGS((void));
|
||||
static int setusehostname __ARGS((void));
|
||||
static int setnoipdflt __ARGS((void));
|
||||
static int setlcptimeout __ARGS((char **));
|
||||
static int setlcpterm __ARGS((char **));
|
||||
static int setlcpconf __ARGS((char **));
|
||||
@ -98,6 +99,8 @@ static int setpapreqs __ARGS((char **));
|
||||
static int setchaptimeout __ARGS((char **));
|
||||
static int setchapchal __ARGS((char **));
|
||||
static int setchapintv __ARGS((char **));
|
||||
static int setipcpaccl __ARGS((void));
|
||||
static int setipcpaccr __ARGS((void));
|
||||
|
||||
static int number_option __ARGS((char *, long *, int));
|
||||
|
||||
@ -125,6 +128,7 @@ extern int uselogin;
|
||||
extern char our_name[];
|
||||
extern char remote_name[];
|
||||
int usehostname;
|
||||
int disable_defaultip;
|
||||
|
||||
/*
|
||||
* Valid arguments.
|
||||
@ -172,6 +176,7 @@ static struct cmd {
|
||||
"proxyarp", 0, setproxyarp, /* Add proxy ARP entry */
|
||||
"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 */
|
||||
"lcp-restart", 1, setlcptimeout, /* Set timeout for LCP */
|
||||
"lcp-max-terminate", 1, setlcpterm, /* Set max #xmits for term-reqs */
|
||||
"lcp-max-configure", 1, setlcpconf, /* Set max #xmits for conf-reqs */
|
||||
@ -185,6 +190,8 @@ static struct cmd {
|
||||
"chap-restart", 1, setchaptimeout, /* Set timeout for CHAP */
|
||||
"chap-max-challenge", 1, setchapchal, /* Set max #xmits for challenge */
|
||||
"chap-interval", 1, setchapintv, /* Set interval for rechallenge */
|
||||
"ipcp-accept-local", 0, setipcpaccl, /* Accept peer's address for us */
|
||||
"ipcp-accept-remote", 0, setipcpaccr, /* Accept peer's address for it */
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -925,6 +932,39 @@ setipaddr(arg)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setnoipdflt - disable setipdefault()
|
||||
*/
|
||||
static int
|
||||
setnoipdflt()
|
||||
{
|
||||
disable_defaultip = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setipcpaccl - accept peer's idea of our address
|
||||
*/
|
||||
static int
|
||||
setipcpaccl()
|
||||
{
|
||||
ipcp_wantoptions[0].accept_local = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setipcpaccr - accept peer's idea of its address
|
||||
*/
|
||||
static int
|
||||
setipcpaccr()
|
||||
{
|
||||
ipcp_wantoptions[0].accept_remote = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setipdefault - default our local IP address based on our hostname.
|
||||
*/
|
||||
@ -938,7 +978,7 @@ setipdefault()
|
||||
/*
|
||||
* If local IP address already given, don't bother.
|
||||
*/
|
||||
if (wo->ouraddr != 0)
|
||||
if (wo->ouraddr != 0 || disable_defaultip)
|
||||
return;
|
||||
|
||||
/*
|
||||
@ -946,6 +986,7 @@ setipdefault()
|
||||
* and take the first IP address as our local IP address.
|
||||
* If there isn't an IP address for our hostname, too bad.
|
||||
*/
|
||||
wo->accept_local = 1; /* don't insist on this default value */
|
||||
if ((hp = gethostbyname(hostname)) == NULL)
|
||||
return;
|
||||
local = *(long *)hp->h_addr;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* $Id: patchlevel.h,v 1.5 1994/01/25 05:58:12 paulus Exp $ */
|
||||
#define PATCHLEVEL 3
|
||||
/* $Id: patchlevel.h,v 1.6 1994/02/22 00:12:03 paulus Exp $ */
|
||||
#define PATCHLEVEL 4
|
||||
|
||||
#define VERSION "2.0"
|
||||
#define DATE "10 Jan 94"
|
||||
#define DATE "9 Feb 94"
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" manual page [] for pppd 2.0
|
||||
.\" $Id: pppd.8,v 1.4 1993/11/28 23:35:34 paulus Exp $
|
||||
.\" $Id: pppd.8,v 1.5 1994/02/22 00:12:04 paulus Exp $
|
||||
.\" SH section heading
|
||||
.\" SS subsection heading
|
||||
.\" LP paragraph
|
||||
@ -111,10 +111,20 @@ old versions of \fIpppd\fR).
|
||||
.I <local_IP_address>\fB:\fI<remote_IP_address>
|
||||
Set the local and/or remote interface IP addresses. Either one may be
|
||||
omitted. The IP addresses can be specified with a host name or in
|
||||
"decimal dot" notation (e.g. "150.203.23.247"). The default local
|
||||
address is the (first) IP address of the system. The remote address
|
||||
will be obtained from the peer if not specified in any option. Thus,
|
||||
in simple cases, this option is not required.
|
||||
decimal dot notation (e.g. 150.234.56.78). The default local
|
||||
address is the (first) IP address of the system (unless the
|
||||
.B noipdefault
|
||||
option is given). The remote address will be obtained from the peer
|
||||
if not specified in any option. Thus, in simple cases, this option is
|
||||
not required.
|
||||
If a local and/or remote IP address is specified with this option,
|
||||
.I pppd
|
||||
will not accept a different value from the peer in the IPCP
|
||||
negotiation, unless the
|
||||
.B ipcp-accept-local
|
||||
and/or
|
||||
.B ipcp-accept-remote
|
||||
options are given, respectively.
|
||||
.TP
|
||||
.B -all
|
||||
Don't request or allow negotiation of any options for LCP and IPCP (use
|
||||
@ -228,6 +238,13 @@ system.
|
||||
Use the system password database for authenticating the peer using
|
||||
PAP.
|
||||
.TP
|
||||
.B noipdefault
|
||||
Disables the default behaviour when no local IP address is specified,
|
||||
which is to determine (if possible) the local IP address from the
|
||||
hostname. With this option, the peer will have to supply the local IP
|
||||
address during IPCP negotiation (unless it specified explicitly on the
|
||||
command line or in an options file).
|
||||
.TP
|
||||
.B lcp-restart \fI<n>
|
||||
Set the LCP restart interval (retransmission timeout) to <n> seconds
|
||||
(default 3).
|
||||
@ -280,6 +297,18 @@ Set the maximum number of CHAP challenge transmissions to <n> (default
|
||||
If this option is given,
|
||||
.I pppd
|
||||
will rechallenge the peer every <n> seconds.
|
||||
.TP
|
||||
.B ipcp-accept-local
|
||||
With this option,
|
||||
.I pppd
|
||||
will accept the peer's idea of our local IP address, even if the
|
||||
local IP address was specified in an option.
|
||||
.TP
|
||||
.B ipcp-accept-remote
|
||||
With this option,
|
||||
.I pppd
|
||||
will accept the peer's idea of its (remote) IP address, even if the
|
||||
remote IP address was specified in an option.
|
||||
.SH OPTIONS FILES
|
||||
Options can be taken from files as well as the command line.
|
||||
.I pppd
|
||||
|
Loading…
Reference in New Issue
Block a user