On 02/09/13(Mon) 07:54, Kenneth R Westerback wrote:
> On Mon, Sep 02, 2013 at 12:43:51PM +0200, Martin Pieuchot wrote:
> > Diff below is just a small refactoring of two similar code chunks to
> > inform user processes that something changed regarding a route.
> > 
> > I'd like to get this in because it removes one use of rt_addrinfo in
> > netinet6.
> > 
> > There's no functional change, ok?
> > 
> 
> This seems sane. ok krw@ fwiw.
> 
> I would suggest copying the 'Inform listeners of the new route'
> comment to replace the 'tell the change to user processes watching
> the routing socket' comment. The latter reads very oddly to my
> native english speaking brain.

Thanks Ken, I take your suggestion and I'll wait for the return of
claudio@ to see what he thinks about the direction of the routing
table before attempting any change.

> 
> .... Ken
> 
> > Index: net/route.c
> > ===================================================================
> > RCS file: /home/ncvs/src/sys/net/route.c,v
> > retrieving revision 1.145
> > diff -u -p -r1.145 route.c
> > --- net/route.c     28 Aug 2013 06:58:57 -0000      1.145
> > +++ net/route.c     2 Sep 2013 10:18:59 -0000
> > @@ -346,17 +345,7 @@ rtalloc1(struct sockaddr *dst, int flags
> >                             goto miss;
> >                     }
> >                     /* Inform listeners of the new route */
> > -                   bzero(&info, sizeof(info));
> > -                   info.rti_info[RTAX_DST] = rt_key(rt);
> > -                   info.rti_info[RTAX_NETMASK] = rt_mask(rt);
> > -                   info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
> > -                   if (rt->rt_ifp != NULL) {
> > -                           info.rti_info[RTAX_IFP] =
> > -                               
> > TAILQ_FIRST(&rt->rt_ifp->if_addrlist)->ifa_addr;
> > -                           info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
> > -                   }
> > -                   rt_missmsg(RTM_ADD, &info, rt->rt_flags,
> > -                       rt->rt_ifp, 0, tableid);
> > +                   rt_msg(rt, RTM_ADD, tableid);
> >             } else
> >                     rt->rt_refcnt++;
> >     } else {
> > @@ -410,6 +399,25 @@ rtfree(struct rtentry *rt)
> >             Free(rt_key(rt));
> >             pool_put(&rtentry_pool, rt);
> >     }
> > +}
> > +
> > +/* tell the change to user processes watching the routing socket. */
> > +void
> > +rt_msg(struct rtentry *rt, int cmd, u_int tableid)
> > +{
> > +   struct rt_addrinfo info;
> > +
> > +   bzero(&info, sizeof(info));
> > +   info.rti_info[RTAX_DST] = rt_key(rt);
> > +   info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
> > +   info.rti_info[RTAX_NETMASK] = rt_mask(rt);
> > +   if (rt->rt_ifp != NULL) {
> > +           info.rti_info[RTAX_IFP] =
> > +               TAILQ_FIRST(&rt->rt_ifp->if_addrlist)->ifa_addr;
> > +           info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
> > +   }
> > +
> > +   rt_missmsg(cmd, &info, rt->rt_flags, rt->rt_ifp, 0, tableid);
> >  }
> >  
> >  void
> > Index: net/route.h
> > ===================================================================
> > RCS file: /home/ncvs/src/sys/net/route.h,v
> > retrieving revision 1.78
> > diff -u -p -r1.78 route.h
> > --- net/route.h     19 Sep 2012 16:14:01 -0000      1.78
> > +++ net/route.h     2 Sep 2013 10:18:59 -0000
> > @@ -369,6 +369,7 @@ void     rt_ifmsg(struct ifnet *);
> >  void        rt_ifannouncemsg(struct ifnet *, int);
> >  void        rt_maskedcopy(struct sockaddr *,
> >         struct sockaddr *, struct sockaddr *);
> > +void        rt_msg(struct rtentry *, int, u_int);
> >  void        rt_missmsg(int, struct rt_addrinfo *, int, struct ifnet *, int,
> >         u_int);
> >  void        rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
> > Index: netinet6/nd6_rtr.c
> > ===================================================================
> > RCS file: /home/ncvs/src/sys/netinet6/nd6_rtr.c,v
> > retrieving revision 1.72
> > diff -u -p -r1.72 nd6_rtr.c
> > --- netinet6/nd6_rtr.c      1 Jul 2013 14:22:20 -0000       1.72
> > +++ netinet6/nd6_rtr.c      2 Sep 2013 10:18:59 -0000
> > @@ -70,7 +70,6 @@ void pfxrtr_add(struct nd_prefix *, stru
> >  void pfxrtr_del(struct nd_pfxrouter *);
> >  struct nd_pfxrouter *find_pfxlist_reachable_router(struct nd_prefix *);
> >  void defrouter_delreq(struct nd_defrouter *);
> > -void nd6_rtmsg(int, struct rtentry *);
> >  void purge_detached(struct ifnet *);
> >  
> >  void in6_init_address_ltimes(struct nd_prefix *, struct in6_addrlifetime 
> > *);
> > @@ -410,26 +409,6 @@ nd6_ra_input(struct mbuf *m, int off, in
> >  /*
> >   * default router list processing sub routines
> >   */
> > -
> > -/* tell the change to user processes watching the routing socket. */
> > -void
> > -nd6_rtmsg(int cmd, struct rtentry *rt)
> > -{
> > -   struct rt_addrinfo info;
> > -
> > -   bzero((caddr_t)&info, sizeof(info));
> > -   info.rti_info[RTAX_DST] = rt_key(rt);
> > -   info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
> > -   info.rti_info[RTAX_NETMASK] = rt_mask(rt);
> > -   if (rt->rt_ifp) {
> > -           info.rti_info[RTAX_IFP] =
> > -               TAILQ_FIRST(&rt->rt_ifp->if_addrlist)->ifa_addr;
> > -           info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
> > -   }
> > -
> > -   rt_missmsg(cmd, &info, rt->rt_flags, rt->rt_ifp, 0, 0);
> > -}
> > -
> >  void
> >  defrouter_addreq(struct nd_defrouter *new)
> >  {
> > @@ -459,7 +438,7 @@ defrouter_addreq(struct nd_defrouter *ne
> >     error = rtrequest1(RTM_ADD, &info, RTP_DEFAULT, &newrt,
> >         new->ifp->if_rdomain);
> >     if (newrt) {
> > -           nd6_rtmsg(RTM_ADD, newrt); /* tell user process */
> > +           rt_msg(newrt, RTM_ADD, 0); /* tell user process */
> >             newrt->rt_refcnt--;
> >     }
> >     if (error == 0)
> > @@ -563,7 +542,7 @@ defrouter_delreq(struct nd_defrouter *dr
> >     rtrequest1(RTM_DELETE, &info, RTP_DEFAULT, &oldrt,
> >         dr->ifp->if_rdomain);
> >     if (oldrt) {
> > -           nd6_rtmsg(RTM_DELETE, oldrt);
> > +           rt_msg(oldrt, RTM_DELETE, 0);
> >             if (oldrt->rt_refcnt <= 0) {
> >                     /*
> >                      * XXX: borrowed from the RTM_DELETE case of
> > @@ -1637,7 +1616,7 @@ nd6_prefix_onlink(struct nd_prefix *pr)
> >     error = rtrequest1(RTM_ADD, &info, RTP_CONNECTED, &rt, ifp->if_rdomain);
> >     if (error == 0) {
> >             if (rt != NULL) /* this should be non NULL, though */
> > -                   nd6_rtmsg(RTM_ADD, rt);
> > +                   rt_msg(rt, RTM_ADD, 0);
> >             pr->ndpr_stateflags |= NDPRF_ONLINK;
> >     } else {
> >             nd6log((LOG_ERR, "nd6_prefix_onlink: failed to add route for a"
> > @@ -1692,7 +1671,7 @@ nd6_prefix_offlink(struct nd_prefix *pr)
> >  
> >             /* report the route deletion to the routing socket. */
> >             if (rt != NULL)
> > -                   nd6_rtmsg(RTM_DELETE, rt);
> > +                   rt_msg(rt, RTM_DELETE, 0);
> >  
> >             /*
> >              * There might be the same prefix on another interface,
> > 

Reply via email to