</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

Reply via email to