Module Name: src Committed By: knakahara Date: Tue Sep 20 02:23:38 UTC 2022
Modified Files: src/sys/net: if.c route.c route.h src/sys/netinet: in.c src/sys/netinet6: in6.c src/sys/nfs: nfs_boot.c Log Message: Remove routes on an address removal if the routes referencing to the address. Implemented by ozaki-r@n.o. A route that has a gateway is on a connected route can be invalid if the connected route is deleted, i.e., an associated address is removed. Traditionally NetBSD doesn't sweep such a route on the address removal. Sending packets over the route fails with "No route to host". Also the route holds an orphan ifaddr as rt_ifa that is destructed say by in_purgeaddr. If the same address is assgined again in such a state, there can be two different ifaddr objects with the same address. Until recently it's not a big problem because we can send packets anyway. However after MP-ification of the network stack, we can't send packets because we strictly check if rt_ifa (i.e., the (old) ifaddr) is valid. This change automatically removes such routes on a removal of an associated address to avoid keeping inconsistent routes. To generate a diff of this commit: cvs rdiff -u -r1.525 -r1.526 src/sys/net/if.c cvs rdiff -u -r1.233 -r1.234 src/sys/net/route.c cvs rdiff -u -r1.131 -r1.132 src/sys/net/route.h cvs rdiff -u -r1.242 -r1.243 src/sys/netinet/in.c cvs rdiff -u -r1.285 -r1.286 src/sys/netinet6/in6.c cvs rdiff -u -r1.88 -r1.89 src/sys/nfs/nfs_boot.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.