Use route cache function in IP input.
authorbluhm <bluhm@openbsd.org>
Tue, 16 Apr 2024 12:56:39 +0000 (12:56 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 16 Apr 2024 12:56:39 +0000 (12:56 +0000)
commit00dd306946903dc5215e47918b7f5a3d599480c5
tree90b992705e200e6b0a23b5508609fdb7b34a18fa
parenta3425987235165177fbddd81768e37f7cb969779
Use route cache function in IP input.

Instaed of passing a struct rtentry from ip_input() to ip_forward()
and then embed it into a struct route for ip_output(), start with
struct route and pass it along.  Then the route cache is used
consistently.  Also the route cache hit and missed counters should
reflect reality after this commit.

There is a small difference in the code.  in_ouraddr() checks for
NULL and not rtisvalid().  Previous discussion showed that the route
RTF_UP flag should only be considered for multipath routing.
Otherwise it does not mean anything.  Especially the local and
broadcast check in in_ouraddr() should not be affected by interface
link status.

When doing cache lookups, route must be valid, but after rtalloc_mpath()
lookup, use any route that route_mpath() returns.

OK claudio@
sys/netinet/ip_input.c
sys/netinet/ip_var.h
sys/netinet6/ip6_forward.c
sys/netinet6/ip6_input.c
sys/netinet6/ip6_output.c
sys/netinet6/ip6_var.h