This is like the inet version but... erf no! It's just the sys/netinet6
part!
Index: netinet6/icmp6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/icmp6.c,v
retrieving revision 1.172
diff -u -p -r1.172 icmp6.c
--- netinet6/icmp6.c 18 Sep 2015 14:26:22 -0000 1.172
+++ netinet6/icmp6.c 16 Oct 2015 13:48:56 -0000
@@ -1568,7 +1568,7 @@ icmp6_redirect_output(struct mbuf *m0, s
goto fail;
/* sanity check */
- if (!m0 || !rt || !(rt->rt_flags & RTF_UP) || !(ifp = rt->rt_ifp))
+ if (m0 == NULL || !rtisvalid(rt))
goto fail;
/*
Index: netinet6/in6_pcb.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_pcb.c,v
retrieving revision 1.77
diff -u -p -r1.77 in6_pcb.c
--- netinet6/in6_pcb.c 15 Oct 2015 10:27:18 -0000 1.77
+++ netinet6/in6_pcb.c 16 Oct 2015 13:53:41 -0000
@@ -436,7 +436,7 @@ in6_pcbconnect(struct inpcb *inp, struct
if (error)
return (error);
- if (inp->inp_route6.ro_rt && inp->inp_route6.ro_rt->rt_flags & RTF_UP)
+ if (rtisvalid(inp->inp_route6.ro_rt))
ifp = inp->inp_route6.ro_rt->rt_ifp;
inp->inp_ipv6.ip6_hlim = (u_int8_t)in6_selecthlim(inp, ifp);
Index: netinet6/in6_src.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_src.c,v
retrieving revision 1.63
diff -u -p -r1.63 in6_src.c
--- netinet6/in6_src.c 13 Oct 2015 10:16:17 -0000 1.63
+++ netinet6/in6_src.c 16 Oct 2015 13:57:30 -0000
@@ -327,9 +327,8 @@ in6_selectroute(struct sockaddr_in6 *dst
* by that address must be a neighbor of the sending host.
*/
ron = &opts->ip6po_nextroute;
- if ((ron->ro_rt &&
- (ron->ro_rt->rt_flags & (RTF_UP | RTF_GATEWAY)) !=
- RTF_UP) ||
+ if (!rtisvalid(ron->ro_rt) ||
+ ISSET(ron->ro_rt->rt_flags, RTF_GATEWAY) ||
!IN6_ARE_ADDR_EQUAL(&ron->ro_dst.sin6_addr,
&sin6_next->sin6_addr)) {
if (ron->ro_rt) {
Index: netinet6/ip6_forward.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_forward.c,v
retrieving revision 1.82
diff -u -p -r1.82 ip6_forward.c
--- netinet6/ip6_forward.c 10 Sep 2015 09:14:59 -0000 1.82
+++ netinet6/ip6_forward.c 16 Oct 2015 13:52:06 -0000
@@ -223,8 +223,7 @@ reroute:
/*
* ip6_forward_rt.ro_dst.sin6_addr is equal to ip6->ip6_dst
*/
- if (ip6_forward_rt.ro_rt == NULL ||
- (ip6_forward_rt.ro_rt->rt_flags & RTF_UP) == 0 ||
+ if (!rtisvalid(ip6_forward_rt.ro_rt) ||
ip6_forward_rt.ro_tableid != rtableid) {
if (ip6_forward_rt.ro_rt) {
rtfree(ip6_forward_rt.ro_rt);
@@ -247,8 +246,7 @@ reroute:
m_freem(m);
return;
}
- } else if (ip6_forward_rt.ro_rt == NULL ||
- (ip6_forward_rt.ro_rt->rt_flags & RTF_UP) == 0 ||
+ } else if (!rtisvalid(ip6_forward_rt.ro_rt) ||
!IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, &dst->sin6_addr) ||
ip6_forward_rt.ro_tableid != rtableid) {
if (ip6_forward_rt.ro_rt) {
Index: netinet6/ip6_input.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_input.c,v
retrieving revision 1.147
diff -u -p -r1.147 ip6_input.c
--- netinet6/ip6_input.c 13 Oct 2015 10:29:16 -0000 1.147
+++ netinet6/ip6_input.c 16 Oct 2015 13:51:22 -0000
@@ -415,8 +415,7 @@ ip6_input(struct mbuf *m)
/*
* Unicast check
*/
- if (ip6_forward_rt.ro_rt != NULL &&
- (ip6_forward_rt.ro_rt->rt_flags & RTF_UP) != 0 &&
+ if (rtisvalid(ip6_forward_rt.ro_rt) &&
IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst,
&ip6_forward_rt.ro_dst.sin6_addr) &&
rtableid == ip6_forward_rt.ro_tableid)
Index: netinet6/ip6_output.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_output.c,v
retrieving revision 1.189
diff -u -p -r1.189 ip6_output.c
--- netinet6/ip6_output.c 23 Sep 2015 08:49:46 -0000 1.189
+++ netinet6/ip6_output.c 16 Oct 2015 13:52:44 -0000
@@ -1151,9 +1151,8 @@ ip6_getpmtu(struct route_in6 *ro_pmtu, s
/* The first hop and the final destination may differ. */
struct sockaddr_in6 *sa6_dst = &ro_pmtu->ro_dst;
- if (ro_pmtu->ro_rt &&
- ((ro_pmtu->ro_rt->rt_flags & RTF_UP) == 0 ||
- !IN6_ARE_ADDR_EQUAL(&sa6_dst->sin6_addr, dst))) {
+ if (!rtisvalid(ro_pmtu->ro_rt) ||
+ !IN6_ARE_ADDR_EQUAL(&sa6_dst->sin6_addr, dst)) {
rtfree(ro_pmtu->ro_rt);
ro_pmtu->ro_rt = NULL;
}
Index: netinet6/raw_ip6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/raw_ip6.c,v
retrieving revision 1.84
diff -u -p -r1.84 raw_ip6.c
--- netinet6/raw_ip6.c 11 Sep 2015 08:17:06 -0000 1.84
+++ netinet6/raw_ip6.c 16 Oct 2015 13:53:02 -0000
@@ -421,8 +421,7 @@ rip6_output(struct mbuf *m, ...)
goto bad;
ip6->ip6_src = *in6a;
- if (in6p->inp_route6.ro_rt &&
- in6p->inp_route6.ro_rt->rt_flags & RTF_UP)
+ if (rtisvalid(in6p->inp_route6.ro_rt))
oifp = in6p->inp_route6.ro_rt->rt_ifp;
}
Index: netinet6/udp6_output.c
===================================================================
RCS file: /cvs/src/sys/netinet6/udp6_output.c,v
retrieving revision 1.37
diff -u -p -r1.37 udp6_output.c
--- netinet6/udp6_output.c 11 Sep 2015 08:17:06 -0000 1.37
+++ netinet6/udp6_output.c 16 Oct 2015 13:53:26 -0000
@@ -208,8 +208,7 @@ udp6_output(struct inpcb *in6p, struct m
#endif
ip6->ip6_nxt = IPPROTO_UDP;
ifp = NULL;
- if (in6p->inp_route6.ro_rt &&
- in6p->inp_route6.ro_rt->rt_flags & RTF_UP)
+ if (rtisvalid(in6p->inp_route6.ro_rt))
ifp = in6p->inp_route6.ro_rt->rt_ifp;
ip6->ip6_hlim = in6_selecthlim(in6p, ifp);
ip6->ip6_src = *laddr;