{ "ipv6cp-noremote", o_bool, &ipv6cp_noremote,
"Allow peer to have no interface identifier", 1 },
#endif
+ { "ipv6cp-nosend", o_bool, &ipv6cp_wantoptions[0].neg_ifaceid,
+ "Don't send local interface identifier to peer", OPT_A2CLR },
{ "ipv6cp-restart", o_int, &ipv6cp_fsm[0].timeouttime,
"Set timeout for IPv6CP", OPT_PRIO },
static int
ipv6cp_nakci(fsm *f, u_char *p, int len, int treat_as_reject)
{
+ ipv6cp_options *wo = &ipv6cp_wantoptions[f->unit];
ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
u_char citype, cilen, *next;
u_short cishort;
try.neg_ifaceid = 0;
} else if (go->accept_local && !eui64_iszero(ifaceid) && !eui64_equals(ifaceid, go->hisid)) {
try.ourid = ifaceid;
- } else if (eui64_iszero(ifaceid) && !go->opt_local) {
+ } else if (eui64_iszero(ifaceid) && !go->opt_local && wo->neg_ifaceid) {
while (eui64_iszero(ifaceid) ||
eui64_equals(ifaceid, go->hisid)) /* bad luck */
eui64_magic(ifaceid);
eui64_get(ifaceid, p);
if (go->accept_local && !eui64_iszero(ifaceid) && !eui64_equals(ifaceid, go->hisid)) {
try.ourid = ifaceid;
- } else if (eui64_iszero(ifaceid) && !go->opt_local) {
+ } else if (eui64_iszero(ifaceid) && !go->opt_local && wo->neg_ifaceid) {
while (eui64_iszero(ifaceid) ||
eui64_equals(ifaceid, go->hisid)) /* bad luck */
eui64_magic(ifaceid);
Router Advertisement or ICMPv6 Neighbor Advertisement packets. Note that IPv6
router must announce ICMPv6 Router Advertisement packets.
.TP
+.B ipv6cp\-nosendip
+Don't send our local IPv6 interface identifier to peer during IPv6 interface
+identifier negotiation.
+.TP
.B ipv6cp\-max\-configure \fIn
Set the maximum number of IPv6CP configure-request transmissions to
\fIn\fR (default 10).