]> git.proxmox.com Git - mirror_frr.git/commitdiff
pim6d: Adding ipv6 pim rp keep-alive-timer
authorMobashshera Rasool <mrasool@vmware.com>
Wed, 19 Jan 2022 13:36:05 +0000 (05:36 -0800)
committerMobashshera Rasool <mrasool@vmware.com>
Mon, 28 Feb 2022 09:38:41 +0000 (01:38 -0800)
Adding below CLI for pim6d daemon
[no] ipv6 pim rp keep-alive-timer [(1-65535)]

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
pimd/pim6_cmd.c
pimd/pim_cmd.c
pimd/pim_cmd_common.c
pimd/pim_cmd_common.h

index 5ec8a93a05a220ef49d36488c0ecf3a1ea652efe..b8aac48ce9ae14ab59ed646fa1273840644cccee 100644 (file)
@@ -162,6 +162,31 @@ DEFPY (no_ipv6_pim_keep_alive,
        return pim_process_no_keepalivetimer_cmd(vty);
 }
 
+DEFPY (ipv6_pim_rp_keep_alive,
+       ipv6_pim_rp_keep_alive_cmd,
+       "ipv6 pim rp keep-alive-timer (1-65535)$kat",
+       IPV6_STR
+       PIM_STR
+       "Rendevous Point\n"
+       "Keep alive Timer\n"
+       "Seconds\n")
+{
+       return pim_process_rp_kat_cmd(vty, kat_str);
+}
+
+DEFPY (no_ipv6_pim_rp_keep_alive,
+       no_ipv6_pim_rp_keep_alive_cmd,
+       "no ipv6 pim rp keep-alive-timer [(1-65535)]",
+       NO_STR
+       IPV6_STR
+       PIM_STR
+       "Rendevous Point\n"
+       "Keep alive Timer\n"
+       IGNORED_IN_NO_STR)
+{
+       return pim_process_no_rp_kat_cmd(vty);
+}
+
 void pim_cmd_init(void)
 {
        if_cmd_init(pim_interface_config_write);
@@ -176,4 +201,6 @@ void pim_cmd_init(void)
        install_element(CONFIG_NODE, &no_ipv6_pim_packets_cmd);
        install_element(CONFIG_NODE, &ipv6_pim_keep_alive_cmd);
        install_element(CONFIG_NODE, &no_ipv6_pim_keep_alive_cmd);
+       install_element(CONFIG_NODE, &ipv6_pim_rp_keep_alive_cmd);
+       install_element(CONFIG_NODE, &no_ipv6_pim_rp_keep_alive_cmd);
 }
index b5ebdb30a16541fa1fecde98a57be91c79e99732..5568893a653be8a12225bb93ac0a28eb4935f172 100644 (file)
@@ -6860,32 +6860,16 @@ DEFUN (no_ip_pim_register_suppress,
        return nb_cli_apply_changes(vty, NULL);
 }
 
-DEFUN (ip_pim_rp_keep_alive,
+DEFPY (ip_pim_rp_keep_alive,
        ip_pim_rp_keep_alive_cmd,
-       "ip pim rp keep-alive-timer (1-65535)",
+       "ip pim rp keep-alive-timer (1-65535)$kat",
        IP_STR
        "pim multicast routing\n"
        "Rendevous Point\n"
        "Keep alive Timer\n"
        "Seconds\n")
 {
-       const char *vrfname;
-       char rp_ka_timer_xpath[XPATH_MAXLEN];
-
-       vrfname = pim_cli_get_vrf_name(vty);
-       if (vrfname == NULL)
-               return CMD_WARNING_CONFIG_FAILED;
-
-       snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath),
-                FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname,
-                "frr-routing:ipv4");
-       strlcat(rp_ka_timer_xpath, "/rp-keep-alive-timer",
-               sizeof(rp_ka_timer_xpath));
-
-       nb_cli_enqueue_change(vty, rp_ka_timer_xpath, NB_OP_MODIFY,
-                             argv[4]->arg);
-
-       return nb_cli_apply_changes(vty, NULL);
+       return pim_process_rp_kat_cmd(vty, kat_str);
 }
 
 DEFUN (no_ip_pim_rp_keep_alive,
@@ -6898,39 +6882,7 @@ DEFUN (no_ip_pim_rp_keep_alive,
        "Keep alive Timer\n"
        IGNORED_IN_NO_STR)
 {
-       const char *vrfname;
-       char rp_ka_timer[6];
-       char rp_ka_timer_xpath[XPATH_MAXLEN];
-       uint v;
-       char rs_timer_xpath[XPATH_MAXLEN];
-
-       snprintf(rs_timer_xpath, sizeof(rs_timer_xpath),
-                FRR_PIM_ROUTER_XPATH, "frr-routing:ipv4");
-       strlcat(rs_timer_xpath, "/register-suppress-time",
-               sizeof(rs_timer_xpath));
-
-       /* RFC4601 */
-       v = yang_dnode_get_uint16(vty->candidate_config->dnode,
-                                 rs_timer_xpath);
-       v = 3 * v + PIM_REGISTER_PROBE_TIME_DEFAULT;
-       if (v > UINT16_MAX)
-               v = UINT16_MAX;
-       snprintf(rp_ka_timer, sizeof(rp_ka_timer), "%u", v);
-
-       vrfname = pim_cli_get_vrf_name(vty);
-       if (vrfname == NULL)
-               return CMD_WARNING_CONFIG_FAILED;
-
-       snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath),
-                FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname,
-                "frr-routing:ipv4");
-       strlcat(rp_ka_timer_xpath, "/rp-keep-alive-timer",
-               sizeof(rp_ka_timer_xpath));
-
-       nb_cli_enqueue_change(vty, rp_ka_timer_xpath, NB_OP_MODIFY,
-                             rp_ka_timer);
-
-       return nb_cli_apply_changes(vty, NULL);
+       return pim_process_no_rp_kat_cmd(vty);
 }
 
 DEFPY (ip_pim_keep_alive,
index efa799d3a6ccd56e34309479f277eda7f929e5f2..1a1e11cfd7227776ad8b15cc0d6a9b74931e5c20 100644 (file)
@@ -242,3 +242,61 @@ int pim_process_no_keepalivetimer_cmd(struct vty *vty)
 
        return nb_cli_apply_changes(vty, NULL);
 }
