summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_attr.c8
-rw-r--r--bgpd/bgp_bmp.c4
-rw-r--r--bgpd/bgp_open.c16
-rw-r--r--bgpd/bgp_packet.c12
-rw-r--r--bgpd/bgp_route.c2
-rw-r--r--doc/developer/logging.rst1
-rw-r--r--doc/user/pimv6.rst41
-rw-r--r--lib/filter_cli.c265
-rw-r--r--lib/prefix.c30
-rw-r--r--lib/prefix.h27
-rw-r--r--lib/strformat.c10
-rw-r--r--lib/vty.h9
-rw-r--r--pimd/pim6_cmd.c364
-rw-r--r--pimd/pim_cmd.c973
-rw-r--r--pimd/pim_cmd_common.c683
-rw-r--r--pimd/pim_cmd_common.h20
-rw-r--r--pimd/pim_mroute.c4
-rw-r--r--pimd/pim_zlookup.c37
-rw-r--r--tests/bgpd/test_aspath.c2
-rw-r--r--tests/bgpd/test_capability.c2
-rw-r--r--tests/bgpd/test_ecommunity.c2
-rw-r--r--tests/bgpd/test_mp_attr.c2
-rw-r--r--tests/bgpd/test_packet.c2
-rw-r--r--tests/topotests/lib/pim.py56
-rw-r--r--tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py72
-rw-r--r--tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py46
-rwxr-xr-xtests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_ospf_topo2.py52
-rwxr-xr-xtests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_static_routes_topo1.py28
-rwxr-xr-xtests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_transit_router_topo3.py16
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py78
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py98
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py186
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py44
-rwxr-xr-xtests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py292
-rw-r--r--zebra/router-id.c8
-rw-r--r--zebra/rt_netlink.c60
-rw-r--r--zebra/zebra_mroute.c54
-rw-r--r--zebra/zebra_mroute.h4
-rw-r--r--zebra/zebra_routemap.c16
-rw-r--r--zebra/zebra_vrf.h12
-rw-r--r--zebra/zebra_vty.c90
41 files changed, 2076 insertions, 1652 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index 118931a4df..f45362f811 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -3596,8 +3596,8 @@ size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer, afi_t afi,
struct attr *attr)
{
size_t sizep;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
afi_t nh_afi;
/* Set extended bit always to encode the attribute length as 2 bytes */
@@ -4404,8 +4404,8 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
size_t bgp_packet_mpunreach_start(struct stream *s, afi_t afi, safi_t safi)
{
unsigned long attrlen_pnt;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
/* Set extended bit always to encode the attribute length as 2 bytes */
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_EXTLEN);
diff --git a/bgpd/bgp_bmp.c b/bgpd/bgp_bmp.c
index 48d3706ec5..47922985d9 100644
--- a/bgpd/bgp_bmp.c
+++ b/bgpd/bgp_bmp.c
@@ -761,8 +761,8 @@ static void bmp_eor(struct bmp *bmp, afi_t afi, safi_t safi, uint8_t flags)
struct peer *peer;
struct listnode *node;
struct stream *s, *s2;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
frrtrace(3, frr_bgp, bmp_eor, afi, safi, flags);
diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c
index 6bdefd0e9b..c2562c75d3 100644
--- a/bgpd/bgp_open.c
+++ b/bgpd/bgp_open.c
@@ -1324,8 +1324,8 @@ static void bgp_open_capability_orf(struct stream *s, struct peer *peer,
unsigned long orfp;
unsigned long numberp;
int number_of_orfs = 0;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
/* Convert AFI, SAFI to values for packet. */
bgp_map_afi_safi_int2iana(afi, safi, &pkt_afi, &pkt_safi);
@@ -1389,10 +1389,10 @@ static void bgp_peer_send_gr_capability(struct stream *s, struct peer *peer,
bool ext_opt_params)
{
int len;
- iana_afi_t pkt_afi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
afi_t afi;
safi_t safi;
- iana_safi_t pkt_safi;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
uint32_t restart_time;
unsigned long capp = 0;
unsigned long rcapp = 0;
@@ -1472,10 +1472,10 @@ static void bgp_peer_send_llgr_capability(struct stream *s, struct peer *peer,
bool ext_opt_params)
{
int len;
- iana_afi_t pkt_afi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
afi_t afi;
safi_t safi;
- iana_safi_t pkt_safi;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
unsigned long capp = 0;
unsigned long rcapp = 0;
@@ -1523,10 +1523,10 @@ uint16_t bgp_open_capability(struct stream *s, struct peer *peer,
{
uint16_t len;
unsigned long cp, capp, rcapp, eopl = 0;
- iana_afi_t pkt_afi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
afi_t afi;
safi_t safi;
- iana_safi_t pkt_safi;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
as_t local_as;
uint8_t afi_safi_count = 0;
int adv_addpath_tx = 0;
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index b0d852ee63..5ed888f486 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -131,8 +131,8 @@ static struct stream *bgp_update_packet_eor(struct peer *peer, afi_t afi,
safi_t safi)
{
struct stream *s;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
if (DISABLE_BGP_ANNOUNCE)
return NULL;
@@ -869,8 +869,8 @@ void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,
struct stream *s;
struct bgp_filter *filter;
int orf_refresh = 0;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
if (DISABLE_BGP_ANNOUNCE)
return;
@@ -976,8 +976,8 @@ void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,
int capability_code, int action)
{
struct stream *s;
- iana_afi_t pkt_afi;
- iana_safi_t pkt_safi;
+ iana_afi_t pkt_afi = IANA_AFI_IPV4;
+ iana_safi_t pkt_safi = IANA_SAFI_UNICAST;
/* Convert AFI, SAFI to values for packet. */
bgp_map_afi_safi_int2iana(afi, safi, &pkt_afi, &pkt_safi);
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 12d360a033..2544ea5208 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -15012,7 +15012,7 @@ static void bgp_config_write_network_evpn(struct vty *vty, struct bgp *bgp,
char buf[PREFIX_STRLEN * 2];
char buf2[SU_ADDRSTRLEN];
char rdbuf[RD_ADDRSTRLEN];
- char esi_buf[ESI_BYTES];
+ char esi_buf[ESI_STR_LEN];
/* Network configuration. */
for (pdest = bgp_table_top(bgp->route[afi][safi]); pdest;
diff --git a/doc/developer/logging.rst b/doc/developer/logging.rst
index 16d555461d..e262f6af94 100644
--- a/doc/developer/logging.rst
+++ b/doc/developer/logging.rst
@@ -158,7 +158,6 @@ Networking data types
- :c:struct:`prefix_ls`
- :c:struct:`prefix_rd`
- - :c:struct:`prefix_ptr`
- :c:struct:`prefix_sg` (use :frrfmt:`%pPSG4`)
- :c:union:`prefixptr` (dereference to get :c:struct:`prefix`)
- :c:union:`prefixconstptr` (dereference to get :c:struct:`prefix`)
diff --git a/doc/user/pimv6.rst b/doc/user/pimv6.rst
index f0946a13f7..0456e77b21 100644
--- a/doc/user/pimv6.rst
+++ b/doc/user/pimv6.rst
@@ -285,6 +285,47 @@ cause great confusion.
Display upstream information for S,G's and the RPF data associated with them.
+.. clicmd:: show ipv6 multicast
+
+ Display various information about the interfaces used in this pim instance.
+
+.. clicmd:: show ipv6 multicast count [vrf NAME] [json]
+
+ Display multicast data packets count per interface for a vrf.
+
+.. clicmd:: show ipv6 multicast count vrf all [json]
+
+ Display multicast data packets count per interface for all vrf.
+
+.. clicmd:: show ipv6 mroute [vrf NAME] [X:X::X:X [X:X::X:X]] [fill] [json]
+
+ Display information about installed into the kernel S,G mroutes. If
+ one address is specified we assume it is the Group we are interested
+ in displaying data on. If the second address is specified then it is
+ Source Group. The keyword ``fill`` says to fill in all assumed data
+ for test/data gathering purposes.
+
+.. clicmd:: show ipv6 mroute [vrf NAME] count [json]
+
+ Display information about installed into the kernel S,G mroutes and in
+ addition display data about packet flow for the mroutes for a specific
+ vrf.
+
+.. clicmd:: show ipv6 mroute vrf all count [json]
+
+ Display information about installed into the kernel S,G mroutes and in
+ addition display data about packet flow for the mroutes for all vrfs.
+
+.. clicmd:: show ipv6 mroute [vrf NAME] summary [json]
+
+ Display total number of S,G mroutes and number of S,G mroutes installed
+ into the kernel for a specific vrf.
+
+.. clicmd:: show ipv6 mroute vrf all summary [json]
+
+ Display total number of S,G mroutes and number of S,G mroutes
+ installed into the kernel for all vrfs.
+
PIMv6 Debug Commands
====================
diff --git a/lib/filter_cli.c b/lib/filter_cli.c
index fb40c527dd..9a877a5704 100644
--- a/lib/filter_cli.c
+++ b/lib/filter_cli.c
@@ -151,28 +151,25 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- ada.ada_type = "ipv4";
- ada.ada_name = name;
- ada.ada_action = action;
- if (host_str && mask_str == NULL) {
- ada.ada_xpath[0] = "./host";
- ada.ada_value[0] = host_str;
- } else if (host_str && mask_str) {
- ada.ada_xpath[0] = "./network/address";
- ada.ada_value[0] = host_str;
- ada.ada_xpath[1] = "./network/mask";
- ada.ada_value[1] = mask_str;
- } else {
- ada.ada_xpath[0] = "./source-any";
- ada.ada_value[0] = "";
- }
-
- /* Duplicated entry without sequence, just quit. */
- if (acl_is_dup(vty->candidate_config->dnode, &ada))
- return CMD_SUCCESS;
+ ada.ada_type = "ipv4";
+ ada.ada_name = name;
+ ada.ada_action = action;
+ if (host_str && mask_str == NULL) {
+ ada.ada_xpath[0] = "./host";
+ ada.ada_value[0] = host_str;
+ } else if (host_str && mask_str) {
+ ada.ada_xpath[0] = "./network/address";
+ ada.ada_value[0] = host_str;
+ ada.ada_xpath[1] = "./network/mask";
+ ada.ada_value[1] = mask_str;
+ } else {
+ ada.ada_xpath[0] = "./source-any";
+ ada.ada_value[0] = "";
}
+ if (acl_is_dup(vty->candidate_config->dnode, &ada))
+ return CMD_SUCCESS;
+
/*
* Create the access-list first, so we can generate sequence if
* none given (backward compatibility).
@@ -280,49 +277,46 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- ada.ada_type = "ipv4";
- ada.ada_name = name;
- ada.ada_action = action;
- if (src_str && src_mask_str == NULL) {
- ada.ada_xpath[idx] = "./host";
- ada.ada_value[idx] = src_str;
- idx++;
- } else if (src_str && src_mask_str) {
- ada.ada_xpath[idx] = "./network/address";
- ada.ada_value[idx] = src_str;
- idx++;
- ada.ada_xpath[idx] = "./network/mask";
- ada.ada_value[idx] = src_mask_str;
- idx++;
- } else {
- ada.ada_xpath[idx] = "./source-any";
- ada.ada_value[idx] = "";
- idx++;
- }
-
- if (dst_str && dst_mask_str == NULL) {
- ada.ada_xpath[idx] = "./destination-host";
- ada.ada_value[idx] = dst_str;
- idx++;
- } else if (dst_str && dst_mask_str) {
- ada.ada_xpath[idx] = "./destination-network/address";
- ada.ada_value[idx] = dst_str;
- idx++;
- ada.ada_xpath[idx] = "./destination-network/mask";
- ada.ada_value[idx] = dst_mask_str;
- idx++;
- } else {
- ada.ada_xpath[idx] = "./destination-any";
- ada.ada_value[idx] = "";
- idx++;
- }
+ ada.ada_type = "ipv4";
+ ada.ada_name = name;
+ ada.ada_action = action;
+ if (src_str && src_mask_str == NULL) {
+ ada.ada_xpath[idx] = "./host";
+ ada.ada_value[idx] = src_str;
+ idx++;
+ } else if (src_str && src_mask_str) {
+ ada.ada_xpath[idx] = "./network/address";
+ ada.ada_value[idx] = src_str;
+ idx++;
+ ada.ada_xpath[idx] = "./network/mask";
+ ada.ada_value[idx] = src_mask_str;
+ idx++;
+ } else {
+ ada.ada_xpath[idx] = "./source-any";
+ ada.ada_value[idx] = "";
+ idx++;
+ }
- /* Duplicated entry without sequence, just quit. */
- if (acl_is_dup(vty->candidate_config->dnode, &ada))
- return CMD_SUCCESS;
+ if (dst_str && dst_mask_str == NULL) {
+ ada.ada_xpath[idx] = "./destination-host";
+ ada.ada_value[idx] = dst_str;
+ idx++;
+ } else if (dst_str && dst_mask_str) {
+ ada.ada_xpath[idx] = "./destination-network/address";
+ ada.ada_value[idx] = dst_str;
+ idx++;
+ ada.ada_xpath[idx] = "./destination-network/mask";
+ ada.ada_value[idx] = dst_mask_str;
+ idx++;
+ } else {
+ ada.ada_xpath[idx] = "./destination-any";
+ ada.ada_value[idx] = "";
+ idx++;
}
+ if (acl_is_dup(vty->candidate_config->dnode, &ada))
+ return CMD_SUCCESS;
+
/*
* Create the access-list first, so we can generate sequence if
* none given (backward compatibility).
@@ -466,28 +460,25 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- ada.ada_type = "ipv4";
- ada.ada_name = name;
- ada.ada_action = action;
-
- if (prefix_str) {
- ada.ada_xpath[0] = "./ipv4-prefix";
- ada.ada_value[0] = prefix_str;
- if (exact) {
- ada.ada_xpath[1] = "./ipv4-exact-match";
- ada.ada_value[1] = "true";
- }
- } else {
- ada.ada_xpath[0] = "./any";
- ada.ada_value[0] = "";
- }
+ ada.ada_type = "ipv4";
+ ada.ada_name = name;
+ ada.ada_action = action;
- /* Duplicated entry without sequence, just quit. */
- if (acl_is_dup(vty->candidate_config->dnode, &ada))
- return CMD_SUCCESS;
+ if (prefix_str) {
+ ada.ada_xpath[0] = "./ipv4-prefix";
+ ada.ada_value[0] = prefix_str;
+ if (exact) {
+ ada.ada_xpath[1] = "./ipv4-exact-match";
+ ada.ada_value[1] = "true";
+ }
+ } else {
+ ada.ada_xpath[0] = "./any";
+ ada.ada_value[0] = "";
}
+ if (acl_is_dup(vty->candidate_config->dnode, &ada))
+ return CMD_SUCCESS;
+
/*
* Create the access-list first, so we can generate sequence if
* none given (backward compatibility).
@@ -656,28 +647,25 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- ada.ada_type = "ipv6";
- ada.ada_name = name;
- ada.ada_action = action;
-
- if (prefix_str) {
- ada.ada_xpath[0] = "./ipv6-prefix";
- ada.ada_value[0] = prefix_str;
- if (exact) {
- ada.ada_xpath[1] = "./ipv6-exact-match";
- ada.ada_value[1] = "true";
- }
- } else {
- ada.ada_xpath[0] = "./any";
- ada.ada_value[0] = "";
- }
+ ada.ada_type = "ipv6";
+ ada.ada_name = name;
+ ada.ada_action = action;
- /* Duplicated entry without sequence, just quit. */
- if (acl_is_dup(vty->candidate_config->dnode, &ada))
- return CMD_SUCCESS;
+ if (prefix_str) {
+ ada.ada_xpath[0] = "./ipv6-prefix";
+ ada.ada_value[0] = prefix_str;
+ if (exact) {
+ ada.ada_xpath[1] = "./ipv6-exact-match";
+ ada.ada_value[1] = "true";
+ }
+ } else {
+ ada.ada_xpath[0] = "./any";
+ ada.ada_value[0] = "";
}
+ if (acl_is_dup(vty->candidate_config->dnode, &ada))
+ return CMD_SUCCESS;
+
/*
* Create the access-list first, so we can generate sequence if
* none given (backward compatibility).
@@ -850,24 +838,21 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- ada.ada_type = "mac";
- ada.ada_name = name;
- ada.ada_action = action;
-
- if (mac_str) {
- ada.ada_xpath[0] = "./mac";
- ada.ada_value[0] = mac_str;
- } else {
- ada.ada_xpath[0] = "./any";
- ada.ada_value[0] = "";
- }
+ ada.ada_type = "mac";
+ ada.ada_name = name;
+ ada.ada_action = action;
- /* Duplicated entry without sequence, just quit. */
- if (acl_is_dup(vty->candidate_config->dnode, &ada))
- return CMD_SUCCESS;
+ if (mac_str) {
+ ada.ada_xpath[0] = "./mac";
+ ada.ada_value[0] = mac_str;
+ } else {
+ ada.ada_xpath[0] = "./any";
+ ada.ada_value[0] = "";
}
+ if (acl_is_dup(vty->candidate_config->dnode, &ada))
+ return CMD_SUCCESS;
+
/*
* Create the access-list first, so we can generate sequence if
* none given (backward compatibility).
@@ -1272,23 +1257,20 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- pda.pda_type = "ipv4";
- pda.pda_name = name;
- pda.pda_action = action;
- if (prefix_str) {
- prefix_copy(&pda.prefix, prefix);
- pda.ge = ge;
- pda.le = le;
- } else {
- pda.any = true;
- }
-
- /* Duplicated entry without sequence, just quit. */
- if (plist_is_dup(vty->candidate_config->dnode, &pda))
- return CMD_SUCCESS;
+ pda.pda_type = "ipv4";
+ pda.pda_name = name;
+ pda.pda_action = action;
+ if (prefix_str) {
+ prefix_copy(&pda.prefix, prefix);
+ pda.ge = ge;
+ pda.le = le;
+ } else {
+ pda.any = true;
}
+ if (plist_is_dup(vty->candidate_config->dnode, &pda))
+ return CMD_SUCCESS;
+
/*
* Create the prefix-list first, so we can generate sequence if
* none given (backward compatibility).
@@ -1476,23 +1458,20 @@ DEFPY_YANG(
* Backward compatibility: don't complain about duplicated values,
* just silently accept.
*/
- if (seq_str == NULL) {
- pda.pda_type = "ipv6";
- pda.pda_name = name;
- pda.pda_action = action;
- if (prefix_str) {
- prefix_copy(&pda.prefix, prefix);
- pda.ge = ge;
- pda.le = le;
- } else {
- pda.any = true;
- }
-
- /* Duplicated entry without sequence, just quit. */
- if (plist_is_dup(vty->candidate_config->dnode, &pda))
- return CMD_SUCCESS;
+ pda.pda_type = "ipv6";
+ pda.pda_name = name;
+ pda.pda_action = action;
+ if (prefix_str) {
+ prefix_copy(&pda.prefix, prefix);
+ pda.ge = ge;
+ pda.le = le;
+ } else {
+ pda.any = true;
}
+ if (plist_is_dup(vty->candidate_config->dnode, &pda))
+ return CMD_SUCCESS;
+
/*
* Create the prefix-list first, so we can generate sequence if
* none given (backward compatibility).
diff --git a/lib/prefix.c b/lib/prefix.c
index 4db0c2478b..1a3efd32b1 100644
--- a/lib/prefix.c
+++ b/lib/prefix.c
@@ -177,8 +177,10 @@ const char *safi2str(safi_t safi)
}
/* If n includes p prefix then return 1 else return 0. */
-int prefix_match(const struct prefix *n, const struct prefix *p)
+int prefix_match(union prefixconstptr unet, union prefixconstptr upfx)
{
+ const struct prefix *n = unet.p;
+ const struct prefix *p = upfx.p;
int offset;
int shift;
const uint8_t *np, *pp;
@@ -274,9 +276,11 @@ int evpn_type5_prefix_match(const struct prefix *n, const struct prefix *p)
}
/* If n includes p then return 1 else return 0. Prefix mask is not considered */
-int prefix_match_network_statement(const struct prefix *n,
- const struct prefix *p)
+int prefix_match_network_statement(union prefixconstptr unet,
+ union prefixconstptr upfx)
{
+ const struct prefix *n = unet.p;
+ const struct prefix *p = upfx.p;
int offset;
int shift;
const uint8_t *np, *pp;
@@ -472,8 +476,10 @@ int prefix_cmp(union prefixconstptr up1, union prefixconstptr up2)
* address families don't match, return -1; otherwise the return value is
* in range 0 ... maximum prefix length for the address family.
*/
-int prefix_common_bits(const struct prefix *p1, const struct prefix *p2)
+int prefix_common_bits(union prefixconstptr ua, union prefixconstptr ub)
{
+ const struct prefix *p1 = ua.p;
+ const struct prefix *p2 = ub.p;
int pos, bit;
int length = 0;
uint8_t xor ;
@@ -509,8 +515,10 @@ int prefix_common_bits(const struct prefix *p1, const struct prefix *p2)
}
/* Return prefix family type string. */
-const char *prefix_family_str(const struct prefix *p)
+const char *prefix_family_str(union prefixconstptr pu)
{
+ const struct prefix *p = pu.p;
+
if (p->family == AF_INET)
return "inet";
if (p->family == AF_INET6)
@@ -815,14 +823,16 @@ void apply_mask_ipv6(struct prefix_ipv6 *p)
}
}
-void apply_mask(struct prefix *p)
+void apply_mask(union prefixptr pu)
{
+ struct prefix *p = pu.p;
+
switch (p->family) {
case AF_INET:
- apply_mask_ipv4((struct prefix_ipv4 *)p);
+ apply_mask_ipv4(pu.p4);
break;
case AF_INET6:
- apply_mask_ipv6((struct prefix_ipv6 *)p);
+ apply_mask_ipv6(pu.p6);
break;
default:
break;
@@ -868,8 +878,10 @@ void prefix2sockunion(const struct prefix *p, union sockunion *su)
sizeof(struct in6_addr));
}
-int prefix_blen(const struct prefix *p)
+int prefix_blen(union prefixconstptr pu)
{
+ const struct prefix *p = pu.p;
+
switch (p->family) {
case AF_INET:
return IPV4_MAX_BYTELEN;
diff --git a/lib/prefix.h b/lib/prefix.h
index f1d6b2dc02..e043d41d30 100644
--- a/lib/prefix.h
+++ b/lib/prefix.h
@@ -287,13 +287,6 @@ static inline int is_evpn_prefix_ipaddr_v6(const struct prefix_evpn *evp)
return 0;
}
-/* Prefix for a generic pointer */
-struct prefix_ptr {
- uint8_t family;
- uint16_t prefixlen;
- uintptr_t prefix __attribute__((aligned(8)));
-};
-
/* Prefix for a Flowspec entry */
struct prefix_fs {
uint8_t family;
@@ -442,8 +435,8 @@ extern void prefix_free(struct prefix **p);
* Function to handle prefix_free being used as a del function.
*/
extern void prefix_free_lists(void *arg);
-extern const char *prefix_family_str(const struct prefix *);
-extern int prefix_blen(const struct prefix *);
+extern const char *prefix_family_str(union prefixconstptr pu);
+extern int prefix_blen(union prefixconstptr pu);
extern int str2prefix(const char *, struct prefix *);
#define PREFIX2STR_BUFFER PREFIX_STRLEN
@@ -454,14 +447,14 @@ extern const char *prefix_sg2str(const struct prefix_sg *sg, char *str);
extern const char *prefix2str(union prefixconstptr, char *, int);
extern int evpn_type5_prefix_match(const struct prefix *evpn_pfx,
const struct prefix *match_pfx);
-extern int prefix_match(const struct prefix *, const struct prefix *);
-extern int prefix_match_network_statement(const struct prefix *,
- const struct prefix *);
-extern int prefix_same(union prefixconstptr, union prefixconstptr);
-extern int prefix_cmp(union prefixconstptr, union prefixconstptr);
-extern int prefix_common_bits(const struct prefix *, const struct prefix *);
-extern void prefix_copy(union prefixptr, union prefixconstptr);
-extern void apply_mask(struct prefix *);
+extern int prefix_match(union prefixconstptr unet, union prefixconstptr upfx);
+extern int prefix_match_network_statement(union prefixconstptr unet,
+ union prefixconstptr upfx);
+extern int prefix_same(union prefixconstptr ua, union prefixconstptr ub);
+extern int prefix_cmp(union prefixconstptr ua, union prefixconstptr ub);
+extern int prefix_common_bits(union prefixconstptr ua, union prefixconstptr ub);
+extern void prefix_copy(union prefixptr udst, union prefixconstptr usrc);
+extern void apply_mask(union prefixptr pu);
#ifdef __clang_analyzer__
/* clang-SA doesn't understand transparent unions, making it think that the
diff --git a/lib/strformat.c b/lib/strformat.c
index a420ba553a..d941a7f04e 100644
--- a/lib/strformat.c
+++ b/lib/strformat.c
@@ -361,6 +361,8 @@ static ssize_t printfrr_abstime(struct fbuf *buf, struct printfrr_eargs *ea,
if (flags & TIMEFMT_SKIP)
return 0;
+ if (!ts)
+ return bputch(buf, '-');
if (flags & TIMEFMT_REALTIME)
*real_ts = *ts;
@@ -452,6 +454,8 @@ static ssize_t printfrr_reltime(struct fbuf *buf, struct printfrr_eargs *ea,
if (flags & TIMEFMT_SKIP)
return 0;
+ if (!ts)
+ return bputch(buf, '-');
if (flags & TIMEFMT_ABSOLUTE) {
struct timespec anchor[1];
@@ -561,8 +565,6 @@ static ssize_t printfrr_ts(struct fbuf *buf, struct printfrr_eargs *ea,
{
const struct timespec *ts = vptr;
- if (!ts)
- return bputs(buf, "(null)");
return printfrr_time(buf, ea, ts, 0);
}
@@ -574,7 +576,7 @@ static ssize_t printfrr_tv(struct fbuf *buf, struct printfrr_eargs *ea,
struct timespec ts;
if (!tv)
- return bputs(buf, "(null)");
+ return printfrr_time(buf, ea, NULL, 0);
ts.tv_sec = tv->tv_sec;
ts.tv_nsec = tv->tv_usec * 1000;
@@ -589,7 +591,7 @@ static ssize_t printfrr_tt(struct fbuf *buf, struct printfrr_eargs *ea,
struct timespec ts;
if (!tt)
- return bputs(buf, "(null)");
+ return printfrr_time(buf, ea, NULL, TIMEFMT_SECONDS);
ts.tv_sec = *tt;
ts.tv_nsec = 0;
diff --git a/lib/vty.h b/lib/vty.h
index e42a3b210f..430579c5a8 100644
--- a/lib/vty.h
+++ b/lib/vty.h
@@ -266,6 +266,15 @@ static inline void vty_push_context(struct vty *vty, int node, uint64_t id)
struct structname *ptr = VTY_GET_CONTEXT(structname); \
VTY_CHECK_CONTEXT(ptr);
+#define VTY_DECLVAR_CONTEXT_VRF(vrfptr) \
+ struct vrf *vrfptr; \
+ if (vty->node == CONFIG_NODE) \
+ vrfptr = vrf_lookup_by_id(VRF_DEFAULT); \
+ else \
+ vrfptr = VTY_GET_CONTEXT(vrf); \
+ VTY_CHECK_CONTEXT(vrfptr); \
+ MACRO_REQUIRE_SEMICOLON() /* end */
+
/* XPath macros. */
#define VTY_PUSH_XPATH(nodeval, value) \
do { \
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c
index f0ea4a03a1..289772260c 100644
--- a/pimd/pim6_cmd.c
+++ b/pimd/pim6_cmd.c
@@ -660,8 +660,11 @@ DEFPY (ipv6_mld_group_watermark,
"Configure group limit for watermark warning\n"
"Group count to generate watermark warning\n")
{
- PIM_DECLVAR_CONTEXT(vrf, pim);
+ PIM_DECLVAR_CONTEXT_VRF(vrf, pim);
+
/* TBD Depends on MLD data structure changes */
+ (void)pim;
+
return CMD_SUCCESS;
}
@@ -674,8 +677,11 @@ DEFPY (no_ipv6_mld_group_watermark,
"Unconfigure group limit for watermark warning\n"
IGNORED_IN_NO_STR)
{
- PIM_DECLVAR_CONTEXT(vrf, pim);
+ PIM_DECLVAR_CONTEXT_VRF(vrf, pim);
+
/* TBD Depends on MLD data structure changes */
+ (void)pim;
+
return CMD_SUCCESS;
}
@@ -1569,6 +1575,350 @@ DEFPY (show_ipv6_pim_nexthop_lookup,
return CMD_SUCCESS;
}
+DEFPY (show_ipv6_multicast,
+ show_ipv6_multicast_cmd,
+ "show ipv6 multicast [vrf NAME]",
+ SHOW_STR
+ IPV6_STR
+ "Multicast global information\n"
+ VRF_CMD_HELP_STR)
+{
+ struct vrf *v;
+ struct pim_instance *pim;
+
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
+ return CMD_WARNING;
+
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ pim_cmd_show_ip_multicast_helper(pim, vty);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_multicast_vrf_all,
+ show_ipv6_multicast_vrf_all_cmd,
+ "show ipv6 multicast vrf all",
+ SHOW_STR
+ IPV6_STR
+ "Multicast global information\n"
+ VRF_CMD_HELP_STR)
+{
+ struct vrf *vrf;
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ vty_out(vty, "VRF: %s\n", vrf->name);
+ pim_cmd_show_ip_multicast_helper(vrf->info, vty);
+ }
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_multicast_count,
+ show_ipv6_multicast_count_cmd,
+ "show ipv6 multicast count [vrf NAME] [json$json]",
+ SHOW_STR
+ IPV6_STR
+ "Multicast global information\n"
+ "Data packet count\n"
+ VRF_CMD_HELP_STR
+ JSON_STR)
+{
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
+
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
+ return CMD_WARNING;
+
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ show_multicast_interfaces(pim, vty, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_multicast_count_vrf_all,
+ show_ipv6_multicast_count_vrf_all_cmd,
+ "show ipv6 multicast count vrf all [json$json]",
+ SHOW_STR
+ IPV6_STR
+ "Multicast global information\n"
+ "Data packet count\n"
+ VRF_CMD_HELP_STR
+ JSON_STR)
+{
+ struct vrf *vrf;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ if (!json)
+ vty_out(vty, "VRF: %s\n", vrf->name);
+ else
+ json_vrf = json_object_new_object();
+
+ show_multicast_interfaces(vrf->info, vty, json_vrf);
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
+ }
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_mroute,
+ show_ipv6_mroute_cmd,
+ "show ipv6 mroute [vrf NAME] [X:X::X:X$s_or_g [X:X::X:X$g]] [fill$fill] [json$json]",
+ SHOW_STR
+ IPV6_STR
+ MROUTE_STR
+ VRF_CMD_HELP_STR
+ "The Source or Group\n"
+ "The Group\n"
+ "Fill in Assumed data\n"
+ JSON_STR)
+{
+ pim_sgaddr sg = {0};
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
+
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
+ return CMD_WARNING;
+
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ if (!pim_addr_is_any(s_or_g)) {
+ if (!pim_addr_is_any(g)) {
+ sg.src = s_or_g;
+ sg.grp = g;
+ } else
+ sg.grp = s_or_g;
+ }
+
+ show_mroute(pim, vty, &sg, !!fill, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_mroute_vrf_all,
+ show_ipv6_mroute_vrf_all_cmd,
+ "show ipv6 mroute vrf all [fill$fill] [json$json]",
+ SHOW_STR
+ IPV6_STR
+ MROUTE_STR
+ VRF_CMD_HELP_STR
+ "Fill in Assumed data\n"
+ JSON_STR)
+{
+ pim_sgaddr sg = {0};
+ struct vrf *vrf;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ if (!json)
+ vty_out(vty, "VRF: %s\n", vrf->name);
+ else
+ json_vrf = json_object_new_object();
+ show_mroute(vrf->info, vty, &sg, !!fill, json_vrf);
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
+ }
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_mroute_count,
+ show_ipv6_mroute_count_cmd,
+ "show ipv6 mroute [vrf NAME] count [json$json]",
+ SHOW_STR
+ IPV6_STR
+ MROUTE_STR
+ VRF_CMD_HELP_STR
+ "Route and packet count data\n"
+ JSON_STR)
+{
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
+
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
+ return CMD_WARNING;
+
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ show_mroute_count(pim, vty, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_mroute_count_vrf_all,
+ show_ipv6_mroute_count_vrf_all_cmd,
+ "show ipv6 mroute vrf all count [json$json]",
+ SHOW_STR
+ IPV6_STR
+ MROUTE_STR
+ VRF_CMD_HELP_STR
+ "Route and packet count data\n"
+ JSON_STR)
+{
+ struct vrf *vrf;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ if (!json)
+ vty_out(vty, "VRF: %s\n", vrf->name);
+ else
+ json_vrf = json_object_new_object();
+ show_mroute_count(vrf->info, vty, json_vrf);
+
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
+ }
+
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_mroute_summary,
+ show_ipv6_mroute_summary_cmd,
+ "show ipv6 mroute [vrf NAME] summary [json$json]",
+ SHOW_STR
+ IPV6_STR
+ MROUTE_STR
+ VRF_CMD_HELP_STR
+ "Summary of all mroutes\n"
+ JSON_STR)
+{
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
+
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
+ return CMD_WARNING;
+
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ show_mroute_summary(pim, vty, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (show_ipv6_mroute_summary_vrf_all,
+ show_ipv6_mroute_summary_vrf_all_cmd,
+ "show ipv6 mroute vrf all summary [json$json]",
+ SHOW_STR
+ IPV6_STR
+ MROUTE_STR
+ VRF_CMD_HELP_STR
+ "Summary of all mroutes\n"
+ JSON_STR)
+{
+ struct vrf *vrf;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ if (!json)
+ vty_out(vty, "VRF: %s\n", vrf->name);
+ else
+ json_vrf = json_object_new_object();
+
+ show_mroute_summary(vrf->info, vty, json_vrf);
+
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
+ }
+
+ if (json)
+ vty_json(vty, json_parent);
+
+ return CMD_SUCCESS;
+}
+
void pim_cmd_init(void)
{
if_cmd_init(pim_interface_config_write);
@@ -1665,4 +2015,14 @@ void pim_cmd_init(void)
install_element(VIEW_NODE, &show_ipv6_pim_neighbor_vrf_all_cmd);
install_element(VIEW_NODE, &show_ipv6_pim_nexthop_cmd);
install_element(VIEW_NODE, &show_ipv6_pim_nexthop_lookup_cmd);
+ install_element(VIEW_NODE, &show_ipv6_multicast_cmd);
+ install_element(VIEW_NODE, &show_ipv6_multicast_vrf_all_cmd);
+ install_element(VIEW_NODE, &show_ipv6_multicast_count_cmd);
+ install_element(VIEW_NODE, &show_ipv6_multicast_count_vrf_all_cmd);
+ install_element(VIEW_NODE, &show_ipv6_mroute_cmd);
+ install_element(VIEW_NODE, &show_ipv6_mroute_vrf_all_cmd);
+ install_element(VIEW_NODE, &show_ipv6_mroute_count_cmd);
+ install_element(VIEW_NODE, &show_ipv6_mroute_count_vrf_all_cmd);
+ install_element(VIEW_NODE, &show_ipv6_mroute_summary_cmd);
+ install_element(VIEW_NODE, &show_ipv6_mroute_summary_vrf_all_cmd);
}
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 6b17c8d0e5..b58727d9b5 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -1020,29 +1020,6 @@ static void pim_show_interface_traffic_single(struct pim_instance *pim,
vty_out(vty, "%% No such interface\n");
}
-static void show_scan_oil_stats(struct pim_instance *pim, struct vty *vty,
- time_t now)
-{
- char uptime_scan_oil[10];
- char uptime_mroute_add[10];
- char uptime_mroute_del[10];
-
- pim_time_uptime_begin(uptime_scan_oil, sizeof(uptime_scan_oil), now,
- pim->scan_oil_last);
- pim_time_uptime_begin(uptime_mroute_add, sizeof(uptime_mroute_add), now,
- pim->mroute_add_last);
- pim_time_uptime_begin(uptime_mroute_del, sizeof(uptime_mroute_del), now,
- pim->mroute_del_last);
-
- vty_out(vty,
- "Scan OIL - Last: %s Events: %lld\n"
- "MFC Add - Last: %s Events: %lld\n"
- "MFC Del - Last: %s Events: %lld\n",
- uptime_scan_oil, (long long)pim->scan_oil_events,
- uptime_mroute_add, (long long)pim->mroute_add_events,
- uptime_mroute_del, (long long)pim->mroute_del_events);
-}
-
/* Display the bsm database details */
static void pim_show_bsm_db(struct pim_instance *pim, struct vty *vty, bool uj)
{
@@ -3672,604 +3649,121 @@ DEFPY (show_ip_pim_statistics,
return CMD_SUCCESS;
}
-static void show_multicast_interfaces(struct pim_instance *pim, struct vty *vty,
- bool uj)
-{
- struct interface *ifp;
- char buf[PREFIX_STRLEN];
- json_object *json = NULL;
- json_object *json_row = NULL;
-
- vty_out(vty, "\n");
-
- if (uj)
- json = json_object_new_object();
- else
- vty_out(vty,
- "Interface Address ifi Vif PktsIn PktsOut BytesIn BytesOut\n");
-
- FOR_ALL_INTERFACES (pim->vrf, ifp) {
- struct pim_interface *pim_ifp;
- struct in_addr ifaddr;
- struct sioc_vif_req vreq;
-
- pim_ifp = ifp->info;
-
- if (!pim_ifp)
- continue;
-
- memset(&vreq, 0, sizeof(vreq));
- vreq.vifi = pim_ifp->mroute_vif_index;
-
- if (ioctl(pim->mroute_socket, SIOCGETVIFCNT, &vreq)) {
- zlog_warn(
- "ioctl(SIOCGETVIFCNT=%lu) failure for interface %s vif_index=%d: errno=%d: %s",
- (unsigned long)SIOCGETVIFCNT, ifp->name,
- pim_ifp->mroute_vif_index, errno,
- safe_strerror(errno));
- }
-
- ifaddr = pim_ifp->primary_address;
- if (uj) {
- json_row = json_object_new_object();
- 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_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);
- json_object_int_add(json_row, "pktsIn",
- (unsigned long)vreq.icount);
- json_object_int_add(json_row, "pktsOut",
- (unsigned long)vreq.ocount);
- json_object_int_add(json_row, "bytesIn",
- (unsigned long)vreq.ibytes);
- json_object_int_add(json_row, "bytesOut",
- (unsigned long)vreq.obytes);
- json_object_object_add(json, ifp->name, json_row);
- } else {
- vty_out(vty,
- "%-16s %-15s %3d %3d %7lu %7lu %10lu %10lu\n",
- ifp->name,
- inet_ntop(AF_INET, &ifaddr, buf, sizeof(buf)),
- ifp->ifindex, pim_ifp->mroute_vif_index,
- (unsigned long)vreq.icount,
- (unsigned long)vreq.ocount,
- (unsigned long)vreq.ibytes,
- (unsigned long)vreq.obytes);
- }
- }
-
- if (uj)
- vty_json(vty, json);
-}
-
-static void pim_cmd_show_ip_multicast_helper(struct pim_instance *pim,
- struct vty *vty)
-{
- struct vrf *vrf = pim->vrf;
- time_t now = pim_time_monotonic_sec();
- char uptime[10];
- char mlag_role[80];
-
- pim = vrf->info;
-
- vty_out(vty, "Router MLAG Role: %s\n",
- mlag_role2str(router->mlag_role, mlag_role, sizeof(mlag_role)));
- vty_out(vty, "Mroute socket descriptor:");
-
- vty_out(vty, " %d(%s)\n", pim->mroute_socket, vrf->name);
-
- pim_time_uptime(uptime, sizeof(uptime),
- now - pim->mroute_socket_creation);
- vty_out(vty, "Mroute socket uptime: %s\n", uptime);
-
- vty_out(vty, "\n");
-
- pim_zebra_zclient_update(vty);
- pim_zlookup_show_ip_multicast(vty);
-
- vty_out(vty, "\n");
- vty_out(vty, "Maximum highest VifIndex: %d\n", PIM_MAX_USABLE_VIFS);
-
- vty_out(vty, "\n");
- vty_out(vty, "Upstream Join Timer: %d secs\n", router->t_periodic);
- vty_out(vty, "Join/Prune Holdtime: %d secs\n", PIM_JP_HOLDTIME);
- vty_out(vty, "PIM ECMP: %s\n", pim->ecmp_enable ? "Enable" : "Disable");
- vty_out(vty, "PIM ECMP Rebalance: %s\n",
- pim->ecmp_rebalance_enable ? "Enable" : "Disable");
-
- vty_out(vty, "\n");
-
- pim_show_rpf_refresh_stats(vty, pim, now, NULL);
-
- vty_out(vty, "\n");
-
- show_scan_oil_stats(pim, vty, now);
-
- show_multicast_interfaces(pim, vty, false);
-}
-
-DEFUN (show_ip_multicast,
+DEFPY (show_ip_multicast,
show_ip_multicast_cmd,
"show ip multicast [vrf NAME]",
SHOW_STR
IP_STR
- VRF_CMD_HELP_STR
- "Multicast global information\n")
+ "Multicast global information\n"
+ VRF_CMD_HELP_STR)
{
- int idx = 2;
- struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
+ struct vrf *v;
+ struct pim_instance *pim;
- if (!vrf)
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
+ return CMD_WARNING;
+
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
return CMD_WARNING;
+ }
- pim_cmd_show_ip_multicast_helper(vrf->info, vty);
+ pim_cmd_show_ip_multicast_helper(pim, vty);
return CMD_SUCCESS;
}
-DEFUN (show_ip_multicast_vrf_all,
+DEFPY (show_ip_multicast_vrf_all,
show_ip_multicast_vrf_all_cmd,
"show ip multicast vrf all",
SHOW_STR
IP_STR
- VRF_CMD_HELP_STR
- "Multicast global information\n")
+ "Multicast global information\n"
+ VRF_CMD_HELP_STR)
{
- bool uj = use_json(argc, argv);
struct vrf *vrf;
- bool first = true;
- if (uj)
- vty_out(vty, "{ ");
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- if (uj) {
- if (!first)
- vty_out(vty, ", ");
- vty_out(vty, " \"%s\": ", vrf->name);
- first = false;
- } else
- vty_out(vty, "VRF: %s\n", vrf->name);
+ vty_out(vty, "VRF: %s\n", vrf->name);
pim_cmd_show_ip_multicast_helper(vrf->info, vty);
}
- if (uj)
- vty_out(vty, "}\n");
return CMD_SUCCESS;
}
-DEFUN(show_ip_multicast_count,
- show_ip_multicast_count_cmd,
- "show ip multicast count [vrf NAME] [json]",
- SHOW_STR IP_STR
- "Multicast global information\n"
- "Data packet count\n"
- VRF_CMD_HELP_STR JSON_STR)
+DEFPY (show_ip_multicast_count,
+ show_ip_multicast_count_cmd,
+ "show ip multicast count [vrf NAME] [json$json]",
+ SHOW_STR
+ IP_STR
+ "Multicast global information\n"
+ "Data packet count\n"
+ VRF_CMD_HELP_STR
+ JSON_STR)
{
- int idx = 3;
- struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
- bool uj = use_json(argc, argv);
-
- if (!vrf)
- return CMD_WARNING;
-
- show_multicast_interfaces(vrf->info, vty, uj);
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
- return CMD_SUCCESS;
-}
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
-DEFUN(show_ip_multicast_count_vrf_all,
- show_ip_multicast_count_vrf_all_cmd,
- "show ip multicast count vrf all [json]",
- SHOW_STR IP_STR
- "Multicast global information\n"
- "Data packet count\n"
- VRF_CMD_HELP_STR JSON_STR)
-{
- bool uj = use_json(argc, argv);
- struct vrf *vrf;
- bool first = true;
+ if (!v)
+ return CMD_WARNING;
- if (uj)
- vty_out(vty, "{ ");
+ pim = pim_get_pim_instance(v->vrf_id);
- RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- if (uj) {
- if (!first)
- vty_out(vty, ", ");
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
- vty_out(vty, " \"%s\": ", vrf->name);
- first = false;
- } else
- vty_out(vty, "VRF: %s\n", vrf->name);
+ if (json)
+ json_parent = json_object_new_object();
- show_multicast_interfaces(vrf->info, vty, uj);
- }
+ show_multicast_interfaces(pim, vty, json_parent);
- if (uj)
- vty_out(vty, "}\n");
+ if (json)
+ vty_json(vty, json_parent);
return CMD_SUCCESS;
}
-static void show_mroute(struct pim_instance *pim, struct vty *vty,
- pim_sgaddr *sg, bool fill, bool uj)
+DEFPY (show_ip_multicast_count_vrf_all,
+ show_ip_multicast_count_vrf_all_cmd,
+ "show ip multicast count vrf all [json$json]",
+ SHOW_STR
+ IP_STR
+ "Multicast global information\n"
+ "Data packet count\n"
+ VRF_CMD_HELP_STR
+ JSON_STR)
{
- struct listnode *node;
- struct channel_oil *c_oil;
- struct static_route *s_route;
- time_t now;
- json_object *json = NULL;
- json_object *json_group = NULL;
- json_object *json_source = NULL;
- json_object *json_oil = NULL;
- json_object *json_ifp_out = NULL;
- int found_oif;
- int first;
- char grp_str[INET_ADDRSTRLEN];
- char src_str[INET_ADDRSTRLEN];
- char in_ifname[INTERFACE_NAMSIZ + 1];
- char out_ifname[INTERFACE_NAMSIZ + 1];
- int oif_vif_index;
- struct interface *ifp_in;
- char proto[100];
- char state_str[PIM_REG_STATE_STR_LEN];
- char mroute_uptime[10];
-
- if (uj) {
- json = json_object_new_object();
- } else {
- vty_out(vty, "IP Multicast Routing Table\n");
- vty_out(vty, "Flags: S - Sparse, C - Connected, P - Pruned\n");
- vty_out(vty,
- " R - SGRpt Pruned, F - Register flag, T - SPT-bit set\n");
- vty_out(vty,
- "\nSource Group Flags Proto Input Output TTL Uptime\n");
- }
-
- now = pim_time_monotonic_sec();
-
- /* print list of PIM and IGMP routes */
- frr_each (rb_pim_oil, &pim->channel_oil_head, c_oil) {
- found_oif = 0;
- first = 1;
- if (!c_oil->installed)
- continue;
-
- if (!pim_addr_is_any(sg->grp) &&
- pim_addr_cmp(sg->grp, c_oil->oil.mfcc_mcastgrp))
- continue;
- if (!pim_addr_is_any(sg->src) &&
- pim_addr_cmp(sg->src, c_oil->oil.mfcc_origin))
- continue;
-
- pim_inet4_dump("<group?>", c_oil->oil.mfcc_mcastgrp, grp_str,
- sizeof(grp_str));
- pim_inet4_dump("<source?>", c_oil->oil.mfcc_origin, src_str,
- sizeof(src_str));
-
- strlcpy(state_str, "S", sizeof(state_str));
- /* When a non DR receives a igmp join, it creates a (*,G)
- * channel_oil without any upstream creation */
- if (c_oil->up) {
- if (PIM_UPSTREAM_FLAG_TEST_SRC_IGMP(c_oil->up->flags))
- strlcat(state_str, "C", sizeof(state_str));
- if (pim_upstream_is_sg_rpt(c_oil->up))
- strlcat(state_str, "R", sizeof(state_str));
- if (PIM_UPSTREAM_FLAG_TEST_FHR(c_oil->up->flags))
- strlcat(state_str, "F", sizeof(state_str));
- if (c_oil->up->sptbit == PIM_UPSTREAM_SPTBIT_TRUE)
- strlcat(state_str, "T", sizeof(state_str));
- }
- if (pim_channel_oil_empty(c_oil))
- strlcat(state_str, "P", sizeof(state_str));
-
- ifp_in = pim_if_find_by_vif_index(pim, c_oil->oil.mfcc_parent);
-
- if (ifp_in)
- strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
- else
- strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
-
-
- pim_time_uptime(mroute_uptime, sizeof(mroute_uptime),
- now - c_oil->mroute_creation);
-
- if (uj) {
-
- /* Find the group, create it if it doesn't exist */
- json_object_object_get_ex(json, grp_str, &json_group);
-
- if (!json_group) {
- json_group = json_object_new_object();
- json_object_object_add(json, grp_str,
- json_group);
- }
-
- /* Find the source nested under the group, create it if
- * it doesn't exist
- */
- json_object_object_get_ex(json_group, src_str,
- &json_source);
-
- if (!json_source) {
- json_source = json_object_new_object();
- json_object_object_add(json_group, src_str,
- json_source);
- }
-
- /* Find the inbound interface nested under the source,
- * create it if it doesn't exist */
- json_object_string_add(json_source, "source",
- src_str);
- json_object_string_add(json_source, "group",
- grp_str);
- json_object_int_add(json_source, "installed",
- c_oil->installed);
- json_object_int_add(json_source, "refCount",
- c_oil->oil_ref_count);
- json_object_int_add(json_source, "oilSize",
- c_oil->oil_size);
- json_object_int_add(json_source, "OilInheritedRescan",
- c_oil->oil_inherited_rescan);
- json_object_int_add(json_source, "oilInheritedRescan",
- c_oil->oil_inherited_rescan);
- json_object_string_add(json_source, "iif", in_ifname);
- json_object_string_add(json_source, "upTime",
- mroute_uptime);
- json_oil = NULL;
- }
-
- for (oif_vif_index = 0; oif_vif_index < MAXVIFS;
- ++oif_vif_index) {
- struct interface *ifp_out;
- int ttl;
-
- ttl = c_oil->oil.mfcc_ttls[oif_vif_index];
- if (ttl < 1)
- continue;
-
- /* do not display muted OIFs */
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_MUTE)
- continue;
-
- if (c_oil->oil.mfcc_parent == oif_vif_index &&
- !pim_mroute_allow_iif_in_oil(c_oil,
- oif_vif_index))
- continue;
-
- ifp_out = pim_if_find_by_vif_index(pim, oif_vif_index);
- found_oif = 1;
-
- if (ifp_out)
- strlcpy(out_ifname, ifp_out->name, sizeof(out_ifname));
- else
- strlcpy(out_ifname, "<oif?>", sizeof(out_ifname));
-
- if (uj) {
- json_ifp_out = json_object_new_object();
- json_object_string_add(json_ifp_out, "source",
- src_str);
- json_object_string_add(json_ifp_out, "group",
- grp_str);
-
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_PROTO_PIM)
- json_object_boolean_true_add(
- json_ifp_out, "protocolPim");
-
- if (c_oil->oif_flags[oif_vif_index] &
- PIM_OIF_FLAG_PROTO_GM)
- json_object_boolean_true_add(
- json_ifp_out, "protocolIgmp");
-
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_PROTO_VXLAN)
- json_object_boolean_true_add(
- json_ifp_out, "protocolVxlan");
-
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_PROTO_STAR)
- json_object_boolean_true_add(
- json_ifp_out,
- "protocolInherited");
-
- json_object_string_add(json_ifp_out,
- "inboundInterface",
- in_ifname);
- json_object_int_add(json_ifp_out, "iVifI",
- c_oil->oil.mfcc_parent);
- json_object_string_add(json_ifp_out,
- "outboundInterface",
- out_ifname);
- json_object_int_add(json_ifp_out, "oVifI",
- oif_vif_index);
- json_object_int_add(json_ifp_out, "ttl", ttl);
- json_object_string_add(json_ifp_out, "upTime",
- mroute_uptime);
- json_object_string_add(json_source, "flags",
- state_str);
- if (!json_oil) {
- json_oil = json_object_new_object();
- json_object_object_add(json_source,
- "oil", json_oil);
- }
- json_object_object_add(json_oil, out_ifname,
- json_ifp_out);
- } else {
- proto[0] = '\0';
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_PROTO_PIM) {
- strlcpy(proto, "PIM", sizeof(proto));
- }
-
- if (c_oil->oif_flags[oif_vif_index] &
- PIM_OIF_FLAG_PROTO_GM) {
- strlcpy(proto, "IGMP", sizeof(proto));
- }
-
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_PROTO_VXLAN) {
- strlcpy(proto, "VxLAN", sizeof(proto));
- }
-
- if (c_oil->oif_flags[oif_vif_index]
- & PIM_OIF_FLAG_PROTO_STAR) {
- strlcpy(proto, "STAR", sizeof(proto));
- }
-
- vty_out(vty,
- "%-15s %-15s %-8s %-6s %-16s %-16s %-3d %8s\n",
- src_str, grp_str, state_str, proto,
- in_ifname, out_ifname, ttl,
- mroute_uptime);
-
- if (first) {
- src_str[0] = '\0';
- grp_str[0] = '\0';
- in_ifname[0] = '\0';
- state_str[0] = '\0';
- mroute_uptime[0] = '\0';
- first = 0;
- }
- }
- }
-
- if (!uj && !found_oif) {
- vty_out(vty,
- "%-15s %-15s %-8s %-6s %-16s %-16s %-3d %8s\n",
- src_str, grp_str, state_str, "none", in_ifname,
- "none", 0, "--:--:--");
- }
- }
-
- /* Print list of static routes */
- for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, s_route)) {
- first = 1;
-
- if (!s_route->c_oil.installed)
- continue;
+ struct vrf *vrf;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
- pim_inet4_dump("<group?>", s_route->group, grp_str,
- sizeof(grp_str));
- pim_inet4_dump("<source?>", s_route->source, src_str,
- sizeof(src_str));
- ifp_in = pim_if_find_by_vif_index(pim, s_route->iif);
- found_oif = 0;
+ if (json)
+ json_parent = json_object_new_object();
- if (ifp_in)
- strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ if (!json)
+ vty_out(vty, "VRF: %s\n", vrf->name);
else
- strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
-
- if (uj) {
-
- /* Find the group, create it if it doesn't exist */
- json_object_object_get_ex(json, grp_str, &json_group);
-
- if (!json_group) {
- json_group = json_object_new_object();
- json_object_object_add(json, grp_str,
- json_group);
- }
-
- /* Find the source nested under the group, create it if
- * it doesn't exist */
- json_object_object_get_ex(json_group, src_str,
- &json_source);
-
- if (!json_source) {
- json_source = json_object_new_object();
- json_object_object_add(json_group, src_str,
- json_source);
- }
-
- json_object_string_add(json_source, "iif", in_ifname);
- json_oil = NULL;
- } else {
- strlcpy(proto, "STATIC", sizeof(proto));
- }
-
- for (oif_vif_index = 0; oif_vif_index < MAXVIFS;
- ++oif_vif_index) {
- struct interface *ifp_out;
- char oif_uptime[10];
- int ttl;
-
- ttl = s_route->oif_ttls[oif_vif_index];
- if (ttl < 1)
- continue;
-
- ifp_out = pim_if_find_by_vif_index(pim, oif_vif_index);
- pim_time_uptime(
- oif_uptime, sizeof(oif_uptime),
- now
- - s_route->c_oil
- .oif_creation[oif_vif_index]);
- found_oif = 1;
-
- if (ifp_out)
- strlcpy(out_ifname, ifp_out->name, sizeof(out_ifname));
- else
- strlcpy(out_ifname, "<oif?>", sizeof(out_ifname));
-
- if (uj) {
- json_ifp_out = json_object_new_object();
- json_object_string_add(json_ifp_out, "source",
- src_str);
- json_object_string_add(json_ifp_out, "group",
- grp_str);
- json_object_boolean_true_add(json_ifp_out,
- "protocolStatic");
- json_object_string_add(json_ifp_out,
- "inboundInterface",
- in_ifname);
- json_object_int_add(
- json_ifp_out, "iVifI",
- s_route->c_oil.oil.mfcc_parent);
- json_object_string_add(json_ifp_out,
- "outboundInterface",
- out_ifname);
- json_object_int_add(json_ifp_out, "oVifI",
- oif_vif_index);
- json_object_int_add(json_ifp_out, "ttl", ttl);
- json_object_string_add(json_ifp_out, "upTime",
- oif_uptime);
- if (!json_oil) {
- json_oil = json_object_new_object();
- json_object_object_add(json_source,
- "oil", json_oil);
- }
- json_object_object_add(json_oil, out_ifname,
- json_ifp_out);
- } else {
- vty_out(vty,
- "%-15s %-15s %-8s %-6s %-16s %-16s %-3d %8s\n",
- src_str, grp_str, "-", proto, in_ifname,
- out_ifname, ttl, oif_uptime);
- if (first && !fill) {
- src_str[0] = '\0';
- grp_str[0] = '\0';
- in_ifname[0] = '\0';
- first = 0;
- }
- }
- }
+ json_vrf = json_object_new_object();
- if (!uj && !found_oif) {
- vty_out(vty,
- "%-15s %-15s %-8s %-6s %-16s %-16s %-3d %8s\n",
- src_str, grp_str, "-", proto, in_ifname, "none",
- 0, "--:--:--");
- }
+ show_multicast_interfaces(vrf->info, vty, json_vrf);
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
}
+ if (json)
+ vty_json(vty, json_parent);
- if (uj)
- vty_json(vty, json);
+ return CMD_SUCCESS;
}
DEFPY (show_ip_mroute,
@@ -4287,13 +3781,13 @@ DEFPY (show_ip_mroute,
pim_sgaddr sg = {0};
struct pim_instance *pim;
struct vrf *v;
+ json_object *json_parent = NULL;
v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
- if (!v) {
- vty_out(vty, "%% Vrf specified: %s does not exist\n", vrf);
+ if (!v)
return CMD_WARNING;
- }
+
pim = pim_get_pim_instance(v->vrf_id);
if (!pim) {
@@ -4301,6 +3795,9 @@ DEFPY (show_ip_mroute,
return CMD_WARNING;
}
+ if (json)
+ json_parent = json_object_new_object();
+
if (s_or_g.s_addr != INADDR_ANY) {
if (g.s_addr != INADDR_ANY) {
sg.src = s_or_g;
@@ -4308,13 +3805,18 @@ DEFPY (show_ip_mroute,
} else
sg.grp = s_or_g;
}
- show_mroute(pim, vty, &sg, !!fill, !!json);
+
+ show_mroute(pim, vty, &sg, !!fill, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
+
return CMD_SUCCESS;
}
-DEFUN (show_ip_mroute_vrf_all,
+DEFPY (show_ip_mroute_vrf_all,
show_ip_mroute_vrf_all_cmd,
- "show ip mroute vrf all [fill] [json]",
+ "show ip mroute vrf all [fill$fill] [json$json]",
SHOW_STR
IP_STR
MROUTE_STR
@@ -4323,29 +3825,25 @@ DEFUN (show_ip_mroute_vrf_all,
JSON_STR)
{
pim_sgaddr sg = {0};
- bool uj = use_json(argc, argv);
- int idx = 4;
struct vrf *vrf;
- bool first = true;
- bool fill = false;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
- if (argv_find(argv, argc, "fill", &idx))
- fill = true;
+ if (json)
+ json_parent = json_object_new_object();
- if (uj)
- vty_out(vty, "{ ");
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- if (uj) {
- if (!first)
- vty_out(vty, ", ");
- vty_out(vty, " \"%s\": ", vrf->name);
- first = false;
- } else
+ if (!json)
vty_out(vty, "VRF: %s\n", vrf->name);
- show_mroute(vrf->info, vty, &sg, fill, uj);
+ else
+ json_vrf = json_object_new_object();
+ show_mroute(vrf->info, vty, &sg, !!fill, json_vrf);
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
}
- if (uj)
- vty_out(vty, "}\n");
+ if (json)
+ vty_json(vty, json_parent);
return CMD_SUCCESS;
}
@@ -4393,81 +3891,9 @@ DEFUN (clear_ip_mroute_count,
return CMD_SUCCESS;
}
-static void show_mroute_count_per_channel_oil(struct channel_oil *c_oil,
- json_object *json,
- struct vty *vty)
-{
- char group_str[INET_ADDRSTRLEN];
- char source_str[INET_ADDRSTRLEN];
- json_object *json_group = NULL;
- json_object *json_source = NULL;
-
- if (!c_oil->installed)
- return;
-
- pim_mroute_update_counters(c_oil);
-
- pim_inet4_dump("<group?>", c_oil->oil.mfcc_mcastgrp, group_str,
- sizeof(group_str));
- pim_inet4_dump("<source?>", c_oil->oil.mfcc_origin, source_str,
- sizeof(source_str));
-
- if (json) {
- json_object_object_get_ex(json, group_str, &json_group);
-
- if (!json_group) {
- json_group = json_object_new_object();
- json_object_object_add(json, group_str, json_group);
- }
-
- json_source = json_object_new_object();
- json_object_object_add(json_group, source_str, json_source);
- json_object_int_add(json_source, "lastUsed",
- c_oil->cc.lastused / 100);
- json_object_int_add(json_source, "packets", c_oil->cc.pktcnt);
- json_object_int_add(json_source, "bytes", c_oil->cc.bytecnt);
- json_object_int_add(json_source, "wrongIf", c_oil->cc.wrong_if);
-
- } else {
- vty_out(vty, "%-15s %-15s %-8llu %-7ld %-10ld %-7ld\n",
- source_str, group_str, c_oil->cc.lastused / 100,
- c_oil->cc.pktcnt - c_oil->cc.origpktcnt,
- c_oil->cc.bytecnt - c_oil->cc.origbytecnt,
- c_oil->cc.wrong_if - c_oil->cc.origwrong_if);
- }
-}
-
-static void show_mroute_count(struct pim_instance *pim, struct vty *vty,
- bool uj)
-{
- struct listnode *node;
- struct channel_oil *c_oil;
- struct static_route *sr;
- json_object *json = NULL;
-
- if (uj)
- json = json_object_new_object();
- else {
- vty_out(vty, "\n");
-
- vty_out(vty,
- "Source Group LastUsed Packets Bytes WrongIf \n");
- }
-
- /* Print PIM and IGMP route counts */
- frr_each (rb_pim_oil, &pim->channel_oil_head, c_oil)
- show_mroute_count_per_channel_oil(c_oil, json, vty);
-
- for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, sr))
- show_mroute_count_per_channel_oil(&sr->c_oil, json, vty);
-
- if (uj)
- vty_json(vty, json);
-}
-
-DEFUN (show_ip_mroute_count,
+DEFPY (show_ip_mroute_count,
show_ip_mroute_count_cmd,
- "show ip mroute [vrf NAME] count [json]",
+ "show ip mroute [vrf NAME] count [json$json]",
SHOW_STR
IP_STR
MROUTE_STR
@@ -4475,20 +3901,36 @@ DEFUN (show_ip_mroute_count,
"Route and packet count data\n"
JSON_STR)
{
- int idx = 2;
- bool uj = use_json(argc, argv);
- struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
- if (!vrf)
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+ if (!v)
return CMD_WARNING;
- show_mroute_count(vrf->info, vty, uj);
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ show_mroute_count(pim, vty, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
+
return CMD_SUCCESS;
}
-DEFUN (show_ip_mroute_count_vrf_all,
+DEFPY (show_ip_mroute_count_vrf_all,
show_ip_mroute_count_vrf_all_cmd,
- "show ip mroute vrf all count [json]",
+ "show ip mroute vrf all count [json$json]",
SHOW_STR
IP_STR
MROUTE_STR
@@ -4496,112 +3938,34 @@ DEFUN (show_ip_mroute_count_vrf_all,
"Route and packet count data\n"
JSON_STR)
{
- bool uj = use_json(argc, argv);
struct vrf *vrf;
- bool first = true;
+ json_object *json_parent = NULL;
+ json_object *json_vrf = NULL;
+
+ if (json)
+ json_parent = json_object_new_object();
- if (uj)
- vty_out(vty, "{ ");
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- if (uj) {
- if (!first)
- vty_out(vty, ", ");
- vty_out(vty, " \"%s\": ", vrf->name);
- first = false;
- } else
+ if (!json)
vty_out(vty, "VRF: %s\n", vrf->name);
- show_mroute_count(vrf->info, vty, uj);
- }
- if (uj)
- vty_out(vty, "}\n");
-
- return CMD_SUCCESS;
-}
+ else
+ json_vrf = json_object_new_object();
-static void show_mroute_summary(struct pim_instance *pim, struct vty *vty,
- json_object *json)
-{
- struct listnode *node;
- struct channel_oil *c_oil;
- struct static_route *s_route;
- uint32_t starg_sw_mroute_cnt = 0;
- uint32_t sg_sw_mroute_cnt = 0;
- uint32_t starg_hw_mroute_cnt = 0;
- uint32_t sg_hw_mroute_cnt = 0;
- json_object *json_starg = NULL;
- json_object *json_sg = NULL;
-
- if (!json)
- vty_out(vty, "Mroute Type Installed/Total\n");
-
- frr_each (rb_pim_oil, &pim->channel_oil_head, c_oil) {
- if (!c_oil->installed) {
- if (c_oil->oil.mfcc_origin.s_addr == INADDR_ANY)
- starg_sw_mroute_cnt++;
- else
- sg_sw_mroute_cnt++;
- } else {
- if (c_oil->oil.mfcc_origin.s_addr == INADDR_ANY)
- starg_hw_mroute_cnt++;
- else
- sg_hw_mroute_cnt++;
- }
- }
+ show_mroute_count(vrf->info, vty, json_vrf);
- for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, s_route)) {
- if (!s_route->c_oil.installed) {
- if (s_route->c_oil.oil.mfcc_origin.s_addr == INADDR_ANY)
- starg_sw_mroute_cnt++;
- else
- sg_sw_mroute_cnt++;
- } else {
- if (s_route->c_oil.oil.mfcc_origin.s_addr == INADDR_ANY)
- starg_hw_mroute_cnt++;
- else
- sg_hw_mroute_cnt++;
- }
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
}
+ if (json)
+ vty_json(vty, json_parent);
- if (!json) {
- vty_out(vty, "%-20s %u/%u\n", "(*, G)", starg_hw_mroute_cnt,
- starg_sw_mroute_cnt + starg_hw_mroute_cnt);
- vty_out(vty, "%-20s %u/%u\n", "(S, G)", sg_hw_mroute_cnt,
- sg_sw_mroute_cnt + sg_hw_mroute_cnt);
- vty_out(vty, "------\n");
- vty_out(vty, "%-20s %u/%u\n", "Total",
- (starg_hw_mroute_cnt + sg_hw_mroute_cnt),
- (starg_sw_mroute_cnt + starg_hw_mroute_cnt
- + sg_sw_mroute_cnt + sg_hw_mroute_cnt));
- } else {
- /* (*,G) route details */
- json_starg = json_object_new_object();
- json_object_object_add(json, "wildcardGroup", json_starg);
-
- json_object_int_add(json_starg, "installed",
- starg_hw_mroute_cnt);
- json_object_int_add(json_starg, "total",
- starg_sw_mroute_cnt + starg_hw_mroute_cnt);
-
- /* (S, G) route details */
- json_sg = json_object_new_object();
- json_object_object_add(json, "sourceGroup", json_sg);
-
- json_object_int_add(json_sg, "installed", sg_hw_mroute_cnt);
- json_object_int_add(json_sg, "total",
- sg_sw_mroute_cnt + sg_hw_mroute_cnt);
-
- json_object_int_add(json, "totalNumOfInstalledMroutes",
- starg_hw_mroute_cnt + sg_hw_mroute_cnt);
- json_object_int_add(json, "totalNumOfMroutes",
- starg_sw_mroute_cnt + starg_hw_mroute_cnt
- + sg_sw_mroute_cnt
- + sg_hw_mroute_cnt);
- }
+ return CMD_SUCCESS;
}
-DEFUN (show_ip_mroute_summary,
+DEFPY (show_ip_mroute_summary,
show_ip_mroute_summary_cmd,
- "show ip mroute [vrf NAME] summary [json]",
+ "show ip mroute [vrf NAME] summary [json$json]",
SHOW_STR
IP_STR
MROUTE_STR
@@ -4609,27 +3973,36 @@ DEFUN (show_ip_mroute_summary,
"Summary of all mroutes\n"
JSON_STR)
{
- int idx = 2;
- bool uj = use_json(argc, argv);
- struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
- json_object *json = NULL;
+ struct pim_instance *pim;
+ struct vrf *v;
+ json_object *json_parent = NULL;
- if (uj)
- json = json_object_new_object();
+ v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
- if (!vrf)
+ if (!v)
return CMD_WARNING;
- show_mroute_summary(vrf->info, vty, json);
+ pim = pim_get_pim_instance(v->vrf_id);
+
+ if (!pim) {
+ vty_out(vty, "%% Unable to find pim instance\n");
+ return CMD_WARNING;
+ }
+
+ if (json)
+ json_parent = json_object_new_object();
+
+ show_mroute_summary(pim, vty, json_parent);
+
+ if (json)
+ vty_json(vty, json_parent);
- if (uj)
- vty_json(vty, json);
return CMD_SUCCESS;
}
-DEFUN (show_ip_mroute_summary_vrf_all,
+DEFPY (show_ip_mroute_summary_vrf_all,
show_ip_mroute_summary_vrf_all_cmd,
- "show ip mroute vrf all summary [json]",
+ "show ip mroute vrf all summary [json$json]",
SHOW_STR
IP_STR
MROUTE_STR
@@ -4638,27 +4011,27 @@ DEFUN (show_ip_mroute_summary_vrf_all,
JSON_STR)
{
struct vrf *vrf;
- bool uj = use_json(argc, argv);
- json_object *json = NULL;
+ json_object *json_parent = NULL;
json_object *json_vrf = NULL;
- if (uj)
- json = json_object_new_object();
+ if (json)
+ json_parent = json_object_new_object();
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- if (uj)
- json_vrf = json_object_new_object();
- else
+ if (!json)
vty_out(vty, "VRF: %s\n", vrf->name);
+ else
+ json_vrf = json_object_new_object();
show_mroute_summary(vrf->info, vty, json_vrf);
- if (uj)
- json_object_object_add(json, vrf->name, json_vrf);
+ if (json)
+ json_object_object_add(json_parent, vrf->name,
+ json_vrf);
}
- if (uj)
- vty_json(vty, json);
+ if (json)
+ vty_json(vty, json_parent);
return CMD_SUCCESS;
}
@@ -4977,7 +4350,7 @@ DEFPY (ip_igmp_group_watermark,
"Configure group limit for watermark warning\n"
"Group count to generate watermark warning\n")
{
- PIM_DECLVAR_CONTEXT(vrf, pim);
+ PIM_DECLVAR_CONTEXT_VRF(vrf, pim);
pim->igmp_watermark_limit = limit;
return CMD_SUCCESS;
@@ -4992,7 +4365,7 @@ DEFPY (no_ip_igmp_group_watermark,
"Unconfigure group limit for watermark warning\n"
IGNORED_IN_NO_STR)
{
- PIM_DECLVAR_CONTEXT(vrf, pim);
+ PIM_DECLVAR_CONTEXT_VRF(vrf, pim);
pim->igmp_watermark_limit = 0;
return CMD_SUCCESS;
diff --git a/pimd/pim_cmd_common.c b/pimd/pim_cmd_common.c
index dfba369e5b..d69b94ab12 100644
--- a/pimd/pim_cmd_common.c
+++ b/pimd/pim_cmd_common.c
@@ -52,6 +52,7 @@
#include "pim_sock.h"
#include "pim_ssm.h"
#include "pim_addr.h"
+#include "pim_static.h"
/**
* Get current node VRF name.
@@ -2837,7 +2838,6 @@ int gm_process_no_last_member_query_interval_cmd(struct vty *vty)
FRR_PIM_AF_XPATH_VAL);
}
-
int pim_process_ssmpingd_cmd(struct vty *vty, enum nb_operation operation,
const char *src_str)
{
@@ -2858,3 +2858,684 @@ int pim_process_ssmpingd_cmd(struct vty *vty, enum nb_operation operation,
return nb_cli_apply_changes(vty, NULL);
}
+
+static void show_scan_oil_stats(struct pim_instance *pim, struct vty *vty,
+ time_t now)
+{
+ char uptime_scan_oil[10];
+ char uptime_mroute_add[10];
+ char uptime_mroute_del[10];
+
+ pim_time_uptime_begin(uptime_scan_oil, sizeof(uptime_scan_oil), now,
+ pim->scan_oil_last);
+ pim_time_uptime_begin(uptime_mroute_add, sizeof(uptime_mroute_add), now,
+ pim->mroute_add_last);
+ pim_time_uptime_begin(uptime_mroute_del, sizeof(uptime_mroute_del), now,
+ pim->mroute_del_last);
+
+ vty_out(vty,
+ "Scan OIL - Last: %s Events: %lld\n"
+ "MFC Add - Last: %s Events: %lld\n"
+ "MFC Del - Last: %s Events: %lld\n",
+ uptime_scan_oil, (long long)pim->scan_oil_events,
+ uptime_mroute_add, (long long)pim->mroute_add_events,
+ uptime_mroute_del, (long long)pim->mroute_del_events);
+}
+
+void show_multicast_interfaces(struct pim_instance *pim, struct vty *vty,
+ json_object *json)
+{
+ struct interface *ifp;
+ json_object *json_row = NULL;
+
+ vty_out(vty, "\n");
+
+ if (!json)
+ vty_out(vty,
+ "Interface Address ifi Vif PktsIn PktsOut BytesIn BytesOut\n");
+
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
+ struct pim_interface *pim_ifp;
+#if PIM_IPV == 4
+ struct sioc_vif_req vreq;
+#else
+ struct sioc_mif_req6 vreq;
+#endif
+
+ pim_ifp = ifp->info;
+
+ if (!pim_ifp)
+ continue;
+
+ memset(&vreq, 0, sizeof(vreq));
+#if PIM_IPV == 4
+ vreq.vifi = pim_ifp->mroute_vif_index;
+ if (ioctl(pim->mroute_socket, SIOCGETVIFCNT, &vreq)) {
+ zlog_warn(
+ "ioctl(SIOCGETVIFCNT=%lu) failure for interface %s vif_index=%d: errno=%d: %s",
+ (unsigned long)SIOCGETVIFCNT, ifp->name,
+ pim_ifp->mroute_vif_index, errno,
+ safe_strerror(errno));
+ }
+#else
+ vreq.mifi = pim_ifp->mroute_vif_index;
+ if (ioctl(pim->mroute_socket, SIOCGETMIFCNT_IN6, &vreq)) {
+ zlog_warn(
+ "ioctl(SIOCGETMIFCNT_IN6=%lu) failure for interface %s vif_index=%d: errno=%d: %s",
+ (unsigned long)SIOCGETMIFCNT_IN6, ifp->name,
+ pim_ifp->mroute_vif_index, errno,
+ safe_strerror(errno));
+ }
+#endif
+
+ if (json) {
+ json_row = json_object_new_object();
+ 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_addf(json_row, "address", "%pPA",
+ &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);
+ json_object_int_add(json_row, "pktsIn",
+ (unsigned long)vreq.icount);
+ json_object_int_add(json_row, "pktsOut",
+ (unsigned long)vreq.ocount);
+ json_object_int_add(json_row, "bytesIn",
+ (unsigned long)vreq.ibytes);
+ json_object_int_add(json_row, "bytesOut",
+ (unsigned long)vreq.obytes);
+ json_object_object_add(json, ifp->name, json_row);
+ } else {
+ vty_out(vty,
+ "%-16s %-15pPAs %3d %3d %7lu %7lu %10lu %10lu\n",
+ ifp->name, &pim_ifp->primary_address,
+ ifp->ifindex, pim_ifp->mroute_vif_index,
+ (unsigned long)vreq.icount,
+ (unsigned long)vreq.ocount,
+ (unsigned long)vreq.ibytes,
+ (unsigned long)vreq.obytes);
+ }
+ }
+}
+
+void pim_cmd_show_ip_multicast_helper(struct pim_instance *pim, struct vty *vty)
+{
+ struct vrf *vrf = pim->vrf;
+ time_t now = pim_time_monotonic_sec();
+ char uptime[10];
+ char mlag_role[80];
+
+ pim = vrf->info;
+
+ vty_out(vty, "Router MLAG Role: %s\n",
+ mlag_role2str(router->mlag_role, mlag_role, sizeof(mlag_role)));
+ vty_out(vty, "Mroute socket descriptor:");
+
+ vty_out(vty, " %d(%s)\n", pim->mroute_socket, vrf->name);
+
+ pim_time_uptime(uptime, sizeof(uptime),
+ now - pim->mroute_socket_creation);
+ vty_out(vty, "Mroute socket uptime: %s\n", uptime);
+
+ vty_out(vty, "\n");
+
+ pim_zebra_zclient_update(vty);
+#if PIM_IPV == 4
+ pim_zlookup_show_ip_multicast(vty);
+#else
+ /* TBD */
+#endif
+
+ vty_out(vty, "\n");
+ vty_out(vty, "Maximum highest VifIndex: %d\n", PIM_MAX_USABLE_VIFS);
+
+ vty_out(vty, "\n");
+ vty_out(vty, "Upstream Join Timer: %d secs\n", router->t_periodic);
+ vty_out(vty, "Join/Prune Holdtime: %d secs\n", PIM_JP_HOLDTIME);
+ vty_out(vty, "PIM ECMP: %s\n", pim->ecmp_enable ? "Enable" : "Disable");
+ vty_out(vty, "PIM ECMP Rebalance: %s\n",
+ pim->ecmp_rebalance_enable ? "Enable" : "Disable");
+
+ vty_out(vty, "\n");
+
+ pim_show_rpf_refresh_stats(vty, pim, now, NULL);
+
+ vty_out(vty, "\n");
+
+ show_scan_oil_stats(pim, vty, now);
+
+ show_multicast_interfaces(pim, vty, NULL);
+}
+
+void show_mroute(struct pim_instance *pim, struct vty *vty, pim_sgaddr *sg,
+ bool fill, json_object *json)
+{
+ struct listnode *node;
+ struct channel_oil *c_oil;
+ struct static_route *s_route;
+ time_t now;
+ json_object *json_group = NULL;
+ json_object *json_source = NULL;
+ json_object *json_oil = NULL;
+ json_object *json_ifp_out = NULL;
+ int found_oif;
+ int first;
+ char grp_str[PIM_ADDRSTRLEN];
+ char src_str[PIM_ADDRSTRLEN];
+ char in_ifname[INTERFACE_NAMSIZ + 1];
+ char out_ifname[INTERFACE_NAMSIZ + 1];
+ int oif_vif_index;
+ struct interface *ifp_in;
+ char proto[100];
+ char state_str[PIM_REG_STATE_STR_LEN];
+ char mroute_uptime[10];
+
+ if (!json) {
+ vty_out(vty, "IP Multicast Routing Table\n");
+ vty_out(vty, "Flags: S - Sparse, C - Connected, P - Pruned\n");
+ vty_out(vty,
+ " R - SGRpt Pruned, F - Register flag, T - SPT-bit set\n");
+ vty_out(vty,
+ "\nSource Group Flags Proto Input Output TTL Uptime\n");
+ }
+
+ now = pim_time_monotonic_sec();
+
+ /* print list of PIM and IGMP routes */
+ frr_each (rb_pim_oil, &pim->channel_oil_head, c_oil) {
+ found_oif = 0;
+ first = 1;
+ if (!c_oil->installed)
+ continue;
+
+ if (!pim_addr_is_any(sg->grp) &&
+ pim_addr_cmp(sg->grp, *oil_mcastgrp(c_oil)))
+ continue;
+ if (!pim_addr_is_any(sg->src) &&
+ pim_addr_cmp(sg->src, *oil_origin(c_oil)))
+ continue;
+
+ snprintfrr(grp_str, sizeof(grp_str), "%pPAs",
+ oil_mcastgrp(c_oil));
+ snprintfrr(src_str, sizeof(src_str), "%pPAs",
+ oil_origin(c_oil));
+
+ strlcpy(state_str, "S", sizeof(state_str));
+ /* When a non DR receives a igmp join, it creates a (*,G)
+ * channel_oil without any upstream creation
+ */
+ if (c_oil->up) {
+ if (PIM_UPSTREAM_FLAG_TEST_SRC_IGMP(c_oil->up->flags))
+ strlcat(state_str, "C", sizeof(state_str));
+ if (pim_upstream_is_sg_rpt(c_oil->up))
+ strlcat(state_str, "R", sizeof(state_str));
+ if (PIM_UPSTREAM_FLAG_TEST_FHR(c_oil->up->flags))
+ strlcat(state_str, "F", sizeof(state_str));
+ if (c_oil->up->sptbit == PIM_UPSTREAM_SPTBIT_TRUE)
+ strlcat(state_str, "T", sizeof(state_str));
+ }
+ if (pim_channel_oil_empty(c_oil))
+ strlcat(state_str, "P", sizeof(state_str));
+
+ ifp_in = pim_if_find_by_vif_index(pim, *oil_parent(c_oil));
+
+ if (ifp_in)
+ strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
+ else
+ strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
+
+
+ pim_time_uptime(mroute_uptime, sizeof(mroute_uptime),
+ now - c_oil->mroute_creation);
+
+ if (json) {
+
+ /* Find the group, create it if it doesn't exist */
+ json_object_object_get_ex(json, grp_str, &json_group);
+
+ if (!json_group) {
+ json_group = json_object_new_object();
+ json_object_object_add(json, grp_str,
+ json_group);
+ }
+
+ /* Find the source nested under the group, create it if
+ * it doesn't exist
+ */
+ json_object_object_get_ex(json_group, src_str,
+ &json_source);
+
+ if (!json_source) {
+ json_source = json_object_new_object();
+ json_object_object_add(json_group, src_str,
+ json_source);
+ }
+
+ /* Find the inbound interface nested under the source,
+ * create it if it doesn't exist
+ */
+ json_object_string_add(json_source, "source", src_str);
+ json_object_string_add(json_source, "group", grp_str);
+ json_object_int_add(json_source, "installed",
+ c_oil->installed);
+ json_object_int_add(json_source, "refCount",
+ c_oil->oil_ref_count);
+ json_object_int_add(json_source, "oilSize",
+ c_oil->oil_size);
+ json_object_int_add(json_source, "OilInheritedRescan",
+ c_oil->oil_inherited_rescan);
+ json_object_int_add(json_source, "oilInheritedRescan",
+ c_oil->oil_inherited_rescan);
+ json_object_string_add(json_source, "iif", in_ifname);
+ json_object_string_add(json_source, "upTime",
+ mroute_uptime);
+ json_oil = NULL;
+ }
+
+ for (oif_vif_index = 0; oif_vif_index < MAXVIFS;
+ ++oif_vif_index) {
+ struct interface *ifp_out;
+ int ttl;
+
+ ttl = oil_if_has(c_oil, oif_vif_index);
+ if (ttl < 1)
+ continue;
+
+ /* do not display muted OIFs */
+ if (c_oil->oif_flags[oif_vif_index] & PIM_OIF_FLAG_MUTE)
+ continue;
+
+ if (*oil_parent(c_oil) == oif_vif_index &&
+ !pim_mroute_allow_iif_in_oil(c_oil, oif_vif_index))
+ continue;
+
+ ifp_out = pim_if_find_by_vif_index(pim, oif_vif_index);
+ found_oif = 1;
+
+ if (ifp_out)
+ strlcpy(out_ifname, ifp_out->name,
+ sizeof(out_ifname));
+ else
+ strlcpy(out_ifname, "<oif?>",
+ sizeof(out_ifname));
+
+ if (json) {
+ json_ifp_out = json_object_new_object();
+ json_object_string_add(json_ifp_out, "source",
+ src_str);
+ json_object_string_add(json_ifp_out, "group",
+ grp_str);
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_PIM)
+ json_object_boolean_true_add(
+ json_ifp_out, "protocolPim");
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_GM)
+#if PIM_IPV == 4
+ json_object_boolean_true_add(
+ json_ifp_out, "protocolIgmp");
+#else
+ json_object_boolean_true_add(
+ json_ifp_out, "protocolMld");
+#endif
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_VXLAN)
+ json_object_boolean_true_add(
+ json_ifp_out, "protocolVxlan");
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_STAR)
+ json_object_boolean_true_add(
+ json_ifp_out,
+ "protocolInherited");
+
+ json_object_string_add(json_ifp_out,
+ "inboundInterface",
+ in_ifname);
+ json_object_int_add(json_ifp_out, "iVifI",
+ *oil_parent(c_oil));
+ json_object_string_add(json_ifp_out,
+ "outboundInterface",
+ out_ifname);
+ json_object_int_add(json_ifp_out, "oVifI",
+ oif_vif_index);
+ json_object_int_add(json_ifp_out, "ttl", ttl);
+ json_object_string_add(json_ifp_out, "upTime",
+ mroute_uptime);
+ json_object_string_add(json_source, "flags",
+ state_str);
+ if (!json_oil) {
+ json_oil = json_object_new_object();
+ json_object_object_add(json_source,
+ "oil", json_oil);
+ }
+ json_object_object_add(json_oil, out_ifname,
+ json_ifp_out);
+ } else {
+ proto[0] = '\0';
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_PIM) {
+ strlcpy(proto, "PIM", sizeof(proto));
+ }
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_GM) {
+#if PIM_IPV == 4
+ strlcpy(proto, "IGMP", sizeof(proto));
+#else
+ strlcpy(proto, "MLD", sizeof(proto));
+#endif
+ }
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_VXLAN) {
+ strlcpy(proto, "VxLAN", sizeof(proto));
+ }
+
+ if (c_oil->oif_flags[oif_vif_index] &
+ PIM_OIF_FLAG_PROTO_STAR) {
+ strlcpy(proto, "STAR", sizeof(proto));
+ }
+
+ vty_out(vty,
+ "%-15pPAs %-15pPAs %-8s %-6s %-16s %-16s %-3d %8s\n",
+ oil_origin(c_oil), oil_mcastgrp(c_oil),
+ state_str, proto, in_ifname, out_ifname,
+ ttl, mroute_uptime);
+
+ if (first) {
+ src_str[0] = '\0';
+ grp_str[0] = '\0';
+ in_ifname[0] = '\0';
+ state_str[0] = '\0';
+ mroute_uptime[0] = '\0';
+ first = 0;
+ }
+ }
+ }
+
+ if (!json && !found_oif) {
+ vty_out(vty,
+ "%-15pPAs %-15pPAs %-8s %-6s %-16s %-16s %-3d %8s\n",
+ oil_origin(c_oil), oil_mcastgrp(c_oil),
+ state_str, "none", in_ifname, "none", 0,
+ "--:--:--");
+ }
+ }
+
+ /* Print list of static routes */
+ for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, s_route)) {
+ first = 1;
+
+ if (!s_route->c_oil.installed)
+ continue;
+
+ snprintfrr(grp_str, sizeof(grp_str), "%pPAs", &s_route->group);
+ snprintfrr(src_str, sizeof(src_str), "%pPAs", &s_route->source);
+ ifp_in = pim_if_find_by_vif_index(pim, s_route->iif);
+ found_oif = 0;
+
+ if (ifp_in)
+ strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
+ else
+ strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
+
+ if (json) {
+
+ /* Find the group, create it if it doesn't exist */
+ json_object_object_get_ex(json, grp_str, &json_group);
+
+ if (!json_group) {
+ json_group = json_object_new_object();
+ json_object_object_add(json, grp_str,
+ json_group);
+ }
+
+ /* Find the source nested under the group, create it if
+ * it doesn't exist
+ */
+ json_object_object_get_ex(json_group, src_str,
+ &json_source);
+
+ if (!json_source) {
+ json_source = json_object_new_object();
+ json_object_object_add(json_group, src_str,
+ json_source);
+ }
+
+ json_object_string_add(json_source, "iif", in_ifname);
+ json_oil = NULL;
+ } else {
+ strlcpy(proto, "STATIC", sizeof(proto));
+ }
+
+ for (oif_vif_index = 0; oif_vif_index < MAXVIFS;
+ ++oif_vif_index) {
+ struct interface *ifp_out;
+ char oif_uptime[10];
+ int ttl;
+
+ ttl = s_route->oif_ttls[oif_vif_index];
+ if (ttl < 1)
+ continue;
+
+ ifp_out = pim_if_find_by_vif_index(pim, oif_vif_index);
+ pim_time_uptime(
+ oif_uptime, sizeof(oif_uptime),
+ now - s_route->c_oil
+ .oif_creation[oif_vif_index]);
+ found_oif = 1;
+
+ if (ifp_out)
+ strlcpy(out_ifname, ifp_out->name,
+ sizeof(out_ifname));
+ else
+ strlcpy(out_ifname, "<oif?>",
+ sizeof(out_ifname));
+
+ if (json) {
+ json_ifp_out = json_object_new_object();
+ json_object_string_add(json_ifp_out, "source",
+ src_str);
+ json_object_string_add(json_ifp_out, "group",
+ grp_str);
+ json_object_boolean_true_add(json_ifp_out,
+ "protocolStatic");
+ json_object_string_add(json_ifp_out,
+ "inboundInterface",
+ in_ifname);
+ json_object_int_add(
+ json_ifp_out, "iVifI",
+ *oil_parent(&s_route->c_oil));
+ json_object_string_add(json_ifp_out,
+ "outboundInterface",
+ out_ifname);
+ json_object_int_add(json_ifp_out, "oVifI",
+ oif_vif_index);
+ json_object_int_add(json_ifp_out, "ttl", ttl);
+ json_object_string_add(json_ifp_out, "upTime",
+ oif_uptime);
+ if (!json_oil) {
+ json_oil = json_object_new_object();
+ json_object_object_add(json_source,
+ "oil", json_oil);
+ }
+ json_object_object_add(json_oil, out_ifname,
+ json_ifp_out);
+ } else {
+ vty_out(vty,
+ "%-15pPAs %-15pPAs %-8s %-6s %-16s %-16s %-3d %8s\n",
+ &s_route->source, &s_route->group, "-",
+ proto, in_ifname, out_ifname, ttl,
+ oif_uptime);
+ if (first && !fill) {
+ src_str[0] = '\0';
+ grp_str[0] = '\0';
+ in_ifname[0] = '\0';
+ first = 0;
+ }
+ }
+ }
+
+ if (!json && !found_oif) {
+ vty_out(vty,
+ "%-15pPAs %-15pPAs %-8s %-6s %-16s %-16s %-3d %8s\n",
+ &s_route->source, &s_route->group, "-", proto,
+ in_ifname, "none", 0, "--:--:--");
+ }
+ }
+}
+
+static void show_mroute_count_per_channel_oil(struct channel_oil *c_oil,
+ json_object *json,
+ struct vty *vty)
+{
+ json_object *json_group = NULL;
+ json_object *json_source = NULL;
+
+ if (!c_oil->installed)
+ return;
+
+ pim_mroute_update_counters(c_oil);
+
+ if (json) {
+ char group_str[PIM_ADDRSTRLEN];
+ char source_str[PIM_ADDRSTRLEN];
+
+ snprintfrr(group_str, sizeof(group_str), "%pPAs",
+ oil_mcastgrp(c_oil));
+ snprintfrr(source_str, sizeof(source_str), "%pPAs",
+ oil_origin(c_oil));
+
+ json_object_object_get_ex(json, group_str, &json_group);
+
+ if (!json_group) {
+ json_group = json_object_new_object();
+ json_object_object_add(json, group_str, json_group);
+ }
+
+ json_source = json_object_new_object();
+ json_object_object_add(json_group, source_str, json_source);
+ json_object_int_add(json_source, "lastUsed",
+ c_oil->cc.lastused / 100);
+ json_object_int_add(json_source, "packets", c_oil->cc.pktcnt);
+ json_object_int_add(json_source, "bytes", c_oil->cc.bytecnt);
+ json_object_int_add(json_source, "wrongIf", c_oil->cc.wrong_if);
+
+ } else {
+ vty_out(vty, "%-15pPAs %-15pPAs %-8llu %-7ld %-10ld %-7ld\n",
+ oil_origin(c_oil), oil_mcastgrp(c_oil),
+ c_oil->cc.lastused / 100,
+ c_oil->cc.pktcnt - c_oil->cc.origpktcnt,
+ c_oil->cc.bytecnt - c_oil->cc.origbytecnt,
+ c_oil->cc.wrong_if - c_oil->cc.origwrong_if);
+ }
+}
+
+void show_mroute_count(struct pim_instance *pim, struct vty *vty,
+ json_object *json)
+{
+ struct listnode *node;
+ struct channel_oil *c_oil;
+ struct static_route *sr;
+
+ if (!json) {
+ vty_out(vty, "\n");
+
+ vty_out(vty,
+ "Source Group LastUsed Packets Bytes WrongIf \n");
+ }
+
+ /* Print PIM and IGMP route counts */
+ frr_each (rb_pim_oil, &pim->channel_oil_head, c_oil)
+ show_mroute_count_per_channel_oil(c_oil, json, vty);
+
+ for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, sr))
+ show_mroute_count_per_channel_oil(&sr->c_oil, json, vty);
+}
+
+void show_mroute_summary(struct pim_instance *pim, struct vty *vty,
+ json_object *json)
+{
+ struct listnode *node;
+ struct channel_oil *c_oil;
+ struct static_route *s_route;
+ uint32_t starg_sw_mroute_cnt = 0;
+ uint32_t sg_sw_mroute_cnt = 0;
+ uint32_t starg_hw_mroute_cnt = 0;
+ uint32_t sg_hw_mroute_cnt = 0;
+ json_object *json_starg = NULL;
+ json_object *json_sg = NULL;
+
+ if (!json)
+ vty_out(vty, "Mroute Type Installed/Total\n");
+
+ frr_each (rb_pim_oil, &pim->channel_oil_head, c_oil) {
+ if (!c_oil->installed) {
+ if (pim_addr_is_any(*oil_origin(c_oil)))
+ starg_sw_mroute_cnt++;
+ else
+ sg_sw_mroute_cnt++;
+ } else {
+ if (pim_addr_is_any(*oil_origin(c_oil)))
+ starg_hw_mroute_cnt++;
+ else
+ sg_hw_mroute_cnt++;
+ }
+ }
+
+ for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, s_route)) {
+ if (!s_route->c_oil.installed) {
+ if (pim_addr_is_any(*oil_origin(&s_route->c_oil)))
+ starg_sw_mroute_cnt++;
+ else
+ sg_sw_mroute_cnt++;
+ } else {
+ if (pim_addr_is_any(*oil_origin(&s_route->c_oil)))
+ starg_hw_mroute_cnt++;
+ else
+ sg_hw_mroute_cnt++;
+ }
+ }
+
+ if (!json) {
+ vty_out(vty, "%-20s %u/%u\n", "(*, G)", starg_hw_mroute_cnt,
+ starg_sw_mroute_cnt + starg_hw_mroute_cnt);
+ vty_out(vty, "%-20s %u/%u\n", "(S, G)", sg_hw_mroute_cnt,
+ sg_sw_mroute_cnt + sg_hw_mroute_cnt);
+ vty_out(vty, "------\n");
+ vty_out(vty, "%-20s %u/%u\n", "Total",
+ (starg_hw_mroute_cnt + sg_hw_mroute_cnt),
+ (starg_sw_mroute_cnt + starg_hw_mroute_cnt +
+ sg_sw_mroute_cnt + sg_hw_mroute_cnt));
+ } else {
+ /* (*,G) route details */
+ json_starg = json_object_new_object();
+ json_object_object_add(json, "wildcardGroup", json_starg);
+
+ json_object_int_add(json_starg, "installed",
+ starg_hw_mroute_cnt);
+ json_object_int_add(json_starg, "total",
+ starg_sw_mroute_cnt + starg_hw_mroute_cnt);
+
+ /* (S, G) route details */
+ json_sg = json_object_new_object();
+ json_object_object_add(json, "sourceGroup", json_sg);
+
+ json_object_int_add(json_sg, "installed", sg_hw_mroute_cnt);
+ json_object_int_add(json_sg, "total",
+ sg_sw_mroute_cnt + sg_hw_mroute_cnt);
+
+ json_object_int_add(json, "totalNumOfInstalledMroutes",
+ starg_hw_mroute_cnt + sg_hw_mroute_cnt);
+ json_object_int_add(json, "totalNumOfMroutes",
+ starg_sw_mroute_cnt + starg_hw_mroute_cnt +
+ sg_sw_mroute_cnt +
+ sg_hw_mroute_cnt);
+ }
+}
diff --git a/pimd/pim_cmd_common.h b/pimd/pim_cmd_common.h
index c766d134b1..8753d1444e 100644
--- a/pimd/pim_cmd_common.h
+++ b/pimd/pim_cmd_common.h
@@ -104,13 +104,23 @@ int gm_process_last_member_query_interval_cmd(struct vty *vty,
int gm_process_no_last_member_query_interval_cmd(struct vty *vty);
int pim_process_ssmpingd_cmd(struct vty *vty, enum nb_operation operation,
const char *src_str);
+void pim_cmd_show_ip_multicast_helper(struct pim_instance *pim,
+ struct vty *vty);
+void show_multicast_interfaces(struct pim_instance *pim, struct vty *vty,
+ json_object *json);
+void show_mroute(struct pim_instance *pim, struct vty *vty, pim_sgaddr *sg,
+ bool fill, json_object *json);
+void show_mroute_count(struct pim_instance *pim, struct vty *vty,
+ json_object *json);
+void show_mroute_summary(struct pim_instance *pim, struct vty *vty,
+ json_object *json);
/*
* Special Macro to allow us to get the correct pim_instance;
*/
-#define PIM_DECLVAR_CONTEXT(A, B) \
- struct vrf *A = VTY_GET_CONTEXT(vrf); \
- struct pim_instance *B = \
- (vrf) ? vrf->info : pim_get_pim_instance(VRF_DEFAULT); \
- vrf = (vrf) ? vrf : pim->vrf
+#define PIM_DECLVAR_CONTEXT_VRF(vrfptr, pimptr) \
+ VTY_DECLVAR_CONTEXT_VRF(vrfptr); \
+ struct pim_instance *pimptr = vrfptr->info; \
+ MACRO_REQUIRE_SEMICOLON() /* end */
+
#endif /* PIM_CMD_COMMON_H */
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 43d05dfe9c..b7f483dbc0 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -1047,14 +1047,14 @@ void pim_mroute_update_counters(struct channel_oil *c_oil)
memset(&sgreq, 0, sizeof(sgreq));
+ pim_zlookup_sg_statistics(c_oil);
+
#if PIM_IPV == 4
sgreq.src = *oil_origin(c_oil);
sgreq.grp = *oil_mcastgrp(c_oil);
- pim_zlookup_sg_statistics(c_oil);
#else
sgreq.src = c_oil->oil.mf6cc_origin;
sgreq.grp = c_oil->oil.mf6cc_mcastgrp;
- /* TODO Zlookup_sg_statistics for V6 to be added */
#endif
if (ioctl(pim->mroute_socket, PIM_SIOCGETSGCNT, &sgreq)) {
pim_sgaddr sg;
diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c
index 9e8e9cac39..a9553089c9 100644
--- a/pimd/pim_zlookup.c
+++ b/pimd/pim_zlookup.c
@@ -497,7 +497,6 @@ void pim_zlookup_show_ip_multicast(struct vty *vty)
}
}
-#if PIM_IPV == 4
int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
{
struct stream *s = zlookup->obuf;
@@ -506,17 +505,16 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
pim_sgaddr sg;
int count = 0;
int ret;
+ pim_sgaddr more = {};
struct interface *ifp =
- pim_if_find_by_vif_index(c_oil->pim, c_oil->oil.mfcc_parent);
+ pim_if_find_by_vif_index(c_oil->pim, *oil_parent(c_oil));
if (PIM_DEBUG_ZEBRA) {
- pim_sgaddr more;
-
- more.src = c_oil->oil.mfcc_origin;
- more.grp = c_oil->oil.mfcc_mcastgrp;
- zlog_debug("Sending Request for New Channel Oil Information%pSG VIIF %d(%s)",
- &more, c_oil->oil.mfcc_parent,
- c_oil->pim->vrf->name);
+ more.src = *oil_origin(c_oil);
+ more.grp = *oil_mcastgrp(c_oil);
+ zlog_debug(
+ "Sending Request for New Channel Oil Information%pSG VIIF %d(%s)",
+ &more, *oil_parent(c_oil), c_oil->pim->vrf->name);
}
if (!ifp)
@@ -525,8 +523,9 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
stream_reset(s);
zclient_create_header(s, ZEBRA_IPMR_ROUTE_STATS,
c_oil->pim->vrf->vrf_id);
- stream_put_in_addr(s, &c_oil->oil.mfcc_origin);
- stream_put_in_addr(s, &c_oil->oil.mfcc_mcastgrp);
+ stream_putl(s, PIM_AF);
+ stream_write(s, oil_origin(c_oil), sizeof(pim_addr));
+ stream_write(s, oil_mcastgrp(c_oil), sizeof(pim_addr));
stream_putl(s, ifp->ifindex);
stream_putw_at(s, 0, stream_get_endp(s));
@@ -560,20 +559,17 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
}
}
- sg.src.s_addr = stream_get_ipv4(s);
- sg.grp.s_addr = stream_get_ipv4(s);
- if (sg.src.s_addr != c_oil->oil.mfcc_origin.s_addr
- || sg.grp.s_addr != c_oil->oil.mfcc_mcastgrp.s_addr) {
- if (PIM_DEBUG_ZEBRA) {
- pim_sgaddr more;
+ stream_get(&sg.src, s, sizeof(pim_addr));
+ stream_get(&sg.grp, s, sizeof(pim_addr));
- more.src = c_oil->oil.mfcc_origin;
- more.grp = c_oil->oil.mfcc_mcastgrp;
+ more.src = *oil_origin(c_oil);
+ more.grp = *oil_mcastgrp(c_oil);
+ if (pim_sgaddr_cmp(sg, more)) {
+ if (PIM_DEBUG_ZEBRA)
flog_err(
EC_LIB_ZAPI_MISSMATCH,
"%s: Received wrong %pSG(%s) information requested",
__func__, &more, c_oil->pim->vrf->name);
- }
zclient_lookup_failed(zlookup);
return -3;
}
@@ -586,4 +582,3 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
return 0;
}
-#endif
diff --git a/tests/bgpd/test_aspath.c b/tests/bgpd/test_aspath.c
index 7288dc0869..3cc9a63072 100644
--- a/tests/bgpd/test_aspath.c
+++ b/tests/bgpd/test_aspath.c
@@ -40,7 +40,7 @@
#define FAILED VT100_RED "failed" VT100_RESET
/* need these to link in libbgp */
-struct zebra_privs_t *bgpd_privs = NULL;
+struct zebra_privs_t bgpd_privs = {};
struct thread_master *master = NULL;
static int failed = 0;
diff --git a/tests/bgpd/test_capability.c b/tests/bgpd/test_capability.c
index 3568411387..44d15d6014 100644
--- a/tests/bgpd/test_capability.c
+++ b/tests/bgpd/test_capability.c
@@ -44,7 +44,7 @@
#define OPT_PARAM 2
/* need these to link in libbgp */
-struct zebra_privs_t *bgpd_privs = NULL;
+struct zebra_privs_t bgpd_privs = {};
struct thread_master *master = NULL;
static int failed = 0;
diff --git a/tests/bgpd/test_ecommunity.c b/tests/bgpd/test_ecommunity.c
index 317bfff8ab..7147e3faf3 100644
--- a/tests/bgpd/test_ecommunity.c
+++ b/tests/bgpd/test_ecommunity.c
@@ -30,7 +30,7 @@
#include "bgpd/bgp_ecommunity.h"
/* need these to link in libbgp */
-struct zebra_privs_t *bgpd_privs = NULL;
+struct zebra_privs_t bgpd_privs = {};
struct thread_master *master = NULL;
static int failed = 0;
diff --git a/tests/bgpd/test_mp_attr.c b/tests/bgpd/test_mp_attr.c
index 909930d6bc..c5ce5d3cd2 100644
--- a/tests/bgpd/test_mp_attr.c
+++ b/tests/bgpd/test_mp_attr.c
@@ -49,7 +49,7 @@
#define OPT_PARAM 2
/* need these to link in libbgp */
-struct zebra_privs_t *bgpd_privs = NULL;
+struct zebra_privs_t bgpd_privs = {};
struct thread_master *master = NULL;
static int failed = 0;
diff --git a/tests/bgpd/test_packet.c b/tests/bgpd/test_packet.c
index 27afa6a121..2ce8b561bb 100644
--- a/tests/bgpd/test_packet.c
+++ b/tests/bgpd/test_packet.c
@@ -37,7 +37,7 @@
#include "bgpd/bgp_network.h"
/* need these to link in libbgp */
-struct zebra_privs_t *bgpd_privs = NULL;
+struct zebra_privs_t bgpd_privs = {};
struct thread_master *master = NULL;
static struct bgp *bgp;
diff --git a/tests/topotests/lib/pim.py b/tests/topotests/lib/pim.py
index b4a6358389..1423f3fecc 100644
--- a/tests/topotests/lib/pim.py
+++ b/tests/topotests/lib/pim.py
@@ -960,7 +960,7 @@ def verify_join_state_and_timer(
@retry(retry_timeout=120, diag_pct=0)
-def verify_ip_mroutes(
+def verify_mroutes(
tgen,
dut,
src_address,
@@ -973,7 +973,7 @@ def verify_ip_mroutes(
):
"""
Verify ip mroutes and make sure (*, G)/(S, G) is present in mroutes
- by running "show ip pim upstream" cli
+ by running "show ip/ipv6 mroute" cli
Parameters
----------
@@ -991,7 +991,7 @@ def verify_ip_mroutes(
-----
dut = "r1"
group_address = "225.1.1.1"
- result = verify_ip_mroutes(tgen, dut, src_address, group_address)
+ result = verify_mroutes(tgen, dut, src_address, group_address)
Returns
-------
@@ -1621,10 +1621,10 @@ def verify_pim_interface(
return True
-def clear_ip_pim_interface_traffic(tgen, topo):
+def clear_pim_interface_traffic(tgen, topo):
"""
- Clear ip pim interface traffice by running
- "clear ip pim interface traffic" cli
+ Clear ip/ipv6 pim interface traffice by running
+ "clear ip/ipv6 pim interface traffic" cli
Parameters
----------
@@ -1632,7 +1632,7 @@ def clear_ip_pim_interface_traffic(tgen, topo):
Usage
-----
- result = clear_ip_pim_interface_traffic(tgen, topo)
+ result = clear_pim_interface_traffic(tgen, topo)
Returns
-------
@@ -1655,10 +1655,10 @@ def clear_ip_pim_interface_traffic(tgen, topo):
return True
-def clear_ip_pim_interfaces(tgen, dut):
+def clear_pim_interfaces(tgen, dut):
"""
- Clear ip pim interface by running
- "clear ip pim interfaces" cli
+ Clear ip/ipv6 pim interface by running
+ "clear ip/ipv6 pim interfaces" cli
Parameters
----------
@@ -1667,7 +1667,7 @@ def clear_ip_pim_interfaces(tgen, dut):
Usage
-----
- result = clear_ip_pim_interfaces(tgen, dut)
+ result = clear_pim_interfaces(tgen, dut)
Returns
-------
@@ -1746,10 +1746,10 @@ def clear_ip_pim_interfaces(tgen, dut):
return True
-def clear_ip_igmp_interfaces(tgen, dut):
+def clear_igmp_interfaces(tgen, dut):
"""
- Clear ip igmp interfaces by running
- "clear ip igmp interfaces" cli
+ Clear ip/ipv6 igmp interfaces by running
+ "clear ip/ipv6 igmp interfaces" cli
Parameters
----------
@@ -1759,7 +1759,7 @@ def clear_ip_igmp_interfaces(tgen, dut):
Usage
-----
dut = "r1"
- result = clear_ip_igmp_interfaces(tgen, dut)
+ result = clear_igmp_interfaces(tgen, dut)
Returns
-------
errormsg(str) or True
@@ -1826,9 +1826,9 @@ def clear_ip_igmp_interfaces(tgen, dut):
@retry(retry_timeout=20)
-def clear_ip_mroute_verify(tgen, dut, expected=True):
+def clear_mroute_verify(tgen, dut, expected=True):
"""
- Clear ip mroute by running "clear ip mroute" cli and verify
+ Clear ip/ipv6 mroute by running "clear ip/ipv6 mroute" cli and verify
mroutes are up again after mroute clear
Parameters
@@ -1840,7 +1840,7 @@ def clear_ip_mroute_verify(tgen, dut, expected=True):
Usage
-----
- result = clear_ip_mroute_verify(tgen, dut)
+ result = clear_mroute_verify(tgen, dut)
Returns
-------
@@ -1926,9 +1926,9 @@ def clear_ip_mroute_verify(tgen, dut, expected=True):
return True
-def clear_ip_mroute(tgen, dut=None):
+def clear_mroute(tgen, dut=None):
"""
- Clear ip mroute by running "clear ip mroute" cli
+ Clear ip/ipv6 mroute by running "clear ip mroute" cli
Parameters
----------
@@ -1937,7 +1937,7 @@ def clear_ip_mroute(tgen, dut=None):
Usage
-----
- clear_ip_mroute(tgen, dut)
+ clear_mroute(tgen, dut)
"""
logger.debug("Entering lib API: {}".format(sys._getframe().f_code.co_name))
@@ -2352,12 +2352,12 @@ def verify_pim_bsr(tgen, topo, dut, bsr_ip, expected=True):
@retry(retry_timeout=60, diag_pct=0)
-def verify_ip_pim_upstream_rpf(
+def verify_pim_upstream_rpf(
tgen, topo, dut, interface, group_addresses, rp=None, expected=True
):
"""
- Verify IP PIM upstream rpf, config is verified
- using "show ip pim neighbor" cli
+ Verify IP/IPv6 PIM upstream rpf, config is verified
+ using "show ip/ipv6 pim neighbor" cli
Parameters
----------
@@ -2372,7 +2372,7 @@ def verify_ip_pim_upstream_rpf(
Usage
-----
- result = verify_ip_pim_upstream_rpf(gen, topo, dut, interface,
+ result = verify_pim_upstream_rpf(gen, topo, dut, interface,
group_addresses, rp=None)
Returns
@@ -2552,11 +2552,11 @@ def enable_disable_pim_bsm(tgen, router, intf, enable=True):
@retry(retry_timeout=60, diag_pct=0)
-def verify_ip_pim_join(
+def verify_pim_join(
tgen, topo, dut, interface, group_addresses, src_address=None, expected=True
):
"""
- Verify ip pim join by running "show ip pim join" cli
+ Verify ip/ipv6 pim join by running "show ip/ipv6 pim join" cli
Parameters
----------
@@ -2573,7 +2573,7 @@ def verify_ip_pim_join(
dut = "r1"
interface = "r1-r0-eth0"
group_address = "225.1.1.1"
- result = verify_ip_pim_join(tgen, dut, star, group_address, interface)
+ result = verify_pim_join(tgen, dut, star, group_address, interface)
Returns
-------
diff --git a/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
index 1762535cee..c0ea1b5561 100644
--- a/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
+++ b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
@@ -94,16 +94,16 @@ from lib.pim import (
find_rp_from_bsrp_info,
verify_pim_grp_rp_source,
verify_pim_bsr,
- verify_ip_mroutes,
+ verify_mroutes,
verify_join_state_and_timer,
verify_pim_state,
verify_upstream_iif,
verify_igmp_groups,
- verify_ip_pim_upstream_rpf,
+ verify_pim_upstream_rpf,
enable_disable_pim_unicast_bsm,
enable_disable_pim_bsm,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ clear_mroute,
+ clear_pim_interface_traffic,
get_pim_interface_traffic,
McastTesterHelper,
)
@@ -373,9 +373,9 @@ def test_BSR_higher_prefer_ip_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
step("pre-configure BSM packet")
@@ -579,9 +579,9 @@ def test_BSR_CRP_with_blackhole_address_p1(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
step("pre-configure BSM packet")
@@ -756,9 +756,9 @@ def test_new_router_fwd_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -800,7 +800,7 @@ def test_new_router_fwd_p0(request):
oil = "l1-r1-eth1"
step("Verify mroute populated on l1")
- result = verify_ip_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Reload i1 and l1
@@ -854,7 +854,7 @@ def test_new_router_fwd_p0(request):
# Verify ip mroute populated again
step("Verify mroute again on l1 (lhr)")
- result = verify_ip_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("clear BSM database before moving to next case")
@@ -897,9 +897,9 @@ def test_int_bsm_config_p1(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -937,7 +937,7 @@ def test_int_bsm_config_p1(request):
src_addr = "*"
oil = "i1-l1-eth1"
- result = verify_ip_mroutes(tgen, "i1", src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, "i1", src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# wait till bsm rp age out
@@ -946,7 +946,7 @@ def test_int_bsm_config_p1(request):
# check if mroute uninstalled because of rp age out
step("check if mroute uninstalled because of rp age out in i1")
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, "i1", src_addr, GROUP_ADDRESS, iif, oil, expected=False
)
assert (
@@ -981,7 +981,7 @@ def test_int_bsm_config_p1(request):
# check if mroute still not installed because of rp not available
step("check if mroute still not installed because of rp not available")
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, "i1", src_addr, GROUP_ADDRESS, iif, oil, expected=False
)
assert result is not True, (
@@ -1006,7 +1006,7 @@ def test_int_bsm_config_p1(request):
# verify ip mroute populated
step("Verify ip mroute")
- result = verify_ip_mroutes(tgen, "i1", src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, "i1", src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Shut/No shut the bsm rpf interface and check mroute on lhr(l1)
@@ -1018,7 +1018,7 @@ def test_int_bsm_config_p1(request):
iif = "l1-i1-eth0"
oil = "l1-r1-eth1"
- result = verify_ip_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
step("clear BSM database before moving to next case")
@@ -1058,9 +1058,9 @@ def test_static_rp_override_p1(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -1111,7 +1111,7 @@ def test_static_rp_override_p1(request):
iif = "l1-i1-eth0"
# Verify upstream rpf for 225.1.1.1 is chosen as rp1
step("Verify upstream rpf for 225.1.1.1 is chosen as bsrp")
- result = verify_ip_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp[group])
+ result = verify_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp[group])
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Configure a static rp for the group 225.1.1.1/32
@@ -1139,7 +1139,7 @@ def test_static_rp_override_p1(request):
# Verify if upstream also reflects the static rp
step("Verify upstream rpf for 225.1.1.1 is chosen as static in l1")
- result = verify_ip_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, static_rp)
+ result = verify_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, static_rp)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# delete static rp for the group 225.1.1.1/32
@@ -1167,7 +1167,7 @@ def test_static_rp_override_p1(request):
# Verify upstream rpf for 225.1.1.1 is chosen as bsrp
step("Verify upstream rpf for 225.1.1.1 is chosen as bsrp in l1")
- result = verify_ip_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp[group])
+ result = verify_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp[group])
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
step("clear BSM database before moving to next case")
@@ -1209,9 +1209,9 @@ def test_bsmp_stress_add_del_restart_p2(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -1339,7 +1339,7 @@ def test_bsmp_stress_add_del_restart_p2(request):
iif = "l1-i1-eth0"
src_addr = "*"
oil = "l1-r1-eth1"
- result = verify_ip_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, "l1", src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -1377,9 +1377,9 @@ def test_BSM_timeout_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
result = pre_config_to_bsm(
tgen, topo, tc_name, "b1", "s1", "r1", "f1", "i1", "l1", "packet1"
@@ -1415,7 +1415,7 @@ def test_BSM_timeout_p0(request):
iif = "l1-i1-eth0"
src_addr = "*"
oil = "l1-r1-eth1"
- result = verify_ip_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Verify join state and join timer
@@ -1485,7 +1485,7 @@ def test_BSM_timeout_p0(request):
# Verify ip mroute is not installed
step("Verify mroute not installed in l1")
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, dut, src_addr, GROUP_ADDRESS, iif, oil, expected=False
)
assert (
@@ -1534,9 +1534,9 @@ def test_iif_join_state_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -1605,7 +1605,7 @@ def test_iif_join_state_p0(request):
# Verify ip mroute
src_addr = "*"
step("Verify ip mroute in l1")
- result = verify_ip_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Make RP unreachanble in LHR
@@ -1642,7 +1642,7 @@ def test_iif_join_state_p0(request):
# Verify mroute not installed
step("Verify mroute not installed")
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, dut, src_addr, GROUP_ADDRESS, iif, oil, expected=False
)
assert (
@@ -1668,7 +1668,7 @@ def test_iif_join_state_p0(request):
# Verify that (*,G) installed in mroute again
iif = "l1-i1-eth0"
- result = verify_ip_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
step("clear BSM database before moving to next case")
diff --git a/tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py b/tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py
index 31cd8f9858..9f771b8a2b 100644
--- a/tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py
+++ b/tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py
@@ -77,14 +77,14 @@ from lib.pim import (
find_rp_from_bsrp_info,
verify_pim_grp_rp_source,
verify_pim_bsr,
- verify_ip_mroutes,
+ verify_mroutes,
verify_join_state_and_timer,
verify_pim_state,
verify_upstream_iif,
verify_igmp_groups,
- verify_ip_pim_upstream_rpf,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ verify_pim_upstream_rpf,
+ clear_mroute,
+ clear_pim_interface_traffic,
McastTesterHelper,
)
from lib.topolog import logger
@@ -331,9 +331,9 @@ def test_starg_mroute_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -402,7 +402,7 @@ def test_starg_mroute_p0(request):
# Verify ip mroute
step("Verify ip mroute in l1")
src_addr = "*"
- result = verify_ip_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Remove the group rp mapping and send bsm
@@ -426,7 +426,7 @@ def test_starg_mroute_p0(request):
# Verify mroute not installed
step("Verify mroute not installed in l1")
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, dut, src_addr, GROUP_ADDRESS, iif, oil, retry_timeout=20, expected=False
)
assert (
@@ -442,7 +442,7 @@ def test_starg_mroute_p0(request):
# Verify that (*,G) installed in mroute again
iif = "l1-i1-eth0"
- result = verify_ip_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
+ result = verify_mroutes(tgen, dut, src_addr, GROUP_ADDRESS, iif, oil)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
step("clear BSM database before moving to next case")
@@ -483,9 +483,9 @@ def test_overlapping_group_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -533,7 +533,7 @@ def test_overlapping_group_p0(request):
iif = "l1-i1-eth0"
# Verify upstream rpf for 225.1.1.1 is chosen as rp1
step("Verify upstream rpf for 225.1.1.1 is chosen as rp1 in l1")
- result = verify_ip_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp1)
+ result = verify_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp1)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Send BSR packet from b1 with rp for 225.1.1.1/32 removed
@@ -543,7 +543,7 @@ def test_overlapping_group_p0(request):
# Verify upstream rpf for 225.1.1.1 is chosen as rp1
step("Verify upstream rpf for 225.1.1.1 is chosen as rp2 in l1")
- result = verify_ip_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp2)
+ result = verify_pim_upstream_rpf(tgen, topo, dut, iif, GROUP_ADDRESS, rp2)
assert result is True, "Testcase {}:Failed \n Error: {}".format(tc_name, result)
# Verify IIF/OIL in pim state
@@ -589,9 +589,9 @@ def test_RP_priority_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -716,9 +716,9 @@ def test_BSR_election_p0(request):
write_test_header(tc_name)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
# Don"t run this test if we have any failure.
if tgen.routers_have_failure():
@@ -836,9 +836,9 @@ def test_RP_hash_p0(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -929,9 +929,9 @@ def test_BSM_fragmentation_p1(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
reset_config_on_routers(tgen)
@@ -1047,9 +1047,9 @@ def test_RP_with_all_ip_octet_p1(request):
pytest.skip(tgen.errors)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("pre-configure BSM packet")
result = pre_config_to_bsm(
diff --git a/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_ospf_topo2.py b/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_ospf_topo2.py
index 1adc034206..cba37bfc29 100755
--- a/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_ospf_topo2.py
+++ b/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_ospf_topo2.py
@@ -69,15 +69,15 @@ from lib.common_config import (
from lib.pim import (
create_pim_config,
create_igmp_config,
- verify_ip_mroutes,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ verify_mroutes,
+ clear_mroute,
+ clear_pim_interface_traffic,
verify_pim_config,
verify_upstream_iif,
verify_multicast_traffic,
verify_multicast_flag_state,
verify_igmp_groups,
- McastTesterHelper
+ McastTesterHelper,
)
from lib.topolog import logger
from lib.topojson import build_config_from_json
@@ -646,10 +646,10 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
check_router_status(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
# Don"t run this test if we have any failure.
if tgen.routers_have_failure():
@@ -878,7 +878,7 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
]
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -932,7 +932,7 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
)
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -942,7 +942,7 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -951,9 +951,10 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
data["oil"],
expected=False,
)
- assert result is not True, (
- "Testcase {} : Failed \n "
- "mroutes are still present \n Error: {}".format(tc_name, result)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n " "mroutes are still present \n Error: {}".format(
+ tc_name, result
)
step("Configure local join on R2 for group range (227.1.1.1)")
@@ -1044,7 +1045,7 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
]
for data in input_dict_r1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1053,9 +1054,10 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
data["oil"],
expected=False,
)
- assert result is not True, (
- "Testcase {} : Failed \n "
- "Mroutes are still present \n Error: {}".format(tc_name, result)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n " "mroutes are still present \n Error: {}".format(
+ tc_name, result
)
step("Remove local join from DR and Non DR node")
@@ -1098,7 +1100,7 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
)
for data in input_dict_r1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1107,13 +1109,14 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
data["oil"],
expected=False,
)
- assert result is not True, (
- "Testcase {} : Failed \n "
- "Mroutes are still present \n Error: {}".format(tc_name, result)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n " "mroutes are still present \n Error: {}".format(
+ tc_name, result
)
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1122,9 +1125,10 @@ def test_configuring_igmp_local_join_on_reciever_dr_non_dr_nodes_p1(request):
data["oil"],
expected=False,
)
- assert result is not True, (
- "Testcase {} : Failed \n "
- "Mroutes are still present \n Error: {}".format(tc_name, result)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n " "mroutes are still present \n Error: {}".format(
+ tc_name, result
)
write_test_footer(tc_name)
diff --git a/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_static_routes_topo1.py b/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_static_routes_topo1.py
index aa7448f354..afc91dd7ac 100755
--- a/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_static_routes_topo1.py
+++ b/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_static_routes_topo1.py
@@ -67,9 +67,9 @@ from lib.common_config import (
from lib.pim import (
create_pim_config,
create_igmp_config,
- verify_ip_mroutes,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ verify_mroutes,
+ clear_mroute,
+ clear_pim_interface_traffic,
verify_pim_config,
verify_upstream_iif,
verify_multicast_flag_state,
@@ -218,6 +218,7 @@ def teardown_module():
)
logger.info("=" * 40)
+
#####################################################
#
# Local APIs
@@ -693,10 +694,10 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
check_router_status(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
# Don"t run this test if we have any failure.
if tgen.routers_have_failure():
@@ -752,7 +753,7 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
]
for data in input_dict_r1_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -799,7 +800,7 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
step("R1 has mroute with none OIL and upstream with Not Join")
for data in input_dict_r1_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -849,7 +850,7 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
for data in input_dict_r1_r2:
if data["dut"] == "r1":
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -883,7 +884,7 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
)
for data in input_dict_r1_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -892,9 +893,10 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
data["oil"],
expected=False,
)
- assert result is not True, (
- "Testcase {} : Failed \n "
- "mroutes are still present \n Error: {}".format(tc_name, result)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n " "mroutes are still present \n Error: {}".format(
+ tc_name, result
)
step("start FRR for all the nodes")
@@ -908,7 +910,7 @@ def test_pim_source_dr_functionality_while_rebooting_dr_non_dr_nodes_p1(request)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_r1_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
diff --git a/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_transit_router_topo3.py b/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_transit_router_topo3.py
index 1e290a0348..a5d2730373 100755
--- a/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_transit_router_topo3.py
+++ b/tests/topotests/multicast_pim_dr_nondr_test/test_pim_dr_nondr_with_transit_router_topo3.py
@@ -65,9 +65,9 @@ from lib.common_config import (
from lib.pim import (
create_pim_config,
create_igmp_config,
- verify_ip_mroutes,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ verify_mroutes,
+ clear_mroute,
+ clear_pim_interface_traffic,
verify_pim_config,
verify_upstream_iif,
verify_multicast_traffic,
@@ -665,10 +665,10 @@ def test_mroute_when_transit_router_present_between_rp_and_source_dr_p1(request)
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
check_router_status(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
# Don"t run this test if we have any failure.
if tgen.routers_have_failure():
@@ -707,7 +707,7 @@ def test_mroute_when_transit_router_present_between_rp_and_source_dr_p1(request)
]
for data in input_dict_r1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -743,7 +743,7 @@ def test_mroute_when_transit_router_present_between_rp_and_source_dr_p1(request)
]
for data in input_dict_r5:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -808,7 +808,7 @@ def test_mroute_when_transit_router_present_between_rp_and_source_dr_p1(request)
)
for data in input_dict_r5:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
diff --git a/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py b/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
index 75fae6bb59..b46885c8a5 100755
--- a/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
+++ b/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
@@ -83,12 +83,12 @@ from lib.pim import (
create_pim_config,
create_igmp_config,
verify_igmp_groups,
- verify_ip_mroutes,
+ verify_mroutes,
get_pim_interface_traffic,
verify_upstream_iif,
- verify_ip_pim_join,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ verify_pim_join,
+ clear_mroute,
+ clear_pim_interface_traffic,
verify_igmp_config,
McastTesterHelper,
)
@@ -337,7 +337,7 @@ def test_multicast_data_traffic_static_RP_send_join_then_traffic_p0(request):
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -369,7 +369,7 @@ def test_multicast_data_traffic_static_RP_send_join_then_traffic_p0(request):
step("l1 sent PIM (S,G) join to f1 , verify using 'show ip pim join'")
dut = "f1"
interface = intf_f1_r2
- result = verify_ip_pim_join(tgen, topo, dut, interface, IGMP_JOIN)
+ result = verify_pim_join(tgen, topo, dut, interface, IGMP_JOIN)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -392,9 +392,9 @@ def test_multicast_data_traffic_static_RP_send_traffic_then_join_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure RP on R2 (loopback interface) for the" " group range 225.0.0.0/8")
@@ -453,7 +453,7 @@ def test_multicast_data_traffic_static_RP_send_traffic_then_join_p0(request):
# previous 80 retries with 2s wait if we assume .5s per vtysh/show ip mroute runtime
# (41 * (2 + .5)) == 102.
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -491,7 +491,7 @@ def test_multicast_data_traffic_static_RP_send_traffic_then_join_p0(request):
step("l1 sent PIM (S,G) join to f1 , verify using 'show ip pim join'")
dut = "f1"
interface = "f1-r2-eth3"
- result = verify_ip_pim_join(tgen, topo, dut, interface, IGMP_JOIN)
+ result = verify_pim_join(tgen, topo, dut, interface, IGMP_JOIN)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -514,9 +514,9 @@ def test_clear_pim_neighbors_and_mroute_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP on c1 for group (225.1.1.1-5)")
input_dict = {
@@ -558,13 +558,13 @@ def test_clear_pim_neighbors_and_mroute_p0(request):
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
step("Clear mroutes on l1")
- clear_ip_mroute(tgen, "l1")
+ clear_mroute(tgen, "l1")
step(
"After clear ip mroute (*,g) entries are re-populated again"
@@ -573,7 +573,7 @@ def test_clear_pim_neighbors_and_mroute_p0(request):
)
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
@@ -607,9 +607,9 @@ def test_verify_mroute_when_same_receiver_in_FHR_LHR_and_RP_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure RP on R2 (loopback interface) for the" " group range 225.0.0.0/8")
@@ -684,7 +684,7 @@ def test_verify_mroute_when_same_receiver_in_FHR_LHR_and_RP_p0(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-i8-eth2"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -709,9 +709,9 @@ def test_verify_mroute_when_same_receiver_joining_5_diff_sources_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) and (232.1.1.1-5)" " in c1")
@@ -837,7 +837,7 @@ def test_verify_mroute_when_same_receiver_joining_5_diff_sources_p0(request):
},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -874,7 +874,7 @@ def test_verify_mroute_when_same_receiver_joining_5_diff_sources_p0(request):
},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -923,7 +923,7 @@ def test_verify_mroute_when_same_receiver_joining_5_diff_sources_p0(request):
},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -996,7 +996,7 @@ def test_verify_mroute_when_same_receiver_joining_5_diff_sources_p0(request):
},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1026,9 +1026,9 @@ def test_verify_mroute_when_frr_is_transit_router_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) in c2")
input_dict = {
@@ -1074,7 +1074,7 @@ def test_verify_mroute_when_frr_is_transit_router_p2(request):
{"dut": "c2", "src_address": source, "iif": "c2-f1-eth1", "oil": "c2-c1-eth0"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -1100,7 +1100,7 @@ def test_verify_mroute_when_frr_is_transit_router_p2(request):
" router 'show ip mroute'"
)
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, "c1", "*", IGMP_JOIN, "c1-c2-eth1", "c1-l1-eth0", expected=False
)
assert (
@@ -1129,9 +1129,9 @@ def test_verify_mroute_when_RP_unreachable_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure RP on FRR2 (loopback interface) for " "the group range 225.0.0.0/8")
@@ -1187,7 +1187,7 @@ def test_verify_mroute_when_RP_unreachable_p1(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-i8-eth2"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -1201,7 +1201,7 @@ def test_verify_mroute_when_RP_unreachable_p1(request):
sleep(20)
step("Clear the mroute on f1")
- clear_ip_mroute(tgen, "f1")
+ clear_mroute(tgen, "f1")
step(
"After Shut the RP interface and clear the mroute verify all "
@@ -1209,7 +1209,7 @@ def test_verify_mroute_when_RP_unreachable_p1(request):
" 'show ip mroute' "
)
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, "f1", "*", IGMP_JOIN, "f1-r2-eth3", "f1-i8-eth2", expected=False
)
assert (
@@ -1246,9 +1246,9 @@ def test_modify_igmp_query_timer_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Enable IGMP on FRR1 interface and send IGMP join (225.1.1.1)")
result = app_helper.run_join("i1", IGMP_JOIN, "l1")
@@ -1290,7 +1290,7 @@ def test_modify_igmp_query_timer_p0(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-r2-eth3"},
]
for data in input_dict_4:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -1375,9 +1375,9 @@ def test_modify_igmp_max_query_response_timer_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Enable IGMP on FRR1 interface and send IGMP join (225.1.1.1)")
result = app_helper.run_join("i1", IGMP_JOIN, "l1")
@@ -1440,7 +1440,7 @@ def test_modify_igmp_max_query_response_timer_p0(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-r2-eth3"},
]
for data in input_dict_5:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, data["dut"], data["src_address"], IGMP_JOIN, data["iif"], data["oil"]
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
diff --git a/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py b/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
index c2128cbad6..9228960776 100755
--- a/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
+++ b/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
@@ -81,13 +81,13 @@ from lib.pim import (
create_pim_config,
create_igmp_config,
verify_igmp_groups,
- verify_ip_mroutes,
+ verify_mroutes,
get_pim_interface_traffic,
verify_upstream_iif,
verify_pim_neighbors,
verify_pim_state,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ clear_mroute,
+ clear_pim_interface_traffic,
McastTesterHelper,
)
from lib.topolog import logger
@@ -273,9 +273,9 @@ def test_verify_mroute_and_traffic_when_pimd_restarted_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) in c1")
step("Configure static RP for (232.1.1.1-5) in c2")
@@ -365,7 +365,7 @@ def test_verify_mroute_and_traffic_when_pimd_restarted_p2(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-i8-eth2"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -386,7 +386,7 @@ def test_verify_mroute_and_traffic_when_pimd_restarted_p2(request):
start_router_daemons(tgen, "f1", ["pimd"])
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -434,7 +434,7 @@ def test_verify_mroute_and_traffic_when_pimd_restarted_p2(request):
{"dut": "f1", "src_address": "*", "iif": "f1-c2-eth0", "oil": "f1-i8-eth2"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -448,7 +448,7 @@ def test_verify_mroute_and_traffic_when_pimd_restarted_p2(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "none"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -483,9 +483,9 @@ def test_verify_mroute_and_traffic_when_frr_restarted_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) in c1")
step("Configure static RP for (232.1.1.1-5) in c2")
@@ -575,7 +575,7 @@ def test_verify_mroute_and_traffic_when_frr_restarted_p2(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-i8-eth2"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -596,7 +596,7 @@ def test_verify_mroute_and_traffic_when_frr_restarted_p2(request):
start_router(tgen, "f1")
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -643,7 +643,7 @@ def test_verify_mroute_and_traffic_when_frr_restarted_p2(request):
{"dut": "f1", "src_address": "*", "iif": "f1-c2-eth0", "oil": "f1-i8-eth2"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -657,7 +657,7 @@ def test_verify_mroute_and_traffic_when_frr_restarted_p2(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "none"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -692,9 +692,9 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) and " "(232.1.1.1-5) in c2")
@@ -746,7 +746,7 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
" 'show ip mroute' and mroute OIL is towards RP."
)
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
"f1",
"10.0.5.2",
@@ -756,7 +756,7 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
)
assert result is True, "Testcase {} : " "Failed Error: {}".format(tc_name, result)
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, "f1", "10.0.5.2", _IGMP_JOIN_RANGE, "f1-i2-eth1", "f1-r2-eth3"
)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -773,7 +773,7 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
{"dut": "l1", "src_address": source, "iif": "l1-r2-eth4", "oil": "l1-i1-eth1"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -804,7 +804,7 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
{"dut": "c2", "src_address": source, "iif": "c2-f1-eth1", "oil": "none"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -844,9 +844,9 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) in c1")
step("Configure static RP for (232.1.1.1-5) in c2")
@@ -939,7 +939,7 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
{"dut": "f1", "src_address": source, "iif": "f1-i2-eth1", "oil": "f1-i8-eth2"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -968,7 +968,7 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
shutdown_bringup_interface(tgen, dut, intf, True)
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -991,7 +991,7 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
)
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1021,8 +1021,8 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
intf = "f1-r2-eth3"
shutdown_bringup_interface(tgen, dut, intf, True)
- clear_ip_mroute(tgen, "l1")
- clear_ip_mroute(tgen, "l1")
+ clear_mroute(tgen, "l1")
+ clear_mroute(tgen, "l1")
step(
"After no shut, verify traffic resume to all the receivers"
@@ -1030,7 +1030,7 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
)
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1065,7 +1065,7 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
shutdown_bringup_interface(tgen, dut, intf_l1_c1, True)
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1079,7 +1079,7 @@ def test_verify_mroute_after_shut_noshut_of_upstream_interface_p1(request):
app_helper.stop_all_hosts()
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1114,9 +1114,9 @@ def test_verify_mroute_when_receiver_is_outside_frr_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP on c1 for group range " "(226.1.1.1-5) and (232.1.1.1-5)")
@@ -1194,7 +1194,7 @@ def test_verify_mroute_when_receiver_is_outside_frr_p0(request):
{"dut": "c2", "src_address": source, "iif": "c2-f1-eth1", "oil": "c2-i5-eth2"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1247,9 +1247,9 @@ def test_verify_mroute_when_FRR_is_FHR_and_LHR_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for group range (226.1.1.1-5) and " "(232.1.1.1-5) on c1")
_GROUP_RANGE = GROUP_RANGE_2 + GROUP_RANGE_3
@@ -1344,7 +1344,7 @@ def test_verify_mroute_when_FRR_is_FHR_and_LHR_p0(request):
{"dut": "l1", "src_address": source, "iif": "l1-r2-eth4", "oil": "l1-i1-eth1"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1381,7 +1381,7 @@ def test_verify_mroute_when_FRR_is_FHR_and_LHR_p0(request):
{"dut": "l1", "src_address": "*", "iif": "l1-c1-eth0", "oil": "l1-i1-eth1"},
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1404,7 +1404,7 @@ def test_verify_mroute_when_FRR_is_FHR_and_LHR_p0(request):
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1436,9 +1436,9 @@ def test_verify_mroute_when_5_different_receiver_joining_same_sources_p0(request
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) in c1")
step("Configure static RP for (232.1.1.1-5) in c2")
@@ -1573,7 +1573,7 @@ def test_verify_mroute_when_5_different_receiver_joining_same_sources_p0(request
{"dut": "f1", "src_address": source, "iif": "f1-r2-eth3", "oil": "f1-i8-eth2"},
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1601,7 +1601,7 @@ def test_verify_mroute_when_5_different_receiver_joining_same_sources_p0(request
{"dut": "l1", "src_address": source, "iif": "l1-r2-eth4", "oil": "l1-i1-eth1"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1625,7 +1625,7 @@ def test_verify_mroute_when_5_different_receiver_joining_same_sources_p0(request
{"dut": "f1", "src_address": source, "iif": "f1-r2-eth3", "oil": "f1-i8-eth2"}
]
for data in input_dict:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1645,7 +1645,7 @@ def test_verify_mroute_when_5_different_receiver_joining_same_sources_p0(request
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1674,9 +1674,9 @@ def test_verify_oil_iif_for_mroute_after_shut_noshut_source_interface_p1(request
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step("Configure static RP for (226.1.1.1-5) in c1")
step("Configure static RP for (232.1.1.1-5) in c2")
@@ -1789,7 +1789,7 @@ def test_verify_oil_iif_for_mroute_after_shut_noshut_source_interface_p1(request
},
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1814,7 +1814,7 @@ def test_verify_oil_iif_for_mroute_after_shut_noshut_source_interface_p1(request
" 'show ip mroute' "
)
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
"f1",
source_i2,
diff --git a/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py
index 6f3867cc2c..cbd1090648 100755
--- a/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py
+++ b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py
@@ -84,9 +84,9 @@ from lib.pim import (
create_pim_config,
create_igmp_config,
verify_igmp_groups,
- verify_ip_mroutes,
- clear_ip_mroute,
- clear_ip_pim_interface_traffic,
+ verify_mroutes,
+ clear_mroute,
+ clear_pim_interface_traffic,
verify_igmp_config,
verify_pim_config,
verify_pim_interface,
@@ -371,9 +371,9 @@ def test_verify_oil_when_join_prune_sent_scenario_1_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Enable the PIM on all the interfaces of FRR1, FRR2, FRR3")
@@ -483,7 +483,7 @@ def test_verify_oil_when_join_prune_sent_scenario_1_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -562,7 +562,7 @@ def test_verify_oil_when_join_prune_sent_scenario_1_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -611,7 +611,7 @@ def test_verify_oil_when_join_prune_sent_scenario_1_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_f1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -685,7 +685,7 @@ def test_verify_oil_when_join_prune_sent_scenario_1_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -744,9 +744,9 @@ def test_verify_oil_when_join_prune_sent_scenario_2_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Removing FRR3 to simulate topo " "FHR(FRR1)---LHR(FRR2)")
@@ -835,7 +835,7 @@ def test_verify_oil_when_join_prune_sent_scenario_2_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -873,7 +873,7 @@ def test_verify_oil_when_join_prune_sent_scenario_2_p1(request):
]
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -907,7 +907,7 @@ def test_verify_oil_when_join_prune_sent_scenario_2_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_l1_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -937,7 +937,7 @@ def test_verify_oil_when_join_prune_sent_scenario_2_p1(request):
]
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -989,9 +989,9 @@ def test_shut_noshut_source_interface_when_upstream_cleared_from_LHR_p1(request)
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Enable the PIM on all the interfaces of FRR1, R2 and FRR3" " routers")
@@ -1076,7 +1076,7 @@ def test_shut_noshut_source_interface_when_upstream_cleared_from_LHR_p1(request)
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1102,7 +1102,7 @@ def test_shut_noshut_source_interface_when_upstream_cleared_from_LHR_p1(request)
)
intf_f1_r2 = topo["routers"]["f1"]["links"]["r2"]["interface"]
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, "f1", source_i2, IGMP_JOIN_RANGE_1, intf_f1_i2, intf_f1_r2, expected=False
)
assert (
@@ -1135,7 +1135,7 @@ def test_shut_noshut_source_interface_when_upstream_cleared_from_LHR_p1(request)
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1161,7 +1161,7 @@ def test_shut_noshut_source_interface_when_upstream_cleared_from_LHR_p1(request)
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1196,9 +1196,9 @@ def test_shut_noshut_receiver_interface_when_upstream_cleared_from_LHR_p1(reques
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Enable the PIM on all the interfaces of FRR1, R2 and FRR3" " routers")
@@ -1278,7 +1278,7 @@ def test_shut_noshut_receiver_interface_when_upstream_cleared_from_LHR_p1(reques
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1328,7 +1328,7 @@ def test_shut_noshut_receiver_interface_when_upstream_cleared_from_LHR_p1(reques
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1355,7 +1355,7 @@ def test_shut_noshut_receiver_interface_when_upstream_cleared_from_LHR_p1(reques
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1388,9 +1388,9 @@ def test_verify_remove_add_igmp_config_to_receiver_interface_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Enable PIM on all routers")
@@ -1474,7 +1474,7 @@ def test_verify_remove_add_igmp_config_to_receiver_interface_p0(request):
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1566,7 +1566,7 @@ def test_verify_remove_add_igmp_config_to_receiver_interface_p0(request):
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1684,7 +1684,7 @@ def test_verify_remove_add_igmp_config_to_receiver_interface_p0(request):
]
for data in input_dict_l1_f1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -1736,7 +1736,7 @@ def test_verify_remove_add_igmp_config_to_receiver_interface_p0(request):
iif = topo["routers"]["l1"]["links"]["i6"]["interface"]
oil = topo["routers"]["l1"]["links"]["i1"]["interface"]
source = source_i6
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, dut, source, IGMP_JOIN_RANGE_1, iif, oil, expected=False
)
assert (
@@ -1765,9 +1765,9 @@ def test_verify_remove_add_igmp_commands_when_pim_configured_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Enable PIM on all routers")
@@ -1851,7 +1851,7 @@ def test_verify_remove_add_igmp_commands_when_pim_configured_p0(request):
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2063,9 +2063,9 @@ def test_verify_remove_add_pim_commands_when_igmp_configured_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Configure 'ip pim' on receiver interface on FRR1")
@@ -2253,9 +2253,9 @@ def test_pim_dr_priority_p0(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Configure 'ip pim' on receiver interface on FRR1")
@@ -2323,7 +2323,7 @@ def test_pim_dr_priority_p0(request):
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2360,7 +2360,7 @@ def test_pim_dr_priority_p0(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2397,7 +2397,7 @@ def test_pim_dr_priority_p0(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2492,7 +2492,7 @@ def test_pim_dr_priority_p0(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2526,9 +2526,9 @@ def test_pim_hello_timer_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step("Configure 'ip pim' on receiver interface on FRR1")
@@ -2641,9 +2641,9 @@ def test_mroute_after_removing_RP_sending_IGMP_prune_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step(
@@ -2740,7 +2740,7 @@ def test_mroute_after_removing_RP_sending_IGMP_prune_p2(request):
step("Verify mroutes and iff upstream")
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2802,7 +2802,7 @@ def test_mroute_after_removing_RP_sending_IGMP_prune_p2(request):
]
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2819,7 +2819,7 @@ def test_mroute_after_removing_RP_sending_IGMP_prune_p2(request):
logger.info("Expected Behaviour: {}".format(result))
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2896,7 +2896,7 @@ def test_mroute_after_removing_RP_sending_IGMP_prune_p2(request):
assert result is True, "Testcase {}: Failed Error: {}".format(tc_name, result)
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2915,7 +2915,7 @@ def test_mroute_after_removing_RP_sending_IGMP_prune_p2(request):
source_i2 = topo["routers"]["i6"]["links"]["l1"]["ipv4"].split("/")[0]
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -2943,9 +2943,9 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step(
@@ -3052,7 +3052,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroutes and iff upstream")
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3133,7 +3133,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroute after Shut the link from LHR to RP from RP node")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3150,7 +3150,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
logger.info("Expected Behaviour: {}".format(result))
for data in input_dict_sg_i1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3206,7 +3206,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroute after No shut the link from LHR to RP from RP node")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3217,7 +3217,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3228,7 +3228,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3282,7 +3282,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroute after Shut the link from FHR to RP from RP node")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3293,7 +3293,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3355,7 +3355,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroute after Noshut the link from FHR to RP from RP node")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3366,7 +3366,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3377,7 +3377,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3432,7 +3432,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroute after Shut the link from FHR to RP from FHR node")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3443,7 +3443,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3503,7 +3503,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
step("Verify mroute after No Shut the link from FHR to RP from FHR node")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3514,7 +3514,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3525,7 +3525,7 @@ def test_prune_sent_to_LHR_and_FHR_when_PIMnbr_down_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_sg_i1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3579,9 +3579,9 @@ def test_mroute_flags_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step(
@@ -3688,7 +3688,7 @@ def test_mroute_flags_p1(request):
step("Verify mroutes and iff upstream")
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3740,9 +3740,9 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step(
@@ -3859,7 +3859,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3918,7 +3918,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
]
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3944,7 +3944,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
)
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -3988,7 +3988,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
]
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4013,7 +4013,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
)
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4063,7 +4063,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
]
for data in input_dict_r2_f1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4088,7 +4088,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4130,14 +4130,14 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
iif = topo["routers"]["r2"]["links"]["f1"]["interface"]
oil = topo["routers"]["r2"]["links"]["i3"]["interface"]
- result = verify_ip_mroutes(tgen, dut, src_address, _IGMP_JOIN_RANGE, iif, oil)
+ result = verify_mroutes(tgen, dut, src_address, _IGMP_JOIN_RANGE, iif, oil)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
src_address = source_i1
iif = topo["routers"]["r2"]["links"]["l1"]["interface"]
oil = topo["routers"]["r2"]["links"]["i3"]["interface"]
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen, dut, src_address, _IGMP_JOIN_RANGE, iif, oil, expected=False
)
assert (
@@ -4156,7 +4156,7 @@ def test_verify_multicast_traffic_when_LHR_connected_to_RP_p1(request):
)
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4200,9 +4200,9 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
check_router_status(tgen)
step(
@@ -4289,7 +4289,7 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
]
for data in input_dict_all:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4333,7 +4333,7 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
]
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4360,7 +4360,7 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
)
for data in input_dict_l1:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4399,7 +4399,7 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
]
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4426,7 +4426,7 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
)
for data in input_dict_r2:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -4471,7 +4471,7 @@ def test_verify_multicast_traffic_when_FHR_connected_to_RP_p1(request):
]
for data in input_dict_all_star:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
diff --git a/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
index b255bddcef..e7551094ee 100755
--- a/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
+++ b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
@@ -73,10 +73,10 @@ from lib.common_config import (
from lib.pim import (
create_pim_config,
create_igmp_config,
- verify_ip_mroutes,
- clear_ip_pim_interface_traffic,
+ verify_mroutes,
+ clear_pim_interface_traffic,
verify_upstream_iif,
- clear_ip_mroute,
+ clear_mroute,
verify_pim_rp_info,
get_pim_interface_traffic,
McastTesterHelper,
@@ -273,9 +273,9 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step(
"Remove c1-c2 connected link to simulate topo "
@@ -357,7 +357,7 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
step("Verify mroutes and iff upstream")
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -373,7 +373,7 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -416,7 +416,7 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
step("Verify mroute not present after Delete of static routes on c1")
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -448,7 +448,7 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
)
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -510,7 +510,7 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
step("Verify (s,g) populated after adding default route ")
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -528,7 +528,7 @@ def test_mroute_when_RP_reachable_default_route_p2(request):
step("Verify (*,g) populated after adding default route ")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -562,9 +562,9 @@ def test_mroute_with_RP_default_route_all_nodes_p2(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step(
"Remove c1-c2 connected link to simulate topo "
@@ -646,7 +646,7 @@ def test_mroute_with_RP_default_route_all_nodes_p2(request):
step("Verify mroutes and iff upstream")
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -662,7 +662,7 @@ def test_mroute_with_RP_default_route_all_nodes_p2(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -714,7 +714,7 @@ def test_mroute_with_RP_default_route_all_nodes_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -788,7 +788,7 @@ def test_mroute_with_RP_default_route_all_nodes_p2(request):
step("Verify (s,g) populated after adding default route ")
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -806,7 +806,7 @@ def test_mroute_with_RP_default_route_all_nodes_p2(request):
step("Verify (*,g) populated after adding default route ")
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -840,9 +840,9 @@ def test_PIM_hello_tx_rx_p1(request):
# Creating configuration from JSON
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
+ clear_mroute(tgen)
reset_config_on_routers(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_pim_interface_traffic(tgen, topo)
step(
"Remove c1-c2 connected link to simulate topo "
@@ -923,7 +923,7 @@ def test_PIM_hello_tx_rx_p1(request):
step("(*,G) and (S,G) created on f1 and node verify using 'show ip mroute'")
for data in input_dict_sg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
@@ -934,7 +934,7 @@ def test_PIM_hello_tx_rx_p1(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
for data in input_dict_starg:
- result = verify_ip_mroutes(
+ result = verify_mroutes(
tgen,
data["dut"],
data["src_address"],
diff --git a/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py b/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
index b9a7cc7cd7..eafad06e96 100755
--- a/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
+++ b/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
@@ -135,16 +135,16 @@ from lib.pim import (
verify_igmp_groups,
verify_upstream_iif,
verify_join_state_and_timer,
- verify_ip_mroutes,
+ verify_mroutes,
verify_pim_neighbors,
get_pim_interface_traffic,
verify_pim_rp_info,
verify_pim_state,
- clear_ip_pim_interface_traffic,
- clear_ip_igmp_interfaces,
- clear_ip_pim_interfaces,
- clear_ip_mroute,
- clear_ip_mroute_verify,
+ clear_pim_interface_traffic,
+ clear_igmp_interfaces,
+ clear_pim_interfaces,
+ clear_mroute,
+ clear_mroute_verify,
McastTesterHelper,
)
@@ -419,7 +419,7 @@ def test_add_delete_static_RP_p0(request):
result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify ip pim join")
@@ -480,7 +480,7 @@ def test_add_delete_static_RP_p0(request):
)
step("r1: Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: mroutes are still present \n Error: {}".format(
@@ -531,8 +531,8 @@ def test_SPT_RPT_path_same_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
dut = "r1"
intf = "r1-r3-eth2"
@@ -585,7 +585,7 @@ def test_SPT_RPT_path_same_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -598,7 +598,7 @@ def test_SPT_RPT_path_same_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -613,7 +613,7 @@ def test_SPT_RPT_path_same_p1(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
@@ -626,7 +626,7 @@ def test_SPT_RPT_path_same_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -648,7 +648,7 @@ def test_SPT_RPT_path_same_p1(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r2-eth1"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -683,8 +683,8 @@ def test_not_reachable_static_RP_p0(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
dut = "r1"
intf = "r1-r3-eth2"
@@ -741,7 +741,7 @@ def test_not_reachable_static_RP_p0(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 :Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Make RP un-reachable")
@@ -811,7 +811,7 @@ def test_not_reachable_static_RP_p0(request):
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
step("r1: (*, G) cleared from mroute table using show ip mroute")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*, G) are not cleared from mroute table \n Error: {}".format(
@@ -847,8 +847,8 @@ def test_add_RP_after_join_received_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on R1 interface")
step("Configure r2 loopback interface as RP")
@@ -932,7 +932,7 @@ def test_add_RP_after_join_received_p1(request):
)
step("r1: Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: mroutes are still present\n Error: {}".format(
@@ -975,7 +975,7 @@ def test_add_RP_after_join_received_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
logger.info("Expected behavior: %s", result)
@@ -1015,8 +1015,8 @@ def test_reachable_static_RP_after_join_p0(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface and send IGMP " "join (225.1.1.1) to r1")
step("Configure r2 loopback interface as RP")
@@ -1084,7 +1084,7 @@ def test_reachable_static_RP_after_join_p0(request):
)
step("r1 : Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: mroutes are still present\n Error: {}".format(
@@ -1118,7 +1118,7 @@ def test_reachable_static_RP_after_join_p0(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
logger.info("Expected behavior: %s", result)
@@ -1180,8 +1180,8 @@ def test_send_join_on_higher_preffered_rp_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r2 (loopback interface) for the group range " "224.0.0.0/4")
@@ -1273,7 +1273,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
step("r1 : Verify ip mroutes")
iif = "r1-r4-eth3"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify PIM state")
@@ -1288,7 +1288,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_pim_interface_traffic(tgen, TOPO)
step("r1 : Verify joinTx, pruneTx count before RP gets deleted")
state_dict = {"r1": {"r1-r2-eth1": ["joinTx"], "r1-r4-eth3": ["pruneTx"]}}
@@ -1342,7 +1342,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
"RP gets deleted"
)
iif = "r1-r2-eth1"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
logger.info("Expected behavior: %s", result)
@@ -1417,8 +1417,8 @@ def test_RP_configured_as_LHR_1_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r1 (loopback interface) for the group range" " 224.0.0.0/4")
@@ -1560,7 +1560,7 @@ def test_RP_configured_as_LHR_1_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -1573,7 +1573,7 @@ def test_RP_configured_as_LHR_1_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -1594,7 +1594,7 @@ def test_RP_configured_as_LHR_1_p1(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -1629,8 +1629,8 @@ def test_RP_configured_as_LHR_2_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r1 (loopback interface) for the group range" " 224.0.0.0/4")
@@ -1765,7 +1765,7 @@ def test_RP_configured_as_LHR_2_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -1778,7 +1778,7 @@ def test_RP_configured_as_LHR_2_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -1800,7 +1800,7 @@ def test_RP_configured_as_LHR_2_p1(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -1835,8 +1835,8 @@ def test_RP_configured_as_FHR_1_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r2 (loopback interface) for the group range" " 225.1.1.0/24")
@@ -1972,7 +1972,7 @@ def test_RP_configured_as_FHR_1_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -1984,7 +1984,7 @@ def test_RP_configured_as_FHR_1_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -2006,7 +2006,7 @@ def test_RP_configured_as_FHR_1_p1(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -2040,8 +2040,8 @@ def test_RP_configured_as_FHR_2_p2(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r2 (loopback interface) for the group range" " 225.1.1.0/24")
@@ -2178,7 +2178,7 @@ def test_RP_configured_as_FHR_2_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -2191,7 +2191,7 @@ def test_RP_configured_as_FHR_2_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -2213,7 +2213,7 @@ def test_RP_configured_as_FHR_2_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -2249,8 +2249,8 @@ def test_SPT_RPT_path_different_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface and send IGMP join (225.1.1.1) to r1")
step("Configure RP on r2 (loopback interface) for the group range" " 224.0.0.0/4")
@@ -2288,7 +2288,7 @@ def test_SPT_RPT_path_different_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -2301,7 +2301,7 @@ def test_SPT_RPT_path_different_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -2316,7 +2316,7 @@ def test_SPT_RPT_path_different_p1(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -2338,7 +2338,7 @@ def test_SPT_RPT_path_different_p1(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
@@ -2362,7 +2362,7 @@ def test_SPT_RPT_path_different_p1(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -2400,8 +2400,8 @@ def test_clear_pim_configuration_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r2 (loopback interface) for the group range" " 224.0.0.0/4")
@@ -2444,19 +2444,19 @@ def test_clear_pim_configuration_p1(request):
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify IGMP groups timer restarted")
- result = clear_ip_igmp_interfaces(tgen, dut)
+ result = clear_igmp_interfaces(tgen, dut)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify PIM neighbor timer restarted")
- result = clear_ip_pim_interfaces(tgen, dut)
+ result = clear_pim_interfaces(tgen, dut)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify PIM mroute timer restarted")
- result = clear_ip_mroute_verify(tgen, dut)
+ result = clear_mroute_verify(tgen, dut)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
# Uncomment next line for debugging
@@ -2493,8 +2493,8 @@ def test_restart_pimd_process_p2(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface and send IGMP join (225.1.1.1) to R1")
step("Configure RP on r3 (loopback interface) for the group range" " 224.0.0.0/4")
@@ -2535,7 +2535,7 @@ def test_restart_pimd_process_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -2548,7 +2548,7 @@ def test_restart_pimd_process_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -2563,7 +2563,7 @@ def test_restart_pimd_process_p2(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -2585,7 +2585,7 @@ def test_restart_pimd_process_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
dut = "r1"
@@ -2594,7 +2594,7 @@ def test_restart_pimd_process_p2(request):
logger.info("waiting for 10 sec to make sure old mroute time is higher")
sleep(10)
# Why do we then wait 60 seconds below before checking the routes?
- uptime_before = verify_ip_mroutes(
+ uptime_before = verify_mroutes(
tgen, dut, STAR, GROUP_ADDRESS, iif, oil, return_uptime=True, mwait=60
)
assert isinstance(uptime_before, dict), "Testcase{} : Failed Error: {}".format(
@@ -2611,7 +2611,7 @@ def test_restart_pimd_process_p2(request):
sleep(5)
# Why do we then wait 10 seconds below before checking the routes?
- uptime_after = verify_ip_mroutes(
+ uptime_after = verify_mroutes(
tgen, dut, STAR, GROUP_ADDRESS, iif, oil, return_uptime=True, mwait=10
)
assert isinstance(uptime_after, dict), "Testcase{} : Failed Error: {}".format(
@@ -2650,8 +2650,8 @@ def test_multiple_groups_same_RP_address_p2(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface and send IGMP join (225.1.1.1) to r1")
step("Configure RP on r2 (loopback interface) for the group range" "225.1.1.0/24")
@@ -2701,7 +2701,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -2716,7 +2716,7 @@ def test_multiple_groups_same_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -2731,7 +2731,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -2753,7 +2753,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
@@ -2777,7 +2777,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Delete RP configuration")
@@ -2844,7 +2844,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -2859,7 +2859,7 @@ def test_multiple_groups_same_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -2874,7 +2874,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
@@ -2898,7 +2898,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -2920,7 +2920,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -2955,8 +2955,8 @@ def test_multiple_groups_different_RP_address_p2(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Delete existing RP configuration")
input_dict = {
@@ -3043,7 +3043,7 @@ def test_multiple_groups_different_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -3058,9 +3058,7 @@ def test_multiple_groups_different_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -3075,7 +3073,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
@@ -3098,9 +3096,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -3122,9 +3118,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) upstream IIF interface")
@@ -3139,7 +3133,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -3154,9 +3148,7 @@ def test_multiple_groups_different_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r4: Verify (*, G) upstream IIF interface")
@@ -3171,7 +3163,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r4: Verify (*, G) ip mroutes")
oif = "r4-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r4: Verify (S, G) upstream IIF interface")
@@ -3194,9 +3186,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r4: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -3215,9 +3205,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("Delete RP configuration")
@@ -3316,7 +3304,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -3331,9 +3319,7 @@ def test_multiple_groups_different_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
@@ -3348,7 +3334,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
@@ -3371,9 +3357,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -3395,9 +3379,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) upstream IIF interface")
@@ -3412,7 +3394,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
@@ -3427,9 +3409,7 @@ def test_multiple_groups_different_RP_address_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r4: Verify (*, G) upstream IIF interface")
@@ -3444,7 +3424,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r4: Verify (*, G) ip mroutes")
oif = "r4-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r4: Verify (S, G) upstream IIF interface")
@@ -3467,9 +3447,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r4: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
@@ -3491,9 +3469,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(
- tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif
- )
+ result = verify_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -3522,8 +3498,8 @@ def test_shutdown_primary_path_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
# Steps to execute
step("Enable IGMP on r1 interface")
@@ -3552,14 +3528,14 @@ def test_shutdown_primary_path_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes")
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Shut the interface r1-r2-eth1 from R1 to R2")
@@ -3578,21 +3554,21 @@ def test_shutdown_primary_path_p1(request):
dut = "r1"
iif = "r1-r3-eth2"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes")
dut = "r2"
iif = "lo"
oif = "r2-r3-eth1"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (*, G) ip mroutes")
dut = "r3"
iif = "r3-r2-eth1"
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Shut the link from R1 to R3 from R3 node")
@@ -3609,7 +3585,7 @@ def test_shutdown_primary_path_p1(request):
dut = "r1"
iif = "r1-r3-eth2"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*,G) mroutes are not cleared after shut of R1 to R3 link\n Error: {}".format(
@@ -3621,7 +3597,7 @@ def test_shutdown_primary_path_p1(request):
dut = "r2"
iif = "lo"
oif = "r2-r3-eth1"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (*,G) mroutes are not cleared after shut of R1 to R3 link\n Error: {}".format(
@@ -3633,7 +3609,7 @@ def test_shutdown_primary_path_p1(request):
dut = "r3"
iif = "r3-r2-eth1"
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (*,G) mroutes are not cleared after shut of R1 to R3 link\n Error: {}".format(
@@ -3650,21 +3626,21 @@ def test_shutdown_primary_path_p1(request):
dut = "r1"
iif = "r1-r3-eth2"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes")
dut = "r2"
iif = "lo"
oif = "r2-r3-eth1"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (*, G) ip mroutes")
dut = "r3"
iif = "r3-r2-eth1"
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: No shutdown the link from R1 to R2 from R1 node")
@@ -3676,14 +3652,14 @@ def test_shutdown_primary_path_p1(request):
dut = "r1"
iif = "r1-r2-eth1"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes")
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -3711,8 +3687,8 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r2 (loopback interface) for the group range" " 224.0.0.0/4")
@@ -3740,14 +3716,14 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes created")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes created")
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Delete RP configuration")
@@ -3794,7 +3770,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
dut = "r1"
iif = "r1-r2-eth1"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*,G) mroutes are not cleared after shut of R1 to R0 link\n Error: {}".format(
@@ -3806,7 +3782,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (*,G) mroutes are not cleared after shut of R1 to R0 link\n Error: {}".format(
@@ -3840,8 +3816,8 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
step("Creating configuration from JSON")
reset_config_on_routers(tgen)
app_helper.stop_all_hosts()
- clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, TOPO)
+ clear_mroute(tgen)
+ clear_pim_interface_traffic(tgen, TOPO)
step("Enable IGMP on r1 interface")
step("Configure RP on r2 (lo) for the group range" " 224.0.0.0/4")
@@ -3868,14 +3844,14 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes created")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes created")
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Delete RP configuration")
@@ -3917,7 +3893,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
dut = "r1"
iif = "r1-r2-eth1"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*,G) mroutes are not cleared after shut of R1 to R2 and R3 link\n Error: {}".format(
@@ -3929,7 +3905,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (*,G) mroutes are not cleared after shut of R1 to R2 and R3 link\n Error: {}".format(
diff --git a/zebra/router-id.c b/zebra/router-id.c
index ea438b4367..9f56cf0e6a 100644
--- a/zebra/router-id.c
+++ b/zebra/router-id.c
@@ -342,7 +342,7 @@ DEFUN (ip_router_id_in_vrf,
"Manually set the router-id\n"
"IP address to use for router-id\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
int idx = 0;
struct prefix rid;
@@ -372,7 +372,7 @@ DEFUN (ipv6_router_id_in_vrf,
"Manually set the IPv6 router-id\n"
"IPV6 address to use for router-id\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
int idx = 0;
struct prefix rid;
@@ -458,7 +458,7 @@ DEFUN (no_ip_router_id_in_vrf,
"Remove the manually configured router-id\n"
"IP address to use for router-id\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
struct prefix rid;
@@ -486,7 +486,7 @@ DEFUN (no_ipv6_router_id_in_vrf,
"Remove the manually configured IPv6 router-id\n"
"IPv6 address to use for router-id\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
struct prefix rid;
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index 7b377aad6d..4e97323cf6 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -1045,11 +1045,23 @@ static int netlink_route_change_read_multicast(struct nlmsghdr *h,
if (tb[RTA_IIF])
iif = *(int *)RTA_DATA(tb[RTA_IIF]);
- if (tb[RTA_SRC])
- m->sg.src = *(struct in_addr *)RTA_DATA(tb[RTA_SRC]);
+ if (tb[RTA_SRC]) {
+ if (rtm->rtm_family == RTNL_FAMILY_IPMR)
+ m->src.ipaddr_v4 =
+ *(struct in_addr *)RTA_DATA(tb[RTA_SRC]);
+ else
+ m->src.ipaddr_v6 =
+ *(struct in6_addr *)RTA_DATA(tb[RTA_SRC]);
+ }
- if (tb[RTA_DST])
- m->sg.grp = *(struct in_addr *)RTA_DATA(tb[RTA_DST]);
+ if (tb[RTA_DST]) {
+ if (rtm->rtm_family == RTNL_FAMILY_IPMR)
+ m->grp.ipaddr_v4 =
+ *(struct in_addr *)RTA_DATA(tb[RTA_DST]);
+ else
+ m->grp.ipaddr_v6 =
+ *(struct in6_addr *)RTA_DATA(tb[RTA_DST]);
+ }
if (tb[RTA_EXPIRES])
m->lastused = *(unsigned long long *)RTA_DATA(tb[RTA_EXPIRES]);
@@ -1074,6 +1086,17 @@ static int netlink_route_change_read_multicast(struct nlmsghdr *h,
}
}
+ if (rtm->rtm_family == RTNL_FAMILY_IPMR) {
+ SET_IPADDR_V4(&m->src);
+ SET_IPADDR_V4(&m->grp);
+ } else if (rtm->rtm_family == RTNL_FAMILY_IP6MR) {
+ SET_IPADDR_V6(&m->src);
+ SET_IPADDR_V6(&m->grp);
+ } else {
+ zlog_warn("%s: Invalid rtm_family received", __func__);
+ return 0;
+ }
+
if (IS_ZEBRA_DEBUG_KERNEL) {
struct interface *ifp = NULL;
struct zebra_vrf *zvrf = NULL;
@@ -1089,11 +1112,10 @@ static int netlink_route_change_read_multicast(struct nlmsghdr *h,
zvrf = zebra_vrf_lookup_by_id(vrf);
ifp = if_lookup_by_index(iif, vrf);
zlog_debug(
- "MCAST VRF: %s(%d) %s (%pI4,%pI4) IIF: %s(%d) OIF: %s jiffies: %lld",
+ "MCAST VRF: %s(%d) %s (%pIA,%pIA) IIF: %s(%d) OIF: %s jiffies: %lld",
zvrf_name(zvrf), vrf, nl_msg_type_to_str(h->nlmsg_type),
- &m->sg.src, &m->sg.grp, ifp ? ifp->name : "Unknown",
- iif, oif_list,
- m->lastused);
+ &m->src, &m->grp, ifp ? ifp->name : "Unknown", iif,
+ oif_list, m->lastused);
}
return 0;
}
@@ -2263,13 +2285,29 @@ int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *in)
req.n.nlmsg_flags = NLM_F_REQUEST;
req.n.nlmsg_pid = zns->netlink_cmd.snl.nl_pid;
- req.ndm.ndm_family = RTNL_FAMILY_IPMR;
req.n.nlmsg_type = RTM_GETROUTE;
nl_attr_put32(&req.n, sizeof(req), RTA_IIF, mroute->ifindex);
nl_attr_put32(&req.n, sizeof(req), RTA_OIF, mroute->ifindex);
- nl_attr_put32(&req.n, sizeof(req), RTA_SRC, mroute->sg.src.s_addr);
- nl_attr_put32(&req.n, sizeof(req), RTA_DST, mroute->sg.grp.s_addr);
+
+ if (mroute->family == AF_INET) {
+ req.ndm.ndm_family = RTNL_FAMILY_IPMR;
+ nl_attr_put(&req.n, sizeof(req), RTA_SRC,
+ &mroute->src.ipaddr_v4,
+ sizeof(mroute->src.ipaddr_v4));
+ nl_attr_put(&req.n, sizeof(req), RTA_DST,
+ &mroute->grp.ipaddr_v4,
+ sizeof(mroute->grp.ipaddr_v4));
+ } else {
+ req.ndm.ndm_family = RTNL_FAMILY_IP6MR;
+ nl_attr_put(&req.n, sizeof(req), RTA_SRC,
+ &mroute->src.ipaddr_v6,
+ sizeof(mroute->src.ipaddr_v6));
+ nl_attr_put(&req.n, sizeof(req), RTA_DST,
+ &mroute->grp.ipaddr_v6,
+ sizeof(mroute->grp.ipaddr_v6));
+ }
+
/*
* What?
*
diff --git a/zebra/zebra_mroute.c b/zebra/zebra_mroute.c
index ef0f2d8924..5d38c37901 100644
--- a/zebra/zebra_mroute.c
+++ b/zebra/zebra_mroute.c
@@ -39,20 +39,37 @@ void zebra_ipmr_route_stats(ZAPI_HANDLER_ARGS)
int suc = -1;
memset(&mroute, 0, sizeof(mroute));
- STREAM_GET(&mroute.sg.src, msg, 4);
- STREAM_GET(&mroute.sg.grp, msg, 4);
- STREAM_GETL(msg, mroute.ifindex);
+ STREAM_GETL(msg, mroute.family);
- if (IS_ZEBRA_DEBUG_KERNEL) {
- char sbuf[40];
- char gbuf[40];
+ switch (mroute.family) {
+ case AF_INET:
+ SET_IPADDR_V4(&mroute.src);
+ SET_IPADDR_V4(&mroute.grp);
+ STREAM_GET(&mroute.src.ipaddr_v4, msg,
+ sizeof(mroute.src.ipaddr_v4));
+ STREAM_GET(&mroute.grp.ipaddr_v4, msg,
+ sizeof(mroute.grp.ipaddr_v4));
+ break;
+ case AF_INET6:
+ SET_IPADDR_V6(&mroute.src);
+ SET_IPADDR_V6(&mroute.grp);
+ STREAM_GET(&mroute.src.ipaddr_v6, msg,
+ sizeof(mroute.src.ipaddr_v6));
+ STREAM_GET(&mroute.grp.ipaddr_v6, msg,
+ sizeof(mroute.grp.ipaddr_v6));
+ break;
+ default:
+ zlog_warn("%s: Invalid address family received while parsing",
+ __func__);
+ return;
+ }
- inet_ntop(AF_INET, &mroute.sg.src, sbuf, sizeof(sbuf));
- inet_ntop(AF_INET, &mroute.sg.grp, gbuf, sizeof(gbuf));
+ STREAM_GETL(msg, mroute.ifindex);
- zlog_debug("Asking for (%s,%s)[%s(%u)] mroute information",
- sbuf, gbuf, zvrf->vrf->name, zvrf->vrf->vrf_id);
- }
+ if (IS_ZEBRA_DEBUG_KERNEL)
+ zlog_debug("Asking for (%pIA,%pIA)[%s(%u)] mroute information",
+ &mroute.src, &mroute.grp, zvrf->vrf->name,
+ zvrf->vrf->vrf_id);
suc = kernel_get_ipmr_sg_stats(zvrf, &mroute);
@@ -62,8 +79,19 @@ stream_failure:
stream_reset(s);
zclient_create_header(s, ZEBRA_IPMR_ROUTE_STATS, zvrf_id(zvrf));
- stream_put_in_addr(s, &mroute.sg.src);
- stream_put_in_addr(s, &mroute.sg.grp);
+
+ if (mroute.family == AF_INET) {
+ stream_write(s, &mroute.src.ipaddr_v4,
+ sizeof(mroute.src.ipaddr_v4));
+ stream_write(s, &mroute.grp.ipaddr_v4,
+ sizeof(mroute.grp.ipaddr_v4));
+ } else {
+ stream_write(s, &mroute.src.ipaddr_v6,
+ sizeof(mroute.src.ipaddr_v6));
+ stream_write(s, &mroute.grp.ipaddr_v6,
+ sizeof(mroute.grp.ipaddr_v6));
+ }
+
stream_put(s, &mroute.lastused, sizeof(mroute.lastused));
stream_putl(s, (uint32_t)suc);
diff --git a/zebra/zebra_mroute.h b/zebra/zebra_mroute.h
index 3c12b82da3..6c56c2e41d 100644
--- a/zebra/zebra_mroute.h
+++ b/zebra/zebra_mroute.h
@@ -29,7 +29,9 @@ extern "C" {
#endif
struct mcast_route_data {
- struct prefix_sg sg;
+ int family;
+ struct ipaddr src;
+ struct ipaddr grp;
unsigned int ifindex;
unsigned long long lastused;
};
diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c
index e99cb76119..2cc84a1f7f 100644
--- a/zebra/zebra_routemap.c
+++ b/zebra/zebra_routemap.c
@@ -638,7 +638,7 @@ DEFPY_YANG (ip_protocol,
assert(proto);
assert(rmap);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -672,7 +672,7 @@ DEFPY_YANG (no_ip_protocol,
assert(proto);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -719,7 +719,7 @@ DEFPY_YANG (ipv6_protocol,
assert(rmap);
assert(proto);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -753,7 +753,7 @@ DEFPY_YANG (no_ipv6_protocol,
assert(proto);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -801,7 +801,7 @@ DEFPY_YANG (ip_protocol_nht_rmap,
assert(proto);
assert(rmap);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -835,7 +835,7 @@ DEFPY_YANG (no_ip_protocol_nht_rmap,
assert(proto);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -883,7 +883,7 @@ DEFPY_YANG (ipv6_protocol_nht_rmap,
assert(rmap);
assert(proto);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -917,7 +917,7 @@ DEFPY_YANG (no_ipv6_protocol_nht_rmap,
assert(proto);
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
diff --git a/zebra/zebra_vrf.h b/zebra/zebra_vrf.h
index a24a008b76..21e7f286f3 100644
--- a/zebra/zebra_vrf.h
+++ b/zebra/zebra_vrf.h
@@ -192,14 +192,10 @@ struct zebra_vrf {
/*
* special macro to allow us to get the correct zebra_vrf
*/
-#define ZEBRA_DECLVAR_CONTEXT(A, B) \
- struct vrf *A; \
- if (vty->node == CONFIG_NODE) \
- A = vrf_lookup_by_id(VRF_DEFAULT); \
- else \
- A = VTY_GET_CONTEXT(vrf); \
- VTY_CHECK_CONTEXT(A); \
- struct zebra_vrf *B = A->info
+#define ZEBRA_DECLVAR_CONTEXT_VRF(vrfptr, zvrfptr) \
+ VTY_DECLVAR_CONTEXT_VRF(vrfptr); \
+ struct zebra_vrf *zvrfptr = vrfptr->info; \
+ MACRO_REQUIRE_SEMICOLON() /* end */
static inline vrf_id_t zvrf_id(struct zebra_vrf *zvrf)
{
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 22c65e3c0c..b20d8daf38 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -1413,7 +1413,7 @@ DEFUN (ip_nht_default_route,
"Filter Next Hop tracking route resolution\n"
"Resolve via default route\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -1752,7 +1752,7 @@ DEFUN (no_ip_nht_default_route,
"Filter Next Hop tracking route resolution\n"
"Resolve via default route\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -1772,7 +1772,7 @@ DEFUN (ipv6_nht_default_route,
"Filter Next Hop tracking route resolution\n"
"Resolve via default route\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -1793,7 +1793,7 @@ DEFUN (no_ipv6_nht_default_route,
"Filter Next Hop tracking route resolution\n"
"Resolve via default route\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -2676,77 +2676,6 @@ static void vty_show_ip_route_summary_prefix(struct vty *vty,
}
}
-/*
- * Show IPv6 mroute command.Used to dump
- * the Multicast routing table.
- */
-DEFUN (show_ipv6_mroute,
- show_ipv6_mroute_cmd,
- "show ipv6 mroute [vrf NAME]",
- SHOW_STR
- IP_STR
- "IPv6 Multicast routing table\n"
- VRF_CMD_HELP_STR)
-{
- struct route_table *table;
- struct route_node *rn;
- struct route_entry *re;
- int first = 1;
- vrf_id_t vrf_id = VRF_DEFAULT;
-
- if (argc == 5)
- VRF_GET_ID(vrf_id, argv[4]->arg, false);
-
- table = zebra_vrf_table(AFI_IP6, SAFI_MULTICAST, vrf_id);
- if (!table)
- return CMD_SUCCESS;
-
- /* Show all IPv6 route. */
- for (rn = route_top(table); rn; rn = srcdest_route_next(rn))
- RNODE_FOREACH_RE (rn, re) {
- if (first) {
- vty_out(vty, SHOW_ROUTE_V6_HEADER);
- first = 0;
- }
- vty_show_ip_route(vty, rn, re, NULL, false, false);
- }
- return CMD_SUCCESS;
-}
-
-DEFUN (show_ipv6_mroute_vrf_all,
- show_ipv6_mroute_vrf_all_cmd,
- "show ipv6 mroute vrf all",
- SHOW_STR
- IP_STR
- "IPv6 Multicast routing table\n"
- VRF_ALL_CMD_HELP_STR)
-{
- struct route_table *table;
- struct route_node *rn;
- struct route_entry *re;
- struct vrf *vrf;
- struct zebra_vrf *zvrf;
- int first = 1;
-
- RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- if ((zvrf = vrf->info) == NULL
- || (table = zvrf->table[AFI_IP6][SAFI_MULTICAST]) == NULL)
- continue;
-
- /* Show all IPv6 route. */
- for (rn = route_top(table); rn; rn = srcdest_route_next(rn))
- RNODE_FOREACH_RE (rn, re) {
- if (first) {
- vty_out(vty, SHOW_ROUTE_V6_HEADER);
- first = 0;
- }
- vty_show_ip_route(vty, rn, re, NULL, false,
- false);
- }
- }
- return CMD_SUCCESS;
-}
-
DEFUN (allow_external_route_update,
allow_external_route_update_cmd,
"allow-external-route-update",
@@ -2950,7 +2879,7 @@ DEFUN (vrf_vni_mapping,
{
int filter = 0;
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
assert(vrf);
assert(zvrf);
@@ -2979,7 +2908,7 @@ DEFUN (no_vrf_vni_mapping,
{
int filter = 0;
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
vni_t vni = strtoul(argv[2]->arg, NULL, 10);
assert(vrf);
@@ -4395,7 +4324,7 @@ DEFUN(ip_table_range, ip_table_range_cmd,
"Start Routing Table\n"
"End Routing Table\n")
{
- ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+ ZEBRA_DECLVAR_CONTEXT_VRF(vrf, zvrf);
if (!zvrf)
return CMD_WARNING;
@@ -4529,11 +4458,6 @@ void zebra_vty_init(void)
install_element(VRF_NODE, &no_ipv6_nht_default_route_cmd);
install_element(CONFIG_NODE, &rnh_hide_backups_cmd);
- install_element(VIEW_NODE, &show_ipv6_mroute_cmd);
-
- /* Commands for VRF */
- install_element(VIEW_NODE, &show_ipv6_mroute_vrf_all_cmd);
-
install_element(VIEW_NODE, &show_frr_cmd);
install_element(VIEW_NODE, &show_evpn_global_cmd);
install_element(VIEW_NODE, &show_evpn_vni_cmd);