Am Dienstag, den 30.06.2015, 20:27 +0200 schrieb Patrik Lundin: > We start out by enabling autoconf on em0 to get a default route via > fe80: > === > # ifconfig em0 inet6 autoconf > === > > The interface configuration now looks like this: [...] > em0: flags=208843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6> > mtu 1500 > lladdr d0:50:99:51:78:e8 > priority: 0 > groups: egress > media: Ethernet autoselect (1000baseT full-duplex) > status: active > inet XX.XXX.8.17 netmask 0xffffff80 broadcast XX.XXX.8.127 > inet6 fe80::d250:99ff:fe51:78e8%em0 prefixlen 64 scopeid 0x1
No global inet6 address available. Looks like autoconf did not succeed. > defrouter_select: called unexpectedly (forwarding=1) > nd6_ra_input: invalid prefixlen 48 for rfc2374 prefix > XXXX:XXX:XXXX::, ignored > === See? ;-) Okay, I probably know the problem: As RFC 2374 (superseded by 3587) is mentioned, SLAAC assumes a local part of 64: nd6_rtr.c: | /* aggregatable unicast address, rfc2374 */ | if ((pi->nd_opt_pi_prefix.s6_addr8[0] & 0xe0) == 0x20 | && pi->nd_opt_pi_prefix_len != 64) { | nd6log((LOG_INFO, | "nd6_ra_input: invalid prefixlen " | "%d for rfc2374 prefix %s, ignored\n", | pi->nd_opt_pi_prefix_len, | inet_ntop(AF_INET6, &pi->nd_opt_pi_prefix, | src, sizeof(src)))); | continue; |} It is a common assumtion, that autoconf only works on /64 prefixes. Even Wikipedia claimed this, citing the wrong RFC, which did not even support their claim m( True is, that SLAAC is defined in RFC 4826, that it es defined regardless of the prefix length, but /64 is assumed to be the usual one. Also true is, hat OpenBSD seems to require a 64 bit prefix, just like most other implementations. I cannot estimate, how much work it would be to support other prefix lengths (e.g. as EUI-64 cannot be uses on non-64-bit prefixes) and whether or not it is a worthwhile target to persue. Cheers, David