On 07/04/14(Mon) 12:49, Mike Belopuhov wrote:
> Hi,
>
> I need this one bit for my snmpd diff as well. rtdeletemsg does
> rtrequest1 and rt_missmsg in one go with some magic requried for
> that to happen.
Makes sense to me, plus I like the fact that you're removing one
custom use of rtrequest1(9). ok mpi@
>
> diff --git sys/netinet/if_ether.c sys/netinet/if_ether.c
> index af3f3cd..548192f 100644
> --- sys/netinet/if_ether.c
> +++ sys/netinet/if_ether.c
> @@ -764,32 +764,28 @@ out:
> */
> void
> arptfree(struct llinfo_arp *la)
> {
> struct rtentry *rt = la->la_rt;
> struct sockaddr_dl *sdl;
> - struct rt_addrinfo info;
> u_int tid = 0;
>
> if (rt == NULL)
> panic("arptfree");
> if (rt->rt_refcnt > 0 && (sdl = SDL(rt->rt_gateway)) &&
> sdl->sdl_family == AF_LINK) {
> sdl->sdl_alen = 0;
> la->la_asked = 0;
> rt->rt_flags &= ~RTF_REJECT;
> return;
> }
> - memset(&info, 0, sizeof(info));
> - info.rti_info[RTAX_DST] = rt_key(rt);
> - info.rti_info[RTAX_NETMASK] = rt_mask(rt);
>
> if (rt->rt_ifp)
> tid = rt->rt_ifp->if_rdomain;
>
> - rtrequest1(RTM_DELETE, &info, rt->rt_priority, NULL, tid);
> + rtdeletemsg(rt, tid);
> }
>
> /*
> * Lookup or enter a new address in arptab.
> */
> struct llinfo_arp *
>