"frr-routing:ipv6");
}
+DEFPY (interface_ipv6_mld_query_max_response_time,
+ interface_ipv6_mld_query_max_response_time_cmd,
+ "ipv6 mld query-max-response-time (1-65535)$qmrt",
+ IPV6_STR
+ IFACE_MLD_STR
+ IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
+ "Query response value in deci-seconds\n")
+{
+ return gm_process_query_max_response_time_cmd(vty, qmrt_str);
+}
+
+DEFPY (interface_no_ipv6_mld_query_max_response_time,
+ interface_no_ipv6_mld_query_max_response_time_cmd,
+ "no ipv6 mld query-max-response-time [(1-65535)]",
+ NO_STR
+ IPV6_STR
+ IFACE_MLD_STR
+ IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
+ IGNORED_IN_NO_STR)
+{
+ return gm_process_no_query_max_response_time_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]",
install_element(INTERFACE_NODE, &interface_ipv6_mld_query_interval_cmd);
install_element(INTERFACE_NODE,
&interface_no_ipv6_mld_query_interval_cmd);
+ install_element(INTERFACE_NODE,
+ &interface_ipv6_mld_query_max_response_time_cmd);
+ install_element(INTERFACE_NODE,
+ &interface_no_ipv6_mld_query_max_response_time_cmd);
+
install_element(VIEW_NODE, &show_ipv6_pim_rp_cmd);
install_element(VIEW_NODE, &show_ipv6_pim_rp_vrf_all_cmd);
install_element(VIEW_NODE, &show_ipv6_pim_rpf_cmd);
"frr-routing:ipv4");
}
-DEFUN (interface_ip_igmp_query_max_response_time,
+DEFPY (interface_ip_igmp_query_max_response_time,
interface_ip_igmp_query_max_response_time_cmd,
- "ip igmp query-max-response-time (1-65535)",
+ "ip igmp query-max-response-time (1-65535)$qmrt",
IP_STR
IFACE_IGMP_STR
IFACE_IGMP_QUERY_MAX_RESPONSE_TIME_STR
"Query response value in deci-seconds\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, "./query-max-response-time", NB_OP_MODIFY,
- argv[3]->arg);
-
- return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
- "frr-routing:ipv4");
+ return gm_process_query_max_response_time_cmd(vty, qmrt_str);
}
DEFUN (interface_no_ip_igmp_query_max_response_time,
IFACE_IGMP_QUERY_MAX_RESPONSE_TIME_STR
IGNORED_IN_NO_STR)
{
- nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_DESTROY,
- NULL);
- return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
- "frr-routing:ipv4");
+ return gm_process_no_query_max_response_time_cmd(vty);
}
DEFUN_HIDDEN (interface_ip_igmp_query_max_response_time_dsec,
}
}
}
+
+int gm_process_query_max_response_time_cmd(struct vty *vty,
+ const char *qmrt_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, "./query-max-response-time", NB_OP_MODIFY,
+ qmrt_str);
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ FRR_PIM_AF_XPATH_VAL);
+}
+
+int gm_process_no_query_max_response_time_cmd(struct vty *vty)
+{
+ nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_DESTROY,
+ NULL);
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ FRR_PIM_AF_XPATH_VAL);
+}
const char *neighbor, json_object *json);
void pim_show_neighbors(struct pim_instance *pim, struct vty *vty,
json_object *json);
+int gm_process_query_max_response_time_cmd(struct vty *vty,
+ const char *qmrt_str);
+int gm_process_no_query_max_response_time_cmd(struct vty *vty);
/*
* Special Macro to allow us to get the correct pim_instance
*/
*/
igmp_startup_mode_on(igmp);
}
-#endif
static void igmp_sock_query_reschedule(struct gm_sock *igmp)
{
assert(igmp->t_other_querier_timer);
}
}
+#endif /* PIM_IPV == 4 */
#if PIM_IPV == 4
static void change_query_interval(struct pim_interface *pim_ifp,
}
#endif
+#if PIM_IPV == 4
static void change_query_max_response_time(struct pim_interface *pim_ifp,
int query_max_response_time_dsec)
{
}
}
}
+#endif
int routing_control_plane_protocols_name_validate(
struct nb_cb_create_args *args)
int lib_interface_gmp_address_family_query_max_response_time_modify(
struct nb_cb_modify_args *args)
{
+#if PIM_IPV == 4
struct interface *ifp;
int query_max_response_time_dsec;
change_query_max_response_time(ifp->info,
query_max_response_time_dsec);
}
+#else
+ /* TBD Depends on MLD data structure changes */
+#endif
+
return NB_OK;
}