diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 5cfe171b70..7b41c58f51 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -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)) @@ -6792,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)); @@ -6831,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)); @@ -6868,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)); @@ -6906,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)); @@ -6941,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)); @@ -6964,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); } @@ -6979,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); } @@ -6993,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); } @@ -7008,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); } @@ -7031,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)); @@ -7055,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; @@ -7069,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)); @@ -7094,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, @@ -7120,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); @@ -7137,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); } @@ -7152,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); } @@ -7201,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)); @@ -7228,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)); @@ -7442,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)); @@ -7468,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)); @@ -7497,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, @@ -7656,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)); @@ -7685,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)); @@ -7710,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"); @@ -7733,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"); @@ -7758,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)); @@ -7790,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)); @@ -7822,10 +7861,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); @@ -7921,9 +7962,10 @@ 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, ".")) @@ -7992,7 +8034,8 @@ 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, @@ -8035,7 +8078,8 @@ 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, "true"); @@ -8078,7 +8122,8 @@ 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, "true"); @@ -8121,7 +8166,8 @@ 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, "true"); @@ -8165,7 +8211,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, @@ -8179,7 +8226,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, @@ -8277,7 +8325,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, @@ -8291,7 +8341,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; @@ -8311,7 +8363,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, @@ -8322,7 +8376,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, @@ -8354,7 +8411,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, @@ -8386,7 +8444,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, @@ -8417,7 +8477,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 */ @@ -8434,7 +8496,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"); } @@ -8453,7 +8515,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"); } @@ -8479,7 +8541,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); } @@ -8505,7 +8567,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); } @@ -8542,7 +8604,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, @@ -8558,7 +8622,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, @@ -9206,7 +9272,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"); } @@ -9222,7 +9288,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"); } @@ -9253,7 +9319,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, @@ -9267,7 +9335,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, @@ -9280,7 +9350,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, @@ -9306,7 +9378,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, @@ -9319,7 +9392,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, @@ -9345,7 +9419,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, @@ -9358,7 +9434,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 @@ -9410,7 +9487,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 @@ -9444,7 +9522,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); @@ -9454,7 +9532,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, @@ -9536,7 +9615,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']", @@ -9568,7 +9647,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); @@ -9602,7 +9681,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)) { @@ -9652,7 +9731,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); @@ -9683,7 +9762,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); @@ -9718,7 +9797,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; @@ -10759,7 +10838,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)); @@ -10792,7 +10871,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)); @@ -10802,7 +10881,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)); @@ -10822,7 +10901,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)); @@ -10842,7 +10921,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)); diff --git a/pimd/pim_nb.c b/pimd/pim_nb.c index 6fe078bd8e..3542d804a8 100644 --- a/pimd/pim_nb.c +++ b/pimd/pim_nb.c @@ -28,48 +28,6 @@ const struct frr_yang_module_info frr_pim_info = { .name = "frr-pim", .nodes = { - { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp", - .cbs = { - .modify = routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify, - } - }, - { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp-rebalance", - .cbs = { - .modify = routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_modify, - } - }, - { - .xpath = "/frr-pim:pim/join-prune-interval", - .cbs = { - .modify = pim_join_prune_interval_modify, - } - }, - { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/keep-alive-timer", - .cbs = { - .modify = routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_modify, - } - }, - { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/rp-keep-alive-timer", - .cbs = { - .modify = routing_control_plane_protocols_control_plane_protocol_pim_rp_keep_alive_timer_modify, - } - }, - { - .xpath = "/frr-pim:pim/packets", - .cbs = { - .modify = pim_packets_modify, - } - }, - { - .xpath = "/frr-pim:pim/register-suppress-time", - .cbs = { - .modify = pim_register_suppress_time_modify, - } - }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family", .cbs = { @@ -77,6 +35,55 @@ const struct frr_yang_module_info frr_pim_info = { .destroy = routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp", + .cbs = { + .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp-rebalance", + .cbs = { + .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify, + } + }, + { + .xpath = "/frr-pim:pim/address-family/join-prune-interval", + .cbs = { + .modify = pim_address_family_join_prune_interval_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/keep-alive-timer", + .cbs = { + .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/rp-keep-alive-timer", + .cbs = { + .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify, + } + }, + { + .xpath = "/frr-pim:pim/address-family", + .cbs = { + .create = pim_address_family_create, + .destroy = pim_address_family_destroy, + } + }, + { + .xpath = "/frr-pim:pim/address-family/packets", + .cbs = { + .modify = pim_address_family_packets_modify, + } + }, + { + .xpath = "/frr-pim:pim/address-family/register-suppress-time", + .cbs = { + .modify = pim_address_family_register_suppress_time_modify, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/send-v6-secondary", .cbs = { @@ -210,89 +217,6 @@ const struct frr_yang_module_info frr_pim_info = { .destroy = routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy, } }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim", - .cbs = { - .create = lib_interface_pim_create, - .destroy = lib_interface_pim_destroy, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/pim-enable", - .cbs = { - .modify = lib_interface_pim_pim_enable_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/dr-priority", - .cbs = { - .modify = lib_interface_pim_dr_priority_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/hello-interval", - .cbs = { - .modify = lib_interface_pim_hello_interval_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/hello-holdtime", - .cbs = { - .modify = lib_interface_pim_hello_holdtime_modify, - .destroy = lib_interface_pim_hello_holdtime_destroy, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd", - .cbs = { - .create = lib_interface_pim_bfd_create, - .destroy = lib_interface_pim_bfd_destroy, - .apply_finish = lib_interface_pim_bfd_apply_finish, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd/min-rx-interval", - .cbs = { - .modify = lib_interface_pim_bfd_min_rx_interval_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd/min-tx-interval", - .cbs = { - .modify = lib_interface_pim_bfd_min_tx_interval_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd/detect_mult", - .cbs = { - .modify = lib_interface_pim_bfd_detect_mult_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd/profile", - .cbs = { - .modify = lib_interface_pim_bfd_profile_modify, - .destroy = lib_interface_pim_bfd_profile_destroy, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/bsm", - .cbs = { - .modify = lib_interface_pim_bsm_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/unicast-bsm", - .cbs = { - .modify = lib_interface_pim_unicast_bsm_modify, - } - }, - { - .xpath = "/frr-interface:lib/interface/frr-pim:pim/active-active", - .cbs = { - .modify = lib_interface_pim_active_active_modify, - } - }, { .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family", .cbs = { @@ -300,6 +224,82 @@ const struct frr_yang_module_info frr_pim_info = { .destroy = lib_interface_pim_address_family_destroy, } }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/pim-enable", + .cbs = { + .modify = lib_interface_pim_address_family_pim_enable_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/dr-priority", + .cbs = { + .modify = lib_interface_pim_address_family_dr_priority_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/hello-interval", + .cbs = { + .modify = lib_interface_pim_address_family_hello_interval_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/hello-holdtime", + .cbs = { + .modify = lib_interface_pim_address_family_hello_holdtime_modify, + .destroy = lib_interface_pim_address_family_hello_holdtime_destroy, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd", + .cbs = { + .create = lib_interface_pim_address_family_bfd_create, + .destroy = lib_interface_pim_address_family_bfd_destroy, + .apply_finish = lib_interface_pim_address_family_bfd_apply_finish, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-rx-interval", + .cbs = { + .modify = lib_interface_pim_address_family_bfd_min_rx_interval_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-tx-interval", + .cbs = { + .modify = lib_interface_pim_address_family_bfd_min_tx_interval_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/detect_mult", + .cbs = { + .modify = lib_interface_pim_address_family_bfd_detect_mult_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/profile", + .cbs = { + .modify = lib_interface_pim_address_family_bfd_profile_modify, + .destroy = lib_interface_pim_address_family_bfd_profile_destroy, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bsm", + .cbs = { + .modify = lib_interface_pim_address_family_bsm_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/unicast-bsm", + .cbs = { + .modify = lib_interface_pim_address_family_unicast_bsm_modify, + } + }, + { + .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/active-active", + .cbs = { + .modify = lib_interface_pim_address_family_active_active_modify, + } + }, { .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/use-source", .cbs = { diff --git a/pimd/pim_nb.h b/pimd/pim_nb.h index f5ebbceb33..2e528af23f 100644 --- a/pimd/pim_nb.h +++ b/pimd/pim_nb.h @@ -25,17 +25,20 @@ extern const struct frr_yang_module_info frr_pim_rp_info; extern const struct frr_yang_module_info frr_igmp_info; /* frr-pim prototypes*/ -int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify( struct nb_cb_modify_args *args); -int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify( struct nb_cb_modify_args *args); -int pim_join_prune_interval_modify(struct nb_cb_modify_args *args); -int routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_modify( +int pim_address_family_join_prune_interval_modify(struct nb_cb_modify_args *args); +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify( struct nb_cb_modify_args *args); -int routing_control_plane_protocols_control_plane_protocol_pim_rp_keep_alive_timer_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify( + struct nb_cb_modify_args *args); +int pim_address_family_create(struct nb_cb_create_args *args); +int pim_address_family_destroy(struct nb_cb_destroy_args *args); +int pim_address_family_packets_modify(struct nb_cb_modify_args *args); +int pim_address_family_register_suppress_time_modify( struct nb_cb_modify_args *args); -int pim_packets_modify(struct nb_cb_modify_args *args); -int pim_register_suppress_time_modify(struct nb_cb_modify_args *args); int routing_control_plane_protocols_control_plane_protocol_pim_address_family_create( struct nb_cb_create_args *args); int routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy( @@ -97,28 +100,38 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_re struct nb_cb_modify_args *args); int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy( struct nb_cb_destroy_args *args); -int lib_interface_pim_dr_priority_modify( +int lib_interface_pim_address_family_dr_priority_modify( struct nb_cb_modify_args *args); -int lib_interface_pim_create(struct nb_cb_create_args *args); -int lib_interface_pim_destroy(struct nb_cb_destroy_args *args); -int lib_interface_pim_pim_enable_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_hello_interval_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_hello_holdtime_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_hello_holdtime_destroy(struct nb_cb_destroy_args *args); -int lib_interface_pim_bfd_create(struct nb_cb_create_args *args); -int lib_interface_pim_bfd_destroy(struct nb_cb_destroy_args *args); -void lib_interface_pim_bfd_apply_finish(struct nb_cb_apply_finish_args *args); -int lib_interface_pim_bfd_min_rx_interval_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_bfd_min_tx_interval_modify( - struct nb_cb_modify_args *args); -int lib_interface_pim_bfd_detect_mult_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_bfd_profile_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_bfd_profile_destroy(struct nb_cb_destroy_args *args); -int lib_interface_pim_bsm_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_unicast_bsm_modify(struct nb_cb_modify_args *args); -int lib_interface_pim_active_active_modify(struct nb_cb_modify_args *args); int lib_interface_pim_address_family_create(struct nb_cb_create_args *args); int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args *args); +int lib_interface_pim_address_family_pim_enable_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_hello_interval_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_hello_holdtime_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_hello_holdtime_destroy( + struct nb_cb_destroy_args *args); +int lib_interface_pim_address_family_bfd_create(struct nb_cb_create_args *args); +int lib_interface_pim_address_family_bfd_destroy( + struct nb_cb_destroy_args *args); +void lib_interface_pim_address_family_bfd_apply_finish( + struct nb_cb_apply_finish_args *args); +int lib_interface_pim_address_family_bfd_min_rx_interval_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_bfd_min_tx_interval_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_bfd_detect_mult_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_bfd_profile_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_bfd_profile_destroy( + struct nb_cb_destroy_args *args); +int lib_interface_pim_address_family_bsm_modify(struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_unicast_bsm_modify( + struct nb_cb_modify_args *args); +int lib_interface_pim_address_family_active_active_modify( + struct nb_cb_modify_args *args); int lib_interface_pim_address_family_use_source_modify( struct nb_cb_modify_args *args); int lib_interface_pim_address_family_use_source_destroy( @@ -177,14 +190,19 @@ int lib_interface_igmp_address_family_static_group_destroy( int routing_control_plane_protocols_name_validate( struct nb_cb_create_args *args); -#define FRR_PIM_XPATH \ - "/frr-routing:routing/control-plane-protocols/" \ - "control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \ - "frr-pim:pim" -#define FRR_PIM_AF_XPATH \ +#define FRR_PIM_VRF_XPATH \ "/frr-routing:routing/control-plane-protocols/" \ "control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \ "frr-pim:pim/address-family[address-family='%s']" +#define FRR_PIM_INTERFACE_XPATH \ + "./frr-pim:pim/address-family[address-family='%s']" +#define FRR_PIM_ENABLE_XPATH \ + "%s/frr-pim:pim/address-family[address-family='%s']/pim-enable" +#define FRR_PIM_ROUTER_XPATH \ + "/frr-pim:pim/address-family[address-family='%s']" +#define FRR_PIM_MROUTE_XPATH \ + "./frr-pim:pim/address-family[address-family='%s']/" \ + "mroute[source-addr='%s'][group-addr='%s']" #define FRR_PIM_STATIC_RP_XPATH \ "/frr-routing:routing/control-plane-protocols/" \ "control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \ @@ -193,6 +211,6 @@ int routing_control_plane_protocols_name_validate( #define FRR_IGMP_JOIN_XPATH \ "./frr-igmp:igmp/address-family[address-family='%s']/" \ "static-group[group-addr='%s'][source-addr='%s']" -#define FRR_PIM_MSDP_XPATH FRR_PIM_AF_XPATH "/msdp" +#define FRR_PIM_MSDP_XPATH FRR_PIM_VRF_XPATH "/msdp" #endif /* _FRR_PIM_NB_H_ */ diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c index 4a144a0321..85cb0d3438 100644 --- a/pimd/pim_nb_config.c +++ b/pimd/pim_nb_config.c @@ -334,7 +334,9 @@ static bool is_pim_interface(const struct lyd_node *dnode) yang_dnode_get_path(dnode, if_xpath, sizeof(if_xpath)); pim_enable_dnode = - yang_dnode_getf(dnode, "%s/frr-pim:pim/pim-enable", if_xpath); + yang_dnode_getf(dnode, + "%s/frr-pim:pim/address-family[address-family='%s']/pim-enable", + if_xpath, "frr-routing:ipv4"); igmp_enable_dnode = yang_dnode_getf( dnode, "%s/frr-igmp:igmp/igmp-enable", if_xpath); @@ -517,9 +519,38 @@ int routing_control_plane_protocols_name_validate( } /* - * XPath: /frr-pim:pim/packets + * XPath: /frr-pim:pim/address-family */ -int pim_packets_modify(struct nb_cb_modify_args *args) +int pim_address_family_create(struct nb_cb_create_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + break; + } + + return NB_OK; +} + +int pim_address_family_destroy(struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + break; + } + + return NB_OK; +} + +/* + * XPath: /frr-pim:pim/address-family/packets + */ +int pim_address_family_packets_modify(struct nb_cb_modify_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -536,9 +567,10 @@ int pim_packets_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-pim:pim/join-prune-interval + * XPath: /frr-pim:pim/address-family/join-prune-interval */ -int pim_join_prune_interval_modify(struct nb_cb_modify_args *args) +int pim_address_family_join_prune_interval_modify( + struct nb_cb_modify_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -554,9 +586,10 @@ int pim_join_prune_interval_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-pim:pim/register-suppress-time + * XPath: /frr-pim:pim/address-family/register-suppress-time */ -int pim_register_suppress_time_modify(struct nb_cb_modify_args *args) +int pim_address_family_register_suppress_time_modify( + struct nb_cb_modify_args *args) { uint16_t value; switch (args->event) { @@ -592,9 +625,9 @@ int pim_register_suppress_time_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp */ -int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify( struct nb_cb_modify_args *args) { struct vrf *vrf; @@ -615,9 +648,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify( } /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp-rebalance + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp-rebalance */ -int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify( struct nb_cb_modify_args *args) { struct vrf *vrf; @@ -639,9 +672,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_mo } /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/keep-alive-timer + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/keep-alive-timer */ -int routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify( struct nb_cb_modify_args *args) { struct vrf *vrf; @@ -663,9 +696,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_ } /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/rp-keep-alive-timer + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/rp-keep-alive-timer */ -int routing_control_plane_protocols_control_plane_protocol_pim_rp_keep_alive_timer_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify( struct nb_cb_modify_args *args) { struct vrf *vrf; @@ -712,7 +745,6 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_de case NB_EV_PREPARE: case NB_EV_ABORT: case NB_EV_APPLY: - /* TODO: implement me. */ break; } @@ -1498,9 +1530,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_re } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family */ -int lib_interface_pim_create(struct nb_cb_create_args *args) +int lib_interface_pim_address_family_create(struct nb_cb_create_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -1513,7 +1545,7 @@ int lib_interface_pim_create(struct nb_cb_create_args *args) return NB_OK; } -int lib_interface_pim_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1541,9 +1573,9 @@ int lib_interface_pim_destroy(struct nb_cb_destroy_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/pim-enable + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/pim-enable */ -int lib_interface_pim_pim_enable_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_pim_enable_modify(struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1595,9 +1627,10 @@ int lib_interface_pim_pim_enable_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/hello-interval + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/hello-interval */ -int lib_interface_pim_hello_interval_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_hello_interval_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1620,9 +1653,10 @@ int lib_interface_pim_hello_interval_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/hello-holdtime + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/hello-holdtime */ -int lib_interface_pim_hello_holdtime_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_hello_holdtime_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1644,7 +1678,8 @@ int lib_interface_pim_hello_holdtime_modify(struct nb_cb_modify_args *args) } -int lib_interface_pim_hello_holdtime_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_hello_holdtime_destroy( + struct nb_cb_destroy_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1664,9 +1699,9 @@ int lib_interface_pim_hello_holdtime_destroy(struct nb_cb_destroy_args *args) return NB_OK; } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd */ -int lib_interface_pim_bfd_create(struct nb_cb_create_args *args) +int lib_interface_pim_address_family_bfd_create(struct nb_cb_create_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1687,7 +1722,8 @@ int lib_interface_pim_bfd_create(struct nb_cb_create_args *args) return NB_OK; } -int lib_interface_pim_bfd_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_bfd_destroy( + struct nb_cb_destroy_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1717,9 +1753,10 @@ int lib_interface_pim_bfd_destroy(struct nb_cb_destroy_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd */ -void lib_interface_pim_bfd_apply_finish(struct nb_cb_apply_finish_args *args) +void lib_interface_pim_address_family_bfd_apply_finish( + struct nb_cb_apply_finish_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1743,9 +1780,10 @@ void lib_interface_pim_bfd_apply_finish(struct nb_cb_apply_finish_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/min-rx-interval + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-rx-interval */ -int lib_interface_pim_bfd_min_rx_interval_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_min_rx_interval_modify( + struct nb_cb_modify_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -1759,9 +1797,10 @@ int lib_interface_pim_bfd_min_rx_interval_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/min-tx-interval + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-tx-interval */ -int lib_interface_pim_bfd_min_tx_interval_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_min_tx_interval_modify( + struct nb_cb_modify_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -1775,9 +1814,10 @@ int lib_interface_pim_bfd_min_tx_interval_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/detect_mult + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/detect_mult */ -int lib_interface_pim_bfd_detect_mult_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_detect_mult_modify( + struct nb_cb_modify_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -1791,9 +1831,10 @@ int lib_interface_pim_bfd_detect_mult_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/profile + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/profile */ -int lib_interface_pim_bfd_profile_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_profile_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1816,7 +1857,8 @@ int lib_interface_pim_bfd_profile_modify(struct nb_cb_modify_args *args) return NB_OK; } -int lib_interface_pim_bfd_profile_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_bfd_profile_destroy( + struct nb_cb_destroy_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1838,9 +1880,9 @@ int lib_interface_pim_bfd_profile_destroy(struct nb_cb_destroy_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bsm + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bsm */ -int lib_interface_pim_bsm_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bsm_modify(struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1862,9 +1904,10 @@ int lib_interface_pim_bsm_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/unicast-bsm + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/unicast-bsm */ -int lib_interface_pim_unicast_bsm_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_unicast_bsm_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1887,9 +1930,10 @@ int lib_interface_pim_unicast_bsm_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/active-active + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/active-active */ -int lib_interface_pim_active_active_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_active_active_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1924,9 +1968,10 @@ int lib_interface_pim_active_active_modify(struct nb_cb_modify_args *args) } /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/dr-priority + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/dr-priority */ -int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_dr_priority_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct pim_interface *pim_ifp; @@ -1938,7 +1983,7 @@ int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args) if_dnode = yang_dnode_get_parent(args->dnode, "interface"); if (!is_pim_interface(if_dnode)) { snprintf(args->errmsg, args->errmsg_len, - "Pim not enabled on this interface"); + "Pim not enabled on this interface"); return NB_ERR_VALIDATION; } break; @@ -1962,39 +2007,11 @@ int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args) return NB_OK; } -/* - * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family - */ -int lib_interface_pim_address_family_create(struct nb_cb_create_args *args) -{ - switch (args->event) { - case NB_EV_VALIDATE: - case NB_EV_PREPARE: - case NB_EV_ABORT: - case NB_EV_APPLY: - break; - } - - return NB_OK; -} - -int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args *args) -{ - switch (args->event) { - case NB_EV_VALIDATE: - case NB_EV_PREPARE: - case NB_EV_ABORT: - case NB_EV_APPLY: - break; - } - - return NB_OK; -} - /* * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/use-source */ -int lib_interface_pim_address_family_use_source_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_use_source_modify( + struct nb_cb_modify_args *args) { struct interface *ifp; struct ipaddr source_addr; @@ -2043,7 +2060,7 @@ int lib_interface_pim_address_family_use_source_destroy( if_dnode = yang_dnode_get_parent(args->dnode, "interface"); if (!is_pim_interface(if_dnode)) { snprintf(args->errmsg, args->errmsg_len, - "Pim not enabled on this interface"); + "Pim not enabled on this interface"); return NB_ERR_VALIDATION; } break; diff --git a/yang/frr-pim.yang b/yang/frr-pim.yang index 109ce22309..08bc9ce0a6 100644 --- a/yang/frr-pim.yang +++ b/yang/frr-pim.yang @@ -56,7 +56,7 @@ module frr-pim { (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."; - revision 2017-03-09 { + revision 2021-11-22 { description "Initial revision."; reference @@ -77,43 +77,6 @@ module frr-pim { * Groupings */ - grouping global-pim-config-attributes { - description - "A grouping defining pim global attributes."; - - leaf ecmp { - type boolean; - default "false"; - description - "Enable PIM ECMP."; - } - - leaf ecmp-rebalance { - type boolean; - default "false"; - description - "Enable PIM ECMP Rebalance."; - } - - leaf keep-alive-timer { - type uint16 { - range "1..max"; - } - default "210"; - description - "Keep alive Timer in seconds."; - } - - leaf rp-keep-alive-timer { - type uint16 { - range "1..max"; - } - default "210"; - description - "RP keep alive Timer in seconds."; - } - } - grouping msdp-timers { leaf hold-time { type uint16 { @@ -154,10 +117,42 @@ module frr-pim { } } - grouping per-af-global-pim-config-attributes { + grouping global-pim-config-attributes { description "A grouping defining per address family pim global attributes"; + leaf ecmp { + type boolean; + default "false"; + description + "Enable PIM ECMP."; + } + + leaf ecmp-rebalance { + type boolean; + default "false"; + description + "Enable PIM ECMP Rebalance."; + } + + leaf keep-alive-timer { + type uint16 { + range "1..max"; + } + default "210"; + description + "Keep alive Timer in seconds."; + } + + leaf rp-keep-alive-timer { + type uint16 { + range "1..max"; + } + default "210"; + description + "RP keep alive Timer in seconds."; + } + leaf send-v6-secondary { when "../frr-pim:address-family = 'frr-rt:ipv4'" { description @@ -326,11 +321,11 @@ module frr-pim { description "Only accept registers from a specific source prefix list."; } - } // per-af-global-pim-config-attributes + } // global-pim-config-attributes grouping interface-pim-config-attributes { description - "A grouping defining pim interface attributes."; + "A grouping defining pim interface attributes per address family."; leaf pim-enable { type boolean; @@ -426,11 +421,6 @@ module frr-pim { description "DR (Designated Router) priority"; } - } // interface-pim-config-attributes - - grouping per-af-interface-pim-config-attributes { - description - "A grouping defining pim interface attributes per address family."; leaf use-source { type inet:ip-address; @@ -467,56 +457,11 @@ module frr-pim { "Multicast group address."; } } - } // per-af-interface-pim-config-attributes + } // interface-pim-config-attributes - /* - * Global Configuration data nodes - */ - augment "/frr-rt:routing/frr-rt:control-plane-protocols/" - + "frr-rt:control-plane-protocol" { - container pim { - when "../frr-rt:type = 'frr-pim:pimd'" { - description - "This container is only valid for the 'pim' routing - protocol."; - } - description - "PIM configuration data."; - - uses global-pim-config-attributes; - - list address-family { - key "address-family"; - description - "Each list entry for one address family."; - uses frr-rt:address-family; - uses per-af-global-pim-config-attributes; - - } //address-family - } // pim - } // augment - - /* - * Per-interface configuration data - */ - augment "/frr-interface:lib/frr-interface:interface" { - container pim { - presence - "Configure PIM on an interface."; - uses interface-pim-config-attributes; - list address-family { - key "address-family"; - description - "Each list entry for one address family."; - uses frr-rt:address-family; - uses per-af-interface-pim-config-attributes; - } - } - } - - container pim { + grouping router-pim-config-attributes { description - "PIM router parameters."; + "A grouping defining pim router attributes per address family."; leaf packets { type uint8 { range "1..max"; @@ -542,4 +487,58 @@ module frr-pim { "Register Suppress Timer."; } } + + /* + * Global Configuration data nodes + */ + augment "/frr-rt:routing/frr-rt:control-plane-protocols/" + + "frr-rt:control-plane-protocol" { + container pim { + when "../frr-rt:type = 'frr-pim:pimd'" { + description + "This container is only valid for the 'pim' routing + protocol."; + } + description + "PIM configuration data."; + list address-family { + key "address-family"; + description + "Each list entry for one address family."; + uses frr-rt:address-family; + uses global-pim-config-attributes; + + } //address-family + } // pim + } // augment + + /* + * Per-interface configuration data + */ + augment "/frr-interface:lib/frr-interface:interface" { + container pim { + list address-family { + key "address-family"; + description + "Each list entry for one address family."; + uses frr-rt:address-family; + uses interface-pim-config-attributes; + } + } + } + + /* + * Router configuration data + */ + container pim { + description + "PIM router parameters."; + list address-family { + key "address-family"; + description + "Each list entry for one address family."; + uses frr-rt:address-family; + uses router-pim-config-attributes; + } + } }