ipv6_multicast.c
error_t ethAcceptMacAddr(NetInterface *interface, const MacAddr *macAddr)
Add a unicast/multicast address to the MAC filter table.
Definition: ethernet.c:594
IPv6 (Internet Protocol Version 6)
void ipv6DeleteMulticastFilterEntry(Ipv6FilterEntry *entry)
Delete a multicast filter entry.
Definition: ipv6_multicast.c:686
bool_t ipv6CompareSrcAddrLists(const Ipv6SrcAddrList *list1, const Ipv6SrcAddrList *list2)
Compare lists of sources.
Definition: ipv6_multicast.c:812
int_t ipv6FindSrcAddr(const Ipv6SrcAddrList *list, const Ipv6Addr *srcAddr)
Search the list of sources for a given IP address.
Definition: ipv6_multicast.c:776
error_t ipv6AddSrcAddr(Ipv6SrcAddrList *list, const Ipv6Addr *srcAddr)
Append a source address to a given list.
Definition: ipv6_multicast.c:699
error_t ipv6MulticastFilter(NetInterface *interface, const Ipv6Addr *destAddr, const Ipv6Addr *srcAddr)
Filter out incoming multicast traffic.
Definition: ipv6_multicast.c:54
const uint8_t res[]
error_t ethDropMacAddr(NetInterface *interface, const MacAddr *macAddr)
Remove a unicast/multicast address from the MAC filter table.
Definition: ethernet.c:666
Ipv6FilterEntry * ipv6FindMulticastFilterEntry(NetInterface *interface, const Ipv6Addr *multicastAddr)
Search the multicast filter for a given address.
Definition: ipv6_multicast.c:654
void mldNodeStateChangeEvent(MldNodeContext *context, const Ipv6Addr *groupAddr, IpFilterMode newFilterMode, const Ipv6SrcAddrList *newFilter)
Process multicast reception state change.
Definition: mld_node.c:306
IPv6 multicast filtering.
NetInterface * nicGetPhysicalInterface(NetInterface *interface)
Retrieve physical interface.
Definition: nic.c:85
error_t ipv6JoinMulticastGroup(NetInterface *interface, const Ipv6Addr *groupAddr)
Join an IPv6 multicast group.
Definition: ipv6_multicast.c:127
void ipv6DeriveInterfaceState(Ipv6FilterEntry *entry, SocketMulticastGroup *group)
Derive the per-interface state from the per-socket state.
Definition: ipv6_multicast.c:383
int_t socket(int_t family, int_t type, int_t protocol)
Create a socket that is bound to a specific transport service provider.
Definition: bsd_socket.c:65
error_t ipv6MapMulticastAddrToMac(const Ipv6Addr *ipAddr, MacAddr *macAddr)
Map an IPv6 multicast address to a MAC-layer multicast address.
Definition: ipv6_multicast.c:569
void ipv6DropMulticastAddr(NetInterface *interface, const Ipv6Addr *groupAddr)
Reconfigure the MAC layer to reject multicast traffic.
Definition: ipv6_multicast.c:536
MLD node (Multicast Listener Discovery for IPv6)
void ipv6UpdateMulticastFilter(NetInterface *interface, const Ipv6Addr *groupAddr)
Update IPv6 multicast filter table.
Definition: ipv6_multicast.c:231
Helper functions for sockets.
error_t ipv6LeaveMulticastGroup(NetInterface *interface, const Ipv6Addr *groupAddr)
Leave an IPv6 multicast group.
Definition: ipv6_multicast.c:186
void ipv6RemoveSrcAddr(Ipv6SrcAddrList *list, const Ipv6Addr *srcAddr)
Remove a source address from a given list.
Definition: ipv6_multicast.c:739
Ipv6FilterEntry * ipv6CreateMulticastFilterEntry(NetInterface *interface, const Ipv6Addr *multicastAddr)
Create a new multicast filter entry.
Definition: ipv6_multicast.c:610
TCP/IP stack core.
error_t ipv6AcceptMulticastAddr(NetInterface *interface, const Ipv6Addr *groupAddr)
Reconfigure the MAC layer to accept multicast traffic.
Definition: ipv6_multicast.c:484
int_t socketFindMulticastSrcAddr(SocketMulticastGroup *group, const IpAddr *srcAddr)
Search the list of multicast sources for a given IP address.
Definition: socket_misc.c:564
Debugging facilities.