Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Fixes #76
{ "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local,
"Accept peer's interface identifier for us", 1 },
{ "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 },
{ "defaultroute6", o_bool, &ipv6cp_wantoptions[0].default_route,
"Add default IPv6 route", OPT_ENABLE|1, &ipv6cp_allowoptions[0].default_route },
{ "defaultroute6", o_bool, &ipv6cp_wantoptions[0].default_route,
"Add default IPv6 route", OPT_ENABLE|1, &ipv6cp_allowoptions[0].default_route },
memset(ao, 0, sizeof(*ao));
wo->accept_local = 0;
memset(ao, 0, sizeof(*ao));
wo->accept_local = 0;
wo->neg_ifaceid = 1;
ao->neg_ifaceid = 1;
wo->neg_ifaceid = 1;
ao->neg_ifaceid = 1;
wo->accept_local = 1;
eui64_magic_nz(wo->ourid);
}
wo->accept_local = 1;
eui64_magic_nz(wo->ourid);
}
+ if (!wo->opt_remote)
+ wo->accept_remote = 1;
*go = *wo;
eui64_zero(go->hisid); /* last proposed interface identifier */
*go = *wo;
eui64_zero(go->hisid); /* last proposed interface identifier */
orc = CONFREJ; /* Reject CI */
break;
}
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)) {
!eui64_equals(ifaceid, wo->hisid) &&
eui64_iszero(go->hisid)) {
int neg_ifaceid; /* Negotiate interface identifier? */
int req_ifaceid; /* Ask peer to send interface identifier? */
int default_route; /* Assign default route through interface? */
int neg_ifaceid; /* Negotiate interface identifier? */
int req_ifaceid; /* Ask peer to send interface identifier? */
int default_route; /* Assign default route through interface? */
- 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 */
int opt_local; /* ourtoken set by option */
int opt_remote; /* histoken set by option */
int use_ip; /* use IP as interface identifier */
interface identifier, even if the local IPv6 interface identifier
was specified in an option.
.TP
interface identifier, even if the local IPv6 interface identifier
was specified in an option.
.TP
+.B ipv6cp\-accept\-remote
+With this option, pppd will accept the peer's idea of its (remote)
+IPv6 interface identifier, even if the remote IPv6 interface
+identifier was specified in an option.
+.TP
.B ipv6cp\-max\-configure \fIn
Set the maximum number of IPv6CP configure-request transmissions to
\fIn\fR (default 10).
.B ipv6cp\-max\-configure \fIn
Set the maximum number of IPv6CP configure-request transmissions to
\fIn\fR (default 10).