11 #include <satcat5/ip_core.h>
99 template <
unsigned SIZE = SATCAT5_MBUFF_RXPKT>
104 :
DeferFwd(parent, m_buff, SIZE), m_buff{} {}
Callback interface for responding to ARP and ICMP events.
Protocol handler for Ethernet-to-IPv4 ARP queries and replies.
Timer objects are polled after a fixed delay or at a regular interval.
Deferred packet-forwarding system for the IPv4 router.
void timer_event() override
Child class MUST override this method.
DeferFwd(satcat5::router2::Dispatch *parent, satcat5::router2::DeferPkt *buff, unsigned bcount)
Constructor should only be accessed by children, and requires a backing array of empty DeferPkt objec...
bool accept(const satcat5::eth::PluginPacket &meta)
Accept this packet into the queue?
void arp_event(const satcat5::eth::MacAddr &mac, const satcat5::ip::Addr &ip) override
Callback for any announced MAC/IP address pair.
Implement DeferFwd with static memory allocation.
DeferFwdStatic(satcat5::router2::Dispatch *parent)
Constructor links the parent interface and the backing array.
Packet-processing pipeline for the IPv4 router.
Helper functions for manipulating singly-linked lists.
Protocol handler for the Address Resolution Protocol (ARP)
Software-defined Ethernet switch.
#define SATCAT5_PMASK_TYPE
Set the integer type used to identify source and destination ports.
Templated functions for manipulating singly-linked lists.
An Ethernet MAC address (with serializable interface).
Ephemeral data structure provided to plugin callbacks.
A packet is a linked-list of memory blocks, plus metadata.
IPv4 address is a 32-bit unsigned integer.
State information for a single deferred packet.
satcat5::ip::Addr dst_ip
Destination address.
satcat5::io::MultiPacket * pkt
Packet object.
SATCAT5_PMASK_TYPE dst_mask
Destination port-mask.
u16 trem
Remaining time in msec.
bool read_meta(satcat5::eth::PluginPacket &meta)
Reconstitute switch PacketMeta from this object.
u16 sent
Number of attempts so far.
Timestamp for measuring elapsed time.
TimeRef and TimeVal define the API for monotonic timers.