freebsd-skq/sys/netinet6
qingli 4e8901ea7a This patch provides the back end support for equal-cost multi-path
(ECMP) for both IPv4 and IPv6. Previously, multipath route insertion
is disallowed. For example,

	route add -net 192.103.54.0/24 10.9.44.1
	route add -net 192.103.54.0/24 10.9.44.2

The second route insertion will trigger an error message of
"add net 192.103.54.0/24: gateway 10.2.5.2: route already in table"

Multiple default routes can also be inserted. Here is the netstat
output:

default		10.2.5.1	UGS	0	3074	bge0 =>
default		10.2.5.2	UGS	0	0	bge0

When multipath routes exist, the "route delete" command requires
a specific gateway to be specified or else an error message would
be displayed. For example,

	route delete default

would fail and trigger the following error message:

"route: writing to routing socket: No such process"
"delete net default: not in table"

On the other hand,

	route delete default 10.2.5.2

would be successful: "delete net default: gateway 10.2.5.2"

One does not have to specify a gateway if there is only a single
route for a particular destination.

I need to perform more testings on address aliases and multiple
interfaces that have the same IP prefixes. This patch as it
stands today is not yet ready for prime time. Therefore, the ECMP
code fragments are fully guarded by the RADIX_MPATH macro.
Include the "options  RADIX_MPATH" in the kernel configuration
to enable this feature.

Reviewed by:	robert, sam, gnn, julian, kmacy
2008-04-13 05:45:14 +00:00
..
dest6.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
frag6.c un-__P() 2008-01-08 19:08:58 +00:00
icmp6.c un-__P() 2008-01-08 19:08:58 +00:00
icmp6.h
in6_cksum.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_gif.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_gif.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_ifattach.c un-__P() 2008-01-08 19:08:58 +00:00
in6_ifattach.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_pcb.c In in_pcbnotifyall() and in6_pcbnotify(), use LIST_FOREACH_SAFE() and 2008-04-06 21:20:56 +00:00
in6_pcb.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_proto.c This patch provides the back end support for equal-cost multi-path 2008-04-13 05:45:14 +00:00
in6_rmx.c un-__P() 2008-01-08 19:08:58 +00:00
in6_src.c This patch provides the back end support for equal-cost multi-path 2008-04-13 05:45:14 +00:00
in6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6.c Replace the last susers calls in netinet6/ with privilege checks. 2008-01-24 08:25:59 +00:00
in6.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_ecn.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_forward.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_id.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_input.c un-__P() 2008-01-08 19:08:58 +00:00
ip6_ipsec.c Correct reference counting on the SP for outgoing IPv6 IPsec connections. 2008-03-14 11:55:04 +00:00
ip6_ipsec.h #if 0 out a currently unsued (and incomplete) function: ip6_ipsec_mtu(). 2008-03-14 11:44:30 +00:00
ip6_mroute.c un-__P() 2008-01-08 19:08:58 +00:00
ip6_mroute.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_output.c Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
ip6_var.h Replace the last susers calls in netinet6/ with privilege checks. 2008-01-24 08:25:59 +00:00
ip6.h
ip6protosw.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
mld6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
mld6.c un-__P() 2008-01-08 19:08:58 +00:00
nd6_nbr.c This patch provides the back end support for equal-cost multi-path 2008-04-13 05:45:14 +00:00
nd6_rtr.c un-__P() 2008-01-08 19:08:58 +00:00
nd6.c un-__P() 2008-01-08 19:08:58 +00:00
nd6.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
pim6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
pim6.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
raw_ip6.c Replace the last susers calls in netinet6/ with privilege checks. 2008-01-24 08:25:59 +00:00
raw_ip6.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
route6.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
scope6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
scope6.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
sctp6_usrreq.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
sctp6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
tcp6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
udp6_usrreq.c Replace the last susers calls in netinet6/ with privilege checks. 2008-01-24 08:25:59 +00:00
udp6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00