lib, zebra: On startup send mlag role as part of the capabilities

On startup send the mlag role as part of the capabilities to
the end protocol.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2018-12-18 08:09:29 -05:00
parent ff1fb8d5f6
commit 02c0866dbe
3 changed files with 6 additions and 0 deletions

View file

@ -2355,6 +2355,7 @@ static void zclient_capability_decode(int command, struct zclient *zclient,
STREAM_GETC(s, mpls_enabled); STREAM_GETC(s, mpls_enabled);
cap.mpls_enabled = !!mpls_enabled; cap.mpls_enabled = !!mpls_enabled;
STREAM_GETL(s, cap.ecmp); STREAM_GETL(s, cap.ecmp);
STREAM_GETC(s, cap.role);
if (zclient->zebra_capabilities) if (zclient->zebra_capabilities)
(*zclient->zebra_capabilities)(&cap); (*zclient->zebra_capabilities)(&cap);

View file

@ -36,6 +36,8 @@
/* For union pw_protocol_fields */ /* For union pw_protocol_fields */
#include "pw.h" #include "pw.h"
#include "mlag.h"
/* For input/output buffer to zebra. */ /* For input/output buffer to zebra. */
#define ZEBRA_MAX_PACKET_SIZ 16384 #define ZEBRA_MAX_PACKET_SIZ 16384
@ -171,6 +173,7 @@ struct redist_proto {
struct zclient_capabilities { struct zclient_capabilities {
uint32_t ecmp; uint32_t ecmp;
bool mpls_enabled; bool mpls_enabled;
enum mlag_role role;
}; };
/* Structure for the zebra client. */ /* Structure for the zebra client. */

View file

@ -63,6 +63,7 @@
#include "zebra/table_manager.h" #include "zebra/table_manager.h"
#include "zebra/zapi_msg.h" #include "zebra/zapi_msg.h"
#include "zebra/zebra_errors.h" #include "zebra/zebra_errors.h"
#include "zebra/zebra_mlag.h"
/* Encoding helpers -------------------------------------------------------- */ /* Encoding helpers -------------------------------------------------------- */
@ -1657,6 +1658,7 @@ static void zsend_capabilities(struct zserv *client, struct zebra_vrf *zvrf)
zclient_create_header(s, ZEBRA_CAPABILITIES, zvrf->vrf->vrf_id); zclient_create_header(s, ZEBRA_CAPABILITIES, zvrf->vrf->vrf_id);
stream_putc(s, mpls_enabled); stream_putc(s, mpls_enabled);
stream_putl(s, multipath_num); stream_putl(s, multipath_num);
stream_putc(s, zebra_mlag_get_role());
stream_putw_at(s, 0, stream_get_endp(s)); stream_putw_at(s, 0, stream_get_endp(s));
zserv_send_message(client, s); zserv_send_message(client, s);