summaryrefslogtreecommitdiffstats
path: root/lib/zclient.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2018-04-10 21:57:09 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2018-04-18 00:44:33 +0200
commit98cbbaea91f66df1ad0ad965ceb8977d8d3a8079 (patch)
tree59e2e107a4566c512828c4211bb76588795f3378 /lib/zclient.c
parentpbrd: Use proper decode function for interface (diff)
downloadfrr-98cbbaea91f66df1ad0ad965ceb8977d8d3a8079.tar.xz
frr-98cbbaea91f66df1ad0ad965ceb8977d8d3a8079.zip
lib: Handle if up/down and vrf enable/disable events
Properly notice when we get if up/down and vrf enable/disable events and attempt to properly install nexthops as they come in. Ticket: CM20489 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/zclient.c')
-rw-r--r--lib/zclient.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/zclient.c b/lib/zclient.c
index e1ce40ce7..48182d6b2 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -37,6 +37,7 @@
#include "mpls.h"
#include "sockopt.h"
#include "pbr.h"
+#include "nexthop_group.h"
DEFINE_MTYPE_STATIC(LIB, ZCLIENT, "Zclient")
DEFINE_MTYPE_STATIC(LIB, REDIST_INST, "Redistribution instance IDs")
@@ -1697,7 +1698,9 @@ struct interface *zebra_interface_link_params_read(struct stream *s)
void zebra_interface_if_set_value(struct stream *s, struct interface *ifp)
{
uint8_t link_params_status = 0;
+ ifindex_t old_ifindex;
+ old_ifindex = ifp->ifindex;
/* Read interface's index. */
if_set_index(ifp, stream_getl(s));
ifp->status = stream_getc(s);
@@ -1724,6 +1727,8 @@ void zebra_interface_if_set_value(struct stream *s, struct interface *ifp)
struct if_link_params *iflp = if_link_params_get(ifp);
link_params_set_value(s, iflp);
}
+
+ nexthop_group_interface_state_change(ifp, old_ifindex);
}
size_t zebra_interface_link_params_write(struct stream *s,