TianoCore EDK2 master
Loading...
Searching...
No Matches
Ip6Mld.h File Reference

Go to the source code of this file.

Data Structures

struct  IP6_MLD_HEAD
 
struct  IP6_MLD_GROUP
 
struct  IP6_MLD_SERVICE_DATA
 

Macros

#define IP6_UNSOLICITED_REPORT_INTERVAL   10
 

Functions

IP6_MLD_GROUPIp6FindMldEntry (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *MulticastAddr)
 
EFI_STATUS Ip6InitMld (IN IP6_SERVICE *IpSb)
 
EFI_STATUS Ip6JoinGroup (IN IP6_SERVICE *IpSb, IN IP6_INTERFACE *Interface, IN EFI_IPv6_ADDRESS *Address)
 
EFI_STATUS Ip6LeaveGroup (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Address)
 
EFI_STATUS Ip6Groups (IN IP6_PROTOCOL *IpInstance, IN BOOLEAN JoinFlag, IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL)
 
EFI_STATUS Ip6ProcessMldQuery (IN IP6_SERVICE *IpSb, IN EFI_IP6_HEADER *Head, IN NET_BUF *Packet)
 
EFI_STATUS Ip6ProcessMldReport (IN IP6_SERVICE *IpSb, IN EFI_IP6_HEADER *Head, IN NET_BUF *Packet)
 
VOID Ip6MldTimerTicking (IN IP6_SERVICE *IpSb)
 

Detailed Description

Multicast Listener Discovery support routines.

Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file Ip6Mld.h.

Macro Definition Documentation

◆ IP6_UNSOLICITED_REPORT_INTERVAL

#define IP6_UNSOLICITED_REPORT_INTERVAL   10

Definition at line 13 of file Ip6Mld.h.

Function Documentation

◆ Ip6FindMldEntry()

IP6_MLD_GROUP * Ip6FindMldEntry ( IN IP6_SERVICE IpSb,
IN EFI_IPv6_ADDRESS MulticastAddr 
)

Search a IP6_MLD_GROUP list entry node from a list array.

Parameters
[in]IpSbPoints to an IP6 service binding instance.
[in]MulticastAddrThe IPv6 multicast address to be searched.
Returns
The found IP6_ML_GROUP list entry or NULL.

Search a IP6_MLD_GROUP list entry node from a list array.

Parameters
[in]IpSbPoints to IP6 service binding instance.
[in]MulticastAddrThe IPv6 multicast address to be searched.
Returns
The found IP6_ML_GROUP list entry or NULL.

Definition at line 56 of file Ip6Mld.c.

◆ Ip6Groups()

EFI_STATUS Ip6Groups ( IN IP6_PROTOCOL IpInstance,
IN BOOLEAN  JoinFlag,
IN EFI_IPv6_ADDRESS *GroupAddress  OPTIONAL 
)

Worker function for EfiIp6Groups(). The caller should verify that the parameters are valid.

Parameters
[in]IpInstanceThe IP6 child to change the setting.
[in]JoinFlagTRUE to join the group, otherwise leave it.
[in]GroupAddressThe target group address. If NULL, leave all the group addresses.
Return values
EFI_ALREADY_STARTEDWants to join the group, but is already a member of it.
EFI_OUT_OF_RESOURCESFailed to allocate some resources.
EFI_DEVICE_ERRORFailed to set the group configuration.
EFI_SUCCESSSuccessfully updated the group setting.
EFI_NOT_FOUNDTried to leave a group of whom it isn't a member.

Worker function for EfiIp6Groups(). The caller should make sure that the parameters are valid.

Parameters
[in]IpInstanceThe IP6 child to change the setting.
[in]JoinFlagTRUE to join the group, otherwise leave it.
[in]GroupAddressThe target group address. If NULL, leave all the group addresses.
Return values
EFI_ALREADY_STARTEDWants to join the group, but is already a member of it
EFI_OUT_OF_RESOURCESFailed to allocate sufficient resources.
EFI_DEVICE_ERRORFailed to set the group configuration.
EFI_SUCCESSSuccessfully updated the group setting.
EFI_NOT_FOUNDTry to leave the group which it isn't a member.

Definition at line 613 of file Ip6Mld.c.

◆ Ip6InitMld()

EFI_STATUS Ip6InitMld ( IN IP6_SERVICE IpSb)

Init the MLD data of the IP6 service instance, configure MNP to receive ALL SYSTEM multicasts.

