Someone trying to replace some latvian boxes with bgpd/npppd mentioned a problem with v6 on carp interfaces in 'backup' state where their address was used as source address, despite there being an address on the carpdev which was up.
I don't have a proper v6 carp setup handy to test but got a test machine into a state with 'ifconfig carp0 down' (which seems should be a close enough equivalent to 'carp backup' for tests) which did indeed consider the 'down' carp interface as a source address. It can be bodged around with pltime 0 of course, but from looking at in6_selectsrc() I don't see why it wouldn't just pick the address from the interface associated with the route i.e. the one on em0.. but then I must be missing something as I don't see where pltime 0 is handled either... does anyone have clues? # ifconfig em0 em0: flags=48b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST,INET6_NOPRIVACY> mtu 1500 lladdr f0:de:f1:f9:a7:52 priority: 0 groups: egress media: Ethernet autoselect (1000baseT full-duplex) status: active inet6 fe80::f2de:f1ff:fef9:a752%em0 prefixlen 64 scopeid 0x1 inet6 2001:8b0:648e:cc01:f2de:f1ff:fef9:a752 prefixlen 64 autoconf pltime 604697 vltime 2591897 inet 85.158.44.149 netmask 0xfffffff0 broadcast 85.158.44.159 # ifconfig carp0 carp0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:00:5e:00:01:01 priority: 0 carp: INIT carpdev em0 vhid 1 advbase 1 advskew 0 groups: carp status: invalid inet6 fe80::200:5eff:fe00:101%carp0 prefixlen 64 scopeid 0xa inet6 2001:8b0:648e:cc01:200:5eff:fe00:101 prefixlen 64 detached autoconf pltime 604690 vltime 2591890 inet6 2001:8b0:648e:cc01:5c46:9730:9899:1008 prefixlen 64 detached autoconf autoconfprivacy pltime 81660 vltime 600216 inet6 2001:8b0:648e:cc01::ca1f prefixlen 64 # $ route -n get -inet6 2001:8b0:648e:cc01:20d:b9ff:fe04:a330 route to: 2001:8b0:648e:cc01:20d:b9ff:fe04:a330 destination: 2001:8b0:648e:cc01:: mask: ffff:ffff:ffff:ffff:: interface: em0 if address: fe80::f2de:f1ff:fef9:a752%em0 priority: 4 (connected) flags: <UP,DONE,CLONING> use mtu expire 0 0 0 # ping6 jodrell PING6(56=40+8+8 bytes) 2001:8b0:648e:cc01::ca1f --> 2001:8b0:648e:cc01:20d:b9ff:fe04:a330 ^C --- jodrell.spacehopper.org ping6 statistics --- 3 packets transmitted, 0 packets received, 100.0% packet loss # netstat -rnfinet6|grep -e 2001:8b0:648e:cc01 -e carp0 2001:8b0:648e:cc01::/64 link#1 UC 7 0 - 4 em0 2001:8b0:648e:cc01::1 00:0d:b9:17:0c:c4 UHLc 0 5 - 4 em0 2001:8b0:648e:cc01::ca1f link#1 UHLc 1 0 - 4 em0 2001:8b0:648e:cc01:200:5eff:fe00:101 00:00:5e:00:01:01 UHL 0 0 - 4 lo0 2001:8b0:648e:cc01:20d:93ff:fe63:da5a 00:0d:93:63:da:5a UHLc 1 8 - 4 em0 2001:8b0:648e:cc01:20d:b9ff:fe04:a330 00:0d:b9:17:0c:c4 UHLc 0 3 - 4 em0 2001:8b0:648e:cc01:5c46:9730:9899:1008 00:00:5e:00:01:01 UHL 0 0 - 4 lo0 2001:8b0:648e:cc01:f2de:f1ff:fef9:a752 f0:de:f1:f9:a7:52 UHLc 0 0 - 4 lo0 fe80::%carp0/64 link#10 UC 12 0 - 4 carp0 fe80::200:5eff:fe00:101%carp0 00:00:5e:00:01:01 UHL 0 0 - 4 lo0 fe80::20d:93ff:fe63:da5a%carp0 00:0d:93:63:da:5a UHLc 0 2 - 4 carp0 fe80::20d:b9ff:fe17:cc4%carp0 00:0d:b9:17:0c:c4 UHLc 0 0 - 4 carp0 ff01::%carp0/32 link#10 UC 0 0 - 4 carp0 ff02::%carp0/32 link#10 UC 2 0 - 4 carp0 ff02::1:ff04:a330%carp0 link#10 UHLc 0 0 - 4 carp0 ff02::1:ff63:da5a%carp0 link#10 UHLc 0 0 - 4 carp0