/[base]
ViewVC logotype

Revision 264905


Jump to revision: Previous Next
Author: asomers
Date: Thu Apr 24 23:56:56 2014 UTC (10 years, 2 months ago)
Changed paths: 12
Log Message:
Fix subnet and default routes on different FIBs on the same subnet.

These two bugs are closely related.  The root cause is that ifa_ifwithnet
does not consider FIBs when searching for an interface address.

sys/net/if_var.h
sys/net/if.c
	Add a fib argument to ifa_ifwithnet and ifa_ifwithdstadddr.  Those
	functions will only return an address whose interface fib equals the
	argument.

sys/net/route.c
	Update calls to ifa_ifwithnet and ifa_ifwithdstaddr with fib
	arguments.

sys/netinet/in.c
	Update in_addprefix to consider the interface fib when adding
	prefixes.  This will prevent it from not adding a subnet route when
	one already exists on a different fib.

sys/net/rtsock.c
sys/netinet/in_pcb.c
sys/netinet/ip_output.c
sys/netinet/ip_options.c
sys/netinet6/nd6.c
	Add RT_DEFAULT_FIB arguments to ifa_ifwithdstaddr and ifa_ifwithnet.
	In some cases it there wasn't a clear specific fib number to use.
	In others, I was unable to test those functions so I chose
	RT_DEFAULT_FIB to minimize divergence from current behavior.  I will
	fix some of the latter changes along with PR kern/187553.

tests/sys/netinet/fibs_test.sh
tests/sys/netinet/udp_dontroute.c
tests/sys/netinet/Makefile
	Revert r263738.  The udp_dontroute test was right all along.
	However, bugs kern/187550 and kern/187553 cancelled each other out
	when it came to this test.  Because of kern/187553, ifa_ifwithnet
	searched the default fib instead of the requested one, but because
	of kern/187550, there was an applicable subnet route on the default
	fib.  The new test added in r263738 doesn't work right, however.  I
	can verify with dtrace that ifa_ifwithnet returned the wrong address
	before I applied this commit, but route(8) miraculously found the
	correct interface to use anyway.  I don't know how.

	Clear expected failure messages for kern/187550 and kern/187552.

PR:		kern/187550
PR:		kern/187552
Reviewed by:	melifaro
MFC after:	3 weeks
Sponsored by:	Spectra Logic


Changed paths

Path Details
Directoryhead/sys/net/if.c modified , text changed
Directoryhead/sys/net/if_var.h modified , text changed
Directoryhead/sys/net/route.c modified , text changed
Directoryhead/sys/net/rtsock.c modified , text changed
Directoryhead/sys/netinet/in.c modified , text changed
Directoryhead/sys/netinet/in_pcb.c modified , text changed
Directoryhead/sys/netinet/ip_options.c modified , text changed
Directoryhead/sys/netinet/ip_output.c modified , text changed
Directoryhead/sys/netinet6/nd6.c modified , text changed
Directoryhead/tests/sys/netinet/Makefile modified , text changed
Directoryhead/tests/sys/netinet/fibs_test.sh modified , text changed
Directoryhead/tests/sys/netinet/udp_dontroute.c
(Copied from head/tests/sys/netinet/udp_dontroute.c, r263737)
added

  ViewVC Help
Powered by ViewVC 1.1.27