kernel - Implement IPV6 subnet routing / proxy ND6 (equiv to proxy ARP)
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 4 Sep 2013 17:39:55 +0000 (10:39 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 4 Sep 2013 17:39:55 +0000 (10:39 -0700)
commit2a810c210b34f19e4102f4047516d132bdce66a7
tree21911b672cde7b3147dbf2e27e332f25865e0d4b
parent514735b13d6e0430400d51848a75c27a64f52178
kernel - Implement IPV6 subnet routing / proxy ND6 (equiv to proxy ARP)

* Do not require per-host RTF_ANNOUNCE/AF_LINK entries.  They still
  work but they aren't needed any more (and they are such a huge bitch
  to set up anyway... best to avoid them).

* Machine must have net.inet6.ip6.forwarding mode enabled.

* Internet-facing interface must be promiscuous mode.

* Will automatically proxy ND6 any subnets if the interface
  is different from the one receiving the multicast.  So e.g.
  you can route IPV6 which would otherwise have to be switched.

  The subnet interface must currently be different because if it
  were the same the solicitation would be directly received by the
  target host anyway (being a multicast) and we would compete with
  it.  This is also a good safety.

  Example:

  ifconfig igb0 inet6 2999:499:1:555:1::72/80 For DNS
  ifconfig igb0 inet6 2999:499:1:555:1::1/80 For subnet default route
  ifconfig igb1 inet6 2999:499:1:555::2/80 For internet router
  ifconfig igb1 promisc
  route add -inet6 default 2999:499:1:555::1

  The internet router is doing a terminal /64 block, e.g. it's address
  is 2999:499:1:555::1/64, but we want to break the net up further and
  route portions of it instead of switch.
sys/netinet6/ip6_input.c
sys/netinet6/nd6_nbr.c