]> git.puffer.fish Git - mirror/frr.git/commitdiff
pim6d: Adding "ipv6 mld last-member-query-interval" CLI
authorSai Gomathi N <nsaigomathi@vmware.com>
Tue, 18 Jan 2022 15:31:56 +0000 (07:31 -0800)
committerSai Gomathi N <nsaigomathi@vmware.com>
Tue, 5 Apr 2022 07:00:10 +0000 (00:00 -0700)
Adding the Interface level config command

ipv6 mld last-member-query-interval (1-65535)
This command can be use to tune the response time for group specific queries.

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
pimd/pim6_cmd.c
pimd/pim_cmd.c
pimd/pim_cmd_common.c
pimd/pim_cmd_common.h
pimd/pim_nb_config.c

index 68d9239e5da0cd08a08c5baa12d25ad881cd0e68..4356e0a8ccf5ec95f41592f4d4dc3f3059b0a8ca 100644 (file)
@@ -671,6 +671,29 @@ DEFPY (interface_no_ipv6_mld_last_member_query_count,
        return gm_process_no_last_member_query_count_cmd(vty);
 }
 
+DEFPY (interface_ipv6_mld_last_member_query_interval,
+       interface_ipv6_mld_last_member_query_interval_cmd,
+       "ipv6 mld last-member-query-interval (1-65535)$lmqi",
+       IPV6_STR
+       IFACE_MLD_STR
+       IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
+       "Last member query interval in deciseconds\n")
+{
+       return gm_process_last_member_query_interval_cmd(vty, lmqi_str);
+}
+
+DEFPY (interface_no_ipv6_mld_last_member_query_interval,
+       interface_no_ipv6_mld_last_member_query_interval_cmd,
+       "no ipv6 mld last-member-query-interval [(1-65535)]",
+       NO_STR
+       IPV6_STR
+       IFACE_MLD_STR
+       IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
+       IGNORED_IN_NO_STR)
+{
+       return gm_process_no_last_member_query_interval_cmd(vty);
+}
+
 DEFPY (show_ipv6_pim_rp,
        show_ipv6_pim_rp_cmd,
        "show ipv6 pim [vrf NAME] rp-info [X:X::X:X/M$group] [json$json]",
@@ -1555,6 +1578,10 @@ void pim_cmd_init(void)
                        &interface_ipv6_mld_last_member_query_count_cmd);
        install_element(INTERFACE_NODE,
                        &interface_no_ipv6_mld_last_member_query_count_cmd);
+       install_element(INTERFACE_NODE,
+                       &interface_ipv6_mld_last_member_query_interval_cmd);
+       install_element(INTERFACE_NODE,
+                       &interface_no_ipv6_mld_last_member_query_interval_cmd);
 
        install_element(VIEW_NODE, &show_ipv6_pim_rp_cmd);
        install_element(VIEW_NODE, &show_ipv6_pim_rp_vrf_all_cmd);
index b8929557416518829775a205fed3b52b6d23a09e..78fc97578704e4011f932cc98dd2cbd6eb192d91 100644 (file)
@@ -5756,34 +5756,15 @@ DEFUN (interface_no_ip_igmp_last_member_query_count,
        return gm_process_no_last_member_query_count_cmd(vty);
 }
 
