Merge pull request #10179 from patrasar/pimv6_northbound

This commit is contained in:
David Lamparter 2022-01-17 13:23:21 +01:00 committed by GitHub
commit 40a19188d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 535 additions and 422 deletions

View File

@ -3815,7 +3815,7 @@ static void pim_cli_legacy_mesh_group_behavior(struct vty *vty,
/* Get mesh group base XPath. */ /* Get mesh group base XPath. */
snprintf(xpath_value, sizeof(xpath_value), 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); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
/* Group must exists, otherwise just quit. */ /* Group must exists, otherwise just quit. */
if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) 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; return CMD_WARNING_CONFIG_FAILED;
snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), 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"); "frr-routing:ipv4");
strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list",
sizeof(spt_plist_xpath)); sizeof(spt_plist_xpath));
snprintf(spt_action_xpath, sizeof(spt_action_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"); "frr-routing:ipv4");
strlcat(spt_action_xpath, "/spt-switchover/spt-action", strlcat(spt_action_xpath, "/spt-switchover/spt-action",
sizeof(spt_action_xpath)); sizeof(spt_action_xpath));
@ -6831,13 +6831,13 @@ DEFUN (ip_pim_spt_switchover_infinity_plist,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), 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"); "frr-routing:ipv4");
strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list",
sizeof(spt_plist_xpath)); sizeof(spt_plist_xpath));
snprintf(spt_action_xpath, sizeof(spt_action_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"); "frr-routing:ipv4");
strlcat(spt_action_xpath, "/spt-switchover/spt-action", strlcat(spt_action_xpath, "/spt-switchover/spt-action",
sizeof(spt_action_xpath)); sizeof(spt_action_xpath));
@ -6868,13 +6868,13 @@ DEFUN (no_ip_pim_spt_switchover_infinity,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), 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"); "frr-routing:ipv4");
strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list",
sizeof(spt_plist_xpath)); sizeof(spt_plist_xpath));
snprintf(spt_action_xpath, sizeof(spt_action_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"); "frr-routing:ipv4");
strlcat(spt_action_xpath, "/spt-switchover/spt-action", strlcat(spt_action_xpath, "/spt-switchover/spt-action",
sizeof(spt_action_xpath)); sizeof(spt_action_xpath));
@ -6906,13 +6906,13 @@ DEFUN (no_ip_pim_spt_switchover_infinity_plist,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(spt_plist_xpath, sizeof(spt_plist_xpath), 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"); "frr-routing:ipv4");
strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list", strlcat(spt_plist_xpath, "/spt-switchover/spt-infinity-prefix-list",
sizeof(spt_plist_xpath)); sizeof(spt_plist_xpath));
snprintf(spt_action_xpath, sizeof(spt_action_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"); "frr-routing:ipv4");
strlcat(spt_action_xpath, "/spt-switchover/spt-action", strlcat(spt_action_xpath, "/spt-switchover/spt-action",
sizeof(spt_action_xpath)); sizeof(spt_action_xpath));
@ -6941,7 +6941,7 @@ DEFPY (pim_register_accept_list,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(reg_alist_xpath, sizeof(reg_alist_xpath), 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"); "frr-routing:ipv4");
strlcat(reg_alist_xpath, "/register-accept-list", strlcat(reg_alist_xpath, "/register-accept-list",
sizeof(reg_alist_xpath)); sizeof(reg_alist_xpath));
@ -6964,8 +6964,13 @@ DEFUN (ip_pim_joinprune_time,
"Join Prune Send Interval\n" "Join Prune Send Interval\n"
"Seconds\n") "Seconds\n")
{ {
nb_cli_enqueue_change(vty, "/frr-pim:pim/join-prune-interval", char xpath[XPATH_MAXLEN];
NB_OP_MODIFY, argv[3]->arg);
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); return nb_cli_apply_changes(vty, NULL);
} }
@ -6979,8 +6984,13 @@ DEFUN (no_ip_pim_joinprune_time,
"Join Prune Send Interval\n" "Join Prune Send Interval\n"
IGNORED_IN_NO_STR) IGNORED_IN_NO_STR)
{ {
nb_cli_enqueue_change(vty, "/frr-pim:pim/join-prune-interval", char xpath[XPATH_MAXLEN];
NB_OP_DESTROY, NULL);
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); return nb_cli_apply_changes(vty, NULL);
} }
@ -6993,8 +7003,13 @@ DEFUN (ip_pim_register_suppress,
"Register Suppress Timer\n" "Register Suppress Timer\n"
"Seconds\n") "Seconds\n")
{ {
nb_cli_enqueue_change(vty, "/frr-pim:pim/register-suppress-time", char xpath[XPATH_MAXLEN];
NB_OP_MODIFY, argv[3]->arg);
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); return nb_cli_apply_changes(vty, NULL);
} }
@ -7008,8 +7023,13 @@ DEFUN (no_ip_pim_register_suppress,
"Register Suppress Timer\n" "Register Suppress Timer\n"
IGNORED_IN_NO_STR) IGNORED_IN_NO_STR)
{ {
nb_cli_enqueue_change(vty, "/frr-pim:pim/register-suppress-time", char xpath[XPATH_MAXLEN];
NB_OP_DESTROY, NULL);
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); return nb_cli_apply_changes(vty, NULL);
} }
@ -7031,7 +7051,8 @@ DEFUN (ip_pim_rp_keep_alive,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath), 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", strlcat(rp_ka_timer_xpath, "/rp-keep-alive-timer",
sizeof(rp_ka_timer_xpath)); 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[6];
char rp_ka_timer_xpath[XPATH_MAXLEN]; char rp_ka_timer_xpath[XPATH_MAXLEN];
uint v; 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 */ /* RFC4601 */
v = yang_dnode_get_uint16(vty->candidate_config->dnode, 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; v = 3 * v + PIM_REGISTER_PROBE_TIME_DEFAULT;
if (v > UINT16_MAX) if (v > UINT16_MAX)
v = UINT16_MAX; v = UINT16_MAX;
@ -7069,7 +7096,8 @@ DEFUN (no_ip_pim_rp_keep_alive,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(rp_ka_timer_xpath, sizeof(rp_ka_timer_xpath), 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", strlcat(rp_ka_timer_xpath, "/rp-keep-alive-timer",
sizeof(rp_ka_timer_xpath)); sizeof(rp_ka_timer_xpath));
@ -7094,8 +7122,8 @@ DEFUN (ip_pim_keep_alive,
if (vrfname == NULL) if (vrfname == NULL)
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_XPATH, snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ka_timer_xpath, "/keep-alive-timer", sizeof(ka_timer_xpath)); strlcat(ka_timer_xpath, "/keep-alive-timer", sizeof(ka_timer_xpath));
nb_cli_enqueue_change(vty, ka_timer_xpath, NB_OP_MODIFY, nb_cli_enqueue_change(vty, ka_timer_xpath, NB_OP_MODIFY,
@ -7120,8 +7148,8 @@ DEFUN (no_ip_pim_keep_alive,
if (vrfname == NULL) if (vrfname == NULL)
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_XPATH, snprintf(ka_timer_xpath, sizeof(ka_timer_xpath), FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ka_timer_xpath, "/keep-alive-timer", sizeof(ka_timer_xpath)); strlcat(ka_timer_xpath, "/keep-alive-timer", sizeof(ka_timer_xpath));
nb_cli_enqueue_change(vty, ka_timer_xpath, NB_OP_DESTROY, NULL); 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" "packets to process at one time per fd\n"
"Number of packets\n") "Number of packets\n")
{ {
nb_cli_enqueue_change(vty, "/frr-pim:pim/packets", NB_OP_MODIFY, char xpath[XPATH_MAXLEN];
argv[3]->arg);
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); 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" "packets to process at one time per fd\n"
IGNORED_IN_NO_STR) 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); return nb_cli_apply_changes(vty, NULL);
} }
@ -7201,7 +7240,7 @@ DEFUN (ip_pim_v6_secondary,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(send_v6_secondary_xpath, sizeof(send_v6_secondary_xpath), 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"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(send_v6_secondary_xpath, "/send-v6-secondary", strlcat(send_v6_secondary_xpath, "/send-v6-secondary",
sizeof(send_v6_secondary_xpath)); sizeof(send_v6_secondary_xpath));
@ -7228,7 +7267,7 @@ DEFUN (no_ip_pim_v6_secondary,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(send_v6_secondary_xpath, sizeof(send_v6_secondary_xpath), 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"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(send_v6_secondary_xpath, "/send-v6-secondary", strlcat(send_v6_secondary_xpath, "/send-v6-secondary",
sizeof(send_v6_secondary_xpath)); sizeof(send_v6_secondary_xpath));
@ -7442,7 +7481,7 @@ DEFUN (ip_pim_ssm_prefix_list,
if (vrfname == NULL) if (vrfname == NULL)
return CMD_WARNING_CONFIG_FAILED; 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"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath)); 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; return CMD_WARNING_CONFIG_FAILED;
snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath), snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath),
FRR_PIM_AF_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath)); 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; return CMD_WARNING_CONFIG_FAILED;
snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath), snprintf(ssm_plist_xpath, sizeof(ssm_plist_xpath),
FRR_PIM_AF_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath)); strlcat(ssm_plist_xpath, "/ssm-prefix-list", sizeof(ssm_plist_xpath));
ssm_plist_dnode = yang_dnode_get(vty->candidate_config->dnode, ssm_plist_dnode = yang_dnode_get(vty->candidate_config->dnode,
@ -7656,7 +7695,7 @@ DEFUN (ip_ssmpingd,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ssmpingd_ip_xpath, sizeof(ssmpingd_ip_xpath), snprintf(ssmpingd_ip_xpath, sizeof(ssmpingd_ip_xpath),
FRR_PIM_AF_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ssmpingd_ip_xpath, "/ssm-pingd-source-ip", strlcat(ssmpingd_ip_xpath, "/ssm-pingd-source-ip",
sizeof(ssmpingd_ip_xpath)); sizeof(ssmpingd_ip_xpath));
@ -7685,7 +7724,7 @@ DEFUN (no_ip_ssmpingd,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ssmpingd_ip_xpath, sizeof(ssmpingd_ip_xpath), snprintf(ssmpingd_ip_xpath, sizeof(ssmpingd_ip_xpath),
FRR_PIM_AF_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ssmpingd_ip_xpath, "/ssm-pingd-source-ip", strlcat(ssmpingd_ip_xpath, "/ssm-pingd-source-ip",
sizeof(ssmpingd_ip_xpath)); sizeof(ssmpingd_ip_xpath));
@ -7710,8 +7749,8 @@ DEFUN (ip_pim_ecmp,
if (vrfname == NULL) if (vrfname == NULL)
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_XPATH, snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath)); strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath));
nb_cli_enqueue_change(vty, ecmp_xpath, NB_OP_MODIFY, "true"); nb_cli_enqueue_change(vty, ecmp_xpath, NB_OP_MODIFY, "true");
@ -7733,8 +7772,8 @@ DEFUN (no_ip_pim_ecmp,
if (vrfname == NULL) if (vrfname == NULL)
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_XPATH, snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath)); strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath));
nb_cli_enqueue_change(vty, ecmp_xpath, NB_OP_MODIFY, "false"); nb_cli_enqueue_change(vty, ecmp_xpath, NB_OP_MODIFY, "false");
@ -7758,12 +7797,12 @@ DEFUN (ip_pim_ecmp_rebalance,
if (vrfname == NULL) if (vrfname == NULL)
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_XPATH, snprintf(ecmp_xpath, sizeof(ecmp_xpath), FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath)); strlcat(ecmp_xpath, "/ecmp", sizeof(ecmp_xpath));
snprintf(ecmp_rebalance_xpath, sizeof(ecmp_rebalance_xpath), snprintf(ecmp_rebalance_xpath, sizeof(ecmp_rebalance_xpath),
FRR_PIM_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ecmp_rebalance_xpath, "/ecmp-rebalance", strlcat(ecmp_rebalance_xpath, "/ecmp-rebalance",
sizeof(ecmp_rebalance_xpath)); sizeof(ecmp_rebalance_xpath));
@ -7790,8 +7829,8 @@ DEFUN (no_ip_pim_ecmp_rebalance,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(ecmp_rebalance_xpath, sizeof(ecmp_rebalance_xpath), snprintf(ecmp_rebalance_xpath, sizeof(ecmp_rebalance_xpath),
FRR_PIM_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
strlcat(ecmp_rebalance_xpath, "/ecmp-rebalance", strlcat(ecmp_rebalance_xpath, "/ecmp-rebalance",
sizeof(ecmp_rebalance_xpath)); sizeof(ecmp_rebalance_xpath));
@ -7822,10 +7861,12 @@ DEFUN (interface_no_ip_igmp,
char pim_if_xpath[XPATH_MAXLEN + 20]; char pim_if_xpath[XPATH_MAXLEN + 20];
snprintf(pim_if_xpath, sizeof(pim_if_xpath), 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, 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) { if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, pim_if_xpath, NB_OP_DESTROY, NULL); nb_cli_enqueue_change(vty, pim_if_xpath, NB_OP_DESTROY, NULL);
nb_cli_enqueue_change(vty, ".", 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 = pim_enable_dnode =
yang_dnode_getf(vty->candidate_config->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) { if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
"true"); "true");
} else { } else {
if (!yang_dnode_get_bool(pim_enable_dnode, ".")) if (!yang_dnode_get_bool(pim_enable_dnode, "."))
@ -7992,7 +8034,8 @@ DEFUN (interface_ip_igmp_query_max_response_time,
pim_enable_dnode = pim_enable_dnode =
yang_dnode_getf(vty->candidate_config->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) { if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, 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 = pim_enable_dnode =
yang_dnode_getf(vty->candidate_config->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) { if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true"); "true");
@ -8078,7 +8122,8 @@ DEFUN (interface_ip_igmp_last_member_query_count,
pim_enable_dnode = pim_enable_dnode =
yang_dnode_getf(vty->candidate_config->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) { if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true"); "true");
@ -8121,7 +8166,8 @@ DEFUN (interface_ip_igmp_last_member_query_interval,
pim_enable_dnode = pim_enable_dnode =
yang_dnode_getf(vty->candidate_config->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) { if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true"); "true");
@ -8165,7 +8211,8 @@ DEFUN (interface_ip_pim_drprio,
nb_cli_enqueue_change(vty, "./dr-priority", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./dr-priority", NB_OP_MODIFY,
argv[idx_number]->arg); 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, 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); 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, DEFPY_HIDDEN (interface_ip_igmp_query_generate,
@ -8277,7 +8325,9 @@ DEFPY (interface_ip_pim_activeactive,
"true"); "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, 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"); 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) if (ret != NB_OK)
return ret; return ret;
@ -8311,7 +8363,9 @@ DEFUN_HIDDEN (interface_ip_pim_sm,
{ {
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); 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, DEFUN (interface_ip_pim,
@ -8322,7 +8376,10 @@ DEFUN (interface_ip_pim,
{ {
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true"); 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, DEFUN_HIDDEN (interface_no_ip_pim_ssm,
@ -8354,7 +8411,8 @@ DEFUN_HIDDEN (interface_no_ip_pim_ssm,
"false"); "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, DEFUN_HIDDEN (interface_no_ip_pim_sm,
@ -8386,7 +8444,9 @@ DEFUN_HIDDEN (interface_no_ip_pim_sm,
"false"); "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, DEFUN (interface_no_ip_pim,
@ -8417,7 +8477,9 @@ DEFUN (interface_no_ip_pim,
"false"); "false");
} }
return nb_cli_apply_changes(vty, "./frr-pim:pim"); return nb_cli_apply_changes(vty,
FRR_PIM_INTERFACE_XPATH,
"frr-routing:ipv4");
} }
/* boundaries */ /* boundaries */
@ -8434,7 +8496,7 @@ DEFUN(interface_ip_pim_boundary_oil,
argv[4]->arg); argv[4]->arg);
return nb_cli_apply_changes(vty, return nb_cli_apply_changes(vty,
"./frr-pim:pim/address-family[address-family='%s']", FRR_PIM_INTERFACE_XPATH,
"frr-routing:ipv4"); "frr-routing:ipv4");
} }
@ -8453,7 +8515,7 @@ DEFUN(interface_no_ip_pim_boundary_oil,
NULL); NULL);
return nb_cli_apply_changes(vty, return nb_cli_apply_changes(vty,
"./frr-pim:pim/address-family[address-family='%s']", FRR_PIM_INTERFACE_XPATH,
"frr-routing:ipv4"); "frr-routing:ipv4");
} }
@ -8479,7 +8541,7 @@ DEFUN (interface_ip_mroute,
argv[idx_interface]->arg); argv[idx_interface]->arg);
return nb_cli_apply_changes(vty, 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, "frr-routing:ipv4", source_str,
argv[idx_ipv4]->arg); argv[idx_ipv4]->arg);
} }
@ -8505,7 +8567,7 @@ DEFUN (interface_no_ip_mroute,
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
return nb_cli_apply_changes(vty, 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, "frr-routing:ipv4", source_str,
argv[idx_ipv4]->arg); argv[idx_ipv4]->arg);
} }
@ -8542,7 +8604,9 @@ DEFUN (interface_ip_pim_hello,
nb_cli_enqueue_change(vty, "./hello-holdtime", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./hello-holdtime", NB_OP_MODIFY,
argv[idx_hold]->arg); 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, 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-interval", NB_OP_DESTROY, NULL);
nb_cli_enqueue_change(vty, "./hello-holdtime", 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, 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); nb_cli_enqueue_change(vty, "./use-source", NB_OP_MODIFY, argv[3]->arg);
return nb_cli_apply_changes(vty, return nb_cli_apply_changes(vty,
"./frr-pim:pim/address-family[address-family='%s']", FRR_PIM_INTERFACE_XPATH,
"frr-routing:ipv4"); "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"); nb_cli_enqueue_change(vty, "./use-source", NB_OP_MODIFY, "0.0.0.0");
return nb_cli_apply_changes(vty, return nb_cli_apply_changes(vty,
"./frr-pim:pim/address-family[address-family='%s']", FRR_PIM_INTERFACE_XPATH,
"frr-routing:ipv4"); "frr-routing:ipv4");
} }
@ -9253,7 +9319,9 @@ DEFPY (ip_pim_bfd,
if (prof) if (prof)
nb_cli_enqueue_change(vty, "./bfd/profile", NB_OP_MODIFY, 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, 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); 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, DEFUN (no_ip_pim_bfd,
@ -9280,7 +9350,9 @@ DEFUN (no_ip_pim_bfd,
{ {
nb_cli_enqueue_change(vty, "./bfd", NB_OP_DESTROY, NULL); 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, DEFUN (ip_pim_bsm,
@ -9306,7 +9378,8 @@ DEFUN (ip_pim_bsm,
nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "true"); 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, DEFUN (no_ip_pim_bsm,
@ -9319,7 +9392,8 @@ DEFUN (no_ip_pim_bsm,
{ {
nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "false"); 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, 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"); 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, 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"); 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 #if HAVE_BFDD > 0
@ -9410,7 +9487,8 @@ DEFUN_HIDDEN (
nb_cli_enqueue_change(vty, "./bfd/detect_mult", NB_OP_MODIFY, nb_cli_enqueue_change(vty, "./bfd/detect_mult", NB_OP_MODIFY,
argv[idx_number]->arg); 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 #if HAVE_BFDD == 0
@ -9444,7 +9522,7 @@ DEFPY(ip_msdp_peer, ip_msdp_peer_cmd,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(msdp_peer_source_xpath, sizeof(msdp_peer_source_xpath), 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"); "frr-routing:ipv4");
snprintf(temp_xpath, sizeof(temp_xpath), snprintf(temp_xpath, sizeof(temp_xpath),
"/msdp-peer[peer-ip='%s']/source-ip", peer_str); "/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, nb_cli_enqueue_change(vty, msdp_peer_source_xpath, NB_OP_MODIFY,
source_str); 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, DEFPY(ip_msdp_timers, ip_msdp_timers_cmd,
@ -9536,7 +9615,7 @@ DEFUN (no_ip_msdp_peer,
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
snprintf(msdp_peer_xpath, sizeof(msdp_peer_xpath), snprintf(msdp_peer_xpath, sizeof(msdp_peer_xpath),
FRR_PIM_AF_XPATH, FRR_PIM_VRF_XPATH,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4"); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4");
snprintf(temp_xpath, sizeof(temp_xpath), snprintf(temp_xpath, sizeof(temp_xpath),
"/msdp-peer[peer-ip='%s']", "/msdp-peer[peer-ip='%s']",
@ -9568,7 +9647,7 @@ DEFPY(ip_msdp_mesh_group_member,
/* Create mesh group. */ /* Create mesh group. */
snprintf(xpath_value, sizeof(xpath_value), 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); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL); 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. */ /* Get mesh group base XPath. */
snprintf(xpath_value, sizeof(xpath_value), 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); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) { if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) {
@ -9652,7 +9731,7 @@ DEFPY(ip_msdp_mesh_group_source,
/* Create mesh group. */ /* Create mesh group. */
snprintf(xpath_value, sizeof(xpath_value), 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); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL); 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. */ /* Get mesh group base XPath. */
snprintf(xpath_value, sizeof(xpath_value), 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); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL); 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. */ /* Get mesh group base XPath. */
snprintf(xpath_value, sizeof(xpath_value), 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); "frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value)) if (!yang_dnode_exists(vty->candidate_config->dnode, xpath_value))
return CMD_SUCCESS; return CMD_SUCCESS;
@ -10759,7 +10838,7 @@ DEFUN_HIDDEN (no_ip_pim_mlag,
{ {
char mlag_xpath[XPATH_MAXLEN]; 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"); "frr-pim:pimd", "pim", "default", "frr-routing:ipv4");
strlcat(mlag_xpath, "/mlag", sizeof(mlag_xpath)); strlcat(mlag_xpath, "/mlag", sizeof(mlag_xpath));
@ -10792,7 +10871,7 @@ DEFUN_HIDDEN (ip_pim_mlag,
char mlag_reg_address_xpath[XPATH_MAXLEN]; char mlag_reg_address_xpath[XPATH_MAXLEN];
snprintf(mlag_peerlink_rif_xpath, sizeof(mlag_peerlink_rif_xpath), 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"); "frr-pim:pimd", "pim", "default", "frr-routing:ipv4");
strlcat(mlag_peerlink_rif_xpath, "/mlag/peerlink-rif", strlcat(mlag_peerlink_rif_xpath, "/mlag/peerlink-rif",
sizeof(mlag_peerlink_rif_xpath)); sizeof(mlag_peerlink_rif_xpath));
@ -10802,7 +10881,7 @@ DEFUN_HIDDEN (ip_pim_mlag,
argv[idx]->arg); argv[idx]->arg);
snprintf(mlag_my_role_xpath, sizeof(mlag_my_role_xpath), 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"); "frr-pim:pimd", "pim", "default", "frr-routing:ipv4");
strlcat(mlag_my_role_xpath, "/mlag/my-role", strlcat(mlag_my_role_xpath, "/mlag/my-role",
sizeof(mlag_my_role_xpath)); sizeof(mlag_my_role_xpath));
@ -10822,7 +10901,7 @@ DEFUN_HIDDEN (ip_pim_mlag,
} }
snprintf(mlag_peer_state_xpath, sizeof(mlag_peer_state_xpath), 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"); "frr-pim:pimd", "pim", "default", "frr-routing:ipv4");
strlcat(mlag_peer_state_xpath, "/mlag/peer-state", strlcat(mlag_peer_state_xpath, "/mlag/peer-state",
sizeof(mlag_peer_state_xpath)); sizeof(mlag_peer_state_xpath));
@ -10842,7 +10921,7 @@ DEFUN_HIDDEN (ip_pim_mlag,
} }
snprintf(mlag_reg_address_xpath, sizeof(mlag_reg_address_xpath), 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"); "frr-pim:pimd", "pim", "default", "frr-routing:ipv4");
strlcat(mlag_reg_address_xpath, "/mlag/reg-address", strlcat(mlag_reg_address_xpath, "/mlag/reg-address",
sizeof(mlag_reg_address_xpath)); sizeof(mlag_reg_address_xpath));

View File

@ -28,48 +28,6 @@
const struct frr_yang_module_info frr_pim_info = { const struct frr_yang_module_info frr_pim_info = {
.name = "frr-pim", .name = "frr-pim",
.nodes = { .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", .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family",
.cbs = { .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, .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", .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/send-v6-secondary",
.cbs = { .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, .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", .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family",
.cbs = { .cbs = {
@ -300,6 +224,82 @@ const struct frr_yang_module_info frr_pim_info = {
.destroy = lib_interface_pim_address_family_destroy, .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", .xpath = "/frr-interface:lib/interface/frr-pim:pim/address-family/use-source",
.cbs = { .cbs = {

View File

@ -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; extern const struct frr_yang_module_info frr_igmp_info;
/* frr-pim prototypes*/ /* 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); 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); struct nb_cb_modify_args *args);
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);
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 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); 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( int routing_control_plane_protocols_control_plane_protocol_pim_address_family_create(
struct nb_cb_create_args *args); struct nb_cb_create_args *args);
int routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy( 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); struct nb_cb_modify_args *args);
int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy( int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy(
struct nb_cb_destroy_args *args); 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); 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_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_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( int lib_interface_pim_address_family_use_source_modify(
struct nb_cb_modify_args *args); struct nb_cb_modify_args *args);
int lib_interface_pim_address_family_use_source_destroy( 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( int routing_control_plane_protocols_name_validate(
struct nb_cb_create_args *args); struct nb_cb_create_args *args);
#define FRR_PIM_XPATH \ #define FRR_PIM_VRF_XPATH \
"/frr-routing:routing/control-plane-protocols/" \
"control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \
"frr-pim:pim"
#define FRR_PIM_AF_XPATH \
"/frr-routing:routing/control-plane-protocols/" \ "/frr-routing:routing/control-plane-protocols/" \
"control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \ "control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \
"frr-pim:pim/address-family[address-family='%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 \ #define FRR_PIM_STATIC_RP_XPATH \
"/frr-routing:routing/control-plane-protocols/" \ "/frr-routing:routing/control-plane-protocols/" \
"control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \ "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 \ #define FRR_IGMP_JOIN_XPATH \
"./frr-igmp:igmp/address-family[address-family='%s']/" \ "./frr-igmp:igmp/address-family[address-family='%s']/" \
"static-group[group-addr='%s'][source-addr='%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_ */ #endif /* _FRR_PIM_NB_H_ */

View File

@ -334,7 +334,9 @@ static bool is_pim_interface(const struct lyd_node *dnode)
yang_dnode_get_path(dnode, if_xpath, sizeof(if_xpath)); yang_dnode_get_path(dnode, if_xpath, sizeof(if_xpath));
pim_enable_dnode = 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( igmp_enable_dnode = yang_dnode_getf(
dnode, "%s/frr-igmp:igmp/igmp-enable", if_xpath); 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) { switch (args->event) {
case NB_EV_VALIDATE: 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) { switch (args->event) {
case NB_EV_VALIDATE: 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; uint16_t value;
switch (args->event) { 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 nb_cb_modify_args *args)
{ {
struct vrf *vrf; 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 nb_cb_modify_args *args)
{ {
struct vrf *vrf; 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 nb_cb_modify_args *args)
{ {
struct vrf *vrf; 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 nb_cb_modify_args *args)
{ {
struct vrf *vrf; 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_PREPARE:
case NB_EV_ABORT: case NB_EV_ABORT:
case NB_EV_APPLY: case NB_EV_APPLY:
/* TODO: implement me. */
break; 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) { switch (args->event) {
case NB_EV_VALIDATE: case NB_EV_VALIDATE:
@ -1513,7 +1545,7 @@ int lib_interface_pim_create(struct nb_cb_create_args *args)
return NB_OK; 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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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; 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 interface *ifp;
struct pim_interface *pim_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; 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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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) { switch (args->event) {
case NB_EV_VALIDATE: 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) { switch (args->event) {
case NB_EV_VALIDATE: 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) { switch (args->event) {
case NB_EV_VALIDATE: 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 interface *ifp;
struct pim_interface *pim_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; 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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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 interface *ifp;
struct pim_interface *pim_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_dnode = yang_dnode_get_parent(args->dnode, "interface");
if (!is_pim_interface(if_dnode)) { if (!is_pim_interface(if_dnode)) {
snprintf(args->errmsg, args->errmsg_len, snprintf(args->errmsg, args->errmsg_len,
"Pim not enabled on this interface"); "Pim not enabled on this interface");
return NB_ERR_VALIDATION; return NB_ERR_VALIDATION;
} }
break; break;
@ -1962,39 +2007,11 @@ int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args)
return NB_OK; 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 * 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 interface *ifp;
struct ipaddr source_addr; 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_dnode = yang_dnode_get_parent(args->dnode, "interface");
if (!is_pim_interface(if_dnode)) { if (!is_pim_interface(if_dnode)) {
snprintf(args->errmsg, args->errmsg_len, snprintf(args->errmsg, args->errmsg_len,
"Pim not enabled on this interface"); "Pim not enabled on this interface");
return NB_ERR_VALIDATION; return NB_ERR_VALIDATION;
} }
break; break;

View File

@ -56,7 +56,7 @@ module frr-pim {
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
revision 2017-03-09 { revision 2021-11-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
@ -77,43 +77,6 @@ module frr-pim {
* Groupings * 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 { grouping msdp-timers {
leaf hold-time { leaf hold-time {
type uint16 { type uint16 {
@ -154,10 +117,42 @@ module frr-pim {
} }
} }
grouping per-af-global-pim-config-attributes { grouping global-pim-config-attributes {
description description
"A grouping defining per address family pim global attributes"; "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 { leaf send-v6-secondary {
when "../frr-pim:address-family = 'frr-rt:ipv4'" { when "../frr-pim:address-family = 'frr-rt:ipv4'" {
description description
@ -326,11 +321,11 @@ module frr-pim {
description description
"Only accept registers from a specific source prefix list."; "Only accept registers from a specific source prefix list.";
} }
} // per-af-global-pim-config-attributes } // global-pim-config-attributes
grouping interface-pim-config-attributes { grouping interface-pim-config-attributes {
description description
"A grouping defining pim interface attributes."; "A grouping defining pim interface attributes per address family.";
leaf pim-enable { leaf pim-enable {
type boolean; type boolean;
@ -426,11 +421,6 @@ module frr-pim {
description description
"DR (Designated Router) priority"; "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 { leaf use-source {
type inet:ip-address; type inet:ip-address;
@ -467,56 +457,11 @@ module frr-pim {
"Multicast group address."; "Multicast group address.";
} }
} }
} // per-af-interface-pim-config-attributes } // interface-pim-config-attributes
/* grouping router-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 {
description description
"PIM router parameters."; "A grouping defining pim router attributes per address family.";
leaf packets { leaf packets {
type uint8 { type uint8 {
range "1..max"; range "1..max";
@ -542,4 +487,58 @@ module frr-pim {
"Register Suppress Timer."; "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;
}
}
} }