igmp_snooping.c File Reference

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 igmpSnoopingGetDefaultSettings (IgmpSnoopingSettings *settings)
 Initialize settings with default values. More...
 
error_t igmpSnoopingInit (IgmpSnoopingContext *context, const IgmpSnoopingSettings *settings)
 IGMP snooping switch initialization. More...
 
error_t igmpSnoopingStart (IgmpSnoopingContext *context)
 Start IGMP snooping switch. More...
 
error_t igmpSnoopingStop (IgmpSnoopingContext *context)
 Stop IGMP snooping switch. More...
 
void igmpSnoopingTick (IgmpSnoopingContext *context)
 IGMP snooping switch timer handler. More...
 

Detailed Description

IGMP snooping switch.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2024 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.

Description

In the case of IP multicast traffic, an IGMP snooping switch provides the benefit of conserving bandwidth on those segments of the network where no node has expressed interest in receiving packets addressed to the group address. Refer to the following RFCs for complete details:

  • RFC 1112: Host Extensions for IP Multicasting
  • RFC 2236: Internet Group Management Protocol, Version 2
  • RFC 3376: Internet Group Management Protocol, Version 3
  • RFC 4541: Considerations for IGMP and MLD Snooping Switches
Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file igmp_snooping.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   IGMP_TRACE_LEVEL

Definition at line 43 of file igmp_snooping.c.

Function Documentation

◆ igmpSnoopingGetDefaultSettings()

void igmpSnoopingGetDefaultSettings ( IgmpSnoopingSettings settings)

Initialize settings with default values.

Parameters
[out]settingsStructure that contains IGMP snooping settings

Definition at line 62 of file igmp_snooping.c.

◆ igmpSnoopingInit()

error_t igmpSnoopingInit ( IgmpSnoopingContext context,
const IgmpSnoopingSettings settings 
)

IGMP snooping switch initialization.

Parameters
[in]contextPointer to the IGMP snooping switch context
[in]settingsIGMP snooping specific settings
Returns
Error code

Definition at line 94 of file igmp_snooping.c.

◆ igmpSnoopingStart()

error_t igmpSnoopingStart ( IgmpSnoopingContext context)

Start IGMP snooping switch.

Parameters
[in]contextPointer to the IGMP snooping switch context
Returns
Error code

Definition at line 157 of file igmp_snooping.c.

◆ igmpSnoopingStop()

error_t igmpSnoopingStop ( IgmpSnoopingContext context)

Stop IGMP snooping switch.

Parameters
[in]contextPointer to the IGMP snooping switch context
Returns
Error code

Definition at line 202 of file igmp_snooping.c.

◆ igmpSnoopingTick()

void igmpSnoopingTick ( IgmpSnoopingContext context)

IGMP snooping switch timer handler.

Parameters
[in]contextPointer to the IGMP snooping switch context

Definition at line 255 of file igmp_snooping.c.