-DEFUN (interface_ip_igmp_last_member_query_interval,
+DEFPY (interface_ip_igmp_last_member_query_interval,
        interface_ip_igmp_last_member_query_interval_cmd,
-       "ip igmp last-member-query-interval (1-65535)",
+       "ip igmp last-member-query-interval (1-65535)$lmqi",
        IP_STR
        IFACE_IGMP_STR
        IFACE_IGMP_LAST_MEMBER_QUERY_INTERVAL_STR
        "Last member query interval in deciseconds\n")
 {
-       const struct lyd_node *pim_enable_dnode;
-
-       pim_enable_dnode =
-               yang_dnode_getf(vty->candidate_config->dnode,
-                               FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
-                               "frr-routing:ipv4");
-       if (!pim_enable_dnode) {
-               nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
-                                     "true");
-       } else {
-               if (!yang_dnode_get_bool(pim_enable_dnode, "."))
-                       nb_cli_enqueue_change(vty, "./enable",
-                                             NB_OP_MODIFY, "true");
-       }
-
-       nb_cli_enqueue_change(vty, "./last-member-query-interval", NB_OP_MODIFY,
-                             argv[3]->arg);
-
-       return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
-                                   "frr-routing:ipv4");
+       return gm_process_last_member_query_interval_cmd(vty, lmqi_str);
 }
 
 DEFUN (interface_no_ip_igmp_last_member_query_interval,
@@ -5795,11 +5776,7 @@ DEFUN (interface_no_ip_igmp_last_member_query_interval,
        IFACE_IGMP_LAST_MEMBER_QUERY_INTERVAL_STR
        IGNORED_IN_NO_STR)
 {
-       nb_cli_enqueue_change(vty, "./last-member-query-interval",
-                             NB_OP_DESTROY, NULL);
-
-       return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
-                                   "frr-routing:ipv4");
+       return gm_process_no_last_member_query_interval_cmd(vty);
 }
 
 DEFUN (interface_ip_pim_drprio,
index 86e750a9430d170a8d6381a8154401dd4f30c8ff..0992a60de916d97e927672a6bc0b534d5d72db2c 100644 (file)
@@ -2810,3 +2810,33 @@ int gm_process_no_last_member_query_count_cmd(struct vty *vty)
        return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
                                    FRR_PIM_AF_XPATH_VAL);
 }
+
+int gm_process_last_member_query_interval_cmd(struct vty *vty,
+                                             const char *lmqi_str)
+{
+       const struct lyd_node *pim_enable_dnode;
+
+       pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
+                                          FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
+                                          FRR_PIM_AF_XPATH_VAL);
+       if (!pim_enable_dnode) {
+               nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
+       } else {
+               if (!yang_dnode_get_bool(pim_enable_dnode, "."))
+                       nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
+                                             "true");
+       }
+
+       nb_cli_enqueue_change(vty, "./last-member-query-interval", NB_OP_MODIFY,
+                             lmqi_str);
+       return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+                                   FRR_PIM_AF_XPATH_VAL);
+}
+
+int gm_process_no_last_member_query_interval_cmd(struct vty *vty)
+{
+       nb_cli_enqueue_change(vty, "./last-member-query-interval",
+                             NB_OP_DESTROY, NULL);
+       return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+                                   FRR_PIM_AF_XPATH_VAL);
+}
index 5bd8869ce440b5bab234bb20d632f8f503b7cbb0..1ea2ef58ed7da9ea40178f20292dc7111ed902d0 100644 (file)
@@ -99,6 +99,9 @@ int gm_process_no_query_max_response_time_cmd(struct vty *vty);
 int gm_process_last_member_query_count_cmd(struct vty *vty,
                                           const char *lmqc_str);
 int gm_process_no_last_member_query_count_cmd(struct vty *vty);
+int gm_process_last_member_query_interval_cmd(struct vty *vty,
+                                             const char *lmqi_str);
+int gm_process_no_last_member_query_interval_cmd(struct vty *vty);
 /*
  * Special Macro to allow us to get the correct pim_instance
  */
index 5ea8ebc6d5e0cee24133fb3c44b605f16741937f..ec63200d37e8f0b9ebb04cd6ef1d1eb09a1b8eb1 100644 (file)
@@ -2765,6 +2765,7 @@ int lib_interface_gmp_address_family_query_max_response_time_modify(
 int lib_interface_gmp_address_family_last_member_query_interval_modify(
        struct nb_cb_modify_args *args)
 {
+#if PIM_IPV == 4
        struct interface *ifp;
        struct pim_interface *pim_ifp;
        int last_member_query_interval;
@@ -2784,6 +2785,9 @@ int lib_interface_gmp_address_family_last_member_query_interval_modify(
 
                break;
        }
+#else
+       /* TBD Depends on MLD data structure changes */
+#endif
 
        return NB_OK;
 }