summaryrefslogtreecommitdiff
path: root/lib/zclient.c
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2020-01-28 11:47:09 -0500
committerGitHub <noreply@github.com>2020-01-28 11:47:09 -0500
commit64d50ba4c4dd6d9e6976b7528cbf9abbbaa9056e (patch)
tree36d877ecfff6064c31968c9124292b3726ca76fe /lib/zclient.c
parentb27b58be24d3f6f1cb8b8375544007fdfcfef9b3 (diff)
parent4a6e80fbf21ed4f52d8f1614a73d0e107125a30b (diff)
Merge pull request #5210 from bisdhdh/master
bgpd:BGP Graceful Restart Per Neighbor(BGPN) Feature.
Diffstat (limited to 'lib/zclient.c')
-rw-r--r--lib/zclient.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/zclient.c b/lib/zclient.c
index b2c74cd0b9..7ddf0085de 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -3299,3 +3299,32 @@ void zclient_interface_set_master(struct zclient *client,
stream_putw_at(s, 0, stream_get_endp(s));
zclient_send_message(client);
}
+
+/* Process capabilities message from zebra */
+int zapi_capabilities_decode(struct stream *s, struct zapi_cap *api)
+{
+ memset(api, 0, sizeof(*api));
+
+ STREAM_GETL(s, api->cap);
+ switch (api->cap) {
+ case ZEBRA_CLIENT_GR_CAPABILITIES:
+ case ZEBRA_CLIENT_RIB_STALE_TIME:
+ STREAM_GETL(s, api->stale_removal_time);
+ STREAM_GETL(s, api->vrf_id);
+ break;
+ case ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE:
+ case ZEBRA_CLIENT_ROUTE_UPDATE_PENDING:
+ STREAM_GETL(s, api->afi);
+ STREAM_GETL(s, api->safi);
+ STREAM_GETL(s, api->vrf_id);
+ break;
+ case ZEBRA_CLIENT_GR_DISABLE:
+ STREAM_GETL(s, api->vrf_id);
+ break;
+ default:
+ break;
+ }
+
+stream_failure:
+ return 0;
+}