Parameters
[in]IpSbThe IP6 service whose MLD is to be initialized.
Return values
EFI_OUT_OF_RESOURCESThere are not sufficient resources to complete the operation.
EFI_SUCCESSThe MLD module successfully initialized.

Init the MLD data of the IP6 service instance. Configure MNP to receive ALL SYSTEM multicast.

Parameters
[in]IpSbThe IP6 service whose MLD is to be initialized.
Return values
EFI_OUT_OF_RESOURCESThere are not sufficient resourcet to complete the operation.
EFI_SUCCESSThe MLD module successfully initialized.

Definition at line 334 of file Ip6Mld.c.

◆ Ip6JoinGroup()

EFI_STATUS Ip6JoinGroup ( IN IP6_SERVICE IpSb,
IN IP6_INTERFACE Interface,
IN EFI_IPv6_ADDRESS Address 
)

Join the multicast group on behalf of this IP6 service binding instance.

Parameters
[in]IpSbThe IP6 service binding instance.
[in]InterfacePoints to an IP6_INTERFACE structure.
[in]AddressThe group address to join.
Return values
EFI_SUCCESSSuccessfully joined the multicast group.
EFI_OUT_OF_RESOURCESFailed to allocate resources.
OthersFailed to join the multicast group.

Join the multicast group on behalf of this IP6 service binding instance.

Parameters
[in]IpSbThe IP6 service binding instance.
[in]InterfacePoints to an IP6_INTERFACE structure.
[in]AddressThe group address to join.
Return values
EFI_SUCCESSSuccessfully join the multicast group.
EFI_OUT_OF_RESOURCESFailed to allocate resources.
OthersFailed to join the multicast group.

Definition at line 483 of file Ip6Mld.c.

◆ Ip6LeaveGroup()

EFI_STATUS Ip6LeaveGroup ( IN IP6_SERVICE IpSb,
IN EFI_IPv6_ADDRESS Address 
)

Leave the IP6 multicast group.

Parameters
[in]IpSbThe IP6 service binding instance.
[in]AddressThe group address to leave.
Return values
EFI_NOT_FOUNDThe IP6 service instance isn't in the group.
EFI_SUCCESSSuccessfully left the multicast group.
OthersFailed to leave the multicast group.

Leave the IP6 multicast group.

Parameters
[in]IpSbThe IP6 service binding instance.
[in]AddressThe group address to leave.
Return values
EFI_NOT_FOUNDThe IP6 service instance isn't in the group.
EFI_SUCCESSSuccessfully leave the multicast group..
OthersFailed to leave the multicast group.

Definition at line 547 of file Ip6Mld.c.

◆ Ip6MldTimerTicking()

VOID Ip6MldTimerTicking ( IN IP6_SERVICE IpSb)

The heartbeat timer of the MLD module. It sends out solicited MLD report when DelayTimer expires.

Parameters
[in]IpSbThe IP6 service binding instance.

The heartbeat timer of MLD module. It sends out a solicited MLD report when DelayTimer expires.

Parameters
[in]IpSbThe IP6 service binding instance.

Definition at line 894 of file Ip6Mld.c.

◆ Ip6ProcessMldQuery()

EFI_STATUS Ip6ProcessMldQuery ( IN IP6_SERVICE IpSb,
IN EFI_IP6_HEADER Head,
IN NET_BUF Packet 
)

Process the Multicast Listener Query message.

Parameters
[in]IpSbThe IP service that received the packet.
[in]HeadThe IP head of the MLD query packet.
[in]PacketThe content of the MLD query packet with IP head removed.
Return values
EFI_SUCCESSThe MLD query packet processed successfully.
EFI_INVALID_PARAMETERThe packet is invalid.
OthersFailed to process the packet.

Definition at line 746 of file Ip6Mld.c.

◆ Ip6ProcessMldReport()

EFI_STATUS Ip6ProcessMldReport ( IN IP6_SERVICE IpSb,
IN EFI_IP6_HEADER Head,
IN NET_BUF Packet 
)

Process the Multicast Listener Report message.

Parameters
[in]IpSbThe IP service that received the packet.
[in]HeadThe IP head of the MLD report packet.
[in]PacketThe content of the MLD report packet with IP head removed.
Return values
EFI_SUCCESSThe MLD report packet processed successfully.
EFI_INVALID_PARAMETERThe packet is invalid.

Definition at line 835 of file Ip6Mld.c.