The time where route miss messages on rtalloc() where useful are long
gone. In modern times this just produces a lot of noise with no benefit.
Nothing in userland is using this information anyway. Because of this
reti^Wtedu RT_REPORT.

OK?
-- 
:wq Claudio

Index: net/if_mpe.c
===================================================================
RCS file: /cvs/src/sys/net/if_mpe.c,v
retrieving revision 1.50
diff -u -p -r1.50 if_mpe.c
--- net/if_mpe.c        6 Nov 2015 11:45:42 -0000       1.50
+++ net/if_mpe.c        2 Dec 2015 11:28:50 -0000
@@ -172,7 +172,7 @@ mpestart(struct ifnet *ifp0)
                        continue;
                }
 
-               rt = rtalloc(sa, RT_REPORT|RT_RESOLVE, 0);
+               rt = rtalloc(sa, RT_RESOLVE, 0);
                if (!rtisvalid(rt)) {
                        m_freem(m);
                        rtfree(rt);
Index: net/if_mpw.c
===================================================================
RCS file: /cvs/src/sys/net/if_mpw.c,v
retrieving revision 1.10
diff -u -p -r1.10 if_mpw.c
--- net/if_mpw.c        6 Nov 2015 11:45:04 -0000       1.10
+++ net/if_mpw.c        2 Dec 2015 11:28:50 -0000
@@ -500,8 +500,7 @@ mpw_start(struct ifnet *ifp0)
        struct shim_hdr *shim;
        struct sockaddr_storage ss;
 
-       rt = rtalloc((struct sockaddr *) &sc->sc_nexthop,
-           RT_REPORT | RT_RESOLVE, 0);
+       rt = rtalloc((struct sockaddr *) &sc->sc_nexthop, RT_RESOLVE, 0);
        if (!rtisvalid(rt)) {
                rtfree(rt);
                return;
Index: net/pf.c
===================================================================
RCS file: /cvs/src/sys/net/pf.c,v
retrieving revision 1.952
diff -u -p -r1.952 pf.c
--- net/pf.c    21 Nov 2015 11:29:40 -0000      1.952
+++ net/pf.c    2 Dec 2015 11:28:50 -0000
@@ -2934,7 +2934,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam
                dst->sin_family = AF_INET;
                dst->sin_len = sizeof(*dst);
                dst->sin_addr = addr->v4;
-               rt = rtalloc(sintosa(dst), RT_REPORT, rtableid);
+               rt = rtalloc(sintosa(dst), 0, rtableid);
                break;
 #ifdef INET6
        case AF_INET6:
@@ -2943,7 +2943,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam
                dst6->sin6_family = AF_INET6;
                dst6->sin6_len = sizeof(*dst6);
                dst6->sin6_addr = addr->v6;
-               rt = rtalloc(sin6tosa(dst6), RT_REPORT, rtableid);
+               rt = rtalloc(sin6tosa(dst6), 0, rtableid);
                break;
 #endif /* INET6 */
        }
@@ -5384,7 +5384,7 @@ pf_routable(struct pf_addr *addr, sa_fam
        if (kif != NULL && kif->pfik_ifp->if_type == IFT_ENC)
                goto out;
 
-       rt0 = rtalloc((struct sockaddr *)&ss, RT_REPORT, rtableid);
+       rt0 = rtalloc((struct sockaddr *)&ss, 0, rtableid);
        if (rt0 != NULL) {
                /* No interface given, this is a no-route check */
                if (kif == NULL)
@@ -5456,7 +5456,7 @@ pf_rtlabel_match(struct pf_addr *addr, s
 #endif /* INET6 */
        }
 
-       rt = rtalloc((struct sockaddr *)&ss, RT_REPORT|RT_RESOLVE, rtableid);
+       rt = rtalloc((struct sockaddr *)&ss, RT_RESOLVE, rtableid);
        if (rt != NULL) {
                if (rt->rt_labelid == aw->v.rtlabel)
                        ret = 1;
@@ -5515,7 +5515,7 @@ pf_route(struct mbuf **m, struct pf_rule
        rtableid = m0->m_pkthdr.ph_rtableid;
 
        if (!r->rt) {
-               rt = rtalloc(sintosa(dst), RT_REPORT|RT_RESOLVE, rtableid);
+               rt = rtalloc(sintosa(dst), RT_RESOLVE, rtableid);
                if (rt == NULL) {
                        ipstat.ips_noroute++;
                        goto bad;
Index: net/route.c
===================================================================
RCS file: /cvs/src/sys/net/route.c,v
retrieving revision 1.280
diff -u -p -r1.280 route.c
--- net/route.c 2 Dec 2015 10:33:15 -0000       1.280
+++ net/route.c 2 Dec 2015 11:28:50 -0000
@@ -223,10 +223,6 @@ rtisvalid(struct rtentry *rt)
  * "RT_RESOLVE" means that a corresponding L2 entry should
  *   be added to the routing table and resolved (via ARP or
  *   NDP), if it does not exist.
- *
- * "RT_REPORT" indicates that a message should be sent to
- *   userland if no matching route has been found or if an
- *   error occured while adding a L2 entry.
  */
 struct rtentry *
 rt_match(struct sockaddr *dst, uint32_t *src, int flags, unsigned int tableid)
@@ -248,19 +244,17 @@ rt_match(struct sockaddr *dst, uint32_t 
                            &rt, tableid);
                        if (error) {
                                rt0->rt_use++;
-                               goto miss;
+                               rt_missmsg(RTM_MISS, &info, 0, 0, error,
+                                   tableid);
+                       } else {
+                               /* Inform listeners of the new route */
+                               rt_sendmsg(rt, RTM_ADD, tableid);
+                               rtfree(rt0);
                        }
-                       /* Inform listeners of the new route */
-                       rt_sendmsg(rt, RTM_ADD, tableid);
-                       rtfree(rt0);
                }
                rt->rt_use++;
-       } else {
+       } else
                rtstat.rts_unreach++;
-miss:
-               if (ISSET(flags, RT_REPORT))
-                       rt_missmsg(RTM_MISS, &info, 0, 0, error, tableid);
-       }
        KERNEL_UNLOCK();
        splx(s);
        return (rt);
@@ -349,7 +343,7 @@ rt_hash(struct rtentry *rt, uint32_t *sr
 struct rtentry *
 rtalloc_mpath(struct sockaddr *dst, uint32_t *src, unsigned int rtableid)
 {
-       return (_rtalloc(dst, src, RT_REPORT|RT_RESOLVE, rtableid));
+       return (_rtalloc(dst, src, RT_RESOLVE, rtableid));
 }
 #endif /* SMALL_KERNEL */
 
Index: net/route.h
===================================================================
RCS file: /cvs/src/sys/net/route.h,v
retrieving revision 1.124
diff -u -p -r1.124 route.h
--- net/route.h 2 Dec 2015 09:17:47 -0000       1.124
+++ net/route.h 2 Dec 2015 11:28:50 -0000
@@ -340,8 +340,7 @@ void                 rtlabel_unref(u_int16_t);
 /*
  * Values for additional argument to rtalloc()
  */
-#define        RT_REPORT       0x1
-#define        RT_RESOLVE      0x2
+#define        RT_RESOLVE      1
 
 extern struct rtstat rtstat;
 extern const struct sockaddr_rtin rt_defmask4;
@@ -379,7 +378,7 @@ void                         rt_timer_timer(void *);
 int     rtisvalid(struct rtentry *);
 int     rt_hash(struct rtentry *, uint32_t *);
 #ifdef SMALL_KERNEL
-#define         rtalloc_mpath(dst, s, rid) rtalloc((dst), 
RT_REPORT|RT_RESOLVE, (rid))
+#define         rtalloc_mpath(dst, s, rid) rtalloc((dst), RT_RESOLVE, (rid))
 #else
 struct  rtentry *rtalloc_mpath(struct sockaddr *, uint32_t *, u_int);
 #endif
Index: netinet/if_ether.c
===================================================================
RCS file: /cvs/src/sys/netinet/if_ether.c,v
retrieving revision 1.192
diff -u -p -r1.192 if_ether.c
--- netinet/if_ether.c  2 Dec 2015 09:28:46 -0000       1.192
+++ netinet/if_ether.c  2 Dec 2015 11:28:50 -0000
@@ -704,7 +704,7 @@ arplookup(u_int32_t addr, int create, in
        sin.sin_family = AF_INET;
        sin.sin_addr.s_addr = addr;
        sin.sin_other = proxy ? SIN_PROXY : 0;
-       flags = (create) ? (RT_REPORT|RT_RESOLVE) : 0;
+       flags = (create) ? RT_RESOLVE : 0;
 
        rt = rtalloc((struct sockaddr *)&sin, flags, tableid);
        if (!rtisvalid(rt) || ISSET(rt->rt_flags, RTF_GATEWAY) ||
Index: netinet/ip_icmp.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_icmp.c,v
retrieving revision 1.147
diff -u -p -r1.147 ip_icmp.c
--- netinet/ip_icmp.c   1 Dec 2015 21:26:43 -0000       1.147
+++ netinet/ip_icmp.c   2 Dec 2015 11:28:50 -0000
@@ -748,7 +748,7 @@ icmp_reflect(struct mbuf *m, struct mbuf
                sin.sin_addr = ip->ip_src;
 
                /* keep packet in the original virtual instance */
-               rt = rtalloc(sintosa(&sin), RT_REPORT|RT_RESOLVE, rtableid);
+               rt = rtalloc(sintosa(&sin), RT_RESOLVE, rtableid);
                if (rt == NULL) {
                        ipstat.ips_noroute++;
                        m_freem(m);
@@ -933,7 +933,7 @@ icmp_mtudisc_clone(struct in_addr dst, u
        sin.sin_len = sizeof(sin);
        sin.sin_addr = dst;
 
-       rt = rtalloc(sintosa(&sin), RT_REPORT|RT_RESOLVE, rtableid);
+       rt = rtalloc(sintosa(&sin), RT_RESOLVE, rtableid);
 
        /* Check if the route is actually usable */
        if (!rtisvalid(rt) || (rt->rt_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
Index: netinet/ip_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.262
diff -u -p -r1.262 ip_input.c
--- netinet/ip_input.c  23 Nov 2015 15:54:45 -0000      1.262
+++ netinet/ip_input.c  2 Dec 2015 11:28:50 -0000
@@ -1243,7 +1243,7 @@ ip_rtaddr(struct in_addr dst, u_int rtab
                sin->sin_addr = dst;
 
                ipforward_rt.ro_rt = rtalloc(&ipforward_rt.ro_dst,
-                   RT_REPORT|RT_RESOLVE, rtableid);
+                   RT_RESOLVE, rtableid);
        }
        if (ipforward_rt.ro_rt == 0)
                return (NULL);
Index: netinet/ip_output.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_output.c,v
retrieving revision 1.309
diff -u -p -r1.309 ip_output.c
--- netinet/ip_output.c 1 Dec 2015 00:49:12 -0000       1.309
+++ netinet/ip_output.c 2 Dec 2015 11:29:58 -0000
@@ -501,7 +501,7 @@ sendit:
                                if (ro && ro->ro_rt != NULL) {
                                        rtfree(ro->ro_rt);
                                        ro->ro_rt = rtalloc(&ro->ro_dst,
-                                           RT_REPORT|RT_RESOLVE,
+                                           RT_RESOLVE,
                                            m->m_pkthdr.ph_rtableid);
                                }
                                if (rt_mtucloned)
@@ -1443,8 +1443,7 @@ ip_setmoptions(int optname, struct ip_mo
                        sin.sin_len = sizeof(sin);
                        sin.sin_family = AF_INET;
                        sin.sin_addr = mreq->imr_multiaddr;
-                       rt = rtalloc(sintosa(&sin), RT_REPORT|RT_RESOLVE,
-                           rtableid);
+                       rt = rtalloc(sintosa(&sin), RT_RESOLVE, rtableid);
                        if (!rtisvalid(rt)) {
                                rtfree(rt);
                                error = EADDRNOTAVAIL;
@@ -1455,7 +1454,7 @@ ip_setmoptions(int optname, struct ip_mo
                        sin.sin_len = sizeof(sin);
                        sin.sin_family = AF_INET;
                        sin.sin_addr = mreq->imr_interface;
-                       rt = rtalloc(sintosa(&sin), RT_REPORT, rtableid);
+                       rt = rtalloc(sintosa(&sin), 0, rtableid);
                        if (!rtisvalid(rt) || !ISSET(rt->rt_flags, RTF_LOCAL)) {
                                rtfree(rt);
                                error = EADDRNOTAVAIL;
Index: netinet6/icmp6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/icmp6.c,v
retrieving revision 1.179
diff -u -p -r1.179 icmp6.c
--- netinet6/icmp6.c    1 Dec 2015 21:26:43 -0000       1.179
+++ netinet6/icmp6.c    2 Dec 2015 11:28:50 -0000
@@ -1912,7 +1912,7 @@ icmp6_mtudisc_clone(struct sockaddr *dst
        struct rtentry *rt;
        int    error;
 
-       rt = rtalloc(dst, RT_REPORT|RT_RESOLVE, rdomain);
+       rt = rtalloc(dst, RT_RESOLVE, rdomain);
        if (rt == NULL)
                return NULL;
 
Index: netinet6/in6_src.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_src.c,v
retrieving revision 1.70
diff -u -p -r1.70 in6_src.c
--- netinet6/in6_src.c  25 Oct 2015 14:43:06 -0000      1.70
+++ netinet6/in6_src.c  2 Dec 2015 11:28:50 -0000
@@ -242,7 +242,7 @@ in6_selectsrc(struct in6_addr **in6src, 
                        sa6->sin6_scope_id = dstsock->sin6_scope_id;
                        if (IN6_IS_ADDR_MULTICAST(dst)) {
                                ro->ro_rt = rtalloc(sin6tosa(&ro->ro_dst),
-                                   RT_REPORT|RT_RESOLVE, ro->ro_tableid);
+                                   RT_RESOLVE, ro->ro_tableid);
                        } else {
                                ro->ro_rt = rtalloc_mpath(sin6tosa(&ro->ro_dst),
                                    NULL, ro->ro_tableid);
Index: netinet6/ip6_output.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_output.c,v
retrieving revision 1.200
diff -u -p -r1.200 ip6_output.c
--- netinet6/ip6_output.c       29 Nov 2015 15:12:36 -0000      1.200
+++ netinet6/ip6_output.c       2 Dec 2015 11:28:50 -0000
@@ -1136,7 +1136,7 @@ ip6_getpmtu(struct route_in6 *ro_pmtu, s
                        sa6_dst->sin6_addr = *dst;
 
                        ro_pmtu->ro_rt = rtalloc(sin6tosa(&ro_pmtu->ro_dst),
-                           RT_REPORT|RT_RESOLVE, ro_pmtu->ro_tableid);
+                           RT_RESOLVE, ro_pmtu->ro_tableid);
                }
        }
        if (ro_pmtu->ro_rt) {
@@ -2195,7 +2195,7 @@ ip6_setmoptions(int optname, struct ip6_
                        dst->sin6_family = AF_INET6;
                        dst->sin6_addr = mreq->ipv6mr_multiaddr;
                        ro.ro_rt = rtalloc(sin6tosa(&ro.ro_dst),
-                           RT_REPORT|RT_RESOLVE, ro.ro_tableid);
+                           RT_RESOLVE, ro.ro_tableid);
                        if (ro.ro_rt == NULL) {
                                error = EADDRNOTAVAIL;
                                break;
Index: netinet6/nd6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/nd6.c,v
retrieving revision 1.173
diff -u -p -r1.173 nd6.c
--- netinet6/nd6.c      1 Dec 2015 12:22:18 -0000       1.173
+++ netinet6/nd6.c      2 Dec 2015 11:28:50 -0000
@@ -586,7 +586,7 @@ nd6_lookup(struct in6_addr *addr6, int c
        sin6.sin6_len = sizeof(struct sockaddr_in6);
        sin6.sin6_family = AF_INET6;
        sin6.sin6_addr = *addr6;
-       flags = (create) ? (RT_REPORT|RT_RESOLVE) : 0;
+       flags = (create) ? RT_RESOLVE : 0;
 
        rt = rtalloc(sin6tosa(&sin6), flags, rtableid);
        if (rt != NULL && (rt->rt_flags & RTF_LLINFO) == 0) {
Index: netmpls/mpls_input.c
===================================================================
RCS file: /cvs/src/sys/netmpls/mpls_input.c,v
retrieving revision 1.52
diff -u -p -r1.52 mpls_input.c
--- netmpls/mpls_input.c        2 Dec 2015 08:47:00 -0000       1.52
+++ netmpls/mpls_input.c        2 Dec 2015 11:28:50 -0000
@@ -156,7 +156,7 @@ do_v6:
                }
        }
 
-       rt = rtalloc(smplstosa(smpls), RT_REPORT|RT_RESOLVE, 0);
+       rt = rtalloc(smplstosa(smpls), RT_RESOLVE, 0);
        if (rt == NULL) {
                /* no entry for this label */
 #ifdef MPLS_DEBUG
@@ -372,7 +372,7 @@ mpls_do_error(struct mbuf *m, int type, 
                smpls->smpls_len = sizeof(*smpls);
                smpls->smpls_label = shim->shim_label & MPLS_LABEL_MASK;
 
-               rt = rtalloc(smplstosa(smpls), RT_REPORT|RT_RESOLVE, 0);
+               rt = rtalloc(smplstosa(smpls), RT_RESOLVE, 0);
                if (rt == NULL) {
                        /* no entry for this label */
                        m_freem(m);

Reply via email to