diff --git a/[refs] b/[refs] index 21535a727e8a..a0dc04348801 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fc1f9ea51de726b3b8003539788d918814c9deff +refs/heads/master: 0c5c2d3089068d4aa378f7a40d2b5ad9d4f52ce8 diff --git a/trunk/include/linux/neighbour.h b/trunk/include/linux/neighbour.h index 8730d5dae1bc..12c9de138451 100644 --- a/trunk/include/linux/neighbour.h +++ b/trunk/include/linux/neighbour.h @@ -31,6 +31,7 @@ enum * Neighbor Cache Entry Flags */ +#define NTF_USE 0x01 #define NTF_PROXY 0x08 /* == ATF_PUBL */ #define NTF_ROUTER 0x80 diff --git a/trunk/net/core/neighbour.c b/trunk/net/core/neighbour.c index 417b6d739fb7..a1cbce7fdae5 100644 --- a/trunk/net/core/neighbour.c +++ b/trunk/net/core/neighbour.c @@ -1654,7 +1654,11 @@ static int neigh_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) flags &= ~NEIGH_UPDATE_F_OVERRIDE; } - err = neigh_update(neigh, lladdr, ndm->ndm_state, flags); + if (ndm->ndm_flags & NTF_USE) { + neigh_event_send(neigh, NULL); + err = 0; + } else + err = neigh_update(neigh, lladdr, ndm->ndm_state, flags); neigh_release(neigh); goto out_dev_put; }