SatCat5
igmp_server.h File Reference

Detailed Description

Router-side implementation of the Internet Group Management Protocol (IGMP)

Any IPv4 packet sent to 224.0.0.0/8 (i.e., 224.*.*.*) is a "multicast" packet. Routers should send multicast packets to interested recipients, including routers with downstream recipieitns, but avoid sending them to uninterested hosts. IGMP is the protocol that routers to determine which next-hop interface(s) have members subscribed to a given multicast address (i.e., a "group"), so it can forward only to those port(s).

This file implements the router/server side of IGMP:

  • ip::IgmpGroup represents a listing of subscribed clients and the protocol state for ongoing queries to that state.
  • ip::IgmpServer is the router software that issues IGMP queries, and makes that information available to the routing table.

As required by IETF, the server defaults to IGMPv3, but can be downgraded to IGMPv1 or IGMPv2 on user request. SatCat5 does not currently support the source-address filtering features of IGMPv3, responding as if all clients have requested an exclude-none policy.

IGMPv1 is defined by IETF RFC-1112. IGMPv2 is defined by IETF RFC-2236. IGMPv3 is defined by IETF RFC-9776.

Definition in file igmp_server.h.

#include <satcat5/eth_plugin.h>
#include <satcat5/ip_core.h>
#include <satcat5/polling.h>
Include dependency graph for igmp_server.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  satcat5::igmp::Group
 Router state for monitoring IGMP multicast subscriptions. More...
 
class  satcat5::igmp::Server
 Router/Server for the Internet Group Management Protocol (IGMP). More...
 
class  satcat5::igmp::ServerStatic< SIZE >
 Statically-allocated wrapper for ip::IgmpServer. More...