forked from Mirror/frr
pimd: Move the infinite_assert_metric global to pim_router
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
5b45753eff
commit
d17612dd6a
|
@ -415,7 +415,7 @@ void reset_ifassert_state(struct pim_ifchannel *ch)
|
||||||
THREAD_OFF(ch->t_ifassert_timer);
|
THREAD_OFF(ch->t_ifassert_timer);
|
||||||
|
|
||||||
pim_ifassert_winner_set(ch, PIM_IFASSERT_NOINFO, any,
|
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,
|
struct pim_ifchannel *pim_ifchannel_find(struct interface *ifp,
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "pim_str.h"
|
#include "pim_str.h"
|
||||||
#include "pim_msdp.h"
|
#include "pim_msdp.h"
|
||||||
|
#include "pim_assert.h"
|
||||||
|
|
||||||
#if defined(HAVE_LINUX_MROUTE_H)
|
#if defined(HAVE_LINUX_MROUTE_H)
|
||||||
#include <linux/mroute.h>
|
#include <linux/mroute.h>
|
||||||
|
@ -35,6 +36,7 @@
|
||||||
#define MAXVIFS (256)
|
#define MAXVIFS (256)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern struct pim_instance *pimg; // Pim Global Instance
|
extern struct pim_instance *pimg; // Pim Global Instance
|
||||||
|
|
||||||
enum pim_spt_switchover {
|
enum pim_spt_switchover {
|
||||||
|
@ -48,6 +50,7 @@ struct pim_router {
|
||||||
uint32_t debugs;
|
uint32_t debugs;
|
||||||
|
|
||||||
int t_periodic;
|
int t_periodic;
|
||||||
|
struct pim_assert_metric infinite_assert_metric;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Per VRF PIM DB */
|
/* Per VRF PIM DB */
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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 =
|
up->rpf.source_nexthop.mrib_nexthop_addr.u.prefix4.s_addr =
|
||||||
PIM_NET_INADDR_ANY;
|
PIM_NET_INADDR_ANY;
|
||||||
up->rpf.source_nexthop.mrib_metric_preference =
|
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 =
|
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.family = AF_INET;
|
||||||
up->rpf.rpf_addr.u.prefix4.s_addr = PIM_NET_INADDR_ANY;
|
up->rpf.rpf_addr.u.prefix4.s_addr = PIM_NET_INADDR_ANY;
|
||||||
|
|
||||||
|
|
30
pimd/pimd.c
30
pimd/pimd.c
|
@ -51,7 +51,6 @@ DEFINE_MTYPE_STATIC(PIMD, ROUTER, "PIM Router information");
|
||||||
|
|
||||||
struct pim_router *router = NULL;
|
struct pim_router *router = NULL;
|
||||||
|
|
||||||
struct pim_assert_metric qpim_infinite_assert_metric;
|
|
||||||
long qpim_rpf_cache_refresh_delay_msec = 50;
|
long qpim_rpf_cache_refresh_delay_msec = 50;
|
||||||
int qpim_packet_process = PIM_DEFAULT_PACKET_PROCESS;
|
int qpim_packet_process = PIM_DEFAULT_PACKET_PROCESS;
|
||||||
struct pim_instance *pimg = NULL;
|
struct pim_instance *pimg = NULL;
|
||||||
|
@ -89,6 +88,21 @@ void pim_router_init(void)
|
||||||
router->debugs = 0;
|
router->debugs = 0;
|
||||||
router->master = frr_init();
|
router->master = frr_init();
|
||||||
router->t_periodic = PIM_DEFAULT_T_PERIODIC;
|
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)
|
void pim_router_terminate(void)
|
||||||
|
@ -108,20 +122,6 @@ void pim_init(void)
|
||||||
return;
|
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();
|
pim_cmd_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,6 @@ const char *const PIM_ALL_IGMP_ROUTERS;
|
||||||
extern struct pim_router *router;
|
extern struct pim_router *router;
|
||||||
extern struct zebra_privs_t pimd_privs;
|
extern struct zebra_privs_t pimd_privs;
|
||||||
struct in_addr qpim_all_pim_routers_addr;
|
struct in_addr qpim_all_pim_routers_addr;
|
||||||
struct pim_assert_metric qpim_infinite_assert_metric;
|
|
||||||
long qpim_rpf_cache_refresh_delay_msec;
|
long qpim_rpf_cache_refresh_delay_msec;
|
||||||
extern int qpim_packet_process;
|
extern int qpim_packet_process;
|
||||||
extern uint8_t qpim_ecmp_enable;
|
extern uint8_t qpim_ecmp_enable;
|
||||||
|
|
Loading…
Reference in a new issue