16 #include <satcat5/ethernet.h>
17 #include <satcat5/ip_core.h>
77 {m_listeners.
add(evt);}
116 bool send_internal(u16 opcode,
Callback interface for responding to ARP and ICMP events.
virtual void gateway_change(const satcat5::ip::Addr &dstaddr, const satcat5::ip::Addr &gateway)
Callback for changes to gateway configuration.
virtual void arp_event(const satcat5::eth::MacAddr &mac, const satcat5::ip::Addr &ip)=0
Callback for any announced MAC/IP address pair.
Implemention of "net::Dispatch" for Ethernet frames.
Protocol handler for Ethernet-to-IPv4 ARP queries and replies.
bool send_query(const satcat5::ip::Addr &target, const satcat5::eth::VlanTag &vtag=satcat5::eth::VTAG_NONE)
Send a query for a given IP address.
ProtoArp(satcat5::eth::Dispatch *dispatcher, const satcat5::ip::Addr &ipaddr=satcat5::ip::ADDR_NONE)
Attach this ARP handler to an eth::Dispatch interface.
void set_ipaddr(const satcat5::ip::Addr &ipaddr)
Set the local IP address.
void add(satcat5::eth::ArpListener *evt)
Register an event-listener.
void remove(satcat5::eth::ArpListener *evt)
Unregister an event-listener.
void gateway_change(const satcat5::ip::Addr &dstaddr, const satcat5::ip::Addr &gateway)
Notify all listeners of a change in gateway configuration.
bool send_probe(const satcat5::ip::Addr &target, const satcat5::eth::VlanTag &vtag=satcat5::eth::VTAG_NONE)
Send a probe to test if a given address is occupied.
void set_proxy(const satcat5::ip::Table *table)
Set IP routing table to enable proxy-ARP.
void frame_rcvd(satcat5::io::LimitedRead &src) override
New-frame notifications from the parent interface.
bool send_announce(const satcat5::eth::VlanTag &vtag=satcat5::eth::VTAG_NONE) const
Send an unsolicited ARP announcement.
Accept incoming Ethernet packets by EtherType.
Limited read of next N bytes.
Abstract API for reading byte-streams and packets.
Abstract API for writing byte-streams and packets.
Helper functions for manipulating singly-linked lists.
void add(T *item)
Add new item to front or back, whichever is simpler.
void remove(T *item)
Remove the designated item from the list.
Templated functions for manipulating singly-linked lists.
An Ethernet MAC address (with serializable interface).
Header contents for an 802.1Q Virtual-LAN tag.
IPv4 address is a 32-bit unsigned integer.