TianoCore EDK2 master
|
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_GROUP * | Ip6FindMldEntry (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) |
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.
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.
[in] | IpSb | Points to an IP6 service binding instance. |
[in] | MulticastAddr | The IPv6 multicast address to be searched. |
Search a IP6_MLD_GROUP list entry node from a list array.
[in] | IpSb | Points to IP6 service binding instance. |
[in] | MulticastAddr | The IPv6 multicast address to be searched. |
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.
[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. |
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 configuration. |
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.
[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. |
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 configuration. |
EFI_SUCCESS | Successfully updated the group setting. |
EFI_NOT_FOUND | Try to leave the group which it isn't a member. |
EFI_STATUS Ip6InitMld | ( | IN IP6_SERVICE * | IpSb | ) |
Init the MLD data of the IP6 service instance, configure MNP to receive ALL SYSTEM multicasts.
[in] | IpSb | The IP6 service whose MLD is to be initialized. |
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.
[in] | IpSb | The IP6 service whose MLD is to be initialized. |
EFI_OUT_OF_RESOURCES | There are not sufficient resourcet to complete the operation. |
EFI_SUCCESS | The MLD module successfully initialized. |
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.
[in] | IpSb | The IP6 service binding instance. |
[in] | Interface | Points to an IP6_INTERFACE structure. |
[in] | Address | The group address to join. |
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.
[in] | IpSb | The IP6 service binding instance. |
[in] | Interface | Points to an IP6_INTERFACE structure. |
[in] | Address | The group address to join. |
EFI_SUCCESS | Successfully join the multicast group. |
EFI_OUT_OF_RESOURCES | Failed to allocate resources. |
Others | Failed to join the multicast group. |
EFI_STATUS Ip6LeaveGroup | ( | IN IP6_SERVICE * | IpSb, |
IN EFI_IPv6_ADDRESS * | Address | ||
) |
Leave the IP6 multicast group.
[in] | IpSb | The IP6 service binding instance. |
[in] | Address | The group address to leave. |
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.
[in] | IpSb | The IP6 service binding instance. |
[in] | Address | The group address to leave. |
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. |
VOID Ip6MldTimerTicking | ( | IN IP6_SERVICE * | IpSb | ) |
The heartbeat timer of the MLD module. It sends out solicited MLD report when DelayTimer expires.
[in] | IpSb | The IP6 service binding instance. |
The heartbeat timer of MLD module. It sends out a solicited MLD report when DelayTimer expires.
[in] | IpSb | The IP6 service binding instance. |
EFI_STATUS Ip6ProcessMldQuery | ( | IN IP6_SERVICE * | IpSb, |
IN EFI_IP6_HEADER * | Head, | ||
IN NET_BUF * | Packet | ||
) |
Process the Multicast Listener Query message.
[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. |
EFI_SUCCESS | The MLD query packet processed successfully. |
EFI_INVALID_PARAMETER | The packet is invalid. |
Others | Failed to process the packet. |
EFI_STATUS Ip6ProcessMldReport | ( | IN IP6_SERVICE * | IpSb, |
IN EFI_IP6_HEADER * | Head, | ||
IN NET_BUF * | Packet | ||
) |
Process the Multicast Listener Report message.
[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. |
EFI_SUCCESS | The MLD report packet processed successfully. |
EFI_INVALID_PARAMETER | The packet is invalid. |