diff options
author | Julian Anastasov <ja@ssi.bg> | 2016-07-27 09:56:50 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-08 15:36:38 -0700 |
commit | 0e7bbcc104baaade4f64205e9706b7d43c46db7d (patch) | |
tree | 5ff5e163b9e7e221a85df4aab53f58d44606bf97 | |
parent | 1fe323aa1b2390a0c57fb0b06a782f128d49094c (diff) | |
download | op-kernel-dev-0e7bbcc104baaade4f64205e9706b7d43c46db7d.zip op-kernel-dev-0e7bbcc104baaade4f64205e9706b7d43c46db7d.tar.gz |
neigh: allow admin to set NUD_STALE
Admin should be able to set any state. Currently, this fails
when lladdr is not changed and state is changed from
NUD_CONNECTED to NUD_STALE:
ip neigh add 192.168.8.1 lladdr 00:11:22:33:44:55 nud perm dev wlan0
ip neigh show to 192.168.8.1
192.168.8.1 dev wlan0 lladdr 00:11:22:33:44:55 PERMANENT
ip neigh change 192.168.8.1 lladdr 00:11:22:33:44:55 nud stale dev wlan0
ip neigh show to 192.168.8.1
192.168.8.1 dev wlan0 lladdr 00:11:22:33:44:55 PERMANENT
Problem may be from 2.1.X days.
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Reviewed-by: Chunhui He <hchunhui@mail.ustc.edu.cn>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/neighbour.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index cf26e04c4..2ae929f 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -1148,7 +1148,8 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, } else goto out; } else { - if (lladdr == neigh->ha && new == NUD_STALE) + if (lladdr == neigh->ha && new == NUD_STALE && + !(flags & NEIGH_UPDATE_F_ADMIN)) new = old; } } |