mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 22:29:23 +00:00
pimd: Allow rp to configure it's keep alive timer
Allow the end user to supply a RP based keep alive timer. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
d854589aba
commit
01408ede34
@ -2468,13 +2468,40 @@ DEFUN (no_ip_pim_keep_alive,
|
|||||||
NO_STR
|
NO_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"pim multicast routing\n"
|
"pim multicast routing\n"
|
||||||
"Keep alive Timer"
|
"Keep alive Timer\n"
|
||||||
"Seconds")
|
"Seconds\n")
|
||||||
{
|
{
|
||||||
qpim_keep_alive_time = PIM_KEEPALIVE_PERIOD;
|
qpim_keep_alive_time = PIM_KEEPALIVE_PERIOD;
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFUN (ip_pim_rp_keep_alive,
|
||||||
|
ip_pim_rp_keep_alive_cmd,
|
||||||
|
"ip pim rp keep-alive-timer <31-600>",
|
||||||
|
IP_STR
|
||||||
|
"pim multicast routing\n"
|
||||||
|
"Rendevous Point\n"
|
||||||
|
"Keep alive Timer\n"
|
||||||
|
"Seconds\n")
|
||||||
|
{
|
||||||
|
qpim_rp_keep_alive_time = atoi (argv[4]->arg);
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN (no_ip_pim_rp_keep_alive,
|
||||||
|
no_ip_pim_rp_keep_alive_cmd,
|
||||||
|
"no ip pim rp keep-alive-timer <31-600>",
|
||||||
|
NO_STR
|
||||||
|
IP_STR
|
||||||
|
"pim multicast routing\n"
|
||||||
|
"Rendevous Point\n"
|
||||||
|
"Keep alive Timer\n"
|
||||||
|
"Seconds\n")
|
||||||
|
{
|
||||||
|
qpim_rp_keep_alive_time = PIM_RP_KEEPALIVE_PERIOD;
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
DEFUN (ip_pim_rp,
|
DEFUN (ip_pim_rp,
|
||||||
ip_pim_rp_cmd,
|
ip_pim_rp_cmd,
|
||||||
"ip pim rp A.B.C.D [A.B.C.D/M]",
|
"ip pim rp A.B.C.D [A.B.C.D/M]",
|
||||||
@ -4781,6 +4808,8 @@ void pim_cmd_init()
|
|||||||
install_element (CONFIG_NODE, &no_ip_pim_rp_cmd);
|
install_element (CONFIG_NODE, &no_ip_pim_rp_cmd);
|
||||||
install_element (CONFIG_NODE, &ip_pim_keep_alive_cmd);
|
install_element (CONFIG_NODE, &ip_pim_keep_alive_cmd);
|
||||||
install_element (CONFIG_NODE, &no_ip_pim_keep_alive_cmd);
|
install_element (CONFIG_NODE, &no_ip_pim_keep_alive_cmd);
|
||||||
|
install_element (CONFIG_NODE, &ip_pim_rp_keep_alive_cmd);
|
||||||
|
install_element (CONFIG_NODE, &no_ip_pim_rp_keep_alive_cmd);
|
||||||
install_element (CONFIG_NODE, &ip_ssmpingd_cmd);
|
install_element (CONFIG_NODE, &ip_ssmpingd_cmd);
|
||||||
install_element (CONFIG_NODE, &no_ip_ssmpingd_cmd);
|
install_element (CONFIG_NODE, &no_ip_ssmpingd_cmd);
|
||||||
|
|
||||||
|
@ -347,7 +347,7 @@ pim_register_recv (struct interface *ifp,
|
|||||||
if ((upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) ||
|
if ((upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) ||
|
||||||
(SwitchToSptDesired(&sg))) {
|
(SwitchToSptDesired(&sg))) {
|
||||||
if (sentRegisterStop) {
|
if (sentRegisterStop) {
|
||||||
pim_upstream_keep_alive_timer_start (upstream, PIM_RP_KEEPALIVE_PERIOD);
|
pim_upstream_keep_alive_timer_start (upstream, qpim_rp_keep_alive_time);
|
||||||
} else {
|
} else {
|
||||||
pim_upstream_keep_alive_timer_start (upstream, qpim_keep_alive_time);
|
pim_upstream_keep_alive_timer_start (upstream, qpim_keep_alive_time);
|
||||||
}
|
}
|
||||||
|
@ -144,6 +144,13 @@ int pim_global_config_write(struct vty *vty)
|
|||||||
qpim_keep_alive_time, VTY_NEWLINE);
|
qpim_keep_alive_time, VTY_NEWLINE);
|
||||||
++writes;
|
++writes;
|
||||||
}
|
}
|
||||||
|
if (qpim_rp_keep_alive_time != PIM_RP_KEEPALIVE_PERIOD)
|
||||||
|
{
|
||||||
|
vty_out (vty, "ip pim rp keep-alive-timer %d%s",
|
||||||
|
qpim_keep_alive_time, VTY_NEWLINE);
|
||||||
|
++writes;
|
||||||
|
}
|
||||||
|
|
||||||
if (qpim_ssmpingd_list) {
|
if (qpim_ssmpingd_list) {
|
||||||
struct listnode *node;
|
struct listnode *node;
|
||||||
struct ssmpingd_sock *ss;
|
struct ssmpingd_sock *ss;
|
||||||
|
@ -70,6 +70,7 @@ int64_t qpim_mroute_del_events = 0;
|
|||||||
int64_t qpim_mroute_del_last = 0;
|
int64_t qpim_mroute_del_last = 0;
|
||||||
struct list *qpim_static_route_list = NULL;
|
struct list *qpim_static_route_list = NULL;
|
||||||
unsigned int qpim_keep_alive_time = PIM_KEEPALIVE_PERIOD;
|
unsigned int qpim_keep_alive_time = PIM_KEEPALIVE_PERIOD;
|
||||||
|
signed int qpim_rp_keep_alive_time = 0;
|
||||||
|
|
||||||
int32_t qpim_register_suppress_time = PIM_REGISTER_SUPPRESSION_TIME_DEFAULT;
|
int32_t qpim_register_suppress_time = PIM_REGISTER_SUPPRESSION_TIME_DEFAULT;
|
||||||
int32_t qpim_register_probe_time = PIM_REGISTER_PROBE_TIME_DEFAULT;
|
int32_t qpim_register_probe_time = PIM_REGISTER_PROBE_TIME_DEFAULT;
|
||||||
@ -96,6 +97,8 @@ void pim_init()
|
|||||||
{
|
{
|
||||||
srandom(time(NULL));
|
srandom(time(NULL));
|
||||||
|
|
||||||
|
qpim_rp_keep_alive_time = PIM_RP_KEEPALIVE_PERIOD;
|
||||||
|
|
||||||
pim_rp_init ();
|
pim_rp_init ();
|
||||||
|
|
||||||
if (!inet_aton(PIM_ALL_PIM_ROUTERS, &qpim_all_pim_routers_addr)) {
|
if (!inet_aton(PIM_ALL_PIM_ROUTERS, &qpim_all_pim_routers_addr)) {
|
||||||
|
@ -105,6 +105,7 @@ int64_t qpim_mroute_del_events;
|
|||||||
int64_t qpim_mroute_del_last;
|
int64_t qpim_mroute_del_last;
|
||||||
struct list *qpim_static_route_list; /* list of routes added statically */
|
struct list *qpim_static_route_list; /* list of routes added statically */
|
||||||
extern unsigned int qpim_keep_alive_time;
|
extern unsigned int qpim_keep_alive_time;
|
||||||
|
extern signed int qpim_rp_keep_alive_time;
|
||||||
|
|
||||||
#define PIM_JP_HOLDTIME (qpim_t_periodic * 7 / 2)
|
#define PIM_JP_HOLDTIME (qpim_t_periodic * 7 / 2)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user