IGMP(4)
π IGMP(4) β the Kernel Interfaces Manual glow-up π
okay bestie, so this is the Kernel Interfaces Manual, and today's main character is igmp β the Internet Group Management Protocol π
β¨
π¦ NAME π¦
igmp β Internet Group Management Protocol, no cap π
β¨ SYNOPSIS β¨
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/igmp.h>
int
socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
πΈ DESCRIPTION πΈ
okay so IGMP is literally the control plane protocol that IPv4 hosts and routers use to spread the word about multicast group membership info π«Ά. Normally you're not touching this directly β it's the kernel itself doing the work, responding to multicast membership requests from user apps. Routing protocols can open a raw socket to talk to igmp directly though, iykyk.
And fr fr, as of FreeBSD 8.0, IGMP version 3 is implemented π. This is the era that adds support for Source-Specific Multicast (SSM) β meaning apps can tell upstream multicast routers "bestie, I only wanna receive multicast streams from these particular sources," and that's iconic.
π§ SYSCTL VARIABLES π§
net.inet.igmp.statsβ this opaque read-only variable exposes the stack-wide IGMPv3 protocol statistics tonetstat(1). basically the receipts πnet.inet.igmp.ifinfoβ this opaque read-only variable exposes the per-link IGMPv3 status toifmcstat(8). per-link vibes β¨net.inet.igmp.gsrdelayβ this one specifies the time threshold, in seconds, for processing Group-and-Source Specific Queries (GSR). and here's the tea: since GSR query processing requires maintaining state on the host, it can cause memory to be allocated, so it's lowkey a potential attack point for Denial-of-Service (DoS) π. If more than one GSR query comes in within this threshold, it gets dropped β all to mitigate the potential for DoS. protect your bag bestie π«Άnet.inet.igmp.default_versionβ controls the default version of IGMP used on all links. this sysctl is normally set to3by default, periodt.net.inet.igmp.legacysuppβ if this is non-zero, then IGMP v1 and v2 membership reports received on a link are allowed to suppress the IGMP v3 state-change reports that this host would otherwise issue. this sysctl is normally enabled by default πnet.inet.igmp.v2enableβ if non-zero, then IGMP v2 membership queries get processed by this host, and backwards compatibility is enabled until the v2 'Old Querier Present' timer expires. normally enabled by default β¨net.inet.igmp.v1enableβ if non-zero, then IGMP v1 membership queries get processed by this host, and backwards compatibility is enabled until the v1 'Old Querier Present' timer expires. normally enabled by default πnet.inet.igmp.sendlocalβ if non-zero, then IGMP state-changes for groups in the224.0.0.0/24link-scope prefix will be issued. this behaviour is recommended if you're deploying FreeBSD in a network environment with layer 2 devices that snoop IGMP traffic to mitigate multicast propagation throughout the network π. normally enabled by default.net.inet.igmp.sendraβ if non-zero, then IGMP v2 and v3 reports will contain the IP Router Alert option. normally enabled by default πnet.inet.igmp.recvifkludgeβ if non-zero, then received IGMP reports containing0.0.0.0as their source get rewritten to contain the subnet address. useful when there are hosts on-link that haven't been configured with a primary IPv4 address yet β a little glow-up for the unconfigured girlies π. normally enabled by default.
π₯ SEE ALSO π₯
netstat(1), sourcefilter(3), inet(4), multicast(4), ifmcstat(8) β go read these next, bestie, they're all connected π
π HISTORY π
The igmp manual page re-appeared in FreeBSD 8.0. a comeback era, honestly π
and that's the whole page, bestie π«Ά this was the Debian version from March 9, 2009 β yeah, she's a little vintage but she ate π
β¨
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixpkgs unstable: source
- Copyright (c) 2009 Bruce Simpson
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms