diff options
author | Philippe Guibert <philippe.guibert@6wind.com> | 2021-08-25 11:40:41 +0200 |
---|---|---|
committer | Philippe Guibert <philippe.guibert@6wind.com> | 2021-08-26 09:19:42 +0200 |
commit | c4e1fd52a149a4686b9c1ff1dd4b3a24740eb03b (patch) | |
tree | 0d2114cd3620f2b1e45abba2e7c0e8068c679c47 /lib/zclient.c | |
parent | Merge pull request #9466 from idryzhov/vrf-netns (diff) | |
download | frr-c4e1fd52a149a4686b9c1ff1dd4b3a24740eb03b.tar.xz frr-c4e1fd52a149a4686b9c1ff1dd4b3a24740eb03b.zip |
nhrp, zebra, lib: pass exact received neighbor state value to nhrp
As NHRP expects some notification of neighboring entries on GRE
interface, when a new interface notification is encountered, the
exact neighbor state flag is found. Previously, the flag passed
to the upper layer was forced to NDM_STATE which is REACHABLE,
as can be seen on below trace:
2021/08/25 10:58:39 NHRP: [QQ0NK-1H449] Netlink: new-neigh 102.1.1.1 dev gre1 lladdr 10.125.0.2 nud 0x2 cache used 1 type 5
When passing the real value, NHRP received an other value like STALE.
2021/08/25 11:28:44 NHRP: [QQ0NK-1H449] Netlink: new-neigh 102.1.1.1 dev gre1 lladdr 10.125.0.2 nud 0x4 cache used 0 type 5
This flag is important for NHRP, as it permits to monitor the link
layer of NHRP entries.
Fixes: d603c0774eba ("nhrp, zebra, lib: enforce usage of zapi_neigh_ip structure")
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'lib/zclient.c')
-rw-r--r-- | lib/zclient.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/zclient.c b/lib/zclient.c index 5ca584994..a1e719489 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -4487,11 +4487,9 @@ static int zclient_neigh_ip_read_entry(struct stream *s, struct ipaddr *add) return -1; } -int zclient_neigh_ip_encode(struct stream *s, - uint16_t cmd, - union sockunion *in, - union sockunion *out, - struct interface *ifp) +int zclient_neigh_ip_encode(struct stream *s, uint16_t cmd, union sockunion *in, + union sockunion *out, struct interface *ifp, + int ndm_state) { int ret = 0; @@ -4506,7 +4504,7 @@ int zclient_neigh_ip_encode(struct stream *s, stream_putc(s, AF_UNSPEC); stream_putl(s, ifp->ifindex); if (out) - stream_putl(s, ZEBRA_NEIGH_STATE_REACHABLE); + stream_putl(s, ndm_state); else stream_putl(s, ZEBRA_NEIGH_STATE_FAILED); return ret; |