On Mon, Aug 17, 2015 at 12:31:20PM +0200, Martin Pieuchot wrote:
> This brings arplookup() in sync with nd6_lookup() and is necessary for
> upcoming "struct rtentry" reference count.

> @@ -633,9 +633,10 @@ in_arpinput(struct mbuf *m)
>               itaddr = myaddr;
>               goto reply;
>       }
> -     la = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0,
> +     rt = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0,
>           rtable_l2(m->m_pkthdr.ph_rtableid));
> -     if (la && (rt = la->la_rt) && (sdl = SDL(rt->rt_gateway))) {
> +     if (rt != NULL && (la = (struct llinfo_arp *)rt->rt_llinfo) &&
> +         (sdl = SDL(rt->rt_gateway))) {

I think the la != NULL check in this if condition is not neccessary
as (rt->rt_flags & RTF_LLINFO) has been checked in arplookup().

> @@ -818,7 +818,7 @@ arplookup(u_int32_t addr, int create, in
>               }
>               return (0);
>       }
> -     return ((struct llinfo_arp *)rt->rt_llinfo);
> +     return (rt);
>  }

Could you convert the two return (0) in arplookup() into return (NULL)?

Anyway OK bluhm@

Reply via email to