summaryrefslogtreecommitdiff
path: root/lib/zclient.h
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2018-04-18 11:10:27 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2018-04-18 11:10:27 -0400
commit09924cffadc0fd952f730f97fe2275fa5652c7bd (patch)
tree24bbec965bf39784d4516675afc3d5d707b0556d /lib/zclient.h
parente49b64dee719b86b4844f0e3868b0f0bb6469e4d (diff)
zebra: Add pass up through zapi what zebra is capable of handling
Zebra is starting to have some run-time capabilites that would be useful to pass up to the higher level protocols so that they can act in an appropriate manner when needed. Send the ecmp value zebra is being run with and whether or not we believe mpls is enabled in the kernel or not. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/zclient.h')
-rw-r--r--lib/zclient.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/zclient.h b/lib/zclient.h
index 985239b326..71f5b38384 100644
--- a/lib/zclient.h
+++ b/lib/zclient.h
@@ -85,6 +85,7 @@ typedef enum {
ZEBRA_ROUTER_ID_DELETE,
ZEBRA_ROUTER_ID_UPDATE,
ZEBRA_HELLO,
+ ZEBRA_CAPABILITIES,
ZEBRA_NEXTHOP_REGISTER,
ZEBRA_NEXTHOP_UNREGISTER,
ZEBRA_NEXTHOP_UPDATE,
@@ -162,6 +163,11 @@ struct redist_proto {
struct list *instances;
};
+struct zclient_capabilities {
+ uint32_t ecmp;
+ bool mpls_enabled;
+};
+
/* Structure for the zebra client. */
struct zclient {
/* The thread master we schedule ourselves on */
@@ -206,6 +212,7 @@ struct zclient {
/* Pointer to the callback functions. */
void (*zebra_connected)(struct zclient *);
+ void (*zebra_capabilities)(struct zclient_capabilities *cap);
int (*router_id_update)(int, struct zclient *, uint16_t, vrf_id_t);
int (*interface_add)(int, struct zclient *, uint16_t, vrf_id_t);
int (*interface_delete)(int, struct zclient *, uint16_t, vrf_id_t);