X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=lib%2Fzclient.h;h=ad98b8db8776d39d7bd2f65839184e5dc4893f57;hb=9efdc68724c67dced6030bac513a3d21841221d0;hp=2cdcefd5eb1f0e1dc9b2d5b79062da52026ded75;hpb=7abd6c4fa0331bc6a416c69080218457f9efc90f;p=mirror_frr.git diff --git a/lib/zclient.h b/lib/zclient.h index 2cdcefd5e..ad98b8db8 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, @@ -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,