summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-12-10 02:48:21 +0100
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-12-15 15:36:23 +0100
commit14d9bbbe5c6526f729f0bdbd7e0513d69feb1a87 (patch)
tree933c6981fdfc0c21ebd467f52525463546a92b52
parentMerge pull request #5452 from mjstapp/fix_notify_nhg (diff)
downloadfrr-14d9bbbe5c6526f729f0bdbd7e0513d69feb1a87.tar.xz
frr-14d9bbbe5c6526f729f0bdbd7e0513d69feb1a87.zip
zebra: Allow zebra_mlag to compile with no j factor
If you compile FRR with no j factor zebra_mlag.c fails to build because the vtysh extraction methodology runs first before the protobuf compiler runs and that compilation does not have the proper dependancy chain built for the inclusions that zebra_mlag.c had. Moving the DEF* code into a zebra_mlag_vty.c which can be included in the vtysh extraction code and has no mlag.proto dependancies makes the compilation work better. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--zebra/subdir.am7
-rw-r--r--zebra/zebra_mlag.c32
-rw-r--r--zebra/zebra_mlag.h4
-rw-r--r--zebra/zebra_mlag_vty.c67
4 files changed, 78 insertions, 32 deletions
diff --git a/zebra/subdir.am b/zebra/subdir.am
index e3ca01ff7..99e364308 100644
--- a/zebra/subdir.am
+++ b/zebra/subdir.am
@@ -10,7 +10,7 @@ vtysh_scan += \
$(top_srcdir)/zebra/interface.c \
$(top_srcdir)/zebra/router-id.c \
$(top_srcdir)/zebra/rtadv.c \
- $(top_srcdir)/zebra/zebra_mlag.c \
+ $(top_srcdir)/zebra/zebra_mlag_vty.c \
$(top_srcdir)/zebra/zebra_mpls_vty.c \
$(top_srcdir)/zebra/zebra_ptm.c \
$(top_srcdir)/zebra/zebra_pw.c \
@@ -72,6 +72,7 @@ zebra_zebra_SOURCES = \
zebra/rule_netlink.c \
zebra/rule_socket.c \
zebra/zebra_mlag.c \
+ zebra/zebra_mlag_vty.c \
zebra/zebra_l2.c \
zebra/zebra_memory.c \
zebra/zebra_dplane.c \
@@ -105,8 +106,8 @@ zebra_zebra_SOURCES = \
zebra/debug_clippy.c: $(CLIPPY_DEPS)
zebra/debug.$(OBJEXT): zebra/debug_clippy.c
-zebra/zebra_mlag_clippy.c: $(CLIPPY_DEPS)
-zebra/zebra_mlag.$(OBJEXT): zebra/zebra_mlag_clippy.c
+zebra/zebra_mlag_vty_clippy.c: $(CLIPPY_DEPS)
+zebra/zebra_mlag_vty.$(OBJEXT): zebra/zebra_mlag_vty_clippy.c
zebra/zebra_vty_clippy.c: $(CLIPPY_DEPS)
zebra/interface_clippy.c: $(CLIPPY_DEPS)
diff --git a/zebra/zebra_mlag.c b/zebra/zebra_mlag.c
index 7fbc9c118..021a52c3a 100644
--- a/zebra/zebra_mlag.c
+++ b/zebra/zebra_mlag.c
@@ -32,10 +32,6 @@
#include "zebra/zapi_msg.h"
#include "zebra/debug.h"
-#ifndef VTYSH_EXTRACT_PL
-#include "zebra/zebra_mlag_clippy.c"
-#endif
-
DEFINE_HOOK(zebra_mlag_private_write_data,
(uint8_t *data, uint32_t len), (data, len))
DEFINE_HOOK(zebra_mlag_private_monitor_state, (), ())
@@ -586,29 +582,8 @@ enum mlag_role zebra_mlag_get_role(void)
return zrouter.mlag_info.role;
}
-DEFUN_HIDDEN (show_mlag,
- show_mlag_cmd,
- "show zebra mlag",
- SHOW_STR
- ZEBRA_STR
- "The mlag role on this machine\n")
-{
- char buf[MLAG_ROLE_STRSIZE];
-
- vty_out(vty, "MLag is configured to: %s\n",
- mlag_role2str(zrouter.mlag_info.role, buf, sizeof(buf)));
-
- return CMD_SUCCESS;
-}
-
-DEFPY_HIDDEN(test_mlag, test_mlag_cmd,
- "test zebra mlag <none$none|primary$primary|secondary$secondary>",
- "Test code\n"
- ZEBRA_STR
- "Modify the Mlag state\n"
- "Mlag is not setup on the machine\n"
- "Mlag is setup to be primary\n"
- "Mlag is setup to be the secondary\n")
+int32_t zebra_mlag_test_mlag_internal(const char *none, const char *primary,
+ const char *secondary)
{
enum mlag_role orig = zrouter.mlag_info.role;
char buf1[MLAG_ROLE_STRSIZE], buf2[MLAG_ROLE_STRSIZE];
@@ -650,8 +625,7 @@ DEFPY_HIDDEN(test_mlag, test_mlag_cmd,
void zebra_mlag_init(void)
{
- install_element(VIEW_NODE, &show_mlag_cmd);
- install_element(ENABLE_NODE, &test_mlag_cmd);
+ zebra_mlag_vty_init();
/*
* Intialiaze the MLAG Global variables
diff --git a/zebra/zebra_mlag.h b/zebra/zebra_mlag.h
index 1f024516c..b95f5a5d5 100644
--- a/zebra/zebra_mlag.h
+++ b/zebra/zebra_mlag.h
@@ -64,6 +64,9 @@ void zebra_mlag_send_register(void);
void zebra_mlag_send_deregister(void);
void zebra_mlag_handle_process_state(enum zebra_mlag_state state);
void zebra_mlag_process_mlag_data(uint8_t *data, uint32_t len);
+int32_t zebra_mlag_test_mlag_internal(const char *none, const char *primary,
+ const char *secondary);
+
/*
* ProtoBuffer Api's
*/
@@ -71,4 +74,5 @@ int zebra_mlag_protobuf_encode_client_data(struct stream *s,
uint32_t *msg_type);
int zebra_mlag_protobuf_decode_message(struct stream *s, uint8_t *data,
uint32_t len);
+void zebra_mlag_vty_init(void);
#endif
diff --git a/zebra/zebra_mlag_vty.c b/zebra/zebra_mlag_vty.c
new file mode 100644
index 000000000..0eb3be501
--- /dev/null
+++ b/zebra/zebra_mlag_vty.c
@@ -0,0 +1,67 @@
+/* Zebra Mlag vty Code.
+ * Copyright (C) 2019 Cumulus Networks, Inc.
+ * Donald Sharp
+ *
+ * This file is part of FRR.
+ *
+ * FRR is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * FRR is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with FRR; see the file COPYING. If not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+#include <zebra.h>
+
+#include "vty.h"
+#include "command.h"
+
+#include "zebra_router.h"
+#include "zebra_mlag.h"
+#include "debug.h"
+#include "zapi_msg.h"
+
+#ifndef VTYSH_EXTRACT_PL
+#include "zebra/zebra_mlag_vty_clippy.c"
+#endif
+
+DEFUN_HIDDEN (show_mlag,
+ show_mlag_cmd,
+ "show zebra mlag",
+ SHOW_STR
+ ZEBRA_STR
+ "The mlag role on this machine\n")
+{
+ char buf[MLAG_ROLE_STRSIZE];
+
+ vty_out(vty, "MLag is configured to: %s\n",
+ mlag_role2str(zrouter.mlag_info.role, buf, sizeof(buf)));
+
+ return CMD_SUCCESS;
+}
+
+DEFPY_HIDDEN(test_mlag, test_mlag_cmd,
+ "test zebra mlag <none$none|primary$primary|secondary$secondary>",
+ "Test code\n"
+ ZEBRA_STR
+ "Modify the Mlag state\n"
+ "Mlag is not setup on the machine\n"
+ "Mlag is setup to be primary\n"
+ "Mlag is setup to be the secondary\n")
+{
+ return zebra_mlag_test_mlag_internal(none, primary, secondary);
+}
+
+void zebra_mlag_vty_init(void)
+{
+ install_element(VIEW_NODE, &show_mlag_cmd);
+ install_element(ENABLE_NODE, &test_mlag_cmd);
+}