1 |
slords |
1.1 |
--- ppp-2.4.3/pppd/ipv6cp.c~ 2005-11-04 09:40:10.000000000 +0000 |
2 |
|
|
+++ ppp-2.4.3/pppd/ipv6cp.c 2005-11-04 10:20:14.000000000 +0000 |
3 |
|
|
@@ -235,6 +235,8 @@ static option_t ipv6cp_option_list[] = { |
4 |
|
|
|
5 |
|
|
{ "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local, |
6 |
|
|
"Accept peer's interface identifier for us", 1 }, |
7 |
|
|
+ { "ipv6cp-accept-remote", o_bool, &ipv6cp_allowoptions[0].accept_remote, |
8 |
|
|
+ "Accept peer's interface identifier for itself", 1 }, |
9 |
|
|
|
10 |
|
|
{ "ipv6cp-use-ipaddr", o_bool, &ipv6cp_allowoptions[0].use_ip, |
11 |
|
|
"Use (default) IPv4 address as interface identifier", 1 }, |
12 |
|
|
@@ -427,6 +429,7 @@ ipv6cp_init(unit) |
13 |
|
|
memset(ao, 0, sizeof(*ao)); |
14 |
|
|
|
15 |
|
|
wo->accept_local = 1; |
16 |
|
|
+ wo->accept_remote = 1; |
17 |
|
|
wo->neg_ifaceid = 1; |
18 |
|
|
ao->neg_ifaceid = 1; |
19 |
|
|
|
20 |
|
|
@@ -952,7 +955,7 @@ ipv6cp_reqci(f, inp, len, reject_if_disa |
21 |
|
|
orc = CONFREJ; /* Reject CI */ |
22 |
|
|
break; |
23 |
|
|
} |
24 |
|
|
- if (!eui64_iszero(wo->hisid) && |
25 |
|
|
+ if (!eui64_iszero(wo->hisid) && !wo->accept_remote && |
26 |
|
|
!eui64_equals(ifaceid, wo->hisid) && |
27 |
|
|
eui64_iszero(go->hisid)) { |
28 |
|
|
|
29 |
|
|
--- ppp-2.4.3/pppd/ipv6cp.h~ 2002-12-04 23:03:32.000000000 +0000 |
30 |
|
|
+++ ppp-2.4.3/pppd/ipv6cp.h 2005-11-04 10:20:55.000000000 +0000 |
31 |
|
|
@@ -150,7 +150,8 @@ |
32 |
|
|
typedef struct ipv6cp_options { |
33 |
|
|
int neg_ifaceid; /* Negotiate interface identifier? */ |
34 |
|
|
int req_ifaceid; /* Ask peer to send interface identifier? */ |
35 |
|
|
- int accept_local; /* accept peer's value for iface id? */ |
36 |
|
|
+ int accept_local; /* accept peer's value for our iface id? */ |
37 |
|
|
+ int accept_remote; /* accept peer's value for his iface id? */ |
38 |
|
|
int opt_local; /* ourtoken set by option */ |
39 |
|
|
int opt_remote; /* histoken set by option */ |
40 |
|
|
int use_ip; /* use IP as interface identifier */ |