41 lines
1.7 KiB
Diff
41 lines
1.7 KiB
Diff
|
--- ppp-2.4.3/pppd/ipv6cp.c~ 2005-11-04 09:40:10.000000000 +0000
|
||
|
+++ ppp-2.4.3/pppd/ipv6cp.c 2005-11-04 10:20:14.000000000 +0000
|
||
|
@@ -235,6 +235,8 @@ static option_t ipv6cp_option_list[] = {
|
||
|
|
||
|
{ "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local,
|
||
|
"Accept peer's interface identifier for us", 1 },
|
||
|
+ { "ipv6cp-accept-remote", o_bool, &ipv6cp_allowoptions[0].accept_remote,
|
||
|
+ "Accept peer's interface identifier for itself", 1 },
|
||
|
|
||
|
{ "ipv6cp-use-ipaddr", o_bool, &ipv6cp_allowoptions[0].use_ip,
|
||
|
"Use (default) IPv4 address as interface identifier", 1 },
|
||
|
@@ -427,6 +429,7 @@ ipv6cp_init(unit)
|
||
|
memset(ao, 0, sizeof(*ao));
|
||
|
|
||
|
wo->accept_local = 1;
|
||
|
+ wo->accept_remote = 1;
|
||
|
wo->neg_ifaceid = 1;
|
||
|
ao->neg_ifaceid = 1;
|
||
|
|
||
|
@@ -952,7 +955,7 @@ ipv6cp_reqci(f, inp, len, reject_if_disa
|
||
|
orc = CONFREJ; /* Reject CI */
|
||
|
break;
|
||
|
}
|
||
|
- if (!eui64_iszero(wo->hisid) &&
|
||
|
+ if (!eui64_iszero(wo->hisid) && !wo->accept_remote &&
|
||
|
!eui64_equals(ifaceid, wo->hisid) &&
|
||
|
eui64_iszero(go->hisid)) {
|
||
|
|
||
|
--- ppp-2.4.3/pppd/ipv6cp.h~ 2002-12-04 23:03:32.000000000 +0000
|
||
|
+++ ppp-2.4.3/pppd/ipv6cp.h 2005-11-04 10:20:55.000000000 +0000
|
||
|
@@ -150,7 +150,8 @@
|
||
|
typedef struct ipv6cp_options {
|
||
|
int neg_ifaceid; /* Negotiate interface identifier? */
|
||
|
int req_ifaceid; /* Ask peer to send interface identifier? */
|
||
|
- int accept_local; /* accept peer's value for iface id? */
|
||
|
+ int accept_local; /* accept peer's value for our iface id? */
|
||
|
+ int accept_remote; /* accept peer's value for his iface id? */
|
||
|
int opt_local; /* ourtoken set by option */
|
||
|
int opt_remote; /* histoken set by option */
|
||
|
int use_ip; /* use IP as interface identifier */
|