On 25/10/15(Sun) 10:46, Claudio Jeker wrote:
> Some stuff I found while looking at kroute code is that the kernel is not
> always filling the info in the same way. This tries to fix this.
> First of all make sure the RTM_GET lookups fill out rtm_index no matter
> what. We do the same thing in the sysctl code and also in most other RTM_*
> messages.
> Second fill out rtm_pid in the sysctl dumper. This will reduce the check
> that I commited to ospfd for RTM_GET messages to just check for the own
> pid.

ok mpi@

> -- 
> :wq Claudio
> 
> Index: net/rtsock.c
> ===================================================================
> RCS file: /cvs/src/sys/net/rtsock.c,v
> retrieving revision 1.176
> diff -u -p -r1.176 rtsock.c
> --- net/rtsock.c      24 Oct 2015 11:58:47 -0000      1.176
> +++ net/rtsock.c      25 Oct 2015 09:27:30 -0000
> @@ -714,7 +714,6 @@ report:
>                                           rt->rt_ifa->ifa_dstaddr;
>                               else
>                                       info.rti_info[RTAX_BRD] = NULL;
> -                             rtm->rtm_index = ifp->if_index;
>                       }
>                       if_put(ifp);
>                       len = rt_msg2(rtm->rtm_type, RTM_VERSION, &info, NULL,
> @@ -735,6 +734,7 @@ report:
>                       rtm->rtm_flags = rt->rt_flags;
>                       rtm->rtm_use = 0;
>                       rtm->rtm_priority = rt->rt_priority & RTP_MASK;
> +                     rtm->rtm_index = rt->rt_ifidx;
>                       rt_getmetrics(&rt->rt_rmx, &rtm->rtm_rmx);
>                       rtm->rtm_addrs = info.rti_addrs;
>                       break;
> @@ -1251,6 +1251,7 @@ sysctl_dumpentry(struct rtentry *rt, voi
>       if (w->w_where && w->w_tmem && w->w_needed <= 0) {
>               struct rt_msghdr *rtm = (struct rt_msghdr *)w->w_tmem;
>  
> +             rtm->rtm_pid = curproc->p_p->ps_pid;
>               rtm->rtm_flags = rt->rt_flags;
>               rtm->rtm_priority = rt->rt_priority & RTP_MASK;
>               rt_getmetrics(&rt->rt_rmx, &rtm->rtm_rmx);
> 

Reply via email to