34 #include <satcat5/ip_core.h>
46 u16 query_count, query_timer;
49 : group(satcat5::ip::ADDR_NONE)
50 , mask_active(0), mask_rcvd1(0), mask_rcvd2(0)
51 , query_count(0), query_timer(0) {}
95 ~
Server() SATCAT5_OPTIONAL_DTOR;
119 { m_mdly_fast = fast; m_mdly_slow = slow; }
144 template <
unsigned SIZE>
151 :
Server(sw, iface, m_buff, SIZE) {}
Ethernet switch plugin API.
A shared-memory Ethernet switch based on the MultiBuffer class.
Router/Server for the Internet Group Management Protocol (IGMP).
bool is_querier() const
Are we the current querier?
Server(satcat5::eth::SwitchCore *sw, satcat5::ip::Dispatch *iface, satcat5::igmp::Group *groups, unsigned gcount)
Link this plugin to the network switch or router.
void query(satcat5::eth::PluginPacket &pkt) override
Packet-processing callback from PluginCore.
void force_version(u8 version)
Force a specific IGMP version for compatibility or testing.
u8 version() const
Current IGMP version for this network.
void set_mdly(u8 fast, u8 slow)
Set the max-delay parameter for outgoing queries.
void flush()
Flush all existing routes and reset status.
SATCAT5_PMASK_TYPE get_mask(const satcat5::ip::Addr &addr) const
Get the port-mask for a given multicast IP address.
void timer_event() override
Child class MUST override this method.
Statically-allocated wrapper for ip::IgmpServer.
ServerStatic(satcat5::eth::SwitchCore *sw, satcat5::ip::Dispatch *iface)
Link this plugin to the network switch or router.
Protocol handler and dispatch unit for Internet Protocol v4 (IPv4).
Timer objects are polled after a fixed delay or at a regular interval.
Plugins for the software-defined Ethernet switch and IPv4 router.
#define SATCAT5_PMASK_TYPE
Set the integer type used to identify source and destination ports.
Core event-processing loop for SatCat5 software.
Ephemeral data structure provided to plugin callbacks.
Router state for monitoring IGMP multicast subscriptions.
IPv4 address is a 32-bit unsigned integer.