1
linux/net/ipv6
Brian Haley 305d552acc bonding: send IPv6 neighbor advertisement on failover
This patch adds better IPv6 failover support for bonding devices,
especially when in active-backup mode and there are only IPv6 addresses
configured, as reported by Alex Sidorenko.

- Creates a new file, net/drivers/bonding/bond_ipv6.c, for the
   IPv6-specific routines.  Both regular bonds and VLANs over bonds
   are supported.

- Adds a new tunable, num_unsol_na, to limit the number of unsolicited
   IPv6 Neighbor Advertisements that are sent on a failover event.
   Default is 1.

- Creates two new IPv6 neighbor discovery functions:

   ndisc_build_skb()
   ndisc_send_skb()

   These were required to support VLANs since we have to be able to
   add the VLAN id to the skb since ndisc_send_na() and friends
   shouldn't be asked to do this.  These two routines are basically
   __ndisc_send() split into two pieces, in a slightly different order.

- Updates Documentation/networking/bonding.txt and bumps the rev of bond
   support to 3.4.0.

On failover, this new code will generate one packet:

- An unsolicited IPv6 Neighbor Advertisement, which helps the switch
   learn that the address has moved to the new slave.

Testing has shown that sending just the NA results in pretty good
behavior when in active-back mode, I saw no lost ping packets for example.

Signed-off-by: Brian Haley <brian.haley@hp.com>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
2008-11-06 00:49:37 -05:00
..
netfilter net: '&' redux 2008-11-03 18:21:05 -08:00
addrconf_core.c
addrconf.c net: '&' redux 2008-11-03 18:21:05 -08:00
addrlabel.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
af_inet6.c netns: mib6 section fixlet 2008-10-13 18:54:07 -07:00
ah6.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
anycast.c net: replace %#p6 format specifier with %pi6 2008-10-29 12:50:24 -07:00
datagram.c IPv6: datagram_send_ctl() should exit immediately when an error occured 2008-07-29 23:57:58 -07:00
esp6.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
exthdrs_core.c
exthdrs.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
fib6_rules.c netns: Add network namespace argument to rt6_fill_node() and ipv6_dev_get_saddr() 2008-08-14 15:33:21 -07:00
icmp.c net: '&' redux 2008-11-03 18:21:05 -08:00
inet6_connection_sock.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
inet6_hashtables.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
ip6_fib.c netns: Add network namespace argument to rt6_fill_node() and ipv6_dev_get_saddr() 2008-08-14 15:33:21 -07:00
ip6_flowlabel.c net: replace %#p6 format specifier with %pi6 2008-10-29 12:50:24 -07:00
ip6_input.c ipv6: added net argument to IP6_INC_STATS_BH 2008-10-08 11:09:27 -07:00
ip6_output.c net: reduce structures when XFRM=n 2008-10-28 13:24:06 -07:00
ip6_tunnel.c net: Use hton[sl]() instead of __constant_hton[sl]() where applicable 2008-09-20 22:20:49 -07:00
ip6mr.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
ipcomp6.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
ipv6_sockglue.c ipv6: Fix the return interface index when get it while no message is received. 2008-08-17 23:21:52 -07:00
Kconfig ipsec: ipcomp - Merge IPComp implementations 2008-07-25 02:54:40 -07:00
Makefile
mcast.c net: replace %#p6 format specifier with %pi6 2008-10-29 12:50:24 -07:00
mip6.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
ndisc.c bonding: send IPv6 neighbor advertisement on failover 2008-11-06 00:49:37 -05:00
netfilter.c netns: correct mib stats in ip6_route_me_harder() 2008-10-14 22:55:21 -07:00
proc.c ipv6: making ip and icmp statistics per/namespace 2008-10-08 11:16:45 -07:00
protocol.c
raw.c netns: add net parameter to IP6_INC_STATS 2008-10-08 10:54:51 -07:00
reassembly.c net: '&' redux 2008-11-03 18:21:05 -08:00
route.c net: '&' redux 2008-11-03 18:21:05 -08:00
sit.c
syncookies.c tcp: Fix IPv6 fallout from 'Port redirection support for TCP' 2008-10-19 23:35:58 -07:00
sysctl_net_ipv6.c net: '&' redux 2008-11-03 18:21:05 -08:00
tcp_ipv6.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
tunnel6.c
udp_impl.h udp: introduce struct udp_table and multiple spinlocks 2008-10-29 01:41:45 -07:00
udp.c udp: introduce sk_for_each_rcu_safenext() 2008-10-29 11:19:58 -07:00
udplite.c udp: RCU handling for Unicast packets. 2008-10-29 02:11:14 -07:00
xfrm6_input.c
xfrm6_mode_beet.c ipsec: Interfamily IPSec BEET, ipv4-inner ipv6-outer 2008-08-06 02:40:25 -07:00
xfrm6_mode_ro.c
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c
xfrm6_output.c
xfrm6_policy.c xfrm6: handling fragment 2008-11-01 21:12:07 -07:00
xfrm6_state.c
xfrm6_tunnel.c