[![Build Status](https://cicd.apps.glenux.net/api/badges/glenux/igmpgen/status.svg)](https://cicd.apps.glenux.net/glenux/igmpgen) ![License LGPL3.0-or-later](https://img.shields.io/badge/license-LGPL3.0--or--later-blue.svg) [![Donate on patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://patreon.com/glenux) # IGMP Packet Generator ## Overview The IGMP Packet Generator (`igmpgen`) is a specialized tool designed for generating various types of Internet Group Management Protocol (IGMP) packets. This tool is particularly useful for network administrators, developers, and researchers involved in testing and analyzing multicast network protocols. ## Features * **Support for Multiple IGMP Versions**: Compatible with IGMPv1, IGMPv2, and IGMPv3. * **Variety of IGMP Packets**: Capable of generating Query, Report, Leave, and other IGMP packet types. * **Customizable Packet Parameters**: Allows setting of source/destination IPs, ports, and multicast groups. * **Router Alert Option**: Implements the Router Alert IP option (IPOPT_RA). ## Requirements * Unix-like operating system. * `libnet` library * CMake for building the project. For debian/ubuntu, simply type: ```shell-session sudo apt-get install cmake libnet1-dev gcc rpm ``` ## Install ### Clone the Repository (if applicable): ```bash git clone https://code.apps.glenux.net/glenux/igmpgen cd igmpgen ``` ### Build with CMake: Run CMake and build the project: ```shell-session cmake -S . -B _build cmake --build _build ``` ### Install binaries Either with your favorite packaging system ```shell-session cpack ``` Or directly ```shell-session cmake --install _build ``` ## Usage After building, you can run `igmpgen` with the necessary command-line arguments: ### Command-Line Arguments ```bash IGMP packet generator Usage: ./igmpgen [options] Options: -i Specify the network interface (e.g., eth0) -t Specify the IGMP packet type and version (e.g., 1.query) -g Specify the IGMP group (e.g., 224.0.0.1) -s Specify the source IP and port (e.g., 192.168.1.1:1234) -d Specify the destination IP and port (e.g., 224.0.0.2:5678) -n Specify delay between packets in seconds (optional) Available IGMP packet types: - 1.query - 1.report - 1.dvmrp - 2.query - 2.report - 2.leave - 3.report ``` ### Example Generate an IGMPv2 Membership Report for group `224.0.0.1` on `eth0`: ```bash ./igmpgen -i eth0 -g 224.0.0.1 -t 2.report ``` ## Contributing Contributions to `igmpgen` are welcome. Please feel free to report issues, suggest features, or submit pull requests. ## License This project is licensed under the LGPL 3.0-or-later. ## Related projects * [IGMPproxy (Official Version)](https://github.com/pali/igmpproxy): The official version of the IGMPproxy tool. * [IGMPproxy with IGMPv3 & FreeBSD support](https://github.com/ViToni/igmpproxy/): A version of IGMPproxy with added support for IGMPv3 and FreeBSD.