This is now needed to make sure local addresses can be used even if the
interface their are configured on is down.
ok?
Index: net/route.c
===================================================================
RCS file: /cvs/src/sys/net/route.c,v
retrieving revision 1.242
diff -u -p -r1.242 route.c
--- net/route.c 23 Sep 2015 08:49:46 -0000 1.242
+++ net/route.c 24 Sep 2015 11:32:15 -0000
@@ -1743,6 +1743,12 @@ rt_if_linkstate_change(struct rtentry *r
(rt->rt_ifa == NULL || rt->rt_ifa->ifa_ifp != ifp))
return (0);
+ /* Local routes are always usable. */
+ if (rt->rt_flags & RTF_LOCAL) {
+ rt->rt_flags |= RTF_UP;
+ return (0);
+ }
+
if (LINK_STATE_IS_UP(ifp->if_link_state) && ifp->if_flags & IFF_UP) {
if (!(rt->rt_flags & RTF_UP)) {
/* bring route up */
Index: netinet/ip_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.255
diff -u -p -r1.255 ip_input.c
--- netinet/ip_input.c 11 Sep 2015 19:34:20 -0000 1.255
+++ netinet/ip_input.c 24 Sep 2015 11:31:38 -0000
@@ -725,7 +725,7 @@ in_ouraddr(struct mbuf *m, struct ifnet
m->m_flags |= M_BCAST;
}
- return (ISSET(ia->ia_ifp->if_flags, IFF_UP));
+ return (1);
}
/*