diff options
-rw-r--r-- | include/linux/neighbour.h | 1 | ||||
-rw-r--r-- | net/core/neighbour.c | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/neighbour.h b/include/linux/neighbour.h index 8730d5dae1bc..12c9de138451 100644 --- a/include/linux/neighbour.h +++ b/include/linux/neighbour.h | |||
@@ -31,6 +31,7 @@ enum | |||
31 | * Neighbor Cache Entry Flags | 31 | * Neighbor Cache Entry Flags |
32 | */ | 32 | */ |
33 | 33 | ||
34 | #define NTF_USE 0x01 | ||
34 | #define NTF_PROXY 0x08 /* == ATF_PUBL */ | 35 | #define NTF_PROXY 0x08 /* == ATF_PUBL */ |
35 | #define NTF_ROUTER 0x80 | 36 | #define NTF_ROUTER 0x80 |
36 | 37 | ||
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 417b6d739fb7..a1cbce7fdae5 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -1654,7 +1654,11 @@ static int neigh_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) | |||
1654 | flags &= ~NEIGH_UPDATE_F_OVERRIDE; | 1654 | flags &= ~NEIGH_UPDATE_F_OVERRIDE; |
1655 | } | 1655 | } |
1656 | 1656 | ||
1657 | err = neigh_update(neigh, lladdr, ndm->ndm_state, flags); | 1657 | if (ndm->ndm_flags & NTF_USE) { |
1658 | neigh_event_send(neigh, NULL); | ||
1659 | err = 0; | ||
1660 | } else | ||
1661 | err = neigh_update(neigh, lladdr, ndm->ndm_state, flags); | ||
1658 | neigh_release(neigh); | 1662 | neigh_release(neigh); |
1659 | goto out_dev_put; | 1663 | goto out_dev_put; |
1660 | } | 1664 | } |