Helper functions for IGMP snooping switch. More...
#include "core/net.h"#include "ipv4/ipv4.h"#include "ipv4/ipv4_misc.h"#include "igmp/igmp_snooping.h"#include "igmp/igmp_snooping_misc.h"#include "debug.h"Go to the source code of this file.
Macros | |
| #define | TRACE_LEVEL IGMP_TRACE_LEVEL |
Functions | |
| void | igmpSnoopingProcessMessage (IgmpSnoopingContext *context, const Ipv4PseudoHeader *pseudoHeader, const IgmpMessage *message, size_t length, const NetRxAncillary *ancillary) |
| Process incoming IGMP message. More... | |
| void | igmpSnoopingProcessMembershipQuery (IgmpSnoopingContext *context, const Ipv4PseudoHeader *pseudoHeader, const IgmpMessage *message, size_t length, const NetRxAncillary *ancillary) |
| Process incoming Membership Query message. More... | |
| void | igmpSnoopingProcessMembershipReport (IgmpSnoopingContext *context, const Ipv4PseudoHeader *pseudoHeader, const IgmpMessage *message, size_t length, const NetRxAncillary *ancillary) |
| Process incoming Membership Report message. More... | |
| void | igmpSnoopingProcessMembershipReportV3 (IgmpSnoopingContext *context, const Ipv4PseudoHeader *pseudoHeader, const IgmpMembershipReportV3 *message, size_t length, const NetRxAncillary *ancillary) |
| Process incoming Version 3 Membership Report message. More... | |
| void | igmpSnoopingProcessLeaveGroup (IgmpSnoopingContext *context, const Ipv4PseudoHeader *pseudoHeader, const IgmpMessage *message, size_t length, const NetRxAncillary *ancillary) |
| Process incoming Leave Group message. More... | |
| void | igmpSnoopingProcessUnknownMessage (IgmpSnoopingContext *context, const Ipv4PseudoHeader *pseudoHeader, const IgmpMessage *message, size_t length, const NetRxAncillary *ancillary) |
| Process unrecognized IGMP messages. More... | |
| error_t | igmpSnoopingForwardMessage (IgmpSnoopingContext *context, uint32_t forwardPorts, const MacAddr *destMacAddr, const Ipv4PseudoHeader *pseudoHeader, const IgmpMessage *message, size_t length) |
| Forward an IGMP message to the desired ports. More... | |
| IgmpSnoopingGroup * | igmpSnoopingCreateGroup (IgmpSnoopingContext *context, Ipv4Addr groupAddr, uint8_t port) |
| Create a new multicast group. More... | |
| IgmpSnoopingGroup * | igmpSnoopingFindGroup (IgmpSnoopingContext *context, Ipv4Addr groupAddr, uint8_t port) |
| Search the list of multicast groups for a given group address. More... | |
| void | igmpSnoopingDeleteGroup (IgmpSnoopingContext *context, IgmpSnoopingGroup *group) |
| Delete a multicast group. More... | |
| void | igmpSnoopingEnableMonitoring (IgmpSnoopingContext *context, bool_t enable) |
| Enable IGMP monitoring. More... | |
| void | igmpSnoopingUpdateStaticFdbEntry (IgmpSnoopingContext *context, Ipv4Addr groupAddr) |
| Update a entry of the static MAC table. More... | |
| void | igmpSnoopingSetUnknownMcastFwdPorts (IgmpSnoopingContext *context, bool_t enable, uint32_t forwardPorts) |
| Set forward ports for unknown multicast packets. More... | |
| uint32_t | igmpSnoopingGetRouterPorts (IgmpSnoopingContext *context) |
Detailed Description
Helper functions for IGMP snooping switch.
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2025 Oryx Embedded SARL. All rights reserved.
This file is part of CycloneTCP Open.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- Version
- 2.5.4
Definition in file igmp_snooping_misc.c.
Macro Definition Documentation
◆ TRACE_LEVEL
| #define TRACE_LEVEL IGMP_TRACE_LEVEL |
Definition at line 32 of file igmp_snooping_misc.c.
Function Documentation
◆ igmpSnoopingCreateGroup()
| IgmpSnoopingGroup* igmpSnoopingCreateGroup | ( | IgmpSnoopingContext * | context, |
| Ipv4Addr | groupAddr, | ||
| uint8_t | port | ||
| ) |
Create a new multicast group.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] groupAddr Multicast group address [in] port Port number associated with the multicast group
- Returns
- Pointer to the newly created multicast group
Definition at line 614 of file igmp_snooping_misc.c.
◆ igmpSnoopingDeleteGroup()
| void igmpSnoopingDeleteGroup | ( | IgmpSnoopingContext * | context, |
| IgmpSnoopingGroup * | group | ||
| ) |
Delete a multicast group.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] group Multicast group
Definition at line 695 of file igmp_snooping_misc.c.
◆ igmpSnoopingEnableMonitoring()
| void igmpSnoopingEnableMonitoring | ( | IgmpSnoopingContext * | context, |
| bool_t | enable | ||
| ) |
Enable IGMP monitoring.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] enable Enable or disable IGMP monitoring
Definition at line 712 of file igmp_snooping_misc.c.
◆ igmpSnoopingFindGroup()
| IgmpSnoopingGroup* igmpSnoopingFindGroup | ( | IgmpSnoopingContext * | context, |
| Ipv4Addr | groupAddr, | ||
| uint8_t | port | ||
| ) |
Search the list of multicast groups for a given group address.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] groupAddr Multicast group address [in] port Port number
- Returns
- Pointer to the matching multicast group, if any
Definition at line 660 of file igmp_snooping_misc.c.
◆ igmpSnoopingForwardMessage()
| error_t igmpSnoopingForwardMessage | ( | IgmpSnoopingContext * | context, |
| uint32_t | forwardPorts, | ||
| const MacAddr * | destMacAddr, | ||
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMessage * | message, | ||
| size_t | length | ||
| ) |
Forward an IGMP message to the desired ports.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] forwardPorts Port map [in] destMacAddr Destination MAC address [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the IGMP message [in] length Length of the IGMP message, in bytes
Definition at line 543 of file igmp_snooping_misc.c.
◆ igmpSnoopingGetRouterPorts()
| uint32_t igmpSnoopingGetRouterPorts | ( | IgmpSnoopingContext * | context | ) |
Definition at line 854 of file igmp_snooping_misc.c.
◆ igmpSnoopingProcessLeaveGroup()
| void igmpSnoopingProcessLeaveGroup | ( | IgmpSnoopingContext * | context, |
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMessage * | message, | ||
| size_t | length, | ||
| const NetRxAncillary * | ancillary | ||
| ) |
Process incoming Leave Group message.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the incoming IGMP message [in] length Length of the IGMP message, in bytes [in] ancillary Additional options passed to the stack along with the packet
Definition at line 459 of file igmp_snooping_misc.c.
◆ igmpSnoopingProcessMembershipQuery()
| void igmpSnoopingProcessMembershipQuery | ( | IgmpSnoopingContext * | context, |
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMessage * | message, | ||
| size_t | length, | ||
| const NetRxAncillary * | ancillary | ||
| ) |
Process incoming Membership Query message.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the incoming IGMP message [in] length Length of the IGMP message, in bytes [in] ancillary Additional options passed to the stack along with the packet
Definition at line 118 of file igmp_snooping_misc.c.
◆ igmpSnoopingProcessMembershipReport()
| void igmpSnoopingProcessMembershipReport | ( | IgmpSnoopingContext * | context, |
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMessage * | message, | ||
| size_t | length, | ||
| const NetRxAncillary * | ancillary | ||
| ) |
Process incoming Membership Report message.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the incoming IGMP message [in] length Length of the IGMP message, in bytes [in] ancillary Additional options passed to the stack along with the packet
Definition at line 264 of file igmp_snooping_misc.c.
◆ igmpSnoopingProcessMembershipReportV3()
| void igmpSnoopingProcessMembershipReportV3 | ( | IgmpSnoopingContext * | context, |
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMembershipReportV3 * | message, | ||
| size_t | length, | ||
| const NetRxAncillary * | ancillary | ||
| ) |
Process incoming Version 3 Membership Report message.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the incoming IGMP message [in] length Length of the IGMP message, in bytes [in] ancillary Additional options passed to the stack along with the packet
Definition at line 331 of file igmp_snooping_misc.c.
◆ igmpSnoopingProcessMessage()
| void igmpSnoopingProcessMessage | ( | IgmpSnoopingContext * | context, |
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMessage * | message, | ||
| size_t | length, | ||
| const NetRxAncillary * | ancillary | ||
| ) |
Process incoming IGMP message.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the incoming IGMP message [in] length Length of the IGMP message, in bytes [in] ancillary Additional options passed to the stack along with the packet
Definition at line 56 of file igmp_snooping_misc.c.
◆ igmpSnoopingProcessUnknownMessage()
| void igmpSnoopingProcessUnknownMessage | ( | IgmpSnoopingContext * | context, |
| const Ipv4PseudoHeader * | pseudoHeader, | ||
| const IgmpMessage * | message, | ||
| size_t | length, | ||
| const NetRxAncillary * | ancillary | ||
| ) |
Process unrecognized IGMP messages.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] pseudoHeader IPv4 pseudo header [in] message Pointer to the incoming IGMP message [in] length Length of the IGMP message, in bytes [in] ancillary Additional options passed to the stack along with the packet
Definition at line 513 of file igmp_snooping_misc.c.
◆ igmpSnoopingSetUnknownMcastFwdPorts()
| void igmpSnoopingSetUnknownMcastFwdPorts | ( | IgmpSnoopingContext * | context, |
| bool_t | enable, | ||
| uint32_t | forwardPorts | ||
| ) |
Set forward ports for unknown multicast packets.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] enable Enable or disable forwarding of unknown multicast packets [in] forwardPorts Port map
Definition at line 830 of file igmp_snooping_misc.c.
◆ igmpSnoopingUpdateStaticFdbEntry()
| void igmpSnoopingUpdateStaticFdbEntry | ( | IgmpSnoopingContext * | context, |
| Ipv4Addr | groupAddr | ||
| ) |
Update a entry of the static MAC table.
- Parameters
-
[in] context Pointer to the IGMP snooping switch context [in] groupAddr Multicast group address to be updated
Definition at line 735 of file igmp_snooping_misc.c.
