Helper functions for MLD node. More...
#include "core/net.h"#include "ipv6/ipv6.h"#include "ipv6/ipv6_multicast.h"#include "ipv6/icmpv6.h"#include "mld/mld_node.h"#include "mld/mld_node_misc.h"#include "debug.h"Go to the source code of this file.
Macros | |
| #define | TRACE_LEVEL MLD_TRACE_LEVEL |
Functions | |
| void | mldNodeChangeCompatibilityMode (MldNodeContext *context, MldVersion compatibilityMode) |
| Change host compatibility mode. More... | |
| void | mldNodeSendUnsolicitedReport (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Send an unsolicited Report message. More... | |
| void | mldNodeSendListenerReport (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Send Multicast Listener Report message. More... | |
| void | mldNodeSendListenerDone (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Send Multicast Listener Done message. More... | |
| void | mldNodeSendCurrentStateReport (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Send Current-State Report message. More... | |
| void | mldNodeSendStateChangeReport (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Send State-Change Report message. More... | |
| void | mldNodeFlushReportRecords (MldNodeContext *context, NetBuffer *buffer, size_t offset, size_t *length) |
| Flush report records. More... | |
| void | mldNodeProcessMessage (MldNodeContext *context, const Ipv6PseudoHeader *pseudoHeader, const MldMessage *message, size_t length) |
| Process incoming MLD message. More... | |
| void | mldNodeProcessListenerQuery (MldNodeContext *context, const Ipv6PseudoHeader *pseudoHeader, const MldMessage *message, size_t length) |
| Process incoming Multicast Listener Query message. More... | |
| void | mldNodeProcessListenerQueryV2 (MldNodeContext *context, const Ipv6PseudoHeader *pseudoHeader, const MldListenerQueryV2 *message, size_t length) |
| Process incoming Version 2 Multicast Listener Query message. More... | |
| void | mldNodeProcessListenerReport (MldNodeContext *context, const Ipv6PseudoHeader *pseudoHeader, const MldMessage *message, size_t length) |
| Process incoming Multicast Listener Report message. More... | |
| void | mldNodeMergeReports (MldNodeGroup *group, IpFilterMode newFilterMode, const Ipv6SrcAddrList *newFilter) |
| Merge the difference report and the pending report. More... | |
| bool_t | mldNodeGetRetransmitStatus (MldNodeContext *context) |
| Get the retransmission status of the State-Change report. More... | |
| bool_t | mldNodeGetGroupRetransmitStatus (MldNodeGroup *group) |
| Get the retransmission status for a given group. More... | |
| void | mldNodeDecGroupRetransmitCounters (MldNodeGroup *group) |
| Decrement retransmission counters for a given group. More... | |
| MldNodeGroup * | mldNodeCreateGroup (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Create a new multicast group. More... | |
| MldNodeGroup * | mldNodeFindGroup (MldNodeContext *context, const Ipv6Addr *groupAddr) |
| Search the list of multicast groups for a given group address. More... | |
| bool_t | mldNodeMatchGroup (MldNodeGroup *group, const Ipv6Addr *multicastAddr) |
| Check whether a group matches a given multicast address. More... | |
| void | mldNodeDeleteGroup (MldNodeGroup *group) |
| Delete a multicast group. More... | |
| void | mldNodeFlushUnusedGroups (MldNodeContext *context) |
| Delete groups in "non-existent" state. More... | |
| error_t | mldNodeAddSrcAddr (MldNodeSrcAddrList *list, const Ipv6Addr *srcAddr) |
| Append a source address to a given list. More... | |
| void | mldNodeRemoveSrcAddr (MldNodeSrcAddrList *list, const Ipv6Addr *srcAddr) |
| Remove a source address from a given list. More... | |
| int_t | mldNodeFindSrcAddr (const MldNodeSrcAddrList *list, const Ipv6Addr *srcAddr) |
| Search the list of sources for a given IP address. More... | |
Detailed Description
Helper functions for MLD node.
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 mld_node_misc.c.
Macro Definition Documentation
◆ TRACE_LEVEL
| #define TRACE_LEVEL MLD_TRACE_LEVEL |
Definition at line 32 of file mld_node_misc.c.
Function Documentation
◆ mldNodeAddSrcAddr()
| error_t mldNodeAddSrcAddr | ( | MldNodeSrcAddrList * | list, |
| const Ipv6Addr * | srcAddr | ||
| ) |
Append a source address to a given list.
- Parameters
-
[in] list Pointer to the list of source addresses [in] srcAddr Source address to be added
Definition at line 1479 of file mld_node_misc.c.
◆ mldNodeChangeCompatibilityMode()
| void mldNodeChangeCompatibilityMode | ( | MldNodeContext * | context, |
| MldVersion | compatibilityMode | ||
| ) |
Change host compatibility mode.
- Parameters
-
[in] context Pointer to the MLD node context [in] compatibilityMode New host compatibility mode
Definition at line 53 of file mld_node_misc.c.
◆ mldNodeCreateGroup()
| MldNodeGroup* mldNodeCreateGroup | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Create a new multicast group.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr Multicast group address
- Returns
- Pointer to the newly created multicast group
Definition at line 1302 of file mld_node_misc.c.
◆ mldNodeDecGroupRetransmitCounters()
| void mldNodeDecGroupRetransmitCounters | ( | MldNodeGroup * | group | ) |
Decrement retransmission counters for a given group.
- Parameters
-
[in] group Pointer to the multicast group
Definition at line 1241 of file mld_node_misc.c.
◆ mldNodeDeleteGroup()
| void mldNodeDeleteGroup | ( | MldNodeGroup * | group | ) |
Delete a multicast group.
- Parameters
-
[in] group Pointer to the multicast group
Definition at line 1425 of file mld_node_misc.c.
◆ mldNodeFindGroup()
| MldNodeGroup* mldNodeFindGroup | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Search the list of multicast groups for a given group address.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr Multicast group address
- Returns
- Pointer to the matching multicast group, if any
Definition at line 1363 of file mld_node_misc.c.
◆ mldNodeFindSrcAddr()
| int_t mldNodeFindSrcAddr | ( | const MldNodeSrcAddrList * | list, |
| const Ipv6Addr * | srcAddr | ||
| ) |
Search the list of sources for a given IP address.
- Parameters
-
[in] list Pointer to the list of source addresses [in] srcAddr Source IP address
- Returns
- Index of the matching IP address is returned. -1 is returned if the specified IP address cannot be found
Definition at line 1564 of file mld_node_misc.c.
◆ mldNodeFlushReportRecords()
| void mldNodeFlushReportRecords | ( | MldNodeContext * | context, |
| NetBuffer * | buffer, | ||
| size_t | offset, | ||
| size_t * | length | ||
| ) |
Flush report records.
- Parameters
-
[in] context Pointer to the MLD node context [in] buffer Multi-part buffer containing the report message [in] offset Offset to the first byte of the report message [in,out] length Length of the report message, in bytes
Definition at line 658 of file mld_node_misc.c.
◆ mldNodeFlushUnusedGroups()
| void mldNodeFlushUnusedGroups | ( | MldNodeContext * | context | ) |
Delete groups in "non-existent" state.
- Parameters
-
[in] context Pointer to the MLD node context
Definition at line 1441 of file mld_node_misc.c.
◆ mldNodeGetGroupRetransmitStatus()
| bool_t mldNodeGetGroupRetransmitStatus | ( | MldNodeGroup * | group | ) |
Get the retransmission status for a given group.
- Parameters
-
[in] group Pointer to the multicast group
- Returns
- TRUE if additional retransmissions are needed, else FALSE
Definition at line 1209 of file mld_node_misc.c.
◆ mldNodeGetRetransmitStatus()
| bool_t mldNodeGetRetransmitStatus | ( | MldNodeContext * | context | ) |
Get the retransmission status of the State-Change report.
- Parameters
-
[in] context Pointer to the MLD node context
- Returns
- TRUE if additional retransmissions are needed, else FALSE
Definition at line 1171 of file mld_node_misc.c.
◆ mldNodeMatchGroup()
| bool_t mldNodeMatchGroup | ( | MldNodeGroup * | group, |
| const Ipv6Addr * | multicastAddr | ||
| ) |
Check whether a group matches a given multicast address.
- Parameters
-
[in] group Pointer to the multicast group [in] multicastAddr IPv6 multicast address
- Returns
- TRUE if the group matches the specified multicast address, else FALSE
Definition at line 1397 of file mld_node_misc.c.
◆ mldNodeMergeReports()
| void mldNodeMergeReports | ( | MldNodeGroup * | group, |
| IpFilterMode | newFilterMode, | ||
| const Ipv6SrcAddrList * | newFilter | ||
| ) |
Merge the difference report and the pending report.
- Parameters
-
[in] group Pointer to the multicast group [in] newFilterMode New filter mode for the affected group [in] newFilter New interface state for the affected group
Definition at line 1076 of file mld_node_misc.c.
◆ mldNodeProcessListenerQuery()
| void mldNodeProcessListenerQuery | ( | MldNodeContext * | context, |
| const Ipv6PseudoHeader * | pseudoHeader, | ||
| const MldMessage * | message, | ||
| size_t | length | ||
| ) |
Process incoming Multicast Listener Query message.
- Parameters
-
[in] context Pointer to the MLD node context [in] pseudoHeader IPv6 pseudo header [in] message Pointer to the incoming MLD message [in] length Length of the MLD message, in bytes
Definition at line 747 of file mld_node_misc.c.
◆ mldNodeProcessListenerQueryV2()
| void mldNodeProcessListenerQueryV2 | ( | MldNodeContext * | context, |
| const Ipv6PseudoHeader * | pseudoHeader, | ||
| const MldListenerQueryV2 * | message, | ||
| size_t | length | ||
| ) |
Process incoming Version 2 Multicast Listener Query message.
- Parameters
-
[in] context Pointer to the MLD node context [in] pseudoHeader IPv6 pseudo header [in] message Pointer to the incoming MLD message [in] length Length of the MLD message, in bytes
Definition at line 839 of file mld_node_misc.c.
◆ mldNodeProcessListenerReport()
| void mldNodeProcessListenerReport | ( | MldNodeContext * | context, |
| const Ipv6PseudoHeader * | pseudoHeader, | ||
| const MldMessage * | message, | ||
| size_t | length | ||
| ) |
Process incoming Multicast Listener Report message.
- Parameters
-
[in] context Pointer to the MLD node context [in] pseudoHeader IPv6 pseudo header [in] message Pointer to the incoming MLD message [in] length Length of the MLD message, in bytes
Definition at line 1034 of file mld_node_misc.c.
◆ mldNodeProcessMessage()
| void mldNodeProcessMessage | ( | MldNodeContext * | context, |
| const Ipv6PseudoHeader * | pseudoHeader, | ||
| const MldMessage * | message, | ||
| size_t | length | ||
| ) |
Process incoming MLD message.
- Parameters
-
[in] context Pointer to the MLD node context [in] pseudoHeader IPv6 pseudo header [in] message Pointer to the incoming MLD message [in] length Length of the MLD message, in bytes
Definition at line 701 of file mld_node_misc.c.
◆ mldNodeRemoveSrcAddr()
| void mldNodeRemoveSrcAddr | ( | MldNodeSrcAddrList * | list, |
| const Ipv6Addr * | srcAddr | ||
| ) |
Remove a source address from a given list.
- Parameters
-
[in] list Pointer to the list of source addresses [in] srcAddr Source address to be removed
Definition at line 1527 of file mld_node_misc.c.
◆ mldNodeSendCurrentStateReport()
| void mldNodeSendCurrentStateReport | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Send Current-State Report message.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr IPv6 address specifying the group address
Definition at line 223 of file mld_node_misc.c.
◆ mldNodeSendListenerDone()
| void mldNodeSendListenerDone | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Send Multicast Listener Done message.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr IPv6 address specifying the multicast address being left
Definition at line 183 of file mld_node_misc.c.
◆ mldNodeSendListenerReport()
| void mldNodeSendListenerReport | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Send Multicast Listener Report message.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr IPv6 address specifying the multicast address
Definition at line 144 of file mld_node_misc.c.
◆ mldNodeSendStateChangeReport()
| void mldNodeSendStateChangeReport | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Send State-Change Report message.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr IPv6 address specifying the group address
Definition at line 453 of file mld_node_misc.c.
◆ mldNodeSendUnsolicitedReport()
| void mldNodeSendUnsolicitedReport | ( | MldNodeContext * | context, |
| const Ipv6Addr * | groupAddr | ||
| ) |
Send an unsolicited Report message.
- Parameters
-
[in] context Pointer to the MLD node context [in] groupAddr IPv6 address specifying the multicast address
Definition at line 108 of file mld_node_misc.c.
