Claudio Jeker([email protected]) on 2015.09.22 16:01:34 +0200:
> On Tue, Sep 22, 2015 at 03:14:18PM +0200, Martin Pieuchot wrote:
> > Instead of incrementing the rt_use counter when a rtalloc(9) call
> > succeeds, let's do it inside ralloc(9).
> > 
> > The route(8) regress tests will need to be updated because all the
> > paths calling rtalloc(9) do not increment rt_use.
> > 
> > This change gives us a better understanding of which routes are queried
> > and might need a cache.
> > 
> > It will also help me with upcoming counter handling for MP.
> > 
> > ok?

yes ok
 
> It kind of changes the meaning of the use counter but I think that is
> fair. In the end I think this is only used for debugging. As mentioned
> earlier I have no problems to remove this counter since I don't see a huge
> benefit having it.

regarding removing it: i havent needed it often and can do without.


> -- 
> :wq Claudio
>  
> > Index: net/pf.c
> > ===================================================================
> > RCS file: /cvs/src/sys/net/pf.c,v
> > retrieving revision 1.944
> > diff -u -p -r1.944 pf.c
> > --- net/pf.c        13 Sep 2015 17:53:44 -0000      1.944
> > +++ net/pf.c        22 Sep 2015 13:02:42 -0000
> > @@ -5520,7 +5520,6 @@ pf_route(struct mbuf **m, struct pf_rule
> >             }
> >  
> >             ifp = rt->rt_ifp;
> > -           rt->rt_use++;
> >  
> >             if (rt->rt_flags & RTF_GATEWAY)
> >                     dst = satosin(rt->rt_gateway);
> > Index: net/route.c
> > ===================================================================
> > RCS file: /cvs/src/sys/net/route.c,v
> > retrieving revision 1.241
> > diff -u -p -r1.241 route.c
> > --- net/route.c     22 Sep 2015 10:05:00 -0000      1.241
> > +++ net/route.c     22 Sep 2015 13:04:07 -0000
> > @@ -350,12 +350,15 @@ rtalloc(struct sockaddr *dst, int flags,
> >                     rt0 = rt;
> >                     error = rtrequest1(RTM_RESOLVE, &info, RTP_DEFAULT,
> >                         &rt, tableid);
> > -                   if (error)
> > +                   if (error) {
> > +                           rt0->rt_use++;
> >                             goto miss;
> > +                   }
> >                     /* Inform listeners of the new route */
> >                     rt_sendmsg(rt, RTM_ADD, tableid);
> >                     rtfree(rt0);
> >             }
> > +           rt->rt_use++;
> >     } else {
> >             rtstat.rts_unreach++;
> >  miss:
> > Index: netinet/ip_icmp.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet/ip_icmp.c,v
> > retrieving revision 1.140
> > diff -u -p -r1.140 ip_icmp.c
> > --- netinet/ip_icmp.c       11 Sep 2015 15:12:29 -0000      1.140
> > +++ netinet/ip_icmp.c       22 Sep 2015 13:02:36 -0000
> > @@ -758,7 +758,6 @@ icmp_reflect(struct mbuf *m, struct mbuf
> >             }
> >  
> >             ia = ifatoia(rt->rt_ifa);
> > -           rt->rt_use++;
> >             rtfree(rt);
> >     }
> >  
> > Index: netinet/ip_output.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet/ip_output.c,v
> > retrieving revision 1.298
> > diff -u -p -r1.298 ip_output.c
> > --- netinet/ip_output.c     13 Sep 2015 17:53:44 -0000      1.298
> > +++ netinet/ip_output.c     22 Sep 2015 13:02:33 -0000
> > @@ -207,7 +207,6 @@ reroute:
> >                     ifp = if_ref(ro->ro_rt->rt_ifp);
> >             if ((mtu = ro->ro_rt->rt_rmx.rmx_mtu) == 0)
> >                     mtu = ifp->if_mtu;
> > -           ro->ro_rt->rt_use++;
> >  
> >             if (ro->ro_rt->rt_flags & RTF_GATEWAY)
> >                     dst = satosin(ro->ro_rt->rt_gateway);
> > Index: netinet6/ip6_output.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet6/ip6_output.c,v
> > retrieving revision 1.188
> > diff -u -p -r1.188 ip6_output.c
> > --- netinet6/ip6_output.c   13 Sep 2015 13:57:07 -0000      1.188
> > +++ netinet6/ip6_output.c   22 Sep 2015 13:02:29 -0000
> > @@ -558,12 +558,6 @@ reroute:
> >             *dst = dstsock;
> >     }
> >  
> > -   /*
> > -    * then rt (for unicast) and ifp must be non-NULL valid values.
> > -    */
> > -   if (rt)
> > -           rt->rt_use++;
> > -
> >     if (rt && !IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
> >             if (opt && opt->ip6po_nextroute.ro_rt) {
> >                     /*
> > Index: netmpls/mpls_input.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netmpls/mpls_input.c,v
> > retrieving revision 1.49
> > diff -u -p -r1.49 mpls_input.c
> > --- netmpls/mpls_input.c    13 Sep 2015 17:53:44 -0000      1.49
> > +++ netmpls/mpls_input.c    22 Sep 2015 13:02:23 -0000
> > @@ -182,7 +182,6 @@ do_v6:
> >                     goto done;
> >             }
> >  
> > -           rt->rt_use++;
> >             rt_mpls = (struct rt_mpls *)rt->rt_llinfo;
> >  
> >             if (rt_mpls == NULL || (rt->rt_flags & RTF_MPLS) == 0) {
> > @@ -449,7 +448,6 @@ mpls_do_error(struct mbuf *m, int type, 
> >                     m_freem(m);
> >                     return (NULL);
> >             }
> > -           rt->rt_use++;
> >             KERNEL_LOCK();
> >             rtfree(rt);
> >             if (icmp_reflect(m, NULL, ia)) {
> > Index: netmpls/mpls_output.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netmpls/mpls_output.c,v
> > retrieving revision 1.24
> > diff -u -p -r1.24 mpls_output.c
> > --- netmpls/mpls_output.c   13 Sep 2015 17:53:44 -0000      1.24
> > +++ netmpls/mpls_output.c   22 Sep 2015 13:02:13 -0000
> > @@ -133,7 +133,6 @@ mpls_output(struct ifnet *ifp0, struct m
> >                     error = EHOSTUNREACH;
> >                     goto bad;
> >             }
> > -           rt->rt_use++;
> >     }
> >  
> >     /* write back TTL */
> > 
> 

-- 

Reply via email to