summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_cmd.c261
-rw-r--r--pimd/pim_nb.c110
-rw-r--r--pimd/pim_nb.h84
-rw-r--r--pimd/pim_nb_config.c177
-rw-r--r--yang/frr-pim.yang153
5 files changed, 449 insertions, 336 deletions
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
@@ -29,52 +29,59 @@ 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",
+ .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family",
.cbs = {
- .modify = routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify,
+ .create = routing_control_plane_protocols_control_plane_protocol_pim_address_family_create,
+ .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/ecmp-rebalance",
+ .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_ecmp_rebalance_modify,
+ .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify,
}
},
{
- .xpath = "/frr-pim:pim/join-prune-interval",
+ .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp-rebalance",
.cbs = {
- .modify = pim_join_prune_interval_modify,
+ .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify,
}
},
{
- .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/keep-alive-timer",
+ .xpath = "/frr-pim:pim/address-family/join-prune-interval",
.cbs = {
- .modify = routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_modify,
+ .modify = pim_address_family_join_prune_interval_modify,
}
},
{
- .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/keep-alive-timer",
.cbs = {
- .modify = routing_control_plane_protocols_control_plane_protocol_pim_rp_keep_alive_timer_modify,
+ .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify,
}
},
{
- .xpath = "/frr-pim:pim/packets",
+ .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/rp-keep-alive-timer",
.cbs = {
- .modify = pim_packets_modify,
+ .modify = routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify,
}
},
{
- .xpath = "/frr-pim:pim/register-suppress-time",
+ .xpath = "/frr-pim:pim/address-family",
.cbs = {
- .modify = pim_register_suppress_time_modify,
+ .create = pim_address_family_create,
+ .destroy = pim_address_family_destroy,
}
},
{
- .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family",
+ .xpath = "/frr-pim:pim/address-family/packets",
.cbs = {
- .create = routing_control_plane_protocols_control_plane_protocol_pim_address_family_create,
- .destroy = routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy,
+ .modify = pim_address_family_packets_modify,
+ }
+ },
+ {
+ .xpath = "/frr-pim:pim/address-family/register-suppress-time",
+ .cbs = {
+ .modify = pim_address_family_register_suppress_time_modify,
}
},
{
@@ -211,93 +218,86 @@ const struct frr_yang_module_info frr_pim_info = {
}
},
{
- .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",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family",
.cbs = {
- .modify = lib_interface_pim_pim_enable_modify,
+ .create = lib_interface_pim_address_family_create,
+ .destroy = lib_interface_pim_address_family_destroy,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/dr-priority",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/pim-enable",
.cbs = {
- .modify = lib_interface_pim_dr_priority_modify,
+ .modify = lib_interface_pim_address_family_pim_enable_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/hello-interval",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/dr-priority",
.cbs = {
- .modify = lib_interface_pim_hello_interval_modify,
+ .modify = lib_interface_pim_address_family_dr_priority_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/hello-holdtime",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/hello-interval",
.cbs = {
- .modify = lib_interface_pim_hello_holdtime_modify,
- .destroy = lib_interface_pim_hello_holdtime_destroy,
+ .modify = lib_interface_pim_address_family_hello_interval_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/hello-holdtime",
.cbs = {
- .create = lib_interface_pim_bfd_create,
- .destroy = lib_interface_pim_bfd_destroy,
- .apply_finish = lib_interface_pim_bfd_apply_finish,
+ .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/bfd/min-rx-interval",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd",
.cbs = {
- .modify = lib_interface_pim_bfd_min_rx_interval_modify,
+ .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/bfd/min-tx-interval",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-rx-interval",
.cbs = {
- .modify = lib_interface_pim_bfd_min_tx_interval_modify,
+ .modify = lib_interface_pim_address_family_bfd_min_rx_interval_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd/detect_mult",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-tx-interval",
.cbs = {
- .modify = lib_interface_pim_bfd_detect_mult_modify,
+ .modify = lib_interface_pim_address_family_bfd_min_tx_interval_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/bfd/profile",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/detect_mult",
.cbs = {
- .modify = lib_interface_pim_bfd_profile_modify,
- .destroy = lib_interface_pim_bfd_profile_destroy,
+ .modify = lib_interface_pim_address_family_bfd_detect_mult_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/bsm",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bfd/profile",
.cbs = {
- .modify = lib_interface_pim_bsm_modify,
+ .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/unicast-bsm",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/bsm",
.cbs = {
- .modify = lib_interface_pim_unicast_bsm_modify,
+ .modify = lib_interface_pim_address_family_bsm_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/active-active",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/unicast-bsm",
.cbs = {
- .modify = lib_interface_pim_active_active_modify,
+ .modify = lib_interface_pim_address_family_unicast_bsm_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family",
+ .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/active-active",
.cbs = {
- .create = lib_interface_pim_address_family_create,
- .destroy = lib_interface_pim_address_family_destroy,
+ .modify = lib_interface_pim_address_family_active_active_modify,
}
},
{
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(
- 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_dr_priority_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;
@@ -1963,38 +2008,10 @@ int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args)
}
/*
- * 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,7 +457,36 @@ module frr-pim {
"Multicast group address.";
}
}
- } // per-af-interface-pim-config-attributes
+ } // interface-pim-config-attributes
+
+ grouping router-pim-config-attributes {
+ description
+ "A grouping defining pim router attributes per address family.";
+ leaf packets {
+ type uint8 {
+ range "1..max";
+ }
+ default "3";
+ description
+ "Number of packets to process at one time per fd.";
+ }
+ leaf join-prune-interval {
+ type uint16 {
+ range "1..max";
+ }
+ default "60";
+ description
+ "Join Prune Send Interval in seconds.";
+ }
+ leaf register-suppress-time {
+ type uint16 {
+ range "1..max";
+ }
+ default "60";
+ description
+ "Register Suppress Timer.";
+ }
+ }
/*
* Global Configuration data nodes
@@ -482,15 +501,12 @@ module frr-pim {
}
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;
+ uses global-pim-config-attributes;
} //address-family
} // pim
@@ -501,45 +517,28 @@ module frr-pim {
*/
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;
+ uses interface-pim-config-attributes;
}
}
}
+ /*
+ * Router configuration data
+ */
container pim {
description
"PIM router parameters.";
- leaf packets {
- type uint8 {
- range "1..max";
- }
- default "3";
+ list address-family {
+ key "address-family";
description
- "Number of packets to process at one time per fd.";
- }
- leaf join-prune-interval {
- type uint16 {
- range "1..max";
- }
- default "60";
- description
- "Join Prune Send Interval in seconds.";
- }
- leaf register-suppress-time {
- type uint16 {
- range "1..max";
- }
- default "60";
- description
- "Register Suppress Timer.";
+ "Each list entry for one address family.";
+ uses frr-rt:address-family;
+ uses router-pim-config-attributes;
}
}
}