NetworkPkg/Ip6Dxe/Ip6Mld.h File Reference


Data Structures

struct  IP6_MLD_HEAD
struct  IP6_MLD_GROUP
struct  IP6_MLD_SERVICE_DATA

Defines

#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)
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.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.


Define Documentation

#define IP6_UNSOLICITED_REPORT_INTERVAL   10

Referenced by Ip6JoinGroup().


Function Documentation

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] IpSb Points to an IP6 service binding instance.
[in] MulticastAddr The 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] IpSb Points to IP6 service binding instance.
[in] MulticastAddr The IPv6 multicast address to be searched.
Returns:
The found IP6_ML_GROUP list entry or NULL.

References IP6_MLD_GROUP::Address, and IP6_SERVICE_SIGNATURE.

Referenced by Ip6JoinGroup(), Ip6LeaveGroup(), Ip6PreProcessPacket(), Ip6ProcessMldQuery(), and Ip6ProcessMldReport().

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

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

Parameters:
[in] IpInstance The IP6 child to change the setting.
[in] JoinFlag TRUE to join the group, otherwise leave it.
[in] GroupAddress The target group address. If NULL, leave all the group addresses.
Return values:
EFI_ALREADY_STARTED Wants to join the group, but is already a member of it.
EFI_OUT_OF_RESOURCES Failed to allocate some resources.
EFI_DEVICE_ERROR Failed to set the group configuraton.
EFI_SUCCESS Successfully updated the group setting.
EFI_NOT_FOUND Tried 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] IpInstance The IP6 child to change the setting.
[in] JoinFlag TRUE to join the group, otherwise leave it.
[in] GroupAddress The target group address. If NULL, leave all the group addresses.
Return values:
EFI_ALREADY_STARTED Wants to join the group, but is already a member of it
EFI_OUT_OF_RESOURCES Failed to allocate sufficient resources.
EFI_DEVICE_ERROR Failed to set the group configuraton.
EFI_SUCCESS Successfully updated the group setting.
EFI_NOT_FOUND Try to leave the group which it isn't a member.

References Ip6CombineGroups(), Ip6JoinGroup(), Ip6LeaveGroup(), and Ip6RemoveGroup().

Referenced by EfiIp6Groups(), and Ip6CleanProtocol().

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] IpSb The IP6 service whose MLD is to be initialized.
Return values:
EFI_OUT_OF_RESOURCES There are not sufficient resources to complete the operation.
EFI_SUCCESS The MLD module successfully initialized.
Init the MLD data of the IP6 service instance. Configure MNP to receive ALL SYSTEM multicast.

Parameters:
[in] IpSb The IP6 service whose MLD is to be initialized.
Return values:
EFI_OUT_OF_RESOURCES There are not sufficient resourcet to complete the operation.
EFI_SUCCESS The MLD module successfully initialized.

References IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_SCOPE, Ip6CreateMldEntry(), Ip6GetMulticastMac(), Ip6SetToAllNodeMulticast(), IP6_MLD_GROUP::Link, and IP6_MLD_GROUP::Mac.

Referenced by Ip6CreateService().

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] IpSb The IP6 service binding instance.
[in] Interface Points to an IP6_INTERFACE structure.
[in] Address The group address to join.
Return values:
EFI_SUCCESS Successfully joined the multicast group.
EFI_OUT_OF_RESOURCES Failed to allocate resources.
Others Failed to join the multicast group.
Join the multicast group on behalf of this IP6 service binding instance.

Parameters:
[in] IpSb The IP6 service binding instance.
[in] Interface Points to an IP6_INTERFACE structure.
[in] Address The group address to join.
Return values:
EFI_SUCCESS Successfully join the multicast group.
EFI_OUT_OF_RESOURCES Failed to allocate resources.
Others Failed to join the multicast group.

References IP6_UNSOLICITED_REPORT_INTERVAL, Ip6CreateMldEntry(), Ip6FindMldEntry(), Ip6GetMulticastMac(), Ip6SendMldReport(), IP6_MLD_GROUP::Link, IP6_MLD_GROUP::Mac, IP6_MLD_GROUP::RefCnt, and IP6_MLD_GROUP::SendByUs.

Referenced by Ip6Groups(), and Ip6InitDADProcess().

EFI_STATUS Ip6LeaveGroup ( IN IP6_SERVICE IpSb,
IN EFI_IPv6_ADDRESS *  Address 
)

Leave the IP6 multicast group.

Parameters:
[in] IpSb The IP6 service binding instance.
[in] Address The group address to leave.
Return values:
EFI_NOT_FOUND The IP6 service instance isn't in the group.
EFI_SUCCESS Successfully left the multicast group.
Others Failed to leave the multicast group.
Leave the IP6 multicast group.

Parameters:
[in] IpSb The IP6 service binding instance.
[in] Address The group address to leave.
Return values:
EFI_NOT_FOUND The IP6 service instance isn't in the group.
EFI_SUCCESS Successfully leave the multicast group..
Others Failed to leave the multicast group.

References Ip6FindMac(), Ip6FindMldEntry(), Ip6SendMldDone(), IP6_MLD_GROUP::Link, IP6_MLD_GROUP::Mac, IP6_MLD_GROUP::RefCnt, and IP6_MLD_GROUP::SendByUs.

Referenced by Ip6CleanService(), Ip6Groups(), Ip6OnDADFinished(), and Ip6RemoveAddr().

VOID Ip6MldTimerTicking ( IN IP6_SERVICE IpSb  ) 

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

Parameters:
[in] IpSb The IP6 service binding instance.
The heartbeat timer of MLD module. It sends out a solicited MLD report when DelayTimer expires.

Parameters:
[in] IpSb The IP6 service binding instance.

References IP6_MLD_GROUP::Address, IP6_MLD_GROUP::DelayTimer, and Ip6SendMldReport().

Referenced by Ip6TimerTicking().

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

Process the Multicast Listener Query message.

Parameters:
[in] IpSb The IP service that received the packet.
[in] Head The IP head of the MLD query packet.
[in] Packet The content of the MLD query packet with IP head removed.
Return values:
EFI_SUCCESS The MLD query packet processed successfully.
EFI_INVALID_PARAMETER The packet is invalid.
Others Failed to process the packet.

References IP6_MLD_GROUP::Address, IP6_LINK_LOCAL_SCOPE, Ip6FindMldEntry(), Ip6SetToAllNodeMulticast(), and Ip6UpdateDelayTimer().

Referenced by Ip6ProcessIcmpInformation().

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

Process the Multicast Listener Report message.

Parameters:
[in] IpSb The IP service that received the packet.
[in] Head The IP head of the MLD report packet.
[in] Packet The content of the MLD report packet with IP head removed.
Return values:
EFI_SUCCESS The MLD report packet processed successfully.
EFI_INVALID_PARAMETER The packet is invalid.

References IP6_MLD_GROUP::DelayTimer, Ip6FindMldEntry(), and IP6_MLD_GROUP::SendByUs.

Referenced by Ip6ProcessIcmpInformation().


Generated on Mon Sep 28 08:49:06 2015 for NetworkPkg[ALL] by  doxygen 1.5.7.1