diff options
Diffstat (limited to 'sys/netinet/if_ether.c')
-rw-r--r-- | sys/netinet/if_ether.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index 4cc1d4e..d5916ba 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -949,14 +949,9 @@ arplookup(addr, create, proxy) * arplookup() is creating the route, then purge * it from the routing table as it is probably bogus. */ - RT_UNLOCK(rt); - if (rt->rt_refcnt == 1 && ISDYNCLONE(rt)) { - rtrequest(RTM_DELETE, - (struct sockaddr *)rt_key(rt), - rt->rt_gateway, rt_mask(rt), - rt->rt_flags, 0); - } - RTFREE(rt); + if (rt->rt_refcnt == 1 && ISDYNCLONE(rt)) + rtexpunge(rt); + RTFREE_LOCKED(rt); return (0); #undef ISDYNCLONE } else { |