summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-01-11 13:17:45 -0500
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-01-31 09:20:46 -0500
commite96ba9daeb033e7677b16c9be6a89eef4f7db4b7 (patch)
tree6689a20744a3ee5e42eba4f31c114a6475594ef5
parent2561d12e5db23b499b2f37bf2f0f1c128d7a1ea1 (diff)
zebra: Add mlag information to zrouter
Since this is zebra router global level information store mlag data in the zrouter structure. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--zebra/zebra_mlag.c13
-rw-r--r--zebra/zebra_router.h17
2 files changed, 23 insertions, 7 deletions
diff --git a/zebra/zebra_mlag.c b/zebra/zebra_mlag.c
index 35be07c024..a510f2f8d9 100644
--- a/zebra/zebra_mlag.c
+++ b/zebra/zebra_mlag.c
@@ -25,16 +25,15 @@
#include "hook.h"
#include "zebra/zebra_mlag.h"
+#include "zebra/zebra_router.h"
#ifndef VTYSH_EXTRACT_PL
#include "zebra/zebra_mlag_clippy.c"
#endif
-enum mlag_role role = MLAG_ROLE_NONE;
-
enum mlag_role zebra_mlag_get_role(void)
{
- return role;
+ return zrouter.mlag_info.role;
}
DEFUN_HIDDEN (show_mlag,
@@ -47,7 +46,7 @@ DEFUN_HIDDEN (show_mlag,
char buf[80];
vty_out(vty, "MLag is configured to: %s\n",
- mlag_role2str(role, buf, sizeof(buf)));
+ mlag_role2str(zrouter.mlag_info.role, buf, sizeof(buf)));
return CMD_SUCCESS;
}
@@ -63,11 +62,11 @@ DEFPY_HIDDEN (test_mlag,
"Mlag is setup to be the secondary\n")
{
if (none)
- role = MLAG_ROLE_NONE;
+ zrouter.mlag_info.role = MLAG_ROLE_NONE;
if (primary)
- role = MLAG_ROLE_PRIMARY;
+ zrouter.mlag_info.role = MLAG_ROLE_PRIMARY;
if (secondary)
- role = MLAG_ROLE_SECONDARY;
+ zrouter.mlag_info.role = MLAG_ROLE_SECONDARY;
return CMD_SUCCESS;
}
diff --git a/zebra/zebra_router.h b/zebra/zebra_router.h
index 332a4c3f95..fb28495917 100644
--- a/zebra/zebra_router.h
+++ b/zebra/zebra_router.h
@@ -22,6 +22,8 @@
#ifndef __ZEBRA_ROUTER_H__
#define __ZEBRA_ROUTER_H__
+#include "lib/mlag.h"
+
#include "zebra/zebra_ns.h"
/*
@@ -44,6 +46,18 @@ RB_HEAD(zebra_router_table_head, zebra_router_table);
RB_PROTOTYPE(zebra_router_table_head, zebra_router_table,
zebra_router_table_entry, zebra_router_table_entry_compare)
+struct zebra_mlag_info {
+ /* Role this zebra router is playing */
+ enum mlag_role role;
+
+ /* The peerlink being used for mlag */
+ char *peerlink;
+ ifindex_t peerlink_ifindex;
+
+ /* The system mac being used */
+ struct ethaddr mac;
+};
+
struct zebra_router {
/* Thread master */
struct thread_master *master;
@@ -87,6 +101,9 @@ struct zebra_router {
#define ZEBRA_ZAPI_PACKETS_TO_PROCESS 1000
_Atomic uint32_t packets_to_process;
+
+ /* Mlag information for the router */
+ struct zebra_mlag_info mlag_info;
};
extern struct zebra_router zrouter;