summaryrefslogtreecommitdiffstats
path: root/lib/zclient.c
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2021-08-25 11:40:41 +0200
committerPhilippe Guibert <philippe.guibert@6wind.com>2021-08-26 09:19:42 +0200
commitc4e1fd52a149a4686b9c1ff1dd4b3a24740eb03b (patch)
tree0d2114cd3620f2b1e45abba2e7c0e8068c679c47 /lib/zclient.c
parentMerge pull request #9466 from idryzhov/vrf-netns (diff)
downloadfrr-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.c10
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;