]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/zclient.h
Merge pull request #2392 from chiragshah6/evpn_dev
[mirror_frr.git] / lib / zclient.h
index 2cdcefd5eb1f0e1dc9b2d5b79062da52026ded75..ad98b8db8776d39d7bd2f65839184e5dc4893f57 100644 (file)
@@ -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,
@@ -123,6 +124,8 @@ typedef enum {
        ZEBRA_ADVERTISE_DEFAULT_GW,
        ZEBRA_ADVERTISE_SUBNET,
        ZEBRA_ADVERTISE_ALL_VNI,
+       ZEBRA_LOCAL_ES_ADD,
+       ZEBRA_LOCAL_ES_DEL,
        ZEBRA_VNI_ADD,
        ZEBRA_VNI_DEL,
        ZEBRA_L3VNI_ADD,
@@ -162,6 +165,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 +214,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);
@@ -230,6 +239,10 @@ struct zclient {
        int (*redistribute_route_del)(int, struct zclient *, uint16_t,
                                      vrf_id_t);
        int (*fec_update)(int, struct zclient *, uint16_t);
+       int (*local_es_add)(int command, struct zclient *zclient,
+                           uint16_t length, vrf_id_t vrf_id);
+       int (*local_es_del)(int command, struct zclient *zclient,
+                           uint16_t length, vrf_id_t vrf_id);
        int (*local_vni_add)(int, struct zclient *, uint16_t, vrf_id_t);
        int (*local_vni_del)(int, struct zclient *, uint16_t, vrf_id_t);
        int (*local_l3vni_add)(int, struct zclient *, uint16_t, vrf_id_t);
@@ -251,6 +264,10 @@ struct zclient {
                                       struct zclient *zclient,
                                       uint16_t length,
                                       vrf_id_t vrf_id);
+       int (*iptable_notify_owner)(int command,
+                                   struct zclient *zclient,
+                                   uint16_t length,
+                                   vrf_id_t vrf_id);
 };
 
 /* Zebra API message flag. */
@@ -291,6 +308,8 @@ struct zapi_nexthop {
        /* MPLS labels for BGP-LU or Segment Routing */
        uint8_t label_num;
        mpls_label_t labels[MPLS_MAX_LABELS];
+
+       struct ethaddr rmac;
 };
 
 /*
@@ -331,8 +350,6 @@ struct zapi_route {
        vrf_id_t vrf_id;
 
        uint32_t tableid;
-
-       struct ethaddr rmac;
 };
 
 /* Zebra IPv4 route message API. */
@@ -393,6 +410,13 @@ enum zapi_route_notify_owner {
        ZAPI_ROUTE_REMOVE_FAIL,
 };
 
+enum zapi_rule_notify_owner {
+       ZAPI_RULE_FAIL_INSTALL,
+       ZAPI_RULE_INSTALLED,
+       ZAPI_RULE_REMOVED,
+       ZAPI_RULE_FAIL_REMOVE,
+};
+
 enum ipset_type {
        IPSET_NET_NET = 1,
        IPSET_NET_PORT_NET,
@@ -400,28 +424,25 @@ enum ipset_type {
        IPSET_NET
 };
 
-enum zapi_rule_notify_owner {
-       ZAPI_RULE_FAIL_INSTALL,
-       ZAPI_RULE_INSTALLED,
-       ZAPI_RULE_REMOVED,
-};
-
 enum zapi_ipset_notify_owner {
        ZAPI_IPSET_FAIL_INSTALL,
        ZAPI_IPSET_INSTALLED,
        ZAPI_IPSET_REMOVED,
+       ZAPI_IPSET_FAIL_REMOVE,
 };
 
 enum zapi_ipset_entry_notify_owner {
        ZAPI_IPSET_ENTRY_FAIL_INSTALL,
        ZAPI_IPSET_ENTRY_INSTALLED,
        ZAPI_IPSET_ENTRY_REMOVED,
+       ZAPI_IPSET_ENTRY_FAIL_REMOVE,
 };
 
 enum zapi_iptable_notify_owner {
        ZAPI_IPTABLE_FAIL_INSTALL,
        ZAPI_IPTABLE_INSTALLED,
        ZAPI_IPTABLE_REMOVED,
+       ZAPI_IPTABLE_FAIL_REMOVE,
 };
 
 /* Zebra MAC types */
@@ -673,6 +694,9 @@ bool zapi_ipset_entry_notify_decode(struct stream *s,
            uint32_t *unique,
            char *ipset_name,
            enum zapi_ipset_entry_notify_owner *note);
+bool zapi_iptable_notify_decode(struct stream *s,
+               uint32_t *unique,
+               enum zapi_iptable_notify_owner *note);
 
 extern struct nexthop *nexthop_from_zapi_nexthop(struct zapi_nexthop *znh);
 extern bool zapi_nexthop_update_decode(struct stream *s,