diff options
Diffstat (limited to 'pimd/pim_cmd.c')
| -rw-r--r-- | pimd/pim_cmd.c | 488 |
1 files changed, 302 insertions, 186 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 501d69dbf5..c0401b83ce 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -501,14 +501,14 @@ static void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty, FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp; struct listnode *sock_node; - struct igmp_sock *igmp; + struct gm_sock *igmp; pim_ifp = ifp->info; if (!pim_ifp) continue; - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_socket_list, sock_node, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_socket_list, sock_node, igmp)) { char uptime[10]; char query_hhmmss[10]; @@ -575,7 +575,7 @@ static void igmp_show_interfaces_single(struct pim_instance *pim, struct vty *vty, const char *ifname, bool uj) { - struct igmp_sock *igmp; + struct gm_sock *igmp; struct interface *ifp; struct listnode *sock_node; struct pim_interface *pim_ifp; @@ -610,7 +610,7 @@ static void igmp_show_interfaces_single(struct pim_instance *pim, if (strcmp(ifname, "detail") && strcmp(ifname, ifp->name)) continue; - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_socket_list, sock_node, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_socket_list, sock_node, igmp)) { found_ifname = 1; pim_time_uptime(uptime, sizeof(uptime), @@ -625,35 +625,34 @@ static void igmp_show_interfaces_single(struct pim_instance *pim, gmi_msec = PIM_IGMP_GMI_MSEC( igmp->querier_robustness_variable, igmp->querier_query_interval, - pim_ifp->igmp_query_max_response_time_dsec); + pim_ifp->gm_query_max_response_time_dsec); - sqi = PIM_IGMP_SQI( - pim_ifp->igmp_default_query_interval); + sqi = PIM_IGMP_SQI(pim_ifp->gm_default_query_interval); oqpi_msec = PIM_IGMP_OQPI_MSEC( igmp->querier_robustness_variable, igmp->querier_query_interval, - pim_ifp->igmp_query_max_response_time_dsec); + pim_ifp->gm_query_max_response_time_dsec); lmqt_msec = PIM_IGMP_LMQT_MSEC( - pim_ifp->igmp_specific_query_max_response_time_dsec, - pim_ifp->igmp_last_member_query_count); + pim_ifp->gm_specific_query_max_response_time_dsec, + pim_ifp->gm_last_member_query_count); ohpi_msec = PIM_IGMP_OHPI_DSEC( igmp->querier_robustness_variable, igmp->querier_query_interval, - pim_ifp->igmp_query_max_response_time_dsec) - * 100; + pim_ifp->gm_query_max_response_time_dsec) * + 100; - qri_msec = pim_ifp->igmp_query_max_response_time_dsec - * 100; + qri_msec = + pim_ifp->gm_query_max_response_time_dsec * 100; if (pim_ifp->pim_sock_fd >= 0) mloop = pim_socket_mcastloop_get( pim_ifp->pim_sock_fd); else mloop = 0; - lmqc = pim_ifp->igmp_last_member_query_count; + lmqc = pim_ifp->gm_last_member_query_count; if (uj) { json_row = json_object_new_object(); @@ -824,7 +823,7 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty, FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp; struct listnode *join_node; - struct igmp_join *ij; + struct gm_join *ij; struct in_addr pri_addr; char pri_addr_str[INET_ADDRSTRLEN]; @@ -833,14 +832,14 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty, if (!pim_ifp) continue; - if (!pim_ifp->igmp_join_list) + if (!pim_ifp->gm_join_list) continue; pri_addr = pim_find_primary_addr(ifp); pim_inet4_dump("<pri?>", pri_addr, pri_addr_str, sizeof(pri_addr_str)); - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_join_list, join_node, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_join_list, join_node, ij)) { char group_str[INET_ADDRSTRLEN]; char source_str[INET_ADDRSTRLEN]; @@ -887,7 +886,7 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty, ifp->name, pri_addr_str, source_str, group_str, ij->sock_fd, uptime); } - } /* for (pim_ifp->igmp_join_list) */ + } /* for (pim_ifp->gm_join_list) */ } /* for (iflist) */ @@ -1330,7 +1329,7 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty, FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp; struct listnode *sock_node; - struct igmp_sock *igmp; + struct gm_sock *igmp; pim_ifp = ifp->info; @@ -1340,7 +1339,7 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty, if (ifname && strcmp(ifname, ifp->name)) continue; - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_socket_list, sock_node, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_socket_list, sock_node, igmp)) { igmp_stats_add(&rx_stats, &igmp->rx_stats); } @@ -1741,7 +1740,7 @@ static void pim_show_join_helper(struct vty *vty, struct pim_interface *pim_ifp, } static void pim_show_join(struct pim_instance *pim, struct vty *vty, - struct prefix_sg *sg, bool uj) + pim_sgaddr *sg, bool uj) { struct pim_interface *pim_ifp; struct pim_ifchannel *ch; @@ -2439,7 +2438,7 @@ static const char *pim_reg_state2brief_str(enum pim_reg_state reg_state, } static void pim_show_upstream(struct pim_instance *pim, struct vty *vty, - struct prefix_sg *sg, bool uj) + pim_sgaddr *sg, bool uj) { struct pim_upstream *up; time_t now; @@ -3423,13 +3422,13 @@ static void igmp_show_groups(struct pim_instance *pim, struct vty *vty, bool uj) FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp = ifp->info; struct listnode *grpnode; - struct igmp_group *grp; + struct gm_group *grp; if (!pim_ifp) continue; /* scan igmp groups */ - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode, grp)) { char group_str[INET_ADDRSTRLEN]; char hhmmss[10]; @@ -3517,18 +3516,18 @@ static void igmp_show_group_retransmission(struct pim_instance *pim, FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp = ifp->info; struct listnode *grpnode; - struct igmp_group *grp; + struct gm_group *grp; if (!pim_ifp) continue; /* scan igmp groups */ - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode, grp)) { char group_str[INET_ADDRSTRLEN]; char grp_retr_mmss[10]; struct listnode *src_node; - struct igmp_source *src; + struct gm_source *src; int grp_retr_sources = 0; pim_inet4_dump("<group?>", grp->group_addr, group_str, @@ -3570,17 +3569,17 @@ static void igmp_show_sources(struct pim_instance *pim, struct vty *vty) FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp = ifp->info; struct listnode *grpnode; - struct igmp_group *grp; + struct gm_group *grp; if (!pim_ifp) continue; /* scan igmp groups */ - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode, grp)) { char group_str[INET_ADDRSTRLEN]; struct listnode *srcnode; - struct igmp_source *src; + struct gm_source *src; pim_inet4_dump("<group?>", grp->group_addr, group_str, sizeof(group_str)); @@ -3610,7 +3609,7 @@ static void igmp_show_sources(struct pim_instance *pim, struct vty *vty) uptime); } /* scan group sources */ - } /* scan igmp groups */ + } /* scan igmp groups */ } /* scan interfaces */ } @@ -3626,17 +3625,17 @@ static void igmp_show_source_retransmission(struct pim_instance *pim, FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp = ifp->info; struct listnode *grpnode; - struct igmp_group *grp; + struct gm_group *grp; if (!pim_ifp) continue; /* scan igmp groups */ - for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode, + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode, grp)) { char group_str[INET_ADDRSTRLEN]; struct listnode *srcnode; - struct igmp_source *src; + struct gm_source *src; pim_inet4_dump("<group?>", grp->group_addr, group_str, sizeof(group_str)); @@ -3654,7 +3653,7 @@ static void igmp_show_source_retransmission(struct pim_instance *pim, src->source_query_retransmit_count); } /* scan group sources */ - } /* scan igmp groups */ + } /* scan igmp groups */ } /* scan interfaces */ } @@ -3794,6 +3793,7 @@ static const char *pim_cli_get_vrf_name(struct vty *vty) return yang_dnode_get_string(vrf_node, "./name"); } +#if PIM_IPV != 6 /** * Compatibility function to keep the legacy mesh group CLI behavior: * Delete group when there are no more configurations in it. @@ -3815,7 +3815,7 @@ static void pim_cli_legacy_mesh_group_behavior(struct vty *vty, /* Get mesh group base XPath. */ snprintf(xpath_value, sizeof(xpath_value), - FRR_PIM_AF_XPATH "/msdp-mesh-groups[name='%s']", + FRR_PIM_VRF_XPATH "/msdp-mesh-groups[name='%s']", "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname); /* Group must exists, otherwise just quit. */ if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) @@ -3841,6 +3841,7 @@ static void pim_cli_legacy_mesh_group_behavior(struct vty *vty, /* No configurations found: delete it. */ nb_cli_enqueue_change(vty, xpath_value, NB_OP_DESTROY, NULL); } +#endif /* PIM_IPV != 6 */ DEFUN (clear_ip_interfaces, clear_ip_interfaces_cmd, @@ -3908,7 +3909,7 @@ static void clear_mroute(struct pim_instance *pim) /* scan interfaces */ FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp = ifp->info; - struct igmp_group *grp; + struct gm_group *grp; struct pim_ifchannel *ch; if (!pim_ifp) @@ -3923,9 +3924,9 @@ static void clear_mroute(struct pim_instance *pim) /* clean up all igmp groups */ - if (pim_ifp->igmp_group_list) { - while (pim_ifp->igmp_group_list->count) { - grp = listnode_head(pim_ifp->igmp_group_list); + if (pim_ifp->gm_group_list) { + while (pim_ifp->gm_group_list->count) { + grp = listnode_head(pim_ifp->gm_group_list); igmp_group_delete(grp); } } @@ -4603,7 +4604,7 @@ DEFPY (show_ip_pim_join, "The Group\n" JSON_STR) { - struct prefix_sg sg = {0}; + pim_sgaddr sg = {0}; struct vrf *v; bool uj = !!json; struct pim_instance *pim; @@ -4644,7 +4645,7 @@ DEFUN (show_ip_pim_join_vrf_all, "PIM interface join information\n" JSON_STR) { - struct prefix_sg sg = {0}; + pim_sgaddr sg = {0}; bool uj = use_json(argc, argv); struct vrf *vrf; bool first = true; @@ -5223,7 +5224,7 @@ DEFPY (show_ip_pim_upstream, "The Group\n" JSON_STR) { - struct prefix_sg sg = {0}; + pim_sgaddr sg = {0}; struct vrf *v; bool uj = !!json; struct pim_instance *pim; @@ -5263,7 +5264,7 @@ DEFUN (show_ip_pim_upstream_vrf_all, "PIM upstream information\n" JSON_STR) { - struct prefix_sg sg = {0}; + pim_sgaddr sg = {0}; bool uj = use_json(argc, argv); struct vrf *vrf; bool first = true; @@ -5888,7 +5889,7 @@ DEFUN(show_ip_multicast_count_vrf_all, } static void show_mroute(struct pim_instance *pim, struct vty *vty, - struct prefix_sg *sg, bool fill, bool uj) + pim_sgaddr *sg, bool fill, bool uj) { struct listnode *node; struct channel_oil *c_oil; @@ -6273,7 +6274,7 @@ DEFPY (show_ip_mroute, "Fill in Assumed data\n" JSON_STR) { - struct prefix_sg sg = {0}; + pim_sgaddr sg = {0}; struct pim_instance *pim; struct vrf *v; @@ -6311,7 +6312,7 @@ DEFUN (show_ip_mroute_vrf_all, "Fill in Assumed data\n" JSON_STR) { - struct prefix_sg sg = {0}; + pim_sgaddr sg = {0}; bool uj = use_json(argc, argv); int idx = 4; struct vrf *vrf; @@ -6791,13 +6792,13 @@ DEFUN (ip_pim_spt_switchover_infinity, return CMD_WARNING_CONFIG_FAILED; snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", sizeof(spt_plist_xpath)); snprintf(spt_action_xpath, sizeof(spt_action_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_action_xpath, "/spt-switchover/spt-action", sizeof(spt_action_xpath)); @@ -6830,13 +6831,13 @@ DEFUN (ip_pim_spt_switchover_infinity_plist, return CMD_WARNING_CONFIG_FAILED; snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", sizeof(spt_plist_xpath)); snprintf(spt_action_xpath, sizeof(spt_action_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_action_xpath, "/spt-switchover/spt-action", sizeof(spt_action_xpath)); @@ -6867,13 +6868,13 @@ DEFUN (no_ip_pim_spt_switchover_infinity, return CMD_WARNING_CONFIG_FAILED; snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", sizeof(spt_plist_xpath)); snprintf(spt_action_xpath, sizeof(spt_action_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_action_xpath, "/spt-switchover/spt-action", sizeof(spt_action_xpath)); @@ -6905,13 +6906,13 @@ DEFUN (no_ip_pim_spt_switchover_infinity_plist, return CMD_WARNING_CONFIG_FAILED; snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", sizeof(spt_plist_xpath)); snprintf(spt_action_xpath, sizeof(spt_action_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(spt_action_xpath, "/spt-switchover/spt-action", sizeof(spt_action_xpath)); @@ -6940,7 +6941,7 @@ DEFPY (pim_register_accept_list, return CMD_WARNING_CONFIG_FAILED; snprintf(reg_alist_xpath, sizeof(reg_alist_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(reg_alist_xpath, "/register-accept-list", sizeof(reg_alist_xpath)); @@ -6963,8 +6964,13 @@ DEFUN (ip_pim_joinprune_time, "Join Prune Send Interval\n" "Seconds\n") { - nb_cli_enqueue_change(vty, "/frr-pim:pim/join-prune-interval", - NB_OP_MODIFY, argv[3]->arg); + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), FRR_PIM_ROUTER_XPATH, + "frr-routing:ipv4"); + strlcat(xpath, "/join-prune-interval", sizeof(xpath)); + + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, argv[3]->arg); return nb_cli_apply_changes(vty, NULL); } @@ -6978,8 +6984,13 @@ DEFUN (no_ip_pim_joinprune_time, "Join Prune Send Interval\n" IGNORED_IN_NO_STR) { - nb_cli_enqueue_change(vty, "/frr-pim:pim/join-prune-interval", - NB_OP_DESTROY, NULL); + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), FRR_PIM_ROUTER_XPATH, + "frr-routing:ipv4"); + strlcat(xpath, "/join-prune-interval", sizeof(xpath)); + + nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL); return nb_cli_apply_changes(vty, NULL); } @@ -6992,8 +7003,13 @@ DEFUN (ip_pim_register_suppress, "Register Suppress Timer\n" "Seconds\n") { - nb_cli_enqueue_change(vty, "/frr-pim:pim/register-suppress-time", - NB_OP_MODIFY, argv[3]->arg); + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), FRR_PIM_ROUTER_XPATH, + "frr-routing:ipv4"); + strlcat(xpath, "/register-suppress-time", sizeof(xpath)); + + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, argv[3]->arg); return nb_cli_apply_changes(vty, NULL); } @@ -7007,8 +7023,13 @@ DEFUN (no_ip_pim_register_suppress, "Register Suppress Timer\n" IGNORED_IN_NO_STR) { - nb_cli_enqueue_change(vty, "/frr-pim:pim/register-suppress-time", - NB_OP_DESTROY, NULL); + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), FRR_PIM_ROUTER_XPATH, + "frr-routing:ipv4"); + strlcat(xpath, "/register-suppress-time", sizeof(xpath)); + + nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL); return nb_cli_apply_changes(vty, NULL); } @@ -7030,7 +7051,8 @@ DEFUN (ip_pim_rp_keep_alive, return CMD_WARNING_CONFIG_FAILED; snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath), - FRR_PIM_XPATH, "frr-pim:pimd", "pim", vrfname); + 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)); @@ -7054,10 +7076,16 @@ DEFUN (no_ip_pim_rp_keep_alive, 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, - "/frr-pim:pim/register-suppress-time"); + rs_timer_xpath); v = 3 * v + PIM_REGISTER_PROBE_TIME_DEFAULT; if (v > UINT16_MAX) v = UINT16_MAX; @@ -7068,7 +7096,8 @@ DEFUN (no_ip_pim_rp_keep_alive, return CMD_WARNING_CONFIG_FAILED; snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath), - FRR_PIM_XPATH, "frr-pim:pimd", "pim", vrfname); + 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)); @@ -7093,8 +7122,8 @@ DEFUN (ip_pim_keep_alive, if (vrfname == NULL) return CMD_WARNING_CONFIG_FAILED; - snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ka_timer_xpath, "/keep-alive-timer", sizeof(ka_timer_xpath)); nb_cli_enqueue_change(vty, ka_timer_xpath, NB_OP_MODIFY, @@ -7119,8 +7148,8 @@ DEFUN (no_ip_pim_keep_alive, if (vrfname == NULL) return CMD_WARNING_CONFIG_FAILED; - snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ka_timer_xpath, "/keep-alive-timer", sizeof(ka_timer_xpath)); nb_cli_enqueue_change(vty, ka_timer_xpath, NB_OP_DESTROY, NULL); @@ -7136,8 +7165,13 @@ DEFUN (ip_pim_packets, "packets to process at one time per fd\n" "Number of packets\n") { - nb_cli_enqueue_change(vty, "/frr-pim:pim/packets", NB_OP_MODIFY, - argv[3]->arg); + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), FRR_PIM_ROUTER_XPATH, + "frr-routing:ipv4"); + strlcat(xpath, "/packets", sizeof(xpath)); + + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, argv[3]->arg); return nb_cli_apply_changes(vty, NULL); } @@ -7151,7 +7185,13 @@ DEFUN (no_ip_pim_packets, "packets to process at one time per fd\n" IGNORED_IN_NO_STR) { - nb_cli_enqueue_change(vty, "/frr-pim:pim/packets", NB_OP_DESTROY, NULL); + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), FRR_PIM_ROUTER_XPATH, + "frr-routing:ipv4"); + strlcat(xpath, "/packets", sizeof(xpath)); + + nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL); return nb_cli_apply_changes(vty, NULL); } @@ -7200,7 +7240,7 @@ DEFUN (ip_pim_v6_secondary, return CMD_WARNING_CONFIG_FAILED; snprintf(send_v6_secondary_xpath, sizeof(send_v6_secondary_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(send_v6_secondary_xpath, "/send-v6-secondary", sizeof(send_v6_secondary_xpath)); @@ -7227,7 +7267,7 @@ DEFUN (no_ip_pim_v6_secondary, return CMD_WARNING_CONFIG_FAILED; snprintf(send_v6_secondary_xpath, sizeof(send_v6_secondary_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(send_v6_secondary_xpath, "/send-v6-secondary", sizeof(send_v6_secondary_xpath)); @@ -7441,7 +7481,7 @@ DEFUN (ip_pim_ssm_prefix_list, if (vrfname == NULL) return CMD_WARNING_CONFIG_FAILED; - snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath), FRR_PIM_AF_XPATH, + snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath), FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath)); @@ -7467,7 +7507,7 @@ DEFUN (no_ip_pim_ssm_prefix_list, return CMD_WARNING_CONFIG_FAILED; snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath)); @@ -7496,7 +7536,7 @@ DEFUN (no_ip_pim_ssm_prefix_list_name, return CMD_WARNING_CONFIG_FAILED; snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath)); ssm_plist_dnode = yang_dnode_get(vty->candidate_config->dnode, @@ -7655,7 +7695,7 @@ DEFUN (ip_ssmpingd, return CMD_WARNING_CONFIG_FAILED; snprintf(ssmpingd_ip_xpath, sizeof(ssmpingd_ip_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ssmpingd_ip_xpath, "/ssm-pingd-source-ip", sizeof(ssmpingd_ip_xpath)); @@ -7684,7 +7724,7 @@ DEFUN (no_ip_ssmpingd, return CMD_WARNING_CONFIG_FAILED; snprintf(ssmpingd_ip_xpath, sizeof(ssmpingd_ip_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ssmpingd_ip_xpath, "/ssm-pingd-source-ip", sizeof(ssmpingd_ip_xpath)); @@ -7709,8 +7749,8 @@ DEFUN (ip_pim_ecmp, if (vrfname == NULL) return CMD_WARNING_CONFIG_FAILED; - snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath)); nb_cli_enqueue_change(vty, ecmp_xpath, NB_OP_MODIFY, "true"); @@ -7732,8 +7772,8 @@ DEFUN (no_ip_pim_ecmp, if (vrfname == NULL) return CMD_WARNING_CONFIG_FAILED; - snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath)); nb_cli_enqueue_change(vty, ecmp_xpath, NB_OP_MODIFY, "false"); @@ -7757,12 +7797,12 @@ DEFUN (ip_pim_ecmp_rebalance, if (vrfname == NULL) return CMD_WARNING_CONFIG_FAILED; - snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath)); snprintf(ecmp_rebalance_xpath, sizeof(ecmp_rebalance_xpath), - FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ecmp_rebalance_xpath, "/ecmp-rebalance", sizeof(ecmp_rebalance_xpath)); @@ -7789,8 +7829,8 @@ DEFUN (no_ip_pim_ecmp_rebalance, return CMD_WARNING_CONFIG_FAILED; snprintf(ecmp_rebalance_xpath, sizeof(ecmp_rebalance_xpath), - FRR_PIM_XPATH, - "frr-pim:pimd", "pim", vrfname); + FRR_PIM_VRF_XPATH, + "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); strlcat(ecmp_rebalance_xpath, "/ecmp-rebalance", sizeof(ecmp_rebalance_xpath)); @@ -7805,9 +7845,10 @@ DEFUN (interface_ip_igmp, IP_STR IFACE_IGMP_STR) { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, "true"); + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_igmp, @@ -7821,10 +7862,12 @@ DEFUN (interface_no_ip_igmp, char pim_if_xpath[XPATH_MAXLEN + 20]; snprintf(pim_if_xpath, sizeof(pim_if_xpath), - "%s/frr-pim:pim", VTY_CURR_XPATH); + "%s/frr-pim:pim/address-family[address-family='%s']", + VTY_CURR_XPATH, "frr-routing:ipv4"); pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/pim-enable", pim_if_xpath); + FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!pim_enable_dnode) { nb_cli_enqueue_change(vty, pim_if_xpath, NB_OP_DESTROY, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); @@ -7834,11 +7877,12 @@ DEFUN (interface_no_ip_igmp, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); } else - nb_cli_enqueue_change(vty, "./igmp-enable", + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "false"); } - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_igmp_join, @@ -7866,7 +7910,7 @@ DEFUN (interface_ip_igmp_join, } else source_str = "0.0.0.0"; - snprintf(xpath, sizeof(xpath), FRR_IGMP_JOIN_XPATH, + snprintf(xpath, sizeof(xpath), FRR_GMP_JOIN_XPATH, "frr-routing:ipv4", argv[idx_group]->arg, source_str); nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL); @@ -7900,7 +7944,7 @@ DEFUN (interface_no_ip_igmp_join, } else source_str = "0.0.0.0"; - snprintf(xpath, sizeof(xpath), FRR_IGMP_JOIN_XPATH, + snprintf(xpath, sizeof(xpath), FRR_GMP_JOIN_XPATH, "frr-routing:ipv4", argv[idx_group]->arg, source_str); nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL); @@ -7920,20 +7964,22 @@ DEFUN (interface_ip_igmp_query_interval, pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH); + FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!pim_enable_dnode) { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } else { if (!yang_dnode_get_bool(pim_enable_dnode, ".")) - nb_cli_enqueue_change(vty, "./igmp-enable", + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } nb_cli_enqueue_change(vty, "./query-interval", NB_OP_MODIFY, argv[3]->arg); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_igmp_query_interval, @@ -7947,7 +7993,8 @@ DEFUN (interface_no_ip_igmp_query_interval, { nb_cli_enqueue_change(vty, "./query-interval", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_igmp_version, @@ -7958,11 +8005,13 @@ DEFUN (interface_ip_igmp_version, "IGMP version\n" "IGMP version number\n") { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); - nb_cli_enqueue_change(vty, "./version", NB_OP_MODIFY, argv[3]->arg); + nb_cli_enqueue_change(vty, "./igmp-version", NB_OP_MODIFY, + argv[3]->arg); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_igmp_version, @@ -7974,9 +8023,10 @@ DEFUN (interface_no_ip_igmp_version, "IGMP version\n" "IGMP version number\n") { - nb_cli_enqueue_change(vty, "./version", NB_OP_DESTROY, NULL); + nb_cli_enqueue_change(vty, "./igmp-version", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_igmp_query_max_response_time, @@ -7991,21 +8041,23 @@ DEFUN (interface_ip_igmp_query_max_response_time, pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH); + FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!pim_enable_dnode) { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } else { if (!yang_dnode_get_bool(pim_enable_dnode, ".")) - nb_cli_enqueue_change(vty, "./igmp-enable", + 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-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_igmp_query_max_response_time, @@ -8019,7 +8071,8 @@ DEFUN (interface_no_ip_igmp_query_max_response_time, { nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN_HIDDEN (interface_ip_igmp_query_max_response_time_dsec, @@ -8034,20 +8087,22 @@ DEFUN_HIDDEN (interface_ip_igmp_query_max_response_time_dsec, pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH); + FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!pim_enable_dnode) { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } else { if (!yang_dnode_get_bool(pim_enable_dnode, ".")) - nb_cli_enqueue_change(vty, "./igmp-enable", + 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-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN_HIDDEN (interface_no_ip_igmp_query_max_response_time_dsec, @@ -8062,7 +8117,8 @@ DEFUN_HIDDEN (interface_no_ip_igmp_query_max_response_time_dsec, nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_igmp_last_member_query_count, @@ -8077,20 +8133,22 @@ DEFUN (interface_ip_igmp_last_member_query_count, pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH); + FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!pim_enable_dnode) { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } else { if (!yang_dnode_get_bool(pim_enable_dnode, ".")) - nb_cli_enqueue_change(vty, "./igmp-enable", + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } nb_cli_enqueue_change(vty, "./robustness-variable", NB_OP_MODIFY, argv[3]->arg); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_igmp_last_member_query_count, @@ -8105,7 +8163,8 @@ DEFUN (interface_no_ip_igmp_last_member_query_count, nb_cli_enqueue_change(vty, "./robustness-variable", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_igmp_last_member_query_interval, @@ -8120,20 +8179,22 @@ DEFUN (interface_ip_igmp_last_member_query_interval, pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH); + FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!pim_enable_dnode) { - nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, + nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true"); } else { if (!yang_dnode_get_bool(pim_enable_dnode, ".")) - nb_cli_enqueue_change(vty, "./igmp-enable", + 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-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_igmp_last_member_query_interval, @@ -8148,7 +8209,8 @@ DEFUN (interface_no_ip_igmp_last_member_query_interval, nb_cli_enqueue_change(vty, "./last-member-query-interval", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-igmp:igmp"); + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_pim_drprio, @@ -8164,7 +8226,8 @@ DEFUN (interface_ip_pim_drprio, nb_cli_enqueue_change(vty, "./dr-priority", NB_OP_MODIFY, argv[idx_number]->arg); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_pim_drprio, @@ -8178,7 +8241,8 @@ DEFUN (interface_no_ip_pim_drprio, { nb_cli_enqueue_change(vty, "./dr-priority", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFPY_HIDDEN (interface_ip_igmp_query_generate, @@ -8219,7 +8283,7 @@ DEFPY_HIDDEN (pim_test_sg_keepalive, { struct pim_upstream *up; struct pim_instance *pim; - struct prefix_sg sg; + pim_sgaddr sg; sg.src = source; sg.grp = group; @@ -8276,7 +8340,9 @@ DEFPY (interface_ip_pim_activeactive, "true"); } - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN_HIDDEN (interface_ip_pim_ssm, @@ -8290,7 +8356,9 @@ DEFUN_HIDDEN (interface_ip_pim_ssm, nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); - ret = nb_cli_apply_changes(vty, "./frr-pim:pim"); + ret = nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); if (ret != NB_OK) return ret; @@ -8310,7 +8378,9 @@ DEFUN_HIDDEN (interface_ip_pim_sm, { nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_ip_pim, @@ -8321,7 +8391,10 @@ DEFUN (interface_ip_pim, { nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); + } DEFUN_HIDDEN (interface_no_ip_pim_ssm, @@ -8336,10 +8409,12 @@ DEFUN_HIDDEN (interface_no_ip_pim_ssm, char igmp_if_xpath[XPATH_MAXLEN + 20]; snprintf(igmp_if_xpath, sizeof(igmp_if_xpath), - "%s/frr-igmp:igmp", VTY_CURR_XPATH); + "%s/frr-gmp:gmp/address-family[address-family='%s']", + VTY_CURR_XPATH, "frr-routing:ipv4"); igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/igmp-enable", igmp_if_xpath); - + FRR_GMP_ENABLE_XPATH, + VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) { nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); @@ -8353,7 +8428,8 @@ DEFUN_HIDDEN (interface_no_ip_pim_ssm, "false"); } - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN_HIDDEN (interface_no_ip_pim_sm, @@ -8368,9 +8444,12 @@ DEFUN_HIDDEN (interface_no_ip_pim_sm, char igmp_if_xpath[XPATH_MAXLEN + 20]; snprintf(igmp_if_xpath, sizeof(igmp_if_xpath), - "%s/frr-igmp:igmp", VTY_CURR_XPATH); - igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/igmp-enable", igmp_if_xpath); + "%s/frr-gmp:gmp/address-family[address-family='%s']", + VTY_CURR_XPATH, "frr-routing:ipv4"); + igmp_enable_dnode = + yang_dnode_getf(vty->candidate_config->dnode, + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) { nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL); @@ -8385,7 +8464,9 @@ DEFUN_HIDDEN (interface_no_ip_pim_sm, "false"); } - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_pim, @@ -8399,9 +8480,12 @@ DEFUN (interface_no_ip_pim, char igmp_if_xpath[XPATH_MAXLEN + 20]; snprintf(igmp_if_xpath, sizeof(igmp_if_xpath), - "%s/frr-igmp:igmp", VTY_CURR_XPATH); - igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/igmp-enable", igmp_if_xpath); + "%s/frr-gmp:gmp/address-family[address-family='%s']", + VTY_CURR_XPATH, "frr-routing:ipv4"); + igmp_enable_dnode = + yang_dnode_getf(vty->candidate_config->dnode, + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) { nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL); @@ -8416,7 +8500,9 @@ DEFUN (interface_no_ip_pim, "false"); } - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } /* boundaries */ @@ -8433,7 +8519,7 @@ DEFUN(interface_ip_pim_boundary_oil, argv[4]->arg); return nb_cli_apply_changes(vty, - "./frr-pim:pim/address-family[address-family='%s']", + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } @@ -8452,7 +8538,7 @@ DEFUN(interface_no_ip_pim_boundary_oil, NULL); return nb_cli_apply_changes(vty, - "./frr-pim:pim/address-family[address-family='%s']", + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } @@ -8478,7 +8564,7 @@ DEFUN (interface_ip_mroute, argv[idx_interface]->arg); return nb_cli_apply_changes(vty, - "./frr-pim:pim/address-family[address-family='%s']/mroute[source-addr='%s'][group-addr='%s']", + FRR_PIM_MROUTE_XPATH, "frr-routing:ipv4", source_str, argv[idx_ipv4]->arg); } @@ -8504,7 +8590,7 @@ DEFUN (interface_no_ip_mroute, nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); return nb_cli_apply_changes(vty, - "./frr-pim:pim/address-family[address-family='%s']/mroute[source-addr='%s'][group-addr='%s']", + FRR_PIM_MROUTE_XPATH, "frr-routing:ipv4", source_str, argv[idx_ipv4]->arg); } @@ -8524,7 +8610,8 @@ DEFUN (interface_ip_pim_hello, igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH); + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) { nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); @@ -8541,7 +8628,9 @@ DEFUN (interface_ip_pim_hello, nb_cli_enqueue_change(vty, "./hello-holdtime", NB_OP_MODIFY, argv[idx_hold]->arg); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (interface_no_ip_pim_hello, @@ -8557,7 +8646,9 @@ DEFUN (interface_no_ip_pim_hello, nb_cli_enqueue_change(vty, "./hello-interval", NB_OP_DESTROY, NULL); nb_cli_enqueue_change(vty, "./hello-holdtime", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (debug_igmp, @@ -9205,7 +9296,7 @@ DEFUN (interface_pim_use_source, nb_cli_enqueue_change(vty, "./use-source", NB_OP_MODIFY, argv[3]->arg); return nb_cli_apply_changes(vty, - "./frr-pim:pim/address-family[address-family='%s']", + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } @@ -9221,7 +9312,7 @@ DEFUN (interface_no_pim_use_source, nb_cli_enqueue_change(vty, "./use-source", NB_OP_MODIFY, "0.0.0.0"); return nb_cli_apply_changes(vty, - "./frr-pim:pim/address-family[address-family='%s']", + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } @@ -9238,7 +9329,8 @@ DEFPY (ip_pim_bfd, igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH); + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); @@ -9252,7 +9344,9 @@ DEFPY (ip_pim_bfd, if (prof) nb_cli_enqueue_change(vty, "./bfd/profile", NB_OP_MODIFY, prof); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFPY(no_ip_pim_bfd_profile, no_ip_pim_bfd_profile_cmd, @@ -9266,7 +9360,9 @@ DEFPY(no_ip_pim_bfd_profile, no_ip_pim_bfd_profile_cmd, { nb_cli_enqueue_change(vty, "./bfd/profile", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (no_ip_pim_bfd, @@ -9279,7 +9375,9 @@ DEFUN (no_ip_pim_bfd, { nb_cli_enqueue_change(vty, "./bfd", NB_OP_DESTROY, NULL); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, + "frr-routing:ipv4"); } DEFUN (ip_pim_bsm, @@ -9293,7 +9391,8 @@ DEFUN (ip_pim_bsm, igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH); + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); @@ -9305,7 +9404,8 @@ DEFUN (ip_pim_bsm, nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "true"); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } DEFUN (no_ip_pim_bsm, @@ -9318,7 +9418,8 @@ DEFUN (no_ip_pim_bsm, { nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "false"); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } DEFUN (ip_pim_ucast_bsm, @@ -9332,7 +9433,8 @@ DEFUN (ip_pim_ucast_bsm, igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH); + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); @@ -9344,7 +9446,9 @@ DEFUN (ip_pim_ucast_bsm, nb_cli_enqueue_change(vty, "./unicast-bsm", NB_OP_MODIFY, "true"); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); + } DEFUN (no_ip_pim_ucast_bsm, @@ -9357,7 +9461,8 @@ DEFUN (no_ip_pim_ucast_bsm, { nb_cli_enqueue_change(vty, "./unicast-bsm", NB_OP_MODIFY, "false"); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } #if HAVE_BFDD > 0 @@ -9391,7 +9496,8 @@ DEFUN_HIDDEN ( igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, - "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH); + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + "frr-routing:ipv4"); if (!igmp_enable_dnode) nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); @@ -9409,7 +9515,8 @@ DEFUN_HIDDEN ( nb_cli_enqueue_change(vty, "./bfd/detect_mult", NB_OP_MODIFY, argv[idx_number]->arg); - return nb_cli_apply_changes(vty, "./frr-pim:pim"); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } #if HAVE_BFDD == 0 @@ -9424,6 +9531,7 @@ ALIAS(no_ip_pim_bfd, no_ip_pim_bfd_param_cmd, "Desired min transmit interval\n") #endif /* !HAVE_BFDD */ +#if PIM_IPV != 6 DEFPY(ip_msdp_peer, ip_msdp_peer_cmd, "ip msdp peer A.B.C.D$peer source A.B.C.D$source", IP_STR @@ -9442,7 +9550,7 @@ DEFPY(ip_msdp_peer, ip_msdp_peer_cmd, return CMD_WARNING_CONFIG_FAILED; snprintf(msdp_peer_source_xpath, sizeof(msdp_peer_source_xpath), - FRR_PIM_AF_XPATH, "frr-pim:pimd", "pim", vrfname, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); snprintf(temp_xpath, sizeof(temp_xpath), "/msdp-peer[peer-ip='%s']/source-ip", peer_str); @@ -9452,7 +9560,8 @@ DEFPY(ip_msdp_peer, ip_msdp_peer_cmd, nb_cli_enqueue_change(vty, msdp_peer_source_xpath, NB_OP_MODIFY, source_str); - return nb_cli_apply_changes(vty, NULL); + return nb_cli_apply_changes(vty, + FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); } DEFPY(ip_msdp_timers, ip_msdp_timers_cmd, @@ -9534,7 +9643,7 @@ DEFUN (no_ip_msdp_peer, return CMD_WARNING_CONFIG_FAILED; snprintf(msdp_peer_xpath, sizeof(msdp_peer_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); snprintf(temp_xpath, sizeof(temp_xpath), "/msdp-peer[peer-ip='%s']", @@ -9566,7 +9675,7 @@ DEFPY(ip_msdp_mesh_group_member, /* Create mesh group. */ snprintf(xpath_value, sizeof(xpath_value), - FRR_PIM_AF_XPATH "/msdp-mesh-groups[name='%s']", + FRR_PIM_VRF_XPATH "/msdp-mesh-groups[name='%s']", "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname); nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL); @@ -9600,7 +9709,7 @@ DEFPY(no_ip_msdp_mesh_group_member, /* Get mesh group base XPath. */ snprintf(xpath_value, sizeof(xpath_value), - FRR_PIM_AF_XPATH "/msdp-mesh-groups[name='%s']", + FRR_PIM_VRF_XPATH "/msdp-mesh-groups[name='%s']", "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname); if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) { @@ -9650,7 +9759,7 @@ DEFPY(ip_msdp_mesh_group_source, /* Create mesh group. */ snprintf(xpath_value, sizeof(xpath_value), - FRR_PIM_AF_XPATH "/msdp-mesh-groups[name='%s']", + FRR_PIM_VRF_XPATH "/msdp-mesh-groups[name='%s']", "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname); nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL); @@ -9681,7 +9790,7 @@ DEFPY(no_ip_msdp_mesh_group_source, /* Get mesh group base XPath. */ snprintf(xpath_value, sizeof(xpath_value), - FRR_PIM_AF_XPATH "/msdp-mesh-groups[name='%s']", + FRR_PIM_VRF_XPATH "/msdp-mesh-groups[name='%s']", "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname); nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL); @@ -9716,7 +9825,7 @@ DEFPY(no_ip_msdp_mesh_group, /* Get mesh group base XPath. */ snprintf(xpath_value, sizeof(xpath_value), - FRR_PIM_AF_XPATH "/msdp-mesh-groups[name='%s']", + FRR_PIM_VRF_XPATH "/msdp-mesh-groups[name='%s']", "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname); if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) return CMD_SUCCESS; @@ -10465,6 +10574,7 @@ DEFUN (show_ip_msdp_sa_sg_vrf_all, return CMD_SUCCESS; } +#endif /* PIM_IPV != 6 */ struct pim_sg_cache_walk_data { struct vty *vty; @@ -10596,7 +10706,7 @@ static void pim_show_vxlan_sg_one(struct pim_instance *pim, bool uj) { json_object *json = NULL; - struct prefix_sg sg; + pim_sgaddr sg; int result = 0; struct pim_vxlan_sg *vxlan_sg; const char *iif_name; @@ -10616,8 +10726,6 @@ static void pim_show_vxlan_sg_one(struct pim_instance *pim, return; } - sg.family = AF_INET; - sg.prefixlen = IPV4_MAX_BITLEN; if (uj) json = json_object_new_object(); @@ -10758,7 +10866,7 @@ DEFUN_HIDDEN (no_ip_pim_mlag, { char mlag_xpath[XPATH_MAXLEN]; - snprintf(mlag_xpath, sizeof(mlag_xpath), FRR_PIM_AF_XPATH, + snprintf(mlag_xpath, sizeof(mlag_xpath), FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", "default", "frr-routing:ipv4"); strlcat(mlag_xpath, "/mlag", sizeof(mlag_xpath)); @@ -10791,7 +10899,7 @@ DEFUN_HIDDEN (ip_pim_mlag, char mlag_reg_address_xpath[XPATH_MAXLEN]; snprintf(mlag_peerlink_rif_xpath, sizeof(mlag_peerlink_rif_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", "default", "frr-routing:ipv4"); strlcat(mlag_peerlink_rif_xpath, "/mlag/peerlink-rif", sizeof(mlag_peerlink_rif_xpath)); @@ -10801,7 +10909,7 @@ DEFUN_HIDDEN (ip_pim_mlag, argv[idx]->arg); snprintf(mlag_my_role_xpath, sizeof(mlag_my_role_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", "default", "frr-routing:ipv4"); strlcat(mlag_my_role_xpath, "/mlag/my-role", sizeof(mlag_my_role_xpath)); @@ -10821,7 +10929,7 @@ DEFUN_HIDDEN (ip_pim_mlag, } snprintf(mlag_peer_state_xpath, sizeof(mlag_peer_state_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", "default", "frr-routing:ipv4"); strlcat(mlag_peer_state_xpath, "/mlag/peer-state", sizeof(mlag_peer_state_xpath)); @@ -10841,7 +10949,7 @@ DEFUN_HIDDEN (ip_pim_mlag, } snprintf(mlag_reg_address_xpath, sizeof(mlag_reg_address_xpath), - FRR_PIM_AF_XPATH, + FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim", "default", "frr-routing:ipv4"); strlcat(mlag_reg_address_xpath, "/mlag/reg-address", sizeof(mlag_reg_address_xpath)); @@ -10908,10 +11016,12 @@ void pim_cmd_init(void) install_element(VRF_NODE, &ip_ssmpingd_cmd); install_element(CONFIG_NODE, &no_ip_ssmpingd_cmd); install_element(VRF_NODE, &no_ip_ssmpingd_cmd); +#if PIM_IPV != 6 install_element(CONFIG_NODE, &ip_msdp_peer_cmd); install_element(VRF_NODE, &ip_msdp_peer_cmd); install_element(CONFIG_NODE, &no_ip_msdp_peer_cmd); install_element(VRF_NODE, &no_ip_msdp_peer_cmd); +#endif /* PIM_IPV != 6 */ install_element(CONFIG_NODE, &ip_pim_ecmp_cmd); install_element(VRF_NODE, &ip_pim_ecmp_cmd); install_element(CONFIG_NODE, &no_ip_pim_ecmp_cmd); @@ -11080,12 +11190,14 @@ void pim_cmd_init(void) install_element(ENABLE_NODE, &no_debug_pim_mlag_cmd); install_element(ENABLE_NODE, &debug_pim_vxlan_cmd); install_element(ENABLE_NODE, &no_debug_pim_vxlan_cmd); +#if PIM_IPV != 6 install_element(ENABLE_NODE, &debug_msdp_cmd); install_element(ENABLE_NODE, &no_debug_msdp_cmd); install_element(ENABLE_NODE, &debug_msdp_events_cmd); install_element(ENABLE_NODE, &no_debug_msdp_events_cmd); install_element(ENABLE_NODE, &debug_msdp_packets_cmd); install_element(ENABLE_NODE, &no_debug_msdp_packets_cmd); +#endif /* PIM_IPV != 6 */ install_element(ENABLE_NODE, &debug_mtrace_cmd); install_element(ENABLE_NODE, &no_debug_mtrace_cmd); install_element(ENABLE_NODE, &debug_bsm_cmd); @@ -11127,17 +11239,20 @@ void pim_cmd_init(void) install_element(CONFIG_NODE, &no_debug_pim_mlag_cmd); install_element(CONFIG_NODE, &debug_pim_vxlan_cmd); install_element(CONFIG_NODE, &no_debug_pim_vxlan_cmd); +#if PIM_IPV != 6 install_element(CONFIG_NODE, &debug_msdp_cmd); install_element(CONFIG_NODE, &no_debug_msdp_cmd); install_element(CONFIG_NODE, &debug_msdp_events_cmd); install_element(CONFIG_NODE, &no_debug_msdp_events_cmd); install_element(CONFIG_NODE, &debug_msdp_packets_cmd); install_element(CONFIG_NODE, &no_debug_msdp_packets_cmd); +#endif /* PIM_IPV != 6 */ install_element(CONFIG_NODE, &debug_mtrace_cmd); install_element(CONFIG_NODE, &no_debug_mtrace_cmd); install_element(CONFIG_NODE, &debug_bsm_cmd); install_element(CONFIG_NODE, &no_debug_bsm_cmd); +#if PIM_IPV != 6 install_element(CONFIG_NODE, &ip_msdp_timers_cmd); install_element(VRF_NODE, &ip_msdp_timers_cmd); install_element(CONFIG_NODE, &no_ip_msdp_timers_cmd); @@ -11160,6 +11275,7 @@ void pim_cmd_init(void) install_element(VIEW_NODE, &show_ip_msdp_sa_sg_vrf_all_cmd); install_element(VIEW_NODE, &show_ip_msdp_mesh_group_cmd); install_element(VIEW_NODE, &show_ip_msdp_mesh_group_vrf_all_cmd); +#endif /* PIM_IPV != 6 */ install_element(VIEW_NODE, &show_ip_pim_ssm_range_cmd); install_element(VIEW_NODE, &show_ip_pim_group_type_cmd); install_element(VIEW_NODE, &show_ip_pim_vxlan_sg_cmd); |
