summaryrefslogtreecommitdiff
path: root/pimd/pim_cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_cmd.c')
-rw-r--r--pimd/pim_cmd.c293
1 files changed, 80 insertions, 213 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 14aa710524..5cfe171b70 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -308,14 +308,12 @@ static void json_object_pim_ifp_add(struct json_object *json,
struct interface *ifp)
{
struct pim_interface *pim_ifp;
- char buf[PREFIX_STRLEN];
pim_ifp = ifp->info;
json_object_string_add(json, "name", ifp->name);
json_object_string_add(json, "state", if_is_up(ifp) ? "up" : "down");
- json_object_string_add(json, "address",
- inet_ntop(AF_INET, &pim_ifp->primary_address,
- buf, sizeof(buf)));
+ json_object_string_addf(json, "address", "%pI4",
+ &pim_ifp->primary_address);
json_object_int_add(json, "index", ifp->ifindex);
if (if_is_multicast(ifp))
@@ -489,7 +487,6 @@ static void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty,
struct interface *ifp;
time_t now;
char buf[PREFIX_STRLEN];
- char quer_buf[PREFIX_STRLEN];
json_object *json = NULL;
json_object *json_row = NULL;
@@ -504,14 +501,14 @@ static void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty,
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct listnode *sock_node;
- struct igmp_sock *igmp;
+ struct gm_sock *igmp;
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_socket_list, sock_node,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_socket_list, sock_node,
igmp)) {
char uptime[10];
char query_hhmmss[10];
@@ -537,10 +534,9 @@ static void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty,
"queryTimer",
query_hhmmss);
}
- json_object_string_add(
- json_row, "querierIp",
- inet_ntop(AF_INET, &igmp->querier_addr,
- quer_buf, sizeof(quer_buf)));
+ json_object_string_addf(json_row, "querierIp",
+ "%pI4",
+ &igmp->querier_addr);
json_object_object_add(json, ifp->name,
json_row);
@@ -579,12 +575,11 @@ static void igmp_show_interfaces_single(struct pim_instance *pim,
struct vty *vty, const char *ifname,
bool uj)
{
- struct igmp_sock *igmp;
+ struct gm_sock *igmp;
struct interface *ifp;
struct listnode *sock_node;
struct pim_interface *pim_ifp;
char uptime[10];
- char quer_buf[PREFIX_STRLEN];
char query_hhmmss[10];
char other_hhmmss[10];
int found_ifname = 0;
@@ -615,7 +610,7 @@ static void igmp_show_interfaces_single(struct pim_instance *pim,
if (strcmp(ifname, "detail") && strcmp(ifname, ifp->name))
continue;
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_socket_list, sock_node,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_socket_list, sock_node,
igmp)) {
found_ifname = 1;
pim_time_uptime(uptime, sizeof(uptime),
@@ -630,35 +625,34 @@ static void igmp_show_interfaces_single(struct pim_instance *pim,
gmi_msec = PIM_IGMP_GMI_MSEC(
igmp->querier_robustness_variable,
igmp->querier_query_interval,
- pim_ifp->igmp_query_max_response_time_dsec);
+ pim_ifp->gm_query_max_response_time_dsec);
- sqi = PIM_IGMP_SQI(
- pim_ifp->igmp_default_query_interval);
+ sqi = PIM_IGMP_SQI(pim_ifp->gm_default_query_interval);
oqpi_msec = PIM_IGMP_OQPI_MSEC(
igmp->querier_robustness_variable,
igmp->querier_query_interval,
- pim_ifp->igmp_query_max_response_time_dsec);
+ pim_ifp->gm_query_max_response_time_dsec);
lmqt_msec = PIM_IGMP_LMQT_MSEC(
- pim_ifp->igmp_specific_query_max_response_time_dsec,
- pim_ifp->igmp_last_member_query_count);
+ pim_ifp->gm_specific_query_max_response_time_dsec,
+ pim_ifp->gm_last_member_query_count);
ohpi_msec =
PIM_IGMP_OHPI_DSEC(
igmp->querier_robustness_variable,
igmp->querier_query_interval,
- pim_ifp->igmp_query_max_response_time_dsec)
- * 100;
+ pim_ifp->gm_query_max_response_time_dsec) *
+ 100;
- qri_msec = pim_ifp->igmp_query_max_response_time_dsec
- * 100;
+ qri_msec =
+ pim_ifp->gm_query_max_response_time_dsec * 100;
if (pim_ifp->pim_sock_fd >= 0)
mloop = pim_socket_mcastloop_get(
pim_ifp->pim_sock_fd);
else
mloop = 0;
- lmqc = pim_ifp->igmp_last_member_query_count;
+ lmqc = pim_ifp->gm_last_member_query_count;
if (uj) {
json_row = json_object_new_object();
@@ -669,10 +663,9 @@ static void igmp_show_interfaces_single(struct pim_instance *pim,
igmp->t_igmp_query_timer
? "local"
: "other");
- json_object_string_add(
- json_row, "querierIp",
- inet_ntop(AF_INET, &igmp->querier_addr,
- quer_buf, sizeof(quer_buf)));
+ json_object_string_addf(json_row, "querierIp",
+ "%pI4",
+ &igmp->querier_addr);
json_object_int_add(json_row, "queryStartCount",
igmp->startup_query_count);
json_object_string_add(json_row,
@@ -830,7 +823,7 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty,
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct listnode *join_node;
- struct igmp_join *ij;
+ struct gm_join *ij;
struct in_addr pri_addr;
char pri_addr_str[INET_ADDRSTRLEN];
@@ -839,14 +832,14 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty,
if (!pim_ifp)
continue;
- if (!pim_ifp->igmp_join_list)
+ if (!pim_ifp->gm_join_list)
continue;
pri_addr = pim_find_primary_addr(ifp);
pim_inet4_dump("<pri?>", pri_addr, pri_addr_str,
sizeof(pri_addr_str));
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_join_list, join_node,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_join_list, join_node,
ij)) {
char group_str[INET_ADDRSTRLEN];
char source_str[INET_ADDRSTRLEN];
@@ -893,7 +886,7 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty,
ifp->name, pri_addr_str, source_str,
group_str, ij->sock_fd, uptime);
}
- } /* for (pim_ifp->igmp_join_list) */
+ } /* for (pim_ifp->gm_join_list) */
} /* for (iflist) */
@@ -928,7 +921,6 @@ static void pim_show_interfaces_single(struct pim_instance *pim,
int mloop = 0;
int found_ifname = 0;
int print_header;
- char buf[PREFIX_STRLEN];
json_object *json = NULL;
json_object *json_row = NULL;
json_object *json_pim_neighbor = NULL;
@@ -979,11 +971,9 @@ static void pim_show_interfaces_single(struct pim_instance *pim,
json_object_pim_ifp_add(json_row, ifp);
if (pim_ifp->update_source.s_addr != INADDR_ANY) {
- json_object_string_add(
- json_row, "useSource",
- inet_ntop(AF_INET,
- &pim_ifp->update_source,
- buf, sizeof(buf)));
+ json_object_string_addf(
+ json_row, "useSource", "%pI4",
+ &pim_ifp->update_source);
}
if (pim_ifp->sec_addr_list) {
json_object *sec_list = NULL;
@@ -1339,7 +1329,7 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty,
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct listnode *sock_node;
- struct igmp_sock *igmp;
+ struct gm_sock *igmp;
pim_ifp = ifp->info;
@@ -1349,7 +1339,7 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty,
if (ifname && strcmp(ifname, ifp->name))
continue;
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_socket_list, sock_node,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_socket_list, sock_node,
igmp)) {
igmp_stats_add(&rx_stats, &igmp->rx_stats);
}
@@ -1407,7 +1397,6 @@ static void pim_show_interfaces(struct pim_instance *pim, struct vty *vty,
int fhr = 0;
int pim_nbrs = 0;
int pim_ifchannels = 0;
- char buf[PREFIX_STRLEN];
json_object *json = NULL;
json_object *json_row = NULL;
json_object *json_tmp;
@@ -1437,10 +1426,8 @@ static void pim_show_interfaces(struct pim_instance *pim, struct vty *vty,
json_object_int_add(json_row, "pimNeighbors", pim_nbrs);
json_object_int_add(json_row, "pimIfChannels", pim_ifchannels);
json_object_int_add(json_row, "firstHopRouterCount", fhr);
- json_object_string_add(json_row, "pimDesignatedRouter",
- inet_ntop(AF_INET,
- &pim_ifp->pim_dr_addr, buf,
- sizeof(buf)));
+ json_object_string_addf(json_row, "pimDesignatedRouter", "%pI4",
+ &pim_ifp->pim_dr_addr);
if (pim_ifp->pim_dr_addr.s_addr
== pim_ifp->primary_address.s_addr)
@@ -1753,7 +1740,7 @@ static void pim_show_join_helper(struct vty *vty, struct pim_interface *pim_ifp,
}
static void pim_show_join(struct pim_instance *pim, struct vty *vty,
- struct prefix_sg *sg, bool uj)
+ pim_sgaddr *sg, bool uj)
{
struct pim_interface *pim_ifp;
struct pim_ifchannel *ch;
@@ -2446,14 +2433,12 @@ static const char *pim_reg_state2brief_str(enum pim_reg_state reg_state,
case PIM_REG_PRUNE:
strlcpy(state_str, "RegP", state_str_len);
break;
- default:
- strlcpy(state_str, "Unk", state_str_len);
}
return state_str;
}
static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
- struct prefix_sg *sg, bool uj)
+ pim_sgaddr *sg, bool uj)
{
struct pim_upstream *up;
time_t now;
@@ -3437,13 +3422,13 @@ static void igmp_show_groups(struct pim_instance *pim, struct vty *vty, bool uj)
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *grpnode;
- struct igmp_group *grp;
+ struct gm_group *grp;
if (!pim_ifp)
continue;
/* scan igmp groups */
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode,
grp)) {
char group_str[INET_ADDRSTRLEN];
char hhmmss[10];
@@ -3531,18 +3516,18 @@ static void igmp_show_group_retransmission(struct pim_instance *pim,
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *grpnode;
- struct igmp_group *grp;
+ struct gm_group *grp;
if (!pim_ifp)
continue;
/* scan igmp groups */
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode,
grp)) {
char group_str[INET_ADDRSTRLEN];
char grp_retr_mmss[10];
struct listnode *src_node;
- struct igmp_source *src;
+ struct gm_source *src;
int grp_retr_sources = 0;
pim_inet4_dump("<group?>", grp->group_addr, group_str,
@@ -3584,17 +3569,17 @@ static void igmp_show_sources(struct pim_instance *pim, struct vty *vty)
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *grpnode;
- struct igmp_group *grp;
+ struct gm_group *grp;
if (!pim_ifp)
continue;
/* scan igmp groups */
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode,
grp)) {
char group_str[INET_ADDRSTRLEN];
struct listnode *srcnode;
- struct igmp_source *src;
+ struct gm_source *src;
pim_inet4_dump("<group?>", grp->group_addr, group_str,
sizeof(group_str));
@@ -3624,7 +3609,7 @@ static void igmp_show_sources(struct pim_instance *pim, struct vty *vty)
uptime);
} /* scan group sources */
- } /* scan igmp groups */
+ } /* scan igmp groups */
} /* scan interfaces */
}
@@ -3640,17 +3625,17 @@ static void igmp_show_source_retransmission(struct pim_instance *pim,
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *grpnode;
- struct igmp_group *grp;
+ struct gm_group *grp;
if (!pim_ifp)
continue;
/* scan igmp groups */
- for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_group_list, grpnode,
+ for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_group_list, grpnode,
grp)) {
char group_str[INET_ADDRSTRLEN];
struct listnode *srcnode;
- struct igmp_source *src;
+ struct gm_source *src;
pim_inet4_dump("<group?>", grp->group_addr, group_str,
sizeof(group_str));
@@ -3668,7 +3653,7 @@ static void igmp_show_source_retransmission(struct pim_instance *pim,
src->source_query_retransmit_count);
} /* scan group sources */
- } /* scan igmp groups */
+ } /* scan igmp groups */
} /* scan interfaces */
}
@@ -3808,6 +3793,7 @@ static const char *pim_cli_get_vrf_name(struct vty *vty)
return yang_dnode_get_string(vrf_node, "./name");
}
+#if PIM_IPV != 6
/**
* Compatibility function to keep the legacy mesh group CLI behavior:
* Delete group when there are no more configurations in it.
@@ -3842,7 +3828,7 @@ static void pim_cli_legacy_mesh_group_behavior(struct vty *vty,
xpath_member_value)) {
member_dnode = yang_dnode_get(vty->candidate_config->dnode,
xpath_member_value);
- if (!yang_is_last_list_dnode(member_dnode))
+ if (!member_dnode || !yang_is_last_list_dnode(member_dnode))
return;
}
@@ -3855,6 +3841,7 @@ static void pim_cli_legacy_mesh_group_behavior(struct vty *vty,
/* No configurations found: delete it. */
nb_cli_enqueue_change(vty, xpath_value, NB_OP_DESTROY, NULL);
}
+#endif /* PIM_IPV != 6 */
DEFUN (clear_ip_interfaces,
clear_ip_interfaces_cmd,
@@ -3922,7 +3909,7 @@ static void clear_mroute(struct pim_instance *pim)
/* scan interfaces */
FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
- struct igmp_group *grp;
+ struct gm_group *grp;
struct pim_ifchannel *ch;
if (!pim_ifp)
@@ -3937,9 +3924,9 @@ static void clear_mroute(struct pim_instance *pim)
/* clean up all igmp groups */
- if (pim_ifp->igmp_group_list) {
- while (pim_ifp->igmp_group_list->count) {
- grp = listnode_head(pim_ifp->igmp_group_list);
+ if (pim_ifp->gm_group_list) {
+ while (pim_ifp->gm_group_list->count) {
+ grp = listnode_head(pim_ifp->gm_group_list);
igmp_group_delete(grp);
}
}
@@ -4053,132 +4040,6 @@ DEFUN (clear_ip_pim_oil,
return CMD_SUCCESS;
}
-static void clear_pim_bsr_db(struct pim_instance *pim)
-{
- struct route_node *rn;
- struct route_node *rpnode;
- struct bsgrp_node *bsgrp;
- struct prefix nht_p;
- struct prefix g_all;
- struct rp_info *rp_all;
- struct pim_upstream *up;
- struct rp_info *rp_info;
- bool is_bsr_tracking = true;
-
- /* Remove next hop tracking for the bsr */
- nht_p.family = AF_INET;
- nht_p.prefixlen = IPV4_MAX_BITLEN;
- nht_p.u.prefix4 = pim->global_scope.current_bsr;
- if (PIM_DEBUG_BSM) {
- zlog_debug("%s: Deregister BSR addr %pFX with Zebra NHT",
- __func__, &nht_p);
- }
- pim_delete_tracked_nexthop(pim, &nht_p, NULL, NULL, is_bsr_tracking);
-
- /* Reset scope zone data */
- pim->global_scope.accept_nofwd_bsm = false;
- pim->global_scope.state = ACCEPT_ANY;
- pim->global_scope.current_bsr.s_addr = INADDR_ANY;
- pim->global_scope.current_bsr_prio = 0;
- pim->global_scope.current_bsr_first_ts = 0;
- pim->global_scope.current_bsr_last_ts = 0;
- pim->global_scope.bsm_frag_tag = 0;
- pim_bsm_frags_free(&pim->global_scope);
-
- pim_bs_timer_stop(&pim->global_scope);
-
- for (rn = route_top(pim->global_scope.bsrp_table); rn;
- rn = route_next(rn)) {
- bsgrp = rn->info;
- if (!bsgrp)
- continue;
-
- rpnode = route_node_lookup(pim->rp_table, &bsgrp->group);
-
- if (!rpnode) {
- pim_free_bsgrp_node(bsgrp->scope->bsrp_table,
- &bsgrp->group);
- pim_free_bsgrp_data(bsgrp);
- continue;
- }
-
- rp_info = (struct rp_info *)rpnode->info;
-
- if ((!rp_info) || (rp_info->rp_src != RP_SRC_BSR)) {
- pim_free_bsgrp_node(bsgrp->scope->bsrp_table,
- &bsgrp->group);
- pim_free_bsgrp_data(bsgrp);
- continue;
- }
-
- /* Deregister addr with Zebra NHT */
- nht_p.family = AF_INET;
- nht_p.prefixlen = IPV4_MAX_BITLEN;
- nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4;
-
- if (PIM_DEBUG_PIM_NHT_RP) {
- zlog_debug("%s: Deregister RP addr %pFX with Zebra ",
- __func__, &nht_p);
- }
-
- pim_delete_tracked_nexthop(pim, &nht_p, NULL, rp_info, false);
-
- if (!str2prefix("224.0.0.0/4", &g_all))
- return;
-
- rp_all = pim_rp_find_match_group(pim, &g_all);
-
- if (rp_all == rp_info) {
- rp_all->rp.rpf_addr.family = AF_INET;
- rp_all->rp.rpf_addr.u.prefix4.s_addr = INADDR_NONE;
- rp_all->i_am_rp = 0;
- } else {
- /* Delete the rp_info from rp-list */
- listnode_delete(pim->rp_list, rp_info);
-
- /* Delete the rp node from rp_table */
- rpnode->info = NULL;
- route_unlock_node(rpnode);
- route_unlock_node(rpnode);
- }
-
- XFREE(MTYPE_PIM_RP, rp_info);
-
- pim_free_bsgrp_node(bsgrp->scope->bsrp_table, &bsgrp->group);
- pim_free_bsgrp_data(bsgrp);
- }
- pim_rp_refresh_group_to_rp_mapping(pim);
-
-
- frr_each (rb_pim_upstream, &pim->upstream_head, up) {
- /* Find the upstream (*, G) whose upstream address is same as
- * the RP
- */
- if (up->sg.src.s_addr != INADDR_ANY)
- continue;
-
- struct prefix grp;
- struct rp_info *trp_info;
-
- grp.family = AF_INET;
- grp.prefixlen = IPV4_MAX_BITLEN;
- grp.u.prefix4 = up->sg.grp;
-
- trp_info = pim_rp_find_match_group(pim, &grp);
-
- /* RP not found for the group grp */
- if (pim_rpf_addr_is_inaddr_none(&trp_info->rp)) {
- pim_upstream_rpf_clear(pim, up);
- pim_rp_set_upstream_addr(pim, &up->upstream_addr,
- up->sg.src, up->sg.grp);
- } else {
- /* RP found for the group grp */
- pim_upstream_update(pim, up);
- }
- }
-}
-
-
DEFUN (clear_ip_pim_bsr_db,
clear_ip_pim_bsr_db_cmd,
"clear ip pim [vrf NAME] bsr-data",
@@ -4194,7 +4055,7 @@ DEFUN (clear_ip_pim_bsr_db,
if (!vrf)
return CMD_WARNING;
- clear_pim_bsr_db(vrf->info);
+ pim_bsm_clear(vrf->info);
return CMD_SUCCESS;
}
@@ -4743,7 +4604,7 @@ DEFPY (show_ip_pim_join,
"The Group\n"
JSON_STR)
{
- struct prefix_sg sg = {0};
+ pim_sgaddr sg = {0};
struct vrf *v;
bool uj = !!json;
struct pim_instance *pim;
@@ -4784,7 +4645,7 @@ DEFUN (show_ip_pim_join_vrf_all,
"PIM interface join information\n"
JSON_STR)
{
- struct prefix_sg sg = {0};
+ pim_sgaddr sg = {0};
bool uj = use_json(argc, argv);
struct vrf *vrf;
bool first = true;
@@ -5363,7 +5224,7 @@ DEFPY (show_ip_pim_upstream,
"The Group\n"
JSON_STR)
{
- struct prefix_sg sg = {0};
+ pim_sgaddr sg = {0};
struct vrf *v;
bool uj = !!json;
struct pim_instance *pim;
@@ -5403,7 +5264,7 @@ DEFUN (show_ip_pim_upstream_vrf_all,
"PIM upstream information\n"
JSON_STR)
{
- struct prefix_sg sg = {0};
+ pim_sgaddr sg = {0};
bool uj = use_json(argc, argv);
struct vrf *vrf;
bool first = true;
@@ -5843,10 +5704,8 @@ static void show_multicast_interfaces(struct pim_instance *pim, struct vty *vty,
json_object_string_add(json_row, "name", ifp->name);
json_object_string_add(json_row, "state",
if_is_up(ifp) ? "up" : "down");
- json_object_string_add(
- json_row, "address",
- inet_ntop(AF_INET, &pim_ifp->primary_address,
- buf, sizeof(buf)));
+ json_object_string_addf(json_row, "address", "%pI4",
+ &pim_ifp->primary_address);
json_object_int_add(json_row, "ifIndex", ifp->ifindex);
json_object_int_add(json_row, "vif",
pim_ifp->mroute_vif_index);
@@ -6030,7 +5889,7 @@ DEFUN(show_ip_multicast_count_vrf_all,
}
static void show_mroute(struct pim_instance *pim, struct vty *vty,
- struct prefix_sg *sg, bool fill, bool uj)
+ pim_sgaddr *sg, bool fill, bool uj)
{
struct listnode *node;
struct channel_oil *c_oil;
@@ -6415,7 +6274,7 @@ DEFPY (show_ip_mroute,
"Fill in Assumed data\n"
JSON_STR)
{
- struct prefix_sg sg = {0};
+ pim_sgaddr sg = {0};
struct pim_instance *pim;
struct vrf *v;
@@ -6453,7 +6312,7 @@ DEFUN (show_ip_mroute_vrf_all,
"Fill in Assumed data\n"
JSON_STR)
{
- struct prefix_sg sg = {0};
+ pim_sgaddr sg = {0};
bool uj = use_json(argc, argv);
int idx = 4;
struct vrf *vrf;
@@ -8361,7 +8220,7 @@ DEFPY_HIDDEN (pim_test_sg_keepalive,
{
struct pim_upstream *up;
struct pim_instance *pim;
- struct prefix_sg sg;
+ pim_sgaddr sg;
sg.src = source;
sg.grp = group;
@@ -9566,6 +9425,7 @@ ALIAS(no_ip_pim_bfd, no_ip_pim_bfd_param_cmd,
"Desired min transmit interval\n")
#endif /* !HAVE_BFDD */
+#if PIM_IPV != 6
DEFPY(ip_msdp_peer, ip_msdp_peer_cmd,
"ip msdp peer A.B.C.D$peer source A.B.C.D$source",
IP_STR
@@ -9762,7 +9622,7 @@ DEFPY(no_ip_msdp_mesh_group_member,
return CMD_WARNING_CONFIG_FAILED;
}
- nb_cli_enqueue_change(vty, xpath_value, NB_OP_DESTROY, NULL);
+ nb_cli_enqueue_change(vty, xpath_member_value, NB_OP_DESTROY, NULL);
/*
* If this is the last member, then we must remove the group altogether
@@ -9796,7 +9656,7 @@ DEFPY(ip_msdp_mesh_group_source,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL);
- /* Create mesh group member. */
+ /* Create mesh group source. */
strlcat(xpath_value, "/source", sizeof(xpath_value));
nb_cli_enqueue_change(vty, xpath_value, NB_OP_MODIFY, saddr_str);
@@ -9827,7 +9687,7 @@ DEFPY(no_ip_msdp_mesh_group_source,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL);
- /* Create mesh group member. */
+ /* Create mesh group source. */
strlcat(xpath_value, "/source", sizeof(xpath_value));
nb_cli_enqueue_change(vty, xpath_value, NB_OP_DESTROY, NULL);
@@ -10607,6 +10467,7 @@ DEFUN (show_ip_msdp_sa_sg_vrf_all,
return CMD_SUCCESS;
}
+#endif /* PIM_IPV != 6 */
struct pim_sg_cache_walk_data {
struct vty *vty;
@@ -10738,7 +10599,7 @@ static void pim_show_vxlan_sg_one(struct pim_instance *pim,
bool uj)
{
json_object *json = NULL;
- struct prefix_sg sg;
+ pim_sgaddr sg;
int result = 0;
struct pim_vxlan_sg *vxlan_sg;
const char *iif_name;
@@ -10758,8 +10619,6 @@ static void pim_show_vxlan_sg_one(struct pim_instance *pim,
return;
}
- sg.family = AF_INET;
- sg.prefixlen = IPV4_MAX_BITLEN;
if (uj)
json = json_object_new_object();
@@ -11050,10 +10909,12 @@ void pim_cmd_init(void)
install_element(VRF_NODE, &ip_ssmpingd_cmd);
install_element(CONFIG_NODE, &no_ip_ssmpingd_cmd);
install_element(VRF_NODE, &no_ip_ssmpingd_cmd);
+#if PIM_IPV != 6
install_element(CONFIG_NODE, &ip_msdp_peer_cmd);
install_element(VRF_NODE, &ip_msdp_peer_cmd);
install_element(CONFIG_NODE, &no_ip_msdp_peer_cmd);
install_element(VRF_NODE, &no_ip_msdp_peer_cmd);
+#endif /* PIM_IPV != 6 */
install_element(CONFIG_NODE, &ip_pim_ecmp_cmd);
install_element(VRF_NODE, &ip_pim_ecmp_cmd);
install_element(CONFIG_NODE, &no_ip_pim_ecmp_cmd);
@@ -11222,12 +11083,14 @@ void pim_cmd_init(void)
install_element(ENABLE_NODE, &no_debug_pim_mlag_cmd);
install_element(ENABLE_NODE, &debug_pim_vxlan_cmd);
install_element(ENABLE_NODE, &no_debug_pim_vxlan_cmd);
+#if PIM_IPV != 6
install_element(ENABLE_NODE, &debug_msdp_cmd);
install_element(ENABLE_NODE, &no_debug_msdp_cmd);
install_element(ENABLE_NODE, &debug_msdp_events_cmd);
install_element(ENABLE_NODE, &no_debug_msdp_events_cmd);
install_element(ENABLE_NODE, &debug_msdp_packets_cmd);
install_element(ENABLE_NODE, &no_debug_msdp_packets_cmd);
+#endif /* PIM_IPV != 6 */
install_element(ENABLE_NODE, &debug_mtrace_cmd);
install_element(ENABLE_NODE, &no_debug_mtrace_cmd);
install_element(ENABLE_NODE, &debug_bsm_cmd);
@@ -11269,17 +11132,20 @@ void pim_cmd_init(void)
install_element(CONFIG_NODE, &no_debug_pim_mlag_cmd);
install_element(CONFIG_NODE, &debug_pim_vxlan_cmd);
install_element(CONFIG_NODE, &no_debug_pim_vxlan_cmd);
+#if PIM_IPV != 6
install_element(CONFIG_NODE, &debug_msdp_cmd);
install_element(CONFIG_NODE, &no_debug_msdp_cmd);
install_element(CONFIG_NODE, &debug_msdp_events_cmd);
install_element(CONFIG_NODE, &no_debug_msdp_events_cmd);
install_element(CONFIG_NODE, &debug_msdp_packets_cmd);
install_element(CONFIG_NODE, &no_debug_msdp_packets_cmd);
+#endif /* PIM_IPV != 6 */
install_element(CONFIG_NODE, &debug_mtrace_cmd);
install_element(CONFIG_NODE, &no_debug_mtrace_cmd);
install_element(CONFIG_NODE, &debug_bsm_cmd);
install_element(CONFIG_NODE, &no_debug_bsm_cmd);
+#if PIM_IPV != 6
install_element(CONFIG_NODE, &ip_msdp_timers_cmd);
install_element(VRF_NODE, &ip_msdp_timers_cmd);
install_element(CONFIG_NODE, &no_ip_msdp_timers_cmd);
@@ -11302,6 +11168,7 @@ void pim_cmd_init(void)
install_element(VIEW_NODE, &show_ip_msdp_sa_sg_vrf_all_cmd);
install_element(VIEW_NODE, &show_ip_msdp_mesh_group_cmd);
install_element(VIEW_NODE, &show_ip_msdp_mesh_group_vrf_all_cmd);
+#endif /* PIM_IPV != 6 */
install_element(VIEW_NODE, &show_ip_pim_ssm_range_cmd);
install_element(VIEW_NODE, &show_ip_pim_group_type_cmd);
install_element(VIEW_NODE, &show_ip_pim_vxlan_sg_cmd);