</snip>
>
> This time arpcache() is only called by netisr() with both kernel and
> exclusive net locks held. RTM_DELETE message processing will also call
> ifp->if_rtrequest() with exclusive netlock held.
>
> So this while() loop within arpcache() can’t be broken by “arp -a -d”.
completely agree.
>
> Also netlock serializes arpcache() and arpresolve().
>
I agree arepcache() always runs as a writer on netlock + KERNEL_LOCK
I suspect arpresolve() might be running also as a reader on netlock.
this happens when we forward packet. I think forwarded packets runs
arpresolve() as a reader on netlock, when it is dispatched/forwarded
to outbound interface.
thanks and
regards
sashan