]>
git.proxmox.com Git - mirror_edk2.git/blob - NetworkPkg/Ip6Dxe/Ip6Mld.h
2 Multicast Listener Discovery support routines.
4 Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #ifndef __EFI_IP6_MLD_H__
17 #define __EFI_IP6_MLD_H__
19 #define IP6_UNSOLICITED_REPORT_INTERVAL 10
26 EFI_IPv6_ADDRESS Group
;
31 // The status of multicast group. It isn't necessary to maintain
32 // explicit state of host state diagram. A group with finity
33 // DelayTime (less than 0xffffffff) is in "delaying listener" state. otherwise, it is in
34 // "idle listener" state.
39 EFI_IPv6_ADDRESS Address
;
46 // The MLD status. Each IP6 service instance has a MLD_SERVICE_DATA
47 // attached. The Mldv1QuerySeen remember whether the server on this
48 // connected network is v1 or v2.
53 } IP6_MLD_SERVICE_DATA
;
56 Search a IP6_MLD_GROUP list entry node from a list array.
58 @param[in] IpSb Points to an IP6 service binding instance.
59 @param[in] MulticastAddr The IPv6 multicast address to be searched.
61 @return The found IP6_ML_GROUP list entry or NULL.
67 IN EFI_IPv6_ADDRESS
*MulticastAddr
71 Init the MLD data of the IP6 service instance, configure
72 MNP to receive ALL SYSTEM multicasts.
74 @param[in] IpSb The IP6 service whose MLD is to be initialized.
76 @retval EFI_OUT_OF_RESOURCES There are not sufficient resources to complete the
78 @retval EFI_SUCCESS The MLD module successfully initialized.
87 Join the multicast group on behalf of this IP6 service binding instance.
89 @param[in] IpSb The IP6 service binding instance.
90 @param[in] Interface Points to an IP6_INTERFACE structure.
91 @param[in] Address The group address to join.
93 @retval EFI_SUCCESS Successfully joined the multicast group.
94 @retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
95 @retval Others Failed to join the multicast group.
100 IN IP6_SERVICE
*IpSb
,
101 IN IP6_INTERFACE
*Interface
,
102 IN EFI_IPv6_ADDRESS
*Address
106 Leave the IP6 multicast group.
108 @param[in] IpSb The IP6 service binding instance.
109 @param[in] Address The group address to leave.
111 @retval EFI_NOT_FOUND The IP6 service instance isn't in the group.
112 @retval EFI_SUCCESS Successfully left the multicast group.
113 @retval Others Failed to leave the multicast group.
118 IN IP6_SERVICE
*IpSb
,
119 IN EFI_IPv6_ADDRESS
*Address
123 Worker function for EfiIp6Groups(). The caller
124 should verify that the parameters are valid.
126 @param[in] IpInstance The IP6 child to change the setting.
127 @param[in] JoinFlag TRUE to join the group, otherwise leave it.
128 @param[in] GroupAddress The target group address. If NULL, leave all
131 @retval EFI_ALREADY_STARTED Wants to join the group, but is already a member of it.
132 @retval EFI_OUT_OF_RESOURCES Failed to allocate some resources.
133 @retval EFI_DEVICE_ERROR Failed to set the group configuraton.
134 @retval EFI_SUCCESS Successfully updated the group setting.
135 @retval EFI_NOT_FOUND Tried to leave a group of whom it isn't a member.
140 IN IP6_PROTOCOL
*IpInstance
,
142 IN EFI_IPv6_ADDRESS
*GroupAddress OPTIONAL
146 Process the Multicast Listener Query message.
148 @param[in] IpSb The IP service that received the packet.
149 @param[in] Head The IP head of the MLD query packet.
150 @param[in] Packet The content of the MLD query packet with IP head
153 @retval EFI_SUCCESS The MLD query packet processed successfully.
154 @retval EFI_INVALID_PARAMETER The packet is invalid.
155 @retval Others Failed to process the packet.
160 IN IP6_SERVICE
*IpSb
,
161 IN EFI_IP6_HEADER
*Head
,
166 Process the Multicast Listener Report message.
168 @param[in] IpSb The IP service that received the packet.
169 @param[in] Head The IP head of the MLD report packet.
170 @param[in] Packet The content of the MLD report packet with IP head
173 @retval EFI_SUCCESS The MLD report packet processed successfully.
174 @retval EFI_INVALID_PARAMETER The packet is invalid.
178 Ip6ProcessMldReport (
179 IN IP6_SERVICE
*IpSb
,
180 IN EFI_IP6_HEADER
*Head
,
186 The heartbeat timer of the MLD module. It sends out solicited MLD report when
189 @param[in] IpSb The IP6 service binding instance.