diff options
author | Donatas Abraitis <donatas@opensourcerouting.org> | 2022-03-10 17:10:43 +0100 |
---|---|---|
committer | Donatas Abraitis <donatas@opensourcerouting.org> | 2022-03-13 18:31:34 +0100 |
commit | f2058cb425b6f2e5efb3ac8608c47bcc2da5535d (patch) | |
tree | fd6568d21b7d67043c2bfb19a24767949a2de6ac /pimd/pim_igmp.c | |
parent | Merge pull request #10704 from anlancs/zebra-remove-check (diff) | |
download | frr-f2058cb425b6f2e5efb3ac8608c47bcc2da5535d.tar.xz frr-f2058cb425b6f2e5efb3ac8608c47bcc2da5535d.zip |
pimd: Add IGMP join sent/failed statistics
```
exit1-debian-11# sh ip igmp statistics
IGMP statistics
Interface : global
V1 query : 0
V2 query : 0
V3 query : 0
V2 leave : 0
V1 report : 0
V2 report : 0
V3 report : 16
mtrace response : 0
mtrace request : 0
unsupported : 0
joins failed : 0
joins sent : 11
total groups : 4
total source groups : 0
exit1-debian-11# sh ip igmp statistics json
{
"global":{
"name":"global",
"queryV1":0,
"queryV2":0,
"queryV3":0,
"leaveV3":0,
"reportV1":0,
"reportV2":0,
"reportV3":16,
"mtraceResponse":0,
"mtraceRequest":0,
"unsupported":0,
"totalGroups":4,
"totalSourceGroups":0,
"joinsFailed":0,
"joinsSent":11
}
}
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_igmp.c')
-rw-r--r-- | pimd/pim_igmp.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/pimd/pim_igmp.c b/pimd/pim_igmp.c index 592cd7ec4..fcb335a5b 100644 --- a/pimd/pim_igmp.c +++ b/pimd/pim_igmp.c @@ -220,6 +220,7 @@ static int igmp_sock_open(struct in_addr ifaddr, struct interface *ifp, int fd; int join = 0; struct in_addr group; + struct pim_interface *pim_ifp = ifp->info; fd = pim_socket_mcast(IPPROTO_IGMP, ifaddr, ifp, 1); @@ -228,7 +229,8 @@ static int igmp_sock_open(struct in_addr ifaddr, struct interface *ifp, if (PIM_IF_TEST_IGMP_LISTEN_ALLROUTERS(pim_options)) { if (inet_aton(PIM_ALL_ROUTERS, &group)) { - if (!pim_socket_join(fd, group, ifaddr, ifp->ifindex)) + if (!pim_socket_join(fd, group, ifaddr, ifp->ifindex, + pim_ifp)) ++join; } else { zlog_warn( @@ -244,7 +246,7 @@ static int igmp_sock_open(struct in_addr ifaddr, struct interface *ifp, IGMP routers must receive general queries for querier election. */ if (inet_aton(PIM_ALL_SYSTEMS, &group)) { - if (!pim_socket_join(fd, group, ifaddr, ifp->ifindex)) + if (!pim_socket_join(fd, group, ifaddr, ifp->ifindex, pim_ifp)) ++join; } else { zlog_warn( @@ -254,7 +256,8 @@ static int igmp_sock_open(struct in_addr ifaddr, struct interface *ifp, } if (inet_aton(PIM_ALL_IGMP_ROUTERS, &group)) { - if (!pim_socket_join(fd, group, ifaddr, ifp->ifindex)) { + if (!pim_socket_join(fd, group, ifaddr, ifp->ifindex, + pim_ifp)) { ++join; } } else { @@ -489,16 +492,16 @@ static int igmp_recv_query(struct gm_sock *igmp, int query_version, /* Collecting IGMP Rx stats */ switch (query_version) { case 1: - igmp->rx_stats.query_v1++; + igmp->igmp_stats.query_v1++; break; case 2: - igmp->rx_stats.query_v2++; + igmp->igmp_stats.query_v2++; break; case 3: - igmp->rx_stats.query_v3++; + igmp->igmp_stats.query_v3++; break; default: - igmp->rx_stats.unsupported++; + igmp->igmp_stats.unsupported++; } /* @@ -630,7 +633,7 @@ static int igmp_v1_recv_report(struct gm_sock *igmp, struct in_addr from, } /* Collecting IGMP Rx stats */ - igmp->rx_stats.report_v1++; + igmp->igmp_stats.report_v1++; if (PIM_DEBUG_IGMP_TRACE) { zlog_warn("%s %s: FIXME WRITEME", __FILE__, __func__); @@ -782,7 +785,7 @@ int pim_igmp_packet(struct gm_sock *igmp, char *buf, size_t len) zlog_warn("Ignoring unsupported IGMP message type: %d", msg_type); /* Collecting IGMP Rx stats */ - igmp->rx_stats.unsupported++; + igmp->igmp_stats.unsupported++; return -1; } @@ -1159,7 +1162,7 @@ static struct gm_sock *igmp_sock_new(int fd, struct in_addr ifaddr, pim_ifp->gm_default_robustness_variable; igmp->sock_creation = pim_time_monotonic_sec(); - igmp_stats_init(&igmp->rx_stats); + igmp_stats_init(&igmp->igmp_stats); if (mtrace_only) { igmp->mtrace_only = mtrace_only; |