Re: v6 autoconf, where have my connected routes gone?

2015-08-22 Thread Martin Pieuchot
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?

2015-08-20 Thread Sebastian Reitenbach

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?

2015-08-19 Thread Martin Pieuchot
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?

2015-08-18 Thread Martin Pieuchot
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?

2015-08-18 Thread Stuart Henderson
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?

2015-08-18 Thread Stuart Henderson
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?

2015-08-18 Thread Martin Pieuchot
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.