From d17612dd6ac42042859b991b8f23f0c99705d8f5 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 20 Dec 2018 11:18:14 -0500 Subject: [PATCH] pimd: Move the infinite_assert_metric global to pim_router Signed-off-by: Donald Sharp --- pimd/pim_ifchannel.c | 2 +- pimd/pim_instance.h | 3 +++ pimd/pim_macro.c | 2 +- pimd/pim_upstream.c | 4 ++-- pimd/pimd.c | 30 +++++++++++++++--------------- pimd/pimd.h | 1 - 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index a96404c8db..14ce8d7d9f 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -415,7 +415,7 @@ void reset_ifassert_state(struct pim_ifchannel *ch) THREAD_OFF(ch->t_ifassert_timer); pim_ifassert_winner_set(ch, PIM_IFASSERT_NOINFO, any, - qpim_infinite_assert_metric); + router->infinite_assert_metric); } struct pim_ifchannel *pim_ifchannel_find(struct interface *ifp, diff --git a/pimd/pim_instance.h b/pimd/pim_instance.h index ed8ecdcaa7..9f36b9c304 100644 --- a/pimd/pim_instance.h +++ b/pimd/pim_instance.h @@ -23,6 +23,7 @@ #include "pim_str.h" #include "pim_msdp.h" +#include "pim_assert.h" #if defined(HAVE_LINUX_MROUTE_H) #include @@ -35,6 +36,7 @@ #define MAXVIFS (256) #endif #endif + extern struct pim_instance *pimg; // Pim Global Instance enum pim_spt_switchover { @@ -48,6 +50,7 @@ struct pim_router { uint32_t debugs; int t_periodic; + struct pim_assert_metric infinite_assert_metric; }; /* Per VRF PIM DB */ diff --git a/pimd/pim_macro.c b/pimd/pim_macro.c index 13f4240dba..908026ab14 100644 --- a/pimd/pim_macro.c +++ b/pimd/pim_macro.c @@ -295,7 +295,7 @@ pim_macro_ch_my_assert_metric_eval(const struct pim_ifchannel *ch) } } - return qpim_infinite_assert_metric; + return router->infinite_assert_metric; } /* diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 8cb6c0c174..c6ab8f5a2a 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -647,9 +647,9 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim, up->rpf.source_nexthop.mrib_nexthop_addr.u.prefix4.s_addr = PIM_NET_INADDR_ANY; up->rpf.source_nexthop.mrib_metric_preference = - qpim_infinite_assert_metric.metric_preference; + router->infinite_assert_metric.metric_preference; up->rpf.source_nexthop.mrib_route_metric = - qpim_infinite_assert_metric.route_metric; + router->infinite_assert_metric.route_metric; up->rpf.rpf_addr.family = AF_INET; up->rpf.rpf_addr.u.prefix4.s_addr = PIM_NET_INADDR_ANY; diff --git a/pimd/pimd.c b/pimd/pimd.c index 33aac5a264..2a37477fb9 100644 --- a/pimd/pimd.c +++ b/pimd/pimd.c @@ -51,7 +51,6 @@ DEFINE_MTYPE_STATIC(PIMD, ROUTER, "PIM Router information"); struct pim_router *router = NULL; -struct pim_assert_metric qpim_infinite_assert_metric; long qpim_rpf_cache_refresh_delay_msec = 50; int qpim_packet_process = PIM_DEFAULT_PACKET_PROCESS; struct pim_instance *pimg = NULL; @@ -89,6 +88,21 @@ void pim_router_init(void) router->debugs = 0; router->master = frr_init(); router->t_periodic = PIM_DEFAULT_T_PERIODIC; + + /* + RFC 4601: 4.6.3. Assert Metrics + + assert_metric + infinite_assert_metric() { + return {1,infinity,infinity,0} + } + */ + router->infinite_assert_metric.rpt_bit_flag = 1; + router->infinite_assert_metric.metric_preference = + PIM_ASSERT_METRIC_PREFERENCE_MAX; + router->infinite_assert_metric.route_metric = + PIM_ASSERT_ROUTE_METRIC_MAX; + router->infinite_assert_metric.ip_address.s_addr = INADDR_ANY; } void pim_router_terminate(void) @@ -108,20 +122,6 @@ void pim_init(void) return; } - /* - RFC 4601: 4.6.3. Assert Metrics - - assert_metric - infinite_assert_metric() { - return {1,infinity,infinity,0} - } - */ - qpim_infinite_assert_metric.rpt_bit_flag = 1; - qpim_infinite_assert_metric.metric_preference = - PIM_ASSERT_METRIC_PREFERENCE_MAX; - qpim_infinite_assert_metric.route_metric = PIM_ASSERT_ROUTE_METRIC_MAX; - qpim_infinite_assert_metric.ip_address.s_addr = INADDR_ANY; - pim_cmd_init(); } diff --git a/pimd/pimd.h b/pimd/pimd.h index 84d3b4021a..2c13b5613d 100644 --- a/pimd/pimd.h +++ b/pimd/pimd.h @@ -135,7 +135,6 @@ const char *const PIM_ALL_IGMP_ROUTERS; extern struct pim_router *router; extern struct zebra_privs_t pimd_privs; struct in_addr qpim_all_pim_routers_addr; -struct pim_assert_metric qpim_infinite_assert_metric; long qpim_rpf_cache_refresh_delay_msec; extern int qpim_packet_process; extern uint8_t qpim_ecmp_enable;