summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2019-05-16 10:04:14 -0400
committerGitHub <noreply@github.com>2019-05-16 10:04:14 -0400
commitcc25952f2a34bcae4cbf6a3e5d40cfc57d4fb250 (patch)
tree5ffa168c8d91e120fb3e8e07502e471dd2e4cc9c
parent6f33cbff181010025cb2c9f80aad3c12696e19b0 (diff)
parentb3f2b59020aeb0d04f7867585766732d54026edf (diff)
Merge pull request #4327 from sworleys/Move-Multipath-Num
zebra: Move multipath_num into zrouter
-rw-r--r--zebra/main.c8
-rw-r--r--zebra/zapi_msg.c6
-rw-r--r--zebra/zebra_fpm_netlink.c3
-rw-r--r--zebra/zebra_mpls_openbsd.c3
-rw-r--r--zebra/zebra_rib.c3
-rw-r--r--zebra/zebra_router.c4
-rw-r--r--zebra/zebra_router.h2
-rw-r--r--zebra/zserv.h2
8 files changed, 17 insertions, 14 deletions
diff --git a/zebra/main.c b/zebra/main.c
index 184e798bd0..cff5e06933 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -119,8 +119,6 @@ struct zebra_privs_t zserv_privs = {
.cap_num_p = array_size(_caps_p),
.cap_num_i = 0};
-unsigned int multipath_num = MULTIPATH_NUM;
-
/* SIGHUP handler. */
static void sighup(void)
{
@@ -322,9 +320,9 @@ int main(int argc, char **argv)
keep_kernel_mode = 1;
break;
case 'e':
- multipath_num = atoi(optarg);
- if (multipath_num > MULTIPATH_NUM
- || multipath_num <= 0) {
+ zrouter.multipath_num = atoi(optarg);
+ if (zrouter.multipath_num > MULTIPATH_NUM
+ || zrouter.multipath_num <= 0) {
flog_err(
EC_ZEBRA_BAD_MULTIPATH_NUM,
"Multipath Number specified must be less than %d and greater than 0",
diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c
index 974cc9de30..03b9653ce6 100644
--- a/zebra/zapi_msg.c
+++ b/zebra/zapi_msg.c
@@ -1339,14 +1339,14 @@ static void zread_interface_delete(ZAPI_HANDLER_ARGS)
void zserv_nexthop_num_warn(const char *caller, const struct prefix *p,
const unsigned int nexthop_num)
{
- if (nexthop_num > multipath_num) {
+ if (nexthop_num > zrouter.multipath_num) {
char buff[PREFIX2STR_BUFFER];
prefix2str(p, buff, sizeof(buff));
flog_warn(
EC_ZEBRA_MORE_NH_THAN_MULTIPATH,
"%s: Prefix %s has %d nexthops, but we can only use the first %d",
- caller, buff, nexthop_num, multipath_num);
+ caller, buff, nexthop_num, zrouter.multipath_num);
}
}
@@ -1651,7 +1651,7 @@ static void zsend_capabilities(struct zserv *client, struct zebra_vrf *zvrf)
zclient_create_header(s, ZEBRA_CAPABILITIES, zvrf->vrf->vrf_id);
stream_putl(s, vrf_get_backend());
stream_putc(s, mpls_enabled);
- stream_putl(s, multipath_num);
+ stream_putl(s, zrouter.multipath_num);
stream_putc(s, zebra_mlag_get_role());
stream_putw_at(s, 0, stream_get_endp(s));
diff --git a/zebra/zebra_fpm_netlink.c b/zebra/zebra_fpm_netlink.c
index 16459b606a..065bdee208 100644
--- a/zebra/zebra_fpm_netlink.c
+++ b/zebra/zebra_fpm_netlink.c
@@ -32,6 +32,7 @@
#include "prefix.h"
#include "zebra/zserv.h"
+#include "zebra/zebra_router.h"
#include "zebra/zebra_dplane.h"
#include "zebra/zebra_ns.h"
#include "zebra/zebra_vrf.h"
@@ -251,7 +252,7 @@ static int netlink_route_info_fill(netlink_route_info_t *ri, int cmd,
ri->metric = &re->metric;
for (ALL_NEXTHOPS(re->ng, nexthop)) {
- if (ri->num_nhs >= multipath_num)
+ if (ri->num_nhs >= zrouter.multipath_num)
break;
if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_RECURSIVE))
diff --git a/zebra/zebra_mpls_openbsd.c b/zebra/zebra_mpls_openbsd.c
index 977a8eaf3c..e7fdaf127d 100644
--- a/zebra/zebra_mpls_openbsd.c
+++ b/zebra/zebra_mpls_openbsd.c
@@ -27,6 +27,7 @@
#include "zebra/zebra_mpls.h"
#include "zebra/debug.h"
#include "zebra/zebra_errors.h"
+#include "zebra/zebra_router.h"
#include "privs.h"
#include "prefix.h"
@@ -262,7 +263,7 @@ static int kernel_lsp_cmd(struct zebra_dplane_ctx *ctx)
if (!nexthop)
continue;
- if (nexthop_num >= multipath_num)
+ if (nexthop_num >= zrouter.multipath_num)
break;
if (((action == RTM_ADD || action == RTM_CHANGE)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index eddf6c8158..72c7385d8a 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -955,7 +955,8 @@ static int nexthop_active_update(struct route_node *rn, struct route_entry *re)
* decision point.
*/
new_active = nexthop_active_check(rn, re, nexthop);
- if (new_active && re->nexthop_active_num >= multipath_num) {
+ if (new_active
+ && re->nexthop_active_num >= zrouter.multipath_num) {
UNSET_FLAG(nexthop->flags, NEXTHOP_FLAG_ACTIVE);
new_active = 0;
}
diff --git a/zebra/zebra_router.c b/zebra/zebra_router.c
index 63724fc350..0ab6946eea 100644
--- a/zebra/zebra_router.c
+++ b/zebra/zebra_router.c
@@ -30,7 +30,9 @@
#include "zebra_vxlan.h"
#include "zebra_mlag.h"
-struct zebra_router zrouter;
+struct zebra_router zrouter = {
+ .multipath_num = MULTIPATH_NUM,
+};
static inline int
zebra_router_table_entry_compare(const struct zebra_router_table *e1,
diff --git a/zebra/zebra_router.h b/zebra/zebra_router.h
index c1f07397d0..04421a0f0d 100644
--- a/zebra/zebra_router.h
+++ b/zebra/zebra_router.h
@@ -109,6 +109,8 @@ struct zebra_router {
* The EVPN instance, if any
*/
struct zebra_vrf *evpn_vrf;
+
+ uint32_t multipath_num;
};
extern struct zebra_router zrouter;
diff --git a/zebra/zserv.h b/zebra/zserv.h
index d6fdc05374..34965618f2 100644
--- a/zebra/zserv.h
+++ b/zebra/zserv.h
@@ -173,8 +173,6 @@ struct zserv {
DECLARE_HOOK(zserv_client_connect, (struct zserv *client), (client));
DECLARE_KOOH(zserv_client_close, (struct zserv *client), (client));
-extern unsigned int multipath_num;
-
/*
* Initialize Zebra API server.
*