Re: v6 autoconf, where have my connected routes gone?
On 20/08/15(Thu) 19:32, Sebastian Reitenbach wrote: On 08/19/15 17:51, Martin Pieuchot wrote: [...] With the patch below, together with the other patch you mention above, my problem is gone, network works as I expect it. Thanks for testing, I'd appreciate reviews and oks for the first diff I sent then. M.
Re: v6 autoconf, where have my connected routes gone?
On 08/19/15 17:51, Martin Pieuchot wrote: On 18/08/15(Tue) 23:22, Martin Pieuchot wrote: On 18/08/15(Tue) 14:00, Stuart Henderson wrote: On 2015/08/18 14:27, Martin Pieuchot wrote: On 18/08/15(Tue) 13:05, Stuart Henderson wrote: I'm trying to add v6 to my second ISP connection on pppoe1, unlike my first ISP, this one requires autoconf and dhcpv6-pd to pick up addresses and have them routed. (They are referring to TR-187, https://www.broadband-forum.org/technical/download/TR-187.pdf - the residential gateway requirements are in section 6.1) I haven't got as far as looking at dhcpv6-pd because when I enable autoconf, as soon as it picks up the address I lose connected routes to my local /64 subnets: Which prefixes (ndp -p) and default routers (ndp -r) do you have before and after the interface picks up the address? Before: no default routers showing with ndp -r. $ ndp -p | paste - - - | sed 's/vltime=infinity, pltime=infinity, expire=Never, //' [...] 2001:4b10:1002:cc01::/64 if=vlan2 flags=LO ref=1No advertising router ... After: $ ndp -r [...] 2001:4b10:1002:cc01::/64 if=vlan2 flags=LD ref=1No advertising router See how all your prefix suddenly became detached D? That's a limitation of pfxlist_onlink_check() which does not make a difference between prefixes added to the global prefix list via an advertisement or via manual configuration. I'll see if it's possible to split the prefix lists in such way that the RS/RA code only mess with its own states. Diff below is just slightly tested and depends on the diff to Kill IN6_IFF_NODAD but it shows where I'd like to go. The idea is to use the global prefix list only for AUTOCONF'd addresses. Since this list is only checked in nd6_is_addr_neighbor() I added a new case for non-AUTOCONF'd addresses. With it you should not longer see the prefix of your manually configured interfaces in the ndp -p output but it's ok since they should always be in your routing table. That problem sthen@ describes here, sounds very similar to my home situation. My router has IPv6 /48 HE tunnel, and on the wired network, i have /64 subnet where all hosts have statically configured IPv6 addresses, incl. default route. The router is also WLAN AP, where it has rtadvd running on the WLAN if, and announcing a different /64 subnet. Notebooks and other gear, that might have WLAN and network interfaces, when connected to the wired network, and autoconf on the WLAN interface kicked in, the IPv6 connection to the local /64 network were gone. With the patch below, together with the other patch you mention above, my problem is gone, network works as I expect it. cheers, Sebastian diff --git sys/netinet6/in6.c sys/netinet6/in6.c index 2f5d5a6..e9101dc 100644 --- sys/netinet6/in6.c +++ sys/netinet6/in6.c @@ -462,7 +462,6 @@ in6_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) case SIOCAIFADDR_IN6: { - struct nd_prefix *pr; int plen, error = 0; /* reject read-only flags */ @@ -509,40 +508,19 @@ in6_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) if (ia6-ia6_flags IN6_IFF_TENTATIVE) nd6_dad_start(ia6-ia_ifa); - plen = in6_mask2len(ifra-ifra_prefixmask.sin6_addr, NULL); if (plen == 128) { dohooks(ifp-if_addrhooks, 0); break; /* we don't need to install a host route. */ } - /* -* then, make the prefix on-link on the interface. -* XXX: we'd rather create the prefix before the address, but -* we need at least one address to install the corresponding -* interface route, so we configure the address first. -*/ - pr = nd6_prefix_add(ifp, ifra-ifra_addr, - ifra-ifra_prefixmask, ifra-ifra_lifetime, - ((ifra-ifra_flags IN6_IFF_AUTOCONF) != 0)); - if (pr == NULL) { - log(LOG_ERR, cannot add prefix\n); - return (EINVAL); /* XXX panic here? */ - } - - /* relate the address to the prefix */ - if (ia6-ia6_ndpr == NULL) { - ia6-ia6_ndpr = pr; - pr-ndpr_refcnt++; + error = rt_ifa_add(ia6-ia_ifa, + RTF_UP|RTF_CLONING|RTF_CONNECTED, ia6-ia_ifa.ifa_addr); + if (error) { + in6_purgeaddr(ia6-ia_ifa); + return (error); } - s = splsoftnet(); - /* -* this might affect the status of autoconfigured addresses, -* that is, this address might make other addresses detached. -*/ - pfxlist_onlink_check(); - dohooks(ifp-if_addrhooks, 0);
Re: v6 autoconf, where have my connected routes gone?
On 18/08/15(Tue) 23:22, Martin Pieuchot wrote: On 18/08/15(Tue) 14:00, Stuart Henderson wrote: On 2015/08/18 14:27, Martin Pieuchot wrote: On 18/08/15(Tue) 13:05, Stuart Henderson wrote: I'm trying to add v6 to my second ISP connection on pppoe1, unlike my first ISP, this one requires autoconf and dhcpv6-pd to pick up addresses and have them routed. (They are referring to TR-187, https://www.broadband-forum.org/technical/download/TR-187.pdf - the residential gateway requirements are in section 6.1) I haven't got as far as looking at dhcpv6-pd because when I enable autoconf, as soon as it picks up the address I lose connected routes to my local /64 subnets: Which prefixes (ndp -p) and default routers (ndp -r) do you have before and after the interface picks up the address? Before: no default routers showing with ndp -r. $ ndp -p | paste - - - | sed 's/vltime=infinity, pltime=infinity, expire=Never, //' [...] 2001:4b10:1002:cc01::/64 if=vlan2 flags=LO ref=1No advertising router ... After: $ ndp -r [...] 2001:4b10:1002:cc01::/64 if=vlan2 flags=LD ref=1No advertising router See how all your prefix suddenly became detached D? That's a limitation of pfxlist_onlink_check() which does not make a difference between prefixes added to the global prefix list via an advertisement or via manual configuration. I'll see if it's possible to split the prefix lists in such way that the RS/RA code only mess with its own states. Diff below is just slightly tested and depends on the diff to Kill IN6_IFF_NODAD but it shows where I'd like to go. The idea is to use the global prefix list only for AUTOCONF'd addresses. Since this list is only checked in nd6_is_addr_neighbor() I added a new case for non-AUTOCONF'd addresses. With it you should not longer see the prefix of your manually configured interfaces in the ndp -p output but it's ok since they should always be in your routing table. diff --git sys/netinet6/in6.c sys/netinet6/in6.c index 2f5d5a6..e9101dc 100644 --- sys/netinet6/in6.c +++ sys/netinet6/in6.c @@ -462,7 +462,6 @@ in6_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) case SIOCAIFADDR_IN6: { - struct nd_prefix *pr; int plen, error = 0; /* reject read-only flags */ @@ -509,40 +508,19 @@ in6_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) if (ia6-ia6_flags IN6_IFF_TENTATIVE) nd6_dad_start(ia6-ia_ifa); - plen = in6_mask2len(ifra-ifra_prefixmask.sin6_addr, NULL); if (plen == 128) { dohooks(ifp-if_addrhooks, 0); break; /* we don't need to install a host route. */ } - /* -* then, make the prefix on-link on the interface. -* XXX: we'd rather create the prefix before the address, but -* we need at least one address to install the corresponding -* interface route, so we configure the address first. -*/ - pr = nd6_prefix_add(ifp, ifra-ifra_addr, - ifra-ifra_prefixmask, ifra-ifra_lifetime, - ((ifra-ifra_flags IN6_IFF_AUTOCONF) != 0)); - if (pr == NULL) { - log(LOG_ERR, cannot add prefix\n); - return (EINVAL); /* XXX panic here? */ - } - - /* relate the address to the prefix */ - if (ia6-ia6_ndpr == NULL) { - ia6-ia6_ndpr = pr; - pr-ndpr_refcnt++; + error = rt_ifa_add(ia6-ia_ifa, + RTF_UP|RTF_CLONING|RTF_CONNECTED, ia6-ia_ifa.ifa_addr); + if (error) { + in6_purgeaddr(ia6-ia_ifa); + return (error); } - s = splsoftnet(); - /* -* this might affect the status of autoconfigured addresses, -* that is, this address might make other addresses detached. -*/ - pfxlist_onlink_check(); - dohooks(ifp-if_addrhooks, 0); splx(s); break; @@ -977,24 +955,19 @@ in6_purgeaddr(struct ifaddr *ifa) void in6_unlink_ifa(struct in6_ifaddr *ia6, struct ifnet *ifp) { + struct ifaddr *ifa = ia6-ia_ifa; + splsoftassert(IPL_SOFTNET); - ifa_del(ifp, ia6-ia_ifa); + ifa_del(ifp, ifa); TAILQ_REMOVE(in6_ifaddr, ia6, ia_list); /* Release the reference to the base prefix. */ if (ia6-ia6_ndpr == NULL) { - char addr[INET6_ADDRSTRLEN]; - - if (!IN6_IS_ADDR_LINKLOCAL(IA6_IN6(ia6)) - !IN6_IS_ADDR_LOOPBACK(IA6_IN6(ia6)) -
Re: v6 autoconf, where have my connected routes gone?
On 18/08/15(Tue) 13:05, Stuart Henderson wrote: I'm trying to add v6 to my second ISP connection on pppoe1, unlike my first ISP, this one requires autoconf and dhcpv6-pd to pick up addresses and have them routed. (They are referring to TR-187, https://www.broadband-forum.org/technical/download/TR-187.pdf - the residential gateway requirements are in section 6.1) I haven't got as far as looking at dhcpv6-pd because when I enable autoconf, as soon as it picks up the address I lose connected routes to my local /64 subnets: Which prefixes (ndp -p) and default routers (ndp -r) do you have before and after the interface picks up the address? # sysctl kern.version kern.version=OpenBSD 5.8 (GENERIC.MP) #1236: Sun Aug 16 02:31:04 MDT 2015 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP # netstat -rnfinet6|grep ^2001.*/64 2001:4b10:1002:ff::/64 fe80::225:90ff:fec0:77b4%pppoe0 U 00 - 4 pppoe0 2001:4b10:1002:cc01::/64 fe80::200:5eff:fe00:102%carp2 UC 20 - 4 carp2 2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 10 - 4 vlan3 2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 00 - 4 vlan5 2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 # ifconfig pppoe1 inet6 autoconf # netstat -rnfinet6|grep ^2001.*/64 # ifconfig pppoe1 -inet6 # ifconfig pppoe1 pppoe1: flags=208851UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6 mtu 1500 priority: 0 dev: em1 state: session sid: 0x93f PADI retries: 2 PADR retries: 0 time: 00:02:12 sppp: phase network authproto chap authname xx groups: pppoe egress status: active inet6 fe80::225:90ff:fec0:77b4%pppoe1 - prefixlen 64 scopeid 0x14 inet 82.68.199.142 -- 62.3.84.27 netmask 0x inet6 2a02:8011:d00e:3:225:90ff:fec0:77b4 - prefixlen 64 autoconf pltime 1799 vltime 17999 inet6 2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac - prefixlen 64 autoconf autoconfprivacy pltime 1799 vltime 17999 # netstat -rnfinet6|grep ^2001.*/64 2001:4b10:1002:ff::/64 fe80::225:90ff:fec0:77b4%pppoe0 U 00 - 4 pppoe0 2001:4b10:1002:cc01::/64 fe80::200:5eff:fe00:102%carp2 UC 10 - 4 carp2 2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 00 - 4 vlan3 2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 00 - 4 vlan5 2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 Diffs of netstat -rnfinet6 (followed by full output, before+after) below. Anyone have an idea what's going on? ... $ diff -u0 before after | grep -v ^@ --- before Tue Aug 18 12:39:39 2015 +++ after Tue Aug 18 12:39:48 2015 +defaultfe80::230:88ff:fe16:5eff%pppoe1 UG 00 -56 pppoe1 -2001:4b10:1002:cc01::/64 fe80::225:90ff:fec0:77b4%vlan2 UC 20 - 4 vlan2 -2001:4b10:1002:cc01:20d:93ff:fe63:da5a 00:0d:93:63:da:5a UHLc 03 - 4 vlan2 -2001:4b10:1002:cc01:230:48ff:fe58:8640 f8:b1:56:ac:32:76 UHLc 0 664 - 4 vlan2 -2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 10 - 4 vlan3 -2001:4b10:1002:cc03:220:4aff:fec5:5b55 00:20:4a:c5:5b:55 UHLc 0 40 - 4 vlan3 -2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 00 - 4 vlan5 -2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 +2a02:8011:d00e:3:225:90ff:fec0:77b4 2a02:8011:d00e:3:225:90ff:fec0:77b4 UHl 00 - 1 lo0 +2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac 2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac UHl00 - 1 lo0 -fe80::fab1:56ff:feac:3276%vlan2f8:b1:56:ac:32:76 UHLc 07 - 4 vlan2 +fe80::fab1:56ff:feac:3276%vlan2f8:b1:56:ac:32:76 UHLc 08 - 4 vlan2 -fe80::220:4aff:fec5:5b55%vlan3 00:20:4a:c5:5b:55 UHLc 06 - 4 vlan3 +fe80::220:4aff:fec5:5b55%vlan3 00:20:4a:c5:5b:55 UHLc 08 - 4 vlan3 -fe80::%pppoe1/64 fe80::225:90ff:fec0:77b4%pppoe1 U 00 - 4 pppoe1 +fe80::%pppoe1/64 fe80::225:90ff:fec0:77b4%pppoe1 U 10 - 4 pppoe1 +fe80::230:88ff:fe16:5eff%pppoe1pppoe1 UHL 00 - 4 pppoe1 # cat before Routing tables
Re: v6 autoconf, where have my connected routes gone?
On 2015/08/18 14:27, Martin Pieuchot wrote: On 18/08/15(Tue) 13:05, Stuart Henderson wrote: I'm trying to add v6 to my second ISP connection on pppoe1, unlike my first ISP, this one requires autoconf and dhcpv6-pd to pick up addresses and have them routed. (They are referring to TR-187, https://www.broadband-forum.org/technical/download/TR-187.pdf - the residential gateway requirements are in section 6.1) I haven't got as far as looking at dhcpv6-pd because when I enable autoconf, as soon as it picks up the address I lose connected routes to my local /64 subnets: Which prefixes (ndp -p) and default routers (ndp -r) do you have before and after the interface picks up the address? Before: no default routers showing with ndp -r. $ ndp -p | paste - - - | sed 's/vltime=infinity, pltime=infinity, expire=Never, //' fe80::%pppoe1/64 if=pppoe1 flags=LAO ref=0 No advertising router fe80::%pppoe0/64 if=pppoe0 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=carp2 flags=L ref=1 No advertising router fe80::%carp2/64 if=carp2flags=LAO ref=0 No advertising router 2001:4b10:1002:cc05::/64 if=vlan5 flags=LO ref=1No advertising router fe80::%vlan5/64 if=vlan5flags=LAO ref=0 No advertising router 2001:4b10:1002:cc07::/64 if=vlan3666flags=LO ref=1No advertising router fe80::%vlan3666/64 if=vlan3666 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc03::/64 if=vlan3 flags=LO ref=1No advertising router fe80::%vlan3/64 if=vlan3flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=vlan2 flags=LO ref=1No advertising router fe80::%vlan2/64 if=vlan2flags=LAO ref=0 No advertising router fe80::%lo0/64 if=lo0flags=LAO ref=0 No advertising router ... After: $ ndp -r fe80::230:88ff:fe16:5eff%pppoe1 if=pppoe1, flags=O, pref=medium, expire=19m55s 2a02:8011:d00e:3::/64 if=pppoe1 flags=LAD vltime=18000, pltime=1800, expire=4h59m19s, ref=2 advertised by fe80::230:88ff:fe16:5eff%pppoe1 (no neighbor state) fe80::%pppoe1/64 if=pppoe1 flags=LAO ref=0 No advertising router fe80::%pppoe0/64 if=pppoe0 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=carp2 flags=LD ref=1No advertising router fe80::%carp2/64 if=carp2flags=LAO ref=0 No advertising router 2001:4b10:1002:cc05::/64 if=vlan5 flags=LD ref=1No advertising router fe80::%vlan5/64 if=vlan5flags=LAO ref=0 No advertising router 2001:4b10:1002:cc07::/64 if=vlan3666flags=LD ref=1No advertising router fe80::%vlan3666/64 if=vlan3666 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc03::/64 if=vlan3 flags=LD ref=1No advertising router fe80::%vlan3/64 if=vlan3flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=vlan2 flags=LD ref=1No advertising router fe80::%vlan2/64 if=vlan2flags=LAO ref=0 No advertising router fe80::%lo0/64 if=lo0flags=LAO ref=0 No advertising router [ no more unquoted text below; I've avoided trimming it to keep everything together in one mail ] # sysctl kern.version kern.version=OpenBSD 5.8 (GENERIC.MP) #1236: Sun Aug 16 02:31:04 MDT 2015 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP # netstat -rnfinet6|grep ^2001.*/64 2001:4b10:1002:ff::/64 fe80::225:90ff:fec0:77b4%pppoe0 U 00 - 4 pppoe0 2001:4b10:1002:cc01::/64 fe80::200:5eff:fe00:102%carp2 UC 20 - 4 carp2 2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 10 - 4 vlan3 2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 00 - 4 vlan5 2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 # ifconfig pppoe1 inet6 autoconf # netstat -rnfinet6|grep ^2001.*/64 # ifconfig pppoe1 -inet6 # ifconfig pppoe1 pppoe1: flags=208851UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6 mtu 1500 priority: 0 dev: em1 state: session sid: 0x93f PADI retries: 2 PADR retries: 0 time: 00:02:12 sppp: phase network authproto chap authname xx groups: pppoe egress status: active inet6 fe80::225:90ff:fec0:77b4%pppoe1 - prefixlen 64 scopeid 0x14 inet 82.68.199.142 -- 62.3.84.27 netmask 0x inet6 2a02:8011:d00e:3:225:90ff:fec0:77b4 - prefixlen 64 autoconf pltime 1799 vltime 17999 inet6 2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac - prefixlen 64 autoconf autoconfprivacy pltime 1799 vltime 17999 # netstat -rnfinet6|grep ^2001.*/64 2001:4b10:1002:ff::/64
v6 autoconf, where have my connected routes gone?
I'm trying to add v6 to my second ISP connection on pppoe1, unlike my first ISP, this one requires autoconf and dhcpv6-pd to pick up addresses and have them routed. (They are referring to TR-187, https://www.broadband-forum.org/technical/download/TR-187.pdf - the residential gateway requirements are in section 6.1) I haven't got as far as looking at dhcpv6-pd because when I enable autoconf, as soon as it picks up the address I lose connected routes to my local /64 subnets: # sysctl kern.version kern.version=OpenBSD 5.8 (GENERIC.MP) #1236: Sun Aug 16 02:31:04 MDT 2015 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP # netstat -rnfinet6|grep ^2001.*/64 2001:4b10:1002:ff::/64 fe80::225:90ff:fec0:77b4%pppoe0 U 0 0 - 4 pppoe0 2001:4b10:1002:cc01::/64 fe80::200:5eff:fe00:102%carp2 UC 2 0 - 4 carp2 2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 1 0 - 4 vlan3 2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 0 0 - 4 vlan5 2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 # ifconfig pppoe1 inet6 autoconf # netstat -rnfinet6|grep ^2001.*/64 # ifconfig pppoe1 -inet6 # ifconfig pppoe1 pppoe1: flags=208851UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6 mtu 1500 priority: 0 dev: em1 state: session sid: 0x93f PADI retries: 2 PADR retries: 0 time: 00:02:12 sppp: phase network authproto chap authname xx groups: pppoe egress status: active inet6 fe80::225:90ff:fec0:77b4%pppoe1 - prefixlen 64 scopeid 0x14 inet 82.68.199.142 -- 62.3.84.27 netmask 0x inet6 2a02:8011:d00e:3:225:90ff:fec0:77b4 - prefixlen 64 autoconf pltime 1799 vltime 17999 inet6 2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac - prefixlen 64 autoconf autoconfprivacy pltime 1799 vltime 17999 # netstat -rnfinet6|grep ^2001.*/64 2001:4b10:1002:ff::/64 fe80::225:90ff:fec0:77b4%pppoe0 U 0 0 - 4 pppoe0 2001:4b10:1002:cc01::/64 fe80::200:5eff:fe00:102%carp2 UC 1 0 - 4 carp2 2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 0 0 - 4 vlan3 2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 0 0 - 4 vlan5 2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 Diffs of netstat -rnfinet6 (followed by full output, before+after) below. Anyone have an idea what's going on? ... $ diff -u0 before after | grep -v ^@ --- before Tue Aug 18 12:39:39 2015 +++ after Tue Aug 18 12:39:48 2015 +defaultfe80::230:88ff:fe16:5eff%pppoe1 UG 00 -56 pppoe1 -2001:4b10:1002:cc01::/64 fe80::225:90ff:fec0:77b4%vlan2 UC 2 0 - 4 vlan2 -2001:4b10:1002:cc01:20d:93ff:fe63:da5a 00:0d:93:63:da:5a UHLc 03 - 4 vlan2 -2001:4b10:1002:cc01:230:48ff:fe58:8640 f8:b1:56:ac:32:76 UHLc 0 664 - 4 vlan2 -2001:4b10:1002:cc03::/64 fe80::210:18ff:fe7f:1f06%vlan3 UC 1 0 - 4 vlan3 -2001:4b10:1002:cc03:220:4aff:fec5:5b55 00:20:4a:c5:5b:55 UHLc 0 40 - 4 vlan3 -2001:4b10:1002:cc05::/64 fe80::210:18ff:fe7f:1f06%vlan5 UC 0 0 - 4 vlan5 -2001:4b10:1002:cc07::/64 fe80::210:18ff:fe7f:1f06%vlan3666 UC 00 - 4 vlan3666 +2a02:8011:d00e:3:225:90ff:fec0:77b4 2a02:8011:d00e:3:225:90ff:fec0:77b4 UHl 00 - 1 lo0 +2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac 2a02:8011:d00e:3:a4f6:285a:fe8d:d1ac UHl 00 - 1 lo0 -fe80::fab1:56ff:feac:3276%vlan2f8:b1:56:ac:32:76 UHLc 0 7 - 4 vlan2 +fe80::fab1:56ff:feac:3276%vlan2f8:b1:56:ac:32:76 UHLc 0 8 - 4 vlan2 -fe80::220:4aff:fec5:5b55%vlan3 00:20:4a:c5:5b:55 UHLc 0 6 - 4 vlan3 +fe80::220:4aff:fec5:5b55%vlan3 00:20:4a:c5:5b:55 UHLc 0 8 - 4 vlan3 -fe80::%pppoe1/64 fe80::225:90ff:fec0:77b4%pppoe1 U 00 - 4 pppoe1 +fe80::%pppoe1/64 fe80::225:90ff:fec0:77b4%pppoe1 U 10 - 4 pppoe1 +fe80::230:88ff:fe16:5eff%pppoe1pppoe1 UHL0 0 - 4 pppoe1 # cat before Routing tables Internet6: DestinationGatewayFlags Refs Use Mtu Prio Iface ::/104 ::1UGRS 0 0 32768 8 lo0 ::/96 ::1
Re: v6 autoconf, where have my connected routes gone?
On 18/08/15(Tue) 14:00, Stuart Henderson wrote: On 2015/08/18 14:27, Martin Pieuchot wrote: On 18/08/15(Tue) 13:05, Stuart Henderson wrote: I'm trying to add v6 to my second ISP connection on pppoe1, unlike my first ISP, this one requires autoconf and dhcpv6-pd to pick up addresses and have them routed. (They are referring to TR-187, https://www.broadband-forum.org/technical/download/TR-187.pdf - the residential gateway requirements are in section 6.1) I haven't got as far as looking at dhcpv6-pd because when I enable autoconf, as soon as it picks up the address I lose connected routes to my local /64 subnets: Which prefixes (ndp -p) and default routers (ndp -r) do you have before and after the interface picks up the address? Before: no default routers showing with ndp -r. $ ndp -p | paste - - - | sed 's/vltime=infinity, pltime=infinity, expire=Never, //' fe80::%pppoe1/64 if=pppoe1flags=LAO ref=0 No advertising router fe80::%pppoe0/64 if=pppoe0flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=carp2 flags=L ref=1 No advertising router fe80::%carp2/64 if=carp2 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc05::/64 if=vlan5 flags=LO ref=1No advertising router fe80::%vlan5/64 if=vlan5 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc07::/64 if=vlan3666flags=LO ref=1No advertising router fe80::%vlan3666/64 if=vlan3666flags=LAO ref=0 No advertising router 2001:4b10:1002:cc03::/64 if=vlan3 flags=LO ref=1No advertising router fe80::%vlan3/64 if=vlan3 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=vlan2 flags=LO ref=1No advertising router fe80::%vlan2/64 if=vlan2 flags=LAO ref=0 No advertising router fe80::%lo0/64 if=lo0 flags=LAO ref=0 No advertising router ... After: $ ndp -r fe80::230:88ff:fe16:5eff%pppoe1 if=pppoe1, flags=O, pref=medium, expire=19m55s 2a02:8011:d00e:3::/64 if=pppoe1 flags=LAD vltime=18000, pltime=1800, expire=4h59m19s, ref=2 advertised by fe80::230:88ff:fe16:5eff%pppoe1 (no neighbor state) fe80::%pppoe1/64 if=pppoe1flags=LAO ref=0 No advertising router fe80::%pppoe0/64 if=pppoe0flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=carp2 flags=LD ref=1No advertising router fe80::%carp2/64 if=carp2 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc05::/64 if=vlan5 flags=LD ref=1No advertising router fe80::%vlan5/64 if=vlan5 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc07::/64 if=vlan3666flags=LD ref=1No advertising router fe80::%vlan3666/64 if=vlan3666flags=LAO ref=0 No advertising router 2001:4b10:1002:cc03::/64 if=vlan3 flags=LD ref=1No advertising router fe80::%vlan3/64 if=vlan3 flags=LAO ref=0 No advertising router 2001:4b10:1002:cc01::/64 if=vlan2 flags=LD ref=1No advertising router fe80::%vlan2/64 if=vlan2 flags=LAO ref=0 No advertising router fe80::%lo0/64 if=lo0 flags=LAO ref=0 No advertising router See how all your prefix suddenly became detached D? That's a limitation of pfxlist_onlink_check() which does not make a difference between prefixes added to the global prefix list via an advertisement or via manual configuration. I'll see if it's possible to split the prefix lists in such way that the RS/RA code only mess with its own states.