$ cd ../
igmp-watch — bash

user@devops:~$ cat README.md

igmp-watch

# Description

igmp-watch (cpp-igmp-watch) is a Linux kernel multicast group membership monitor written in C++23 with zero external dependencies. It reads /proc/net/igmp (IGMPv3, IPv4 groups) and /proc/net/igmp6 (MLDv2, IPv6 groups) and shows every group: address in readable form (the kernel prints IPv4 groups in reversed byte order — 010000E0 -> 224.0.0.1), number of local users (subscribed sockets), group timer, reporter (last reporting pid) and decoded IPv6 state flags (TE, GS, UNSOL, RI — 0000000C -> UNSOL|RI). Decodes well-known groups: all-hosts, all-routers, mDNS, mDNSv6, LLMNR, SSDP, IGMP, RIP, MLDv2, VRRP. Filters --iface NAME, --v4/--v6, --users N and --top N. Watch mode (--watch N) with join/leave deltas between snapshots; per-frame flush on pipes. JSON output (--json) with summary + groups array validated with python -m json.tool. --demo with 19 groups of a synthetic office + wifi + docker + LAN bridge host and --file for dumps with # comments (includes sample-igmp.table and sample-igmp6.table). Self-test 69 checks: hex helpers, IPv6 compression, v4/v6 parsers, names, filters, demo, JSON and real /proc reads. Zero deps: g++ -std=c++23 -O2 -Wall -Wextra.

# Key features

$ Reads /proc/net/igmp (IGMPv3, IPv4) and /proc/net/igmp6 (MLDv2, IPv6) into one table

$ Address decoding: IPv4 groups in reversed byte order (010000E0 -> 224.0.0.1)

$ IPv6 compression to standard notation (ff020000...0000fb -> ff02::fb)

$ Well-known names: all-hosts, all-routers, mDNS, mDNSv6, LLMNR, SSDP, IGMP, RIP, MLDv2

$ Decoded IPv6 flags (TE, GS, UNSOL, RI) and last reporter pid

$ Watch mode (--watch N) with join/leave deltas; filters --iface, --v4/--v6, --users, --top

$ Validatable JSON; --demo with 19 synthetic groups; --file tolerates # comments; --no-color with mutable ANSI palette

# Gallery

Terminal del proyecto
igmp-watch - Terminal del proyecto
Vista movil
igmp-watch - Vista movil

# Technologies used

C++23