+
+int pim_process_rp_kat_cmd(struct vty *vty, const char *rpkat)
+{
+       const char *vrfname;
+       char rp_ka_timer_xpath[XPATH_MAXLEN];
+
+       vrfname = pim_cli_get_vrf_name(vty);
+       if (vrfname == NULL)
+               return CMD_WARNING_CONFIG_FAILED;
+
+       snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath),
+                FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname,
+                FRR_PIM_AF_XPATH_VAL);
+       strlcat(rp_ka_timer_xpath, "/rp-keep-alive-timer",
+               sizeof(rp_ka_timer_xpath));
+
+       nb_cli_enqueue_change(vty, rp_ka_timer_xpath, NB_OP_MODIFY,
+                             rpkat);
+
+       return nb_cli_apply_changes(vty, NULL);
+}
+
+int pim_process_no_rp_kat_cmd(struct vty *vty)
+{
+       const char *vrfname;
+       char rp_ka_timer[6];
+       char rp_ka_timer_xpath[XPATH_MAXLEN];
+       uint v;
+       char rs_timer_xpath[XPATH_MAXLEN];
+
+       snprintf(rs_timer_xpath, sizeof(rs_timer_xpath),
+                FRR_PIM_ROUTER_XPATH, FRR_PIM_AF_XPATH_VAL);
+       strlcat(rs_timer_xpath, "/register-suppress-time",
+               sizeof(rs_timer_xpath));
+
+       /* RFC4601 */
+       v = yang_dnode_get_uint16(vty->candidate_config->dnode,
+                                 rs_timer_xpath);
+       v = 3 * v + PIM_REGISTER_PROBE_TIME_DEFAULT;
+       if (v > UINT16_MAX)
+               v = UINT16_MAX;
+       snprintf(rp_ka_timer, sizeof(rp_ka_timer), "%u", v);
+
+       vrfname = pim_cli_get_vrf_name(vty);
+       if (vrfname == NULL)
+               return CMD_WARNING_CONFIG_FAILED;
+
+       snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath),
+                FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname,
+                FRR_PIM_AF_XPATH_VAL);
+       strlcat(rp_ka_timer_xpath, "/rp-keep-alive-timer",
+               sizeof(rp_ka_timer_xpath));
+
+       nb_cli_enqueue_change(vty, rp_ka_timer_xpath, NB_OP_MODIFY,
+                             rp_ka_timer);
+
+       return nb_cli_apply_changes(vty, NULL);
+}
index 6a84632da884a0a261c0da386a51d0966a1ddb22..8cba5ae3ebea1c4c8ca6d2dbe9e134bd4c3a46e5 100644 (file)
@@ -31,5 +31,7 @@ int pim_process_pim_packet_cmd(struct vty *vty, const char *packet);
 int pim_process_no_pim_packet_cmd(struct vty *vty);
 int pim_process_keepalivetimer_cmd(struct vty *vty, const char *kat);
 int pim_process_no_keepalivetimer_cmd(struct vty *vty);
+int pim_process_rp_kat_cmd(struct vty *vty, const char *rpkat);
+int pim_process_no_rp_kat_cmd(struct vty *vty);
 
 #endif /* PIM_CMD_COMMON_H */