These two chunks are equivalent so let's keep one.
ok?
Index: netinet6/ip6_forward.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_forward.c,v
retrieving revision 1.88
diff -u -p -r1.88 ip6_forward.c
--- netinet6/ip6_forward.c 19 Apr 2016 08:23:13 -0000 1.88
+++ netinet6/ip6_forward.c 19 Apr 2016 08:47:21 -0000
@@ -220,35 +220,7 @@ reroute:
#endif
dst = &ip6_forward_rt.ro_dst;
- if (!srcrt) {
- /*
- * ip6_forward_rt.ro_dst.sin6_addr is equal to ip6->ip6_dst
- */
- if (!rtisvalid(ip6_forward_rt.ro_rt) ||
- ISSET(ip6_forward_rt.ro_rt->rt_flags, RTF_MPATH) ||
- ip6_forward_rt.ro_tableid != rtableid) {
- if (ip6_forward_rt.ro_rt) {
- rtfree(ip6_forward_rt.ro_rt);
- ip6_forward_rt.ro_rt = NULL;
- }
- /* this probably fails but give it a try again */
- ip6_forward_rt.ro_tableid = rtableid;
- ip6_forward_rt.ro_rt = rtalloc_mpath(
- sin6tosa(&ip6_forward_rt.ro_dst),
- &ip6->ip6_src.s6_addr32[0],
- ip6_forward_rt.ro_tableid);
- }
-
- if (ip6_forward_rt.ro_rt == NULL) {
- ip6stat.ip6s_noroute++;
- if (mcopy) {
- icmp6_error(mcopy, ICMP6_DST_UNREACH,
- ICMP6_DST_UNREACH_NOROUTE, 0);
- }
- m_freem(m);
- return;
- }
- } else if (!rtisvalid(ip6_forward_rt.ro_rt) ||
+ if (!rtisvalid(ip6_forward_rt.ro_rt) ||
ISSET(ip6_forward_rt.ro_rt->rt_flags, RTF_MPATH) ||
!IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, &dst->sin6_addr) ||
ip6_forward_rt.ro_tableid != rtableid) {