From 174fb9dbb16338b37d8d4e817be981135c22920e Mon Sep 17 00:00:00 2001 From: "Alexander V. Chernikov" Date: Sun, 17 May 2020 15:32:36 +0000 Subject: [PATCH] Remove redundant checks for nhop validity. Currently NH_IS_VALID() simly aliases to RT_LINK_IS_UP(), so we're checking the same thing twice. In the near future the implementation of this check will be simpler, as there are plans to introduce control-plane interface status monitoring similar to ipfw interface tracker. --- sys/netinet/ip_output.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index 6c31793d296b..147094fb1847 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -407,8 +407,7 @@ ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags, * Also check whether routing cache needs invalidation. */ if (ro != NULL && ro->ro_nh != NULL && - ((!NH_IS_VALID(ro->ro_nh)) || !RT_LINK_IS_UP(ro->ro_nh->nh_ifp) || - dst->sin_family != AF_INET || + ((!NH_IS_VALID(ro->ro_nh)) || dst->sin_family != AF_INET || dst->sin_addr.s_addr != ip->ip_dst.s_addr)) RO_INVALIDATE_CACHE(ro); ia = NULL; @@ -480,8 +479,7 @@ ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags, ro->ro_nh = fib4_lookup(fibnum, dst->sin_addr, 0, NHR_REF, flowid); - if (ro->ro_nh == NULL || (!NH_IS_VALID(ro->ro_nh)) || - !RT_LINK_IS_UP(ro->ro_nh->nh_ifp)) { + if (ro->ro_nh == NULL || (!NH_IS_VALID(ro->ro_nh))) { #if defined(IPSEC) || defined(IPSEC_SUPPORT) /* * There is no route for this packet, but it is