Data Structures | |
struct | _IP6_ETHE_ADDR_OPTION |
struct | _IP6_MTU_OPTION |
struct | _IP6_PREFIX_INFO_OPTION |
struct | _IP6_DAD_ENTRY |
struct | _IP6_DELAY_JOIN_LIST |
struct | _IP6_NEIGHBOR_ENTRY |
struct | _IP6_DEFAULT_ROUTER |
struct | _IP6_PREFIX_LIST_ENTRY |
Defines | |
#define | IP6_GET_TICKS(Ms) (((Ms) + IP6_TIMER_INTERVAL_IN_MS - 1) / IP6_TIMER_INTERVAL_IN_MS) |
Typedefs | |
typedef VOID(* | IP6_ARP_CALLBACK )(VOID *Context) |
typedef struct _IP6_ETHE_ADDR_OPTION | IP6_ETHER_ADDR_OPTION |
typedef struct _IP6_MTU_OPTION | IP6_MTU_OPTION |
typedef struct _IP6_PREFIX_INFO_OPTION | IP6_PREFIX_INFO_OPTION |
typedef VOID(* | IP6_DAD_CALLBACK )(IN BOOLEAN IsDadPassed, IN EFI_IPv6_ADDRESS *TargetAddress, IN VOID *Context) |
typedef struct _IP6_DAD_ENTRY | IP6_DAD_ENTRY |
typedef struct _IP6_DELAY_JOIN_LIST | IP6_DELAY_JOIN_LIST |
typedef struct _IP6_NEIGHBOR_ENTRY | IP6_NEIGHBOR_ENTRY |
typedef struct _IP6_DEFAULT_ROUTER | IP6_DEFAULT_ROUTER |
typedef struct _IP6_PREFIX_LIST_ENTRY | IP6_PREFIX_LIST_ENTRY |
Enumerations | |
enum | { IP6_INF_ROUTER_LIFETIME = 0xFFFF, IP6_MAX_RTR_SOLICITATION_DELAY = 1000, IP6_MAX_RTR_SOLICITATIONS = 3, IP6_RTR_SOLICITATION_INTERVAL = 4000, IP6_MIN_RANDOM_FACTOR_SCALED = 1, IP6_MAX_RANDOM_FACTOR_SCALED = 3, IP6_RANDOM_FACTOR_SCALE = 2, IP6_MAX_MULTICAST_SOLICIT = 3, IP6_MAX_UNICAST_SOLICIT = 3, IP6_MAX_ANYCAST_DELAY_TIME = 1, IP6_MAX_NEIGHBOR_ADV = 3, IP6_REACHABLE_TIME = 30000, IP6_RETRANS_TIMER = 1000, IP6_DELAY_FIRST_PROBE_TIME = 5000, IP6_MIN_LINK_MTU = 1280, IP6_MAX_LINK_MTU = 1500, IP6_IS_ROUTER_FLAG = 0x80, IP6_SOLICITED_FLAG = 0x40, IP6_OVERRIDE_FLAG = 0x20, IP6_M_ADDR_CONFIG_FLAG = 0x80, IP6_O_CONFIG_FLAG = 0x40, IP6_ON_LINK_FLAG = 0x80, IP6_AUTO_CONFIG_FLAG = 0x40, IP6_ND_LENGTH = 24, IP6_RA_LENGTH = 16, IP6_REDITECT_LENGTH = 40, IP6_DAD_ENTRY_SIGNATURE = SIGNATURE_32 ('I', 'P', 'D', 'E') } |
Functions | |
EFI_STATUS | Ip6BuildEfiNeighborCache (IN IP6_PROTOCOL *IpInstance, OUT UINT32 *NeighborCount, OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache) |
EFI_STATUS | Ip6BuildPrefixTable (IN IP6_PROTOCOL *IpInstance, OUT UINT32 *PrefixCount, OUT EFI_IP6_ADDRESS_INFO **PrefixTable) |
IP6_DEFAULT_ROUTER * | Ip6CreateDefaultRouter (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Ip6Address, IN UINT16 RouterLifetime) |
VOID | Ip6DestroyDefaultRouter (IN IP6_SERVICE *IpSb, IN IP6_DEFAULT_ROUTER *DefaultRouter) |
VOID | Ip6CleanDefaultRouterList (IN IP6_SERVICE *IpSb) |
IP6_DEFAULT_ROUTER * | Ip6FindDefaultRouter (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Ip6Address) |
VOID | Ip6OnDADFinished (IN BOOLEAN IsDadPassed, IN IP6_INTERFACE *IpIf, IN IP6_DAD_ENTRY *DadEntry) |
EFI_STATUS | Ip6InitDADProcess (IN IP6_INTERFACE *IpIf, IN IP6_ADDRESS_INFO *AddressInfo, IN IP6_DAD_CALLBACK Callback, IN VOID *Context) |
IP6_DAD_ENTRY * | Ip6FindDADEntry (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Target, OUT IP6_INTERFACE **Interface) |
IP6_PREFIX_LIST_ENTRY * | Ip6CreatePrefixListEntry (IN IP6_SERVICE *IpSb, IN BOOLEAN OnLinkOrAuto, IN UINT32 ValidLifetime, IN UINT32 PreferredLifetime, IN UINT8 PrefixLength, IN EFI_IPv6_ADDRESS *Prefix) |
VOID | Ip6DestroyPrefixListEntry (IN IP6_SERVICE *IpSb, IN IP6_PREFIX_LIST_ENTRY *PrefixEntry, IN BOOLEAN OnLinkOrAuto, IN BOOLEAN ImmediateDelete) |
IP6_PREFIX_LIST_ENTRY * | Ip6FindPrefixListEntry (IN IP6_SERVICE *IpSb, IN BOOLEAN OnLinkOrAuto, IN UINT8 PrefixLength, IN EFI_IPv6_ADDRESS *Prefix) |
VOID | Ip6CleanPrefixListTable (IN IP6_SERVICE *IpSb, IN LIST_ENTRY *ListHead) |
IP6_NEIGHBOR_ENTRY * | Ip6CreateNeighborEntry (IN IP6_SERVICE *IpSb, IN IP6_ARP_CALLBACK CallBack, IN EFI_IPv6_ADDRESS *Ip6Address, IN EFI_MAC_ADDRESS *LinkAddress) |
IP6_NEIGHBOR_ENTRY * | Ip6FindNeighborEntry (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Ip6Address) |
EFI_STATUS | Ip6FreeNeighborEntry (IN IP6_SERVICE *IpSb, IN IP6_NEIGHBOR_ENTRY *NeighborCache, IN BOOLEAN SendIcmpError, IN BOOLEAN FullFree, IN EFI_STATUS IoStatus, IN IP6_FRAME_TO_CANCEL FrameToCancel, IN VOID *Context) |
EFI_STATUS | Ip6AddNeighbor (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *TargetIp6Address, IN EFI_MAC_ADDRESS *TargetLinkAddress, IN UINT32 Timeout, IN BOOLEAN Override) |
EFI_STATUS | Ip6DelNeighbor (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *TargetIp6Address, IN EFI_MAC_ADDRESS *TargetLinkAddress, IN UINT32 Timeout, IN BOOLEAN Override) |
EFI_STATUS | Ip6ProcessNeighborSolicit (IN IP6_SERVICE *IpSb, IN EFI_IP6_HEADER *Head, IN NET_BUF *Packet) |
EFI_STATUS | Ip6ProcessNeighborAdvertise (IN IP6_SERVICE *IpSb, IN EFI_IP6_HEADER *Head, IN NET_BUF *Packet) |
EFI_STATUS | Ip6ProcessRouterAdvertise (IN IP6_SERVICE *IpSb, IN EFI_IP6_HEADER *Head, IN NET_BUF *Packet) |
EFI_STATUS | Ip6ProcessRedirect (IN IP6_SERVICE *IpSb, IN EFI_IP6_HEADER *Head, IN NET_BUF *Packet) |
EFI_STATUS | Ip6SendRouterSolicit (IN IP6_SERVICE *IpSb, IN IP6_INTERFACE *Interface, IN EFI_IPv6_ADDRESS *SourceAddress, IN EFI_IPv6_ADDRESS *DestinationAddress, IN EFI_MAC_ADDRESS *SourceLinkAddress) |
EFI_STATUS | Ip6SendNeighborSolicit (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *SourceAddress, IN EFI_IPv6_ADDRESS *DestinationAddress, IN EFI_IPv6_ADDRESS *TargetIp6Address, IN EFI_MAC_ADDRESS *SourceLinkAddress) |
EFI_STATUS | Ip6SetAddress (IN IP6_INTERFACE *Interface, IN EFI_IPv6_ADDRESS *Ip6Addr, IN BOOLEAN IsAnycast, IN UINT8 PrefixLength, IN UINT32 ValidLifetime, IN UINT32 PreferredLifetime, IN IP6_DAD_CALLBACK DadCallback, IN VOID *Context) |
VOID EFIAPI | Ip6NdFasterTimerTicking (IN EFI_EVENT Event, IN VOID *Context) |
VOID | Ip6NdTimerTicking (IN IP6_SERVICE *IpSb) |
VOID | Ip6OnArpResolved (IN VOID *Context) |
VOID | Ip6UpdateReachableTime (IN OUT IP6_SERVICE *IpSb) |
Copyright (c) 2009 - 2012, 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 IP6_GET_TICKS | ( | Ms | ) | (((Ms) + IP6_TIMER_INTERVAL_IN_MS - 1) / IP6_TIMER_INTERVAL_IN_MS) |
typedef VOID(* IP6_ARP_CALLBACK)(VOID *Context) |
typedef VOID(* IP6_DAD_CALLBACK)(IN BOOLEAN IsDadPassed, IN EFI_IPv6_ADDRESS *TargetAddress, IN VOID *Context) |
typedef struct _IP6_DAD_ENTRY IP6_DAD_ENTRY |
typedef struct _IP6_DEFAULT_ROUTER IP6_DEFAULT_ROUTER |
typedef struct _IP6_DELAY_JOIN_LIST IP6_DELAY_JOIN_LIST |
typedef struct _IP6_ETHE_ADDR_OPTION IP6_ETHER_ADDR_OPTION |
typedef struct _IP6_MTU_OPTION IP6_MTU_OPTION |
typedef struct _IP6_NEIGHBOR_ENTRY IP6_NEIGHBOR_ENTRY |
typedef struct _IP6_PREFIX_INFO_OPTION IP6_PREFIX_INFO_OPTION |
typedef struct _IP6_PREFIX_LIST_ENTRY IP6_PREFIX_LIST_ENTRY |
anonymous enum |
EFI_STATUS Ip6AddNeighbor | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | TargetIp6Address, | |||
IN EFI_MAC_ADDRESS * | TargetLinkAddress, | |||
IN UINT32 | Timeout, | |||
IN BOOLEAN | Override | |||
) |
Add Neighbor cache entries. It is a work function for EfiIp6Neighbors().
[in] | IpSb | The IP6 service binding instance. |
[in] | TargetIp6Address | Pointer to Target IPv6 address. |
[in] | TargetLinkAddress | Pointer to link-layer address of the target. Ignored if NULL. |
[in] | Timeout | Time in 100-ns units that this entry will remain in the neighbor cache. It will be deleted after Timeout. A value of zero means that the entry is permanent. A non-zero value means that the entry is dynamic. |
[in] | Override | If TRUE, the cached link-layer address of the matching entry will be overridden and updated; if FALSE, and if a corresponding cache entry already existed, EFI_ACCESS_DENIED will be returned. |
EFI_SUCCESS | The neighbor cache entry has been added. | |
EFI_OUT_OF_RESOURCES | Could not add the entry to the neighbor cache due to insufficient resources. | |
EFI_NOT_FOUND | TargetLinkAddress is NULL. | |
EFI_ACCESS_DENIED | The to-be-added entry is already defined in the neighbor cache, and that entry is tagged as un-overridden (when DeleteFlag is FALSE). |
References _IP6_NEIGHBOR_ENTRY::Dynamic, IP6_GET_TICKS, IP6_INFINIT_LIFETIME, Ip6CreateNeighborEntry(), Ip6FindNeighborEntry(), Ip6OnArpResolved(), _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_NEIGHBOR_ENTRY::State, and _IP6_NEIGHBOR_ENTRY::Ticks.
Referenced by EfiIp6Neighbors().
EFI_STATUS Ip6BuildEfiNeighborCache | ( | IN IP6_PROTOCOL * | IpInstance, | |
OUT UINT32 * | NeighborCount, | |||
OUT EFI_IP6_NEIGHBOR_CACHE ** | NeighborCache | |||
) |
Build a array of EFI_IP6_NEIGHBOR_CACHE to be returned to the caller. The number of EFI_IP6_NEIGHBOR_CACHE is also returned.
[in] | IpInstance | The pointer to IP6_PROTOCOL instance. |
[out] | NeighborCount | The number of returned neighbor cache entries. |
[out] | NeighborCache | The pointer to the array of EFI_IP6_NEIGHBOR_CACHE. |
EFI_SUCCESS | The EFI_IP6_NEIGHBOR_CACHE successfully built. | |
EFI_OUT_OF_RESOURCES | Failed to allocate the memory for the route table. |
References IP6_PROTOCOL_SIGNATURE, _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_NEIGHBOR_ENTRY::Neighbor, _IP6_SERVICE::NeighborTable, and _IP6_NEIGHBOR_ENTRY::State.
Referenced by EfiIp6GetModeData().
EFI_STATUS Ip6BuildPrefixTable | ( | IN IP6_PROTOCOL * | IpInstance, | |
OUT UINT32 * | PrefixCount, | |||
OUT EFI_IP6_ADDRESS_INFO ** | PrefixTable | |||
) |
Build a array of EFI_IP6_ADDRESS_INFO to be returned to the caller. The number of prefix entries is also returned.
[in] | IpInstance | The pointer to IP6_PROTOCOL instance. |
[out] | PrefixCount | The number of returned prefix entries. |
[out] | PrefixTable | The pointer to the array of PrefixTable. |
EFI_SUCCESS | The prefix table successfully built. | |
EFI_OUT_OF_RESOURCES | Failed to allocate the memory for the prefix table. |
References IP6_PROTOCOL_SIGNATURE, _IP6_SERVICE::OnlinkPrefix, _IP6_PREFIX_LIST_ENTRY::Prefix, and _IP6_PREFIX_LIST_ENTRY::PrefixLength.
Referenced by EfiIp6GetModeData().
VOID Ip6CleanDefaultRouterList | ( | IN IP6_SERVICE * | IpSb | ) |
Clean an IP6 default router list.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
References Ip6DestroyDefaultRouter().
Referenced by Ip6CleanService(), and Ip6ConfigOnPolicyChanged().
VOID Ip6CleanPrefixListTable | ( | IN IP6_SERVICE * | IpSb, | |
IN LIST_ENTRY * | ListHead | |||
) |
Release the resource in prefix list table, and destroy the list entry and corresponding addresses or route entries.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | ListHead | The list entry head of the prefix list table. |
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | ListHead | The list entry head of the prefix list table. |
References Ip6DestroyPrefixListEntry().
Referenced by Ip6CleanService(), and Ip6ConfigOnPolicyChanged().
IP6_DEFAULT_ROUTER* Ip6CreateDefaultRouter | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | Ip6Address, | |||
IN UINT16 | RouterLifetime | |||
) |
Allocate and initialize an IP6 default router entry.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | Ip6Address | The IPv6 address of the default router. |
[in] | RouterLifetime | The lifetime associated with the default router, in units of seconds. |
References IP6_SERVICE_SIGNATURE, Ip6CreateRouteEntry(), Ip6FindNeighborEntry(), _IP6_DEFAULT_ROUTER::Lifetime, _IP6_DEFAULT_ROUTER::Link, IP6_ROUTE_ENTRY::Link, _IP6_DEFAULT_ROUTER::NeighborCache, _IP6_DEFAULT_ROUTER::RefCnt, and _IP6_DEFAULT_ROUTER::Router.
Referenced by Ip6ConfigSetGateway(), and Ip6ProcessRouterAdvertise().
IP6_NEIGHBOR_ENTRY* Ip6CreateNeighborEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN IP6_ARP_CALLBACK | CallBack, | |||
IN EFI_IPv6_ADDRESS * | Ip6Address, | |||
IN EFI_MAC_ADDRESS * | LinkAddress | |||
) |
Allocate and initialize an IP6 neighbor cache entry.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | CallBack | The callback function to be called when address resolution is finished. |
[in] | Ip6Address | Points to the IPv6 address of the neighbor. |
[in] | LinkAddress | Points to the MAC address of the neighbor. Ignored if NULL. |
References _IP6_NEIGHBOR_ENTRY::ArpFree, _IP6_NEIGHBOR_ENTRY::CallBack, _IP6_NEIGHBOR_ENTRY::Dynamic, _IP6_NEIGHBOR_ENTRY::Frames, _IP6_NEIGHBOR_ENTRY::Interface, IP6_MAX_MULTICAST_SOLICIT, IP6_SERVICE_SIGNATURE, Ip6FindDefaultRouter(), _IP6_NEIGHBOR_ENTRY::IsRouter, _IP6_NEIGHBOR_ENTRY::Link, _IP6_NEIGHBOR_ENTRY::LinkAddress, mZeroMacAddress, _IP6_NEIGHBOR_ENTRY::Neighbor, _IP6_DEFAULT_ROUTER::NeighborCache, _IP6_NEIGHBOR_ENTRY::RefCnt, _IP6_NEIGHBOR_ENTRY::State, and _IP6_NEIGHBOR_ENTRY::Transmit.
Referenced by Ip6AddNeighbor(), Ip6Output(), Ip6ProcessNeighborSolicit(), Ip6ProcessRedirect(), Ip6ProcessRouterAdvertise(), and Ip6SendNeighborSolicit().
IP6_PREFIX_LIST_ENTRY* Ip6CreatePrefixListEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN BOOLEAN | OnLinkOrAuto, | |||
IN UINT32 | ValidLifetime, | |||
IN UINT32 | PreferredLifetime, | |||
IN UINT8 | PrefixLength, | |||
IN EFI_IPv6_ADDRESS * | Prefix | |||
) |
Allocate and initialize a IP6 prefix list entry.
[in] | IpSb | The pointer to IP6_SERVICE instance. |
[in] | OnLinkOrAuto | If TRUE, the entry is created for the on link prefix list. Otherwise, it is created for the autoconfiguration prefix list. |
[in] | ValidLifetime | The length of time in seconds that the prefix is valid for the purpose of on-link determination. |
[in] | PreferredLifetime | The length of time in seconds that addresses generated from the prefix via stateless address autoconfiguration remain preferred. |
[in] | PrefixLength | The prefix length of the Prefix. |
[in] | Prefix | The prefix address. |
References IP6_ROUTE_ENTRY::Flag, IP6_DIRECT_ROUTE, IP6_SERVICE_SIGNATURE, Ip6CreateRouteEntry(), Ip6FindPrefixListEntry(), _IP6_PREFIX_LIST_ENTRY::Link, IP6_ROUTE_ENTRY::Link, _IP6_PREFIX_LIST_ENTRY::PreferredLifetime, _IP6_PREFIX_LIST_ENTRY::Prefix, _IP6_PREFIX_LIST_ENTRY::PrefixLength, _IP6_PREFIX_LIST_ENTRY::RefCnt, and _IP6_PREFIX_LIST_ENTRY::ValidLifetime.
Referenced by Ip6ConfigOnPolicyChanged(), Ip6ConfigSetMaunualAddress(), Ip6OnDADFinished(), and Ip6ProcessRouterAdvertise().
EFI_STATUS Ip6DelNeighbor | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | TargetIp6Address, | |||
IN EFI_MAC_ADDRESS * | TargetLinkAddress, | |||
IN UINT32 | Timeout, | |||
IN BOOLEAN | Override | |||
) |
Delete or update Neighbor cache entries. It is a work function for EfiIp6Neighbors().
[in] | IpSb | The IP6 service binding instance. |
[in] | TargetIp6Address | Pointer to Target IPv6 address. |
[in] | TargetLinkAddress | Pointer to link-layer address of the target. Ignored if NULL. |
[in] | Timeout | Time in 100-ns units that this entry will remain in the neighbor cache. It will be deleted after Timeout. A value of zero means that the entry is permanent. A non-zero value means that the entry is dynamic. |
[in] | Override | If TRUE, the cached link-layer address of the matching entry will be overridden and updated; if FALSE, and if a corresponding cache entry already existed, EFI_ACCESS_DENIED will be returned. |
EFI_SUCCESS | The neighbor cache entry has been updated or deleted. | |
EFI_NOT_FOUND | This entry is not in the neighbor cache. |
References Ip6FindNeighborEntry(), and _IP6_NEIGHBOR_ENTRY::Link.
Referenced by EfiIp6Neighbors().
VOID Ip6DestroyDefaultRouter | ( | IN IP6_SERVICE * | IpSb, | |
IN IP6_DEFAULT_ROUTER * | DefaultRouter | |||
) |
Destroy an IP6 default router entry.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | DefaultRouter | The to be destroyed IP6_DEFAULT_ROUTER. |
References Ip6DelRoute().
Referenced by Ip6CleanDefaultRouterList(), Ip6ConfigSetGateway(), Ip6FreeNeighborEntry(), Ip6NdTimerTicking(), Ip6ProcessNeighborAdvertise(), and Ip6ProcessRouterAdvertise().
VOID Ip6DestroyPrefixListEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN IP6_PREFIX_LIST_ENTRY * | PrefixEntry, | |||
IN BOOLEAN | OnLinkOrAuto, | |||
IN BOOLEAN | ImmediateDelete | |||
) |
Destroy a IP6 prefix list entry.
[in] | IpSb | The pointer to IP6_SERVICE instance. |
[in] | PrefixEntry | The to be destroyed prefix list entry. |
[in] | OnLinkOrAuto | If TRUE, the entry is removed from on link prefix list. Otherwise remove from autoconfiguration prefix list. |
[in] | ImmediateDelete | If TRUE, remove the entry directly. Otherwise, check the reference count to see whether it should be removed. |
References _IP6_INTERFACE::AddressCount, _IP6_INTERFACE::AddressList, IP6_INTERFACE_SIGNATURE, Ip6DelRoute(), and Ip6RemoveAddr().
Referenced by Ip6CleanPrefixListTable(), Ip6ConfigSetMaunualAddress(), Ip6NdTimerTicking(), and Ip6ProcessRouterAdvertise().
IP6_DAD_ENTRY* Ip6FindDADEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | Target, | |||
OUT IP6_INTERFACE ** | Interface | |||
) |
Search IP6_DAD_ENTRY from the Duplicate Address Detection List.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | Target | The address information which needs DAD performed . |
[out] | Interface | If not NULL, output the IP6 interface that configures the tentative address. |
References _IP6_ADDRESS_INFO::Address, _IP6_DAD_ENTRY::AddressInfo, _IP6_INTERFACE::DupAddrDetectList, and IP6_DAD_ENTRY_SIGNATURE.
Referenced by Ip6InitDADProcess(), Ip6ProcessNeighborAdvertise(), Ip6ProcessNeighborSolicit(), and Ip6ProcessRouterAdvertise().
IP6_DEFAULT_ROUTER* Ip6FindDefaultRouter | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | Ip6Address | |||
) |
Search a default router node from an IP6 default router list.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | Ip6Address | The IPv6 address of the to be searched default router node. |
References IP6_SERVICE_SIGNATURE, and _IP6_DEFAULT_ROUTER::Router.
Referenced by Ip6ConfigSetGateway(), Ip6CreateNeighborEntry(), Ip6FreeNeighborEntry(), Ip6ProcessNeighborAdvertise(), and Ip6ProcessRouterAdvertise().
IP6_NEIGHBOR_ENTRY* Ip6FindNeighborEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | Ip6Address | |||
) |
Search a IP6 neighbor cache entry.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | Ip6Address | Points to the IPv6 address of the neighbor. |
References IP6_SERVICE_SIGNATURE, and _IP6_NEIGHBOR_ENTRY::Neighbor.
Referenced by Ip6AddNeighbor(), Ip6CreateDefaultRouter(), Ip6DelNeighbor(), Ip6Output(), Ip6ProcessNeighborAdvertise(), Ip6ProcessNeighborSolicit(), Ip6ProcessRedirect(), Ip6ProcessRouterAdvertise(), Ip6SendFrame(), and Ip6SendNeighborSolicit().
IP6_PREFIX_LIST_ENTRY* Ip6FindPrefixListEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN BOOLEAN | OnLinkOrAuto, | |||
IN UINT8 | PrefixLength, | |||
IN EFI_IPv6_ADDRESS * | Prefix | |||
) |
Search the list array to find an IP6 prefix list entry.
[in] | IpSb | The pointer to IP6_SERVICE instance. |
[in] | OnLinkOrAuto | If TRUE, the search the link prefix list, Otherwise search the autoconfiguration prefix list. |
[in] | PrefixLength | The prefix length of the Prefix |
[in] | Prefix | The prefix address. |
References IP6_SERVICE_SIGNATURE, _IP6_PREFIX_LIST_ENTRY::Prefix, and _IP6_PREFIX_LIST_ENTRY::PrefixLength.
Referenced by Ip6ConfigSetMaunualAddress(), Ip6CreatePrefixListEntry(), Ip6IsAnycast(), and Ip6ProcessRouterAdvertise().
EFI_STATUS Ip6FreeNeighborEntry | ( | IN IP6_SERVICE * | IpSb, | |
IN IP6_NEIGHBOR_ENTRY * | NeighborCache, | |||
IN BOOLEAN | SendIcmpError, | |||
IN BOOLEAN | FullFree, | |||
IN EFI_STATUS | IoStatus, | |||
IN IP6_FRAME_TO_CANCEL | FrameToCancel, | |||
IN VOID * | Context | |||
) |
Free a IP6 neighbor cache entry and remove all the frames on the address resolution queue that pass the FrameToCancel. That is, either FrameToCancel is NULL, or it returns true for the frame.
[in] | IpSb | The pointer to the IP6_SERVICE instance. |
[in] | NeighborCache | The to be free neighbor cache entry. |
[in] | SendIcmpError | If TRUE, send out ICMP error. |
[in] | FullFree | If TRUE, remove the neighbor cache entry. Otherwise remove the pending frames. |
[in] | IoStatus | The status returned to the cancelled frames' callback function. |
[in] | FrameToCancel | Function to select which frame to cancel. This is an optional parameter that may be NULL. |
[in] | Context | Opaque parameter to the FrameToCancel. Ignored if FrameToCancel is NULL. |
EFI_INVALID_PARAMETER | The input parameter is invalid. | |
EFI_SUCCESS | The operation finished successfully. |
References IP6_LINK_TX_TOKEN::CallBack, IP6_LINK_TX_TOKEN::Context, Ip6DestroyDefaultRouter(), Ip6FindDefaultRouter(), Ip6FreeLinkTxToken(), Ip6SendIcmpError(), and IP6_LINK_TX_TOKEN::Packet.
Referenced by Ip6CancelFrames(), Ip6CleanService(), Ip6NdFasterTimerTicking(), and Ip6OnArpResolved().
EFI_STATUS Ip6InitDADProcess | ( | IN IP6_INTERFACE * | IpIf, | |
IN IP6_ADDRESS_INFO * | AddressInfo, | |||
IN IP6_DAD_CALLBACK | Callback, | |||
IN VOID * | Context | |||
) |
Create a DAD (Duplicate Address Detection) entry and queue it to be performed.
[in] | IpIf | Points to the IP6_INTERFACE. |
[in] | AddressInfo | The address information which needs DAD performed. |
[in] | Callback | The callback routine that will be called after DAD is performed. This is an optional parameter that may be NULL. |
[in] | Context | The opaque parameter for a DAD callback routine. This is an optional parameter that may be NULL. |
EFI_SUCCESS | The DAD entry was created and queued. | |
EFI_OUT_OF_RESOURCES | Failed to allocate the memory to complete the operation. |
References _IP6_DAD_ENTRY::AddressInfo, _IP6_DAD_ENTRY::Callback, _IP6_DAD_ENTRY::Context, _IP6_CONFIG_INSTANCE::DadXmits, _IP6_DAD_ENTRY::Destination, IP6_DAD_ENTRY_SIGNATURE, IP6_INTERFACE_SIGNATURE, IP6_MAX_RTR_SOLICITATION_DELAY, IP6_TIMER_INTERVAL_IN_MS, _IP6_SERVICE::Ip6ConfigInstance, Ip6CreateSNMulticastAddr(), Ip6FindDADEntry(), Ip6JoinGroup(), Ip6OnDADFinished(), _IP6_DAD_ENTRY::Link, _IP6_DAD_ENTRY::MaxTransmit, _IP6_DAD_ENTRY::Receive, _IP6_DAD_ENTRY::RetransTick, _IP6_DAD_ENTRY::Signature, and _IP6_DAD_ENTRY::Transmit.
Referenced by Ip6NdFasterTimerTicking().
VOID EFIAPI Ip6NdFasterTimerTicking | ( | IN EFI_EVENT | Event, | |
IN VOID * | Context | |||
) |
The heartbeat timer of ND module in IP6_TIMER_INTERVAL_IN_MS milliseconds. This time routine handles DAD module and neighbor state transition. It is also responsible for sending out router solicitations.
[in] | Event | The IP6 service instance's heartbeat timer. |
[in] | Context | The IP6 service instance. |
References _IP6_ADDRESS_INFO::Address, _IP6_DAD_ENTRY::AddressInfo, _IP6_DELAY_JOIN_LIST::AddressInfo, _IP6_DELAY_JOIN_LIST::Context, _IP6_DELAY_JOIN_LIST::DadCallback, _IP6_INTERFACE::DelayJoinList, _IP6_DELAY_JOIN_LIST::DelayTime, _IP6_DAD_ENTRY::Destination, _IP6_INTERFACE::DupAddrDetectList, _IP6_NEIGHBOR_ENTRY::Dynamic, _IP6_DELAY_JOIN_LIST::Interface, _IP6_SERVICE::Interfaces, IP6_GET_TICKS, IP6_INFINIT_LIFETIME, IP6_MAX_UNICAST_SOLICIT, IP6_RTR_SOLICITATION_INTERVAL, IP6_SERVICE_SIGNATURE, _IP6_SERVICE::Ip6ConfigInstance, Ip6CreateSNMulticastAddr(), Ip6FreeNeighborEntry(), Ip6InitDADProcess(), Ip6OnDADFinished(), Ip6SelectSourceAddress(), Ip6SendNeighborSolicit(), Ip6SendRouterSolicit(), _IP6_DELAY_JOIN_LIST::Link, _IP6_DAD_ENTRY::MaxTransmit, _IP6_NEIGHBOR_ENTRY::Neighbor, _IP6_SERVICE::NeighborTable, _IP6_CONFIG_INSTANCE::Policy, _IP6_DAD_ENTRY::Receive, _IP6_DAD_ENTRY::RetransTick, _IP6_SERVICE::RetransTimer, _IP6_SERVICE::RouterAdvertiseReceived, _IP6_SERVICE::SnpMode, _IP6_SERVICE::SolicitTimer, _IP6_NEIGHBOR_ENTRY::State, _IP6_NEIGHBOR_ENTRY::Ticks, _IP6_SERVICE::Ticks, _IP6_NEIGHBOR_ENTRY::Transmit, and _IP6_DAD_ENTRY::Transmit.
Referenced by Ip6CreateService().
VOID Ip6NdTimerTicking | ( | IN IP6_SERVICE * | IpSb | ) |
The heartbeat timer of ND module in 1 second. This time routine handles following things: 1) maitain default router list; 2) maintain prefix options; 3) maintain route caches.
[in] | IpSb | The IP6 service binding instance. |
References IP6_INF_ROUTER_LIFETIME, IP6_INFINIT_LIFETIME, IP6_ROUTE_CACHE_HASH_SIZE, IP6_ROUTE_CACHE_MAX, Ip6DestroyDefaultRouter(), Ip6DestroyPrefixListEntry(), Ip6FreeRouteCacheEntry(), _IP6_DEFAULT_ROUTER::Lifetime, _IP6_PREFIX_LIST_ENTRY::PreferredLifetime, and _IP6_PREFIX_LIST_ENTRY::ValidLifetime.
Referenced by Ip6TimerTicking().
VOID Ip6OnArpResolved | ( | IN VOID * | Context | ) |
Callback function when address resolution is finished. It will cancel all the queued frames if the address resolution failed, or transmit them if the request succeeded.
[in] | Context | The context of the callback, a pointer to IP6_NEIGHBOR_ENTRY. |
References IP6_LINK_TX_TOKEN::CallBack, IP6_LINK_TX_TOKEN::Context, IP6_LINK_TX_TOKEN::DstMac, _IP6_NEIGHBOR_ENTRY::Frames, _IP6_NEIGHBOR_ENTRY::Interface, IP6_DELAY_FIRST_PROBE_TIME, IP6_GET_TICKS, IP6_SERVICE_SIGNATURE, Ip6FreeLinkTxToken(), Ip6FreeNeighborEntry(), IP6_LINK_TX_TOKEN::Link, _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_SERVICE::Mnp, IP6_LINK_TX_TOKEN::MnpToken, mZeroMacAddress, IP6_LINK_TX_TOKEN::Packet, _IP6_INTERFACE::SentFrames, _IP6_INTERFACE::Service, _IP6_SERVICE::Signature, _IP6_SERVICE::SnpMode, _IP6_NEIGHBOR_ENTRY::State, and _IP6_NEIGHBOR_ENTRY::Ticks.
Referenced by Ip6AddNeighbor(), Ip6Output(), Ip6ProcessNeighborSolicit(), Ip6ProcessRedirect(), Ip6ProcessRouterAdvertise(), and Ip6SendNeighborSolicit().
VOID Ip6OnDADFinished | ( | IN BOOLEAN | IsDadPassed, | |
IN IP6_INTERFACE * | IpIf, | |||
IN IP6_DAD_ENTRY * | DadEntry | |||
) |
The function to be called after DAD (Duplicate Address Detection) is performed.
[in] | IsDadPassed | If TRUE, the DAD operation succeed. Otherwise, the DAD operation failed. |
[in] | IpIf | Points to the IP6_INTERFACE. |
[in] | DadEntry | The DAD entry which already performed DAD. |
References _IP6_ADDRESS_INFO::Address, _IP6_CONFIG_INSTANCE::Dhcp6, _IP6_CONFIG_INSTANCE::Dhcp6Event, _IP6_SERVICE::Dhcp6NeedInfoRequest, _IP6_SERVICE::Dhcp6NeedStart, _IP6_SERVICE::FasterTimer, IP6_CONFIG_DHCP6_OPTION_DNS_SERVERS, IP6_CONFIG_DHCP6_OPTION_ORO, IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_PREFIX_LENGTH, IP6_LINK_LOCAL_SCOPE, Ip6AddAddr(), _IP6_SERVICE::Ip6ConfigInstance, Ip6ConfigOnDhcp6Reply(), Ip6CreatePrefixListEntry(), Ip6LeaveGroup(), Ip6SetToAllNodeMulticast(), _IP6_SERVICE::LinkLocalAddr, _IP6_SERVICE::LinkLocalDadFail, _IP6_SERVICE::LinkLocalOk, _IP6_SERVICE::Mnp, _IP6_ADDRESS_INFO::PreferredLifetime, _IP6_ADDRESS_INFO::PrefixLength, _IP6_SERVICE::Timer, and _IP6_ADDRESS_INFO::ValidLifetime.
Referenced by Ip6ConfigOnPolicyChanged(), Ip6InitDADProcess(), Ip6NdFasterTimerTicking(), Ip6ProcessNeighborAdvertise(), and Ip6ProcessNeighborSolicit().
EFI_STATUS Ip6ProcessNeighborAdvertise | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IP6_HEADER * | Head, | |||
IN NET_BUF * | Packet | |||
) |
Process the Neighbor Advertisement message.
[in] | IpSb | The IP service that received the packet. |
[in] | Head | The IP head of the message. |
[in] | Packet | The content of the message with IP head removed. |
EFI_SUCCESS | The packet processed successfully. | |
EFI_INVALID_PARAMETER | The packet is invalid. | |
EFI_ICMP_ERROR | The packet indicates that DAD is failed. | |
Others | Failed to process the packet. |
References _IP6_NEIGHBOR_ENTRY::CallBack, _IP6_ETHE_ADDR_OPTION::EtherAddr, IP6_GET_TICKS, IP6_HOP_LIMIT, IP6_INFINIT_LIFETIME, IP6_IS_ROUTER_FLAG, IP6_ND_LENGTH, IP6_OVERRIDE_FLAG, IP6_SOLICITED_FLAG, Ip6DestroyDefaultRouter(), Ip6FindDADEntry(), Ip6FindDefaultRouter(), Ip6FindNeighborEntry(), Ip6IsNDOptionValid(), Ip6OnDADFinished(), Ip6OptionEtherTarget, _IP6_NEIGHBOR_ENTRY::IsRouter, _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_DEFAULT_ROUTER::NeighborCache, _IP6_NEIGHBOR_ENTRY::State, and _IP6_NEIGHBOR_ENTRY::Ticks.
Referenced by Ip6ProcessIcmpInformation().
EFI_STATUS Ip6ProcessNeighborSolicit | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IP6_HEADER * | Head, | |||
IN NET_BUF * | Packet | |||
) |
Process the Neighbor Solicitation message. The message may be sent for Duplicate Address Detection or Address Resolution.
[in] | IpSb | The IP service that received the packet. |
[in] | Head | The IP head of the message. |
[in] | Packet | The content of the message with IP head removed. |
EFI_SUCCESS | The packet processed successfully. | |
EFI_INVALID_PARAMETER | The packet is invalid. | |
EFI_ICMP_ERROR | The packet indicates that DAD is failed. | |
Others | Failed to process the packet. |
References _IP6_NEIGHBOR_ENTRY::CallBack, _IP6_ETHE_ADDR_OPTION::EtherAddr, IP6_HOP_LIMIT, IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_SCOPE, IP6_ND_LENGTH, Ip6CreateNeighborEntry(), Ip6FindDADEntry(), Ip6FindNeighborEntry(), Ip6IsNDOptionValid(), Ip6IsOneOfSetAddress(), Ip6IsSNMulticastAddr(), Ip6OnArpResolved(), Ip6OnDADFinished(), Ip6OptionEtherSource, Ip6SendNeighborAdvertise(), Ip6SetToAllNodeMulticast(), _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_DAD_ENTRY::Receive, _IP6_NEIGHBOR_ENTRY::State, and _IP6_NEIGHBOR_ENTRY::Ticks.
Referenced by Ip6ProcessIcmpInformation().
EFI_STATUS Ip6ProcessRedirect | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IP6_HEADER * | Head, | |||
IN NET_BUF * | Packet | |||
) |
Process the ICMPv6 redirect message. Find the instance, then update its route cache.
[in] | IpSb | The IP6 service binding instance that received the packet. |
[in] | Head | The IP head of the received ICMPv6 packet. |
[in] | Packet | The content of the ICMPv6 redirect packet with the IP head removed. |
EFI_INVALID_PARAMETER | The parameter is invalid. | |
EFI_OUT_OF_RESOURCES | Insuffcient resources to complete the operation. | |
EFI_SUCCESS | Successfully updated the route caches. |
References _IP6_NEIGHBOR_ENTRY::CallBack, _IP6_ETHE_ADDR_OPTION::EtherAddr, IP6_ROUTE_ENTRY::Flag, IP6_DIRECT_ROUTE, IP6_HOP_LIMIT, IP6_INFINIT_LIFETIME, IP6_REDITECT_LENGTH, IP6_ROUTE_CACHE_HASH, Ip6CreateNeighborEntry(), Ip6CreateRouteCacheEntry(), Ip6CreateRouteEntry(), Ip6FindNeighborEntry(), Ip6FindRouteCache(), Ip6FindRouteEntry(), Ip6IsNDOptionValid(), Ip6IsOneOfSetAddress(), Ip6OnArpResolved(), Ip6OptionEtherTarget, _IP6_NEIGHBOR_ENTRY::IsRouter, _IP6_ETHE_ADDR_OPTION::Length, IP6_ROUTE_CACHE_ENTRY::Link, _IP6_NEIGHBOR_ENTRY::LinkAddress, IP6_ROUTE_CACHE_ENTRY::NextHop, _IP6_NEIGHBOR_ENTRY::State, IP6_ROUTE_CACHE_ENTRY::Tag, and _IP6_NEIGHBOR_ENTRY::Ticks.
Referenced by Ip6ProcessIcmpInformation().
EFI_STATUS Ip6ProcessRouterAdvertise | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IP6_HEADER * | Head, | |||
IN NET_BUF * | Packet | |||
) |
Process the Router Advertisement message according to RFC4861.
[in] | IpSb | The IP service that received the packet. |
[in] | Head | The IP head of the message. |
[in] | Packet | The content of the message with the IP head removed. |
EFI_SUCCESS | The packet processed successfully. | |
EFI_INVALID_PARAMETER | The packet is invalid. | |
EFI_OUT_OF_RESOURCES | Insufficient resources to complete the operation. | |
Others | Failed to process the packet. |
[in] | IpSb | The IP service that received the packet. |
[in] | Head | The IP head of the message. |
[in] | Packet | The content of the message with the IP head removed. |
EFI_SUCCESS | The packet processed successfully. | |
EFI_INVALID_PARAMETER | The packet is invalid. | |
EFI_OUT_OF_RESOURCES | Insufficient resources to complete the operation. | |
Others | Failed to process the packet. |
References _IP6_NEIGHBOR_ENTRY::CallBack, IP6_AUTO_CONFIG_FLAG, IP6_HOP_LIMIT, IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_PREFIX_LENGTH, IP6_M_ADDR_CONFIG_FLAG, IP6_O_CONFIG_FLAG, IP6_ON_LINK_FLAG, IP6_RA_LENGTH, Ip6ConfigStartStatefulAutoConfig(), Ip6CreateDefaultRouter(), Ip6CreateNeighborEntry(), Ip6CreatePrefixListEntry(), Ip6DestroyDefaultRouter(), Ip6DestroyPrefixListEntry(), Ip6FindDADEntry(), Ip6FindDefaultRouter(), Ip6FindNeighborEntry(), Ip6FindPrefixListEntry(), Ip6IsNDOptionValid(), Ip6IsOneOfSetAddress(), Ip6OnArpResolved(), Ip6OptionEtherSource, Ip6OptionMtu, Ip6OptionPrefixInfo, Ip6SetAddress(), Ip6UpdateReachableTime(), _IP6_NEIGHBOR_ENTRY::IsRouter, _IP6_DEFAULT_ROUTER::Lifetime, _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_DEFAULT_ROUTER::NeighborCache, _IP6_PREFIX_LIST_ENTRY::PreferredLifetime, _IP6_NEIGHBOR_ENTRY::State, _IP6_NEIGHBOR_ENTRY::Ticks, and _IP6_PREFIX_LIST_ENTRY::ValidLifetime.
Referenced by Ip6ProcessIcmpInformation().
EFI_STATUS Ip6SendNeighborSolicit | ( | IN IP6_SERVICE * | IpSb, | |
IN EFI_IPv6_ADDRESS * | SourceAddress, | |||
IN EFI_IPv6_ADDRESS * | DestinationAddress, | |||
IN EFI_IPv6_ADDRESS * | TargetIp6Address, | |||
IN EFI_MAC_ADDRESS * | SourceLinkAddress | |||
) |
Generate the Neighbor Solicitation message and send it to the Destination Address.
[in] | IpSb | The IP service to send the packet |
[in] | SourceAddress | The source address of the message. |
[in] | DestinationAddress | The destination address of the message. |
[in] | TargetIp6Address | The IP address of the target of the solicitation. It must not be a multicast address. |
[in] | SourceLinkAddress | The MAC address for the sender. If not NULL, a source link-layer address option will be appended to the message. |
EFI_INVALID_PARAMETER | Any input parameter is invalid. | |
EFI_OUT_OF_RESOURCES | Insufficient resources to complete the operation. | |
EFI_SUCCESS | The Neighbor Advertise message was successfully sent. |
References _IP6_ETHE_ADDR_OPTION::EtherAddr, IP6_HOP_LIMIT, IP6_SERVICE_SIGNATURE, Ip6CreateNeighborEntry(), Ip6FindNeighborEntry(), Ip6IsSNMulticastAddr(), Ip6OnArpResolved(), Ip6OptionEtherSource, Ip6Output(), Ip6SysPacketSent(), _IP6_ETHE_ADDR_OPTION::Length, and _IP6_ETHE_ADDR_OPTION::Type.
Referenced by Ip6NdFasterTimerTicking(), and Ip6Output().
EFI_STATUS Ip6SendRouterSolicit | ( | IN IP6_SERVICE * | IpSb, | |
IN IP6_INTERFACE * | Interface, | |||
IN EFI_IPv6_ADDRESS * | SourceAddress, | |||
IN EFI_IPv6_ADDRESS * | DestinationAddress, | |||
IN EFI_MAC_ADDRESS * | SourceLinkAddress | |||
) |
Generate router solicit message and send it out to Destination Address or All Router Link Local scope multicast address.
[in] | IpSb | The IP service to send the packet. |
[in] | Interface | If not NULL, points to the IP6 interface to send the packet. |
[in] | SourceAddress | If not NULL, the source address of the message. |
[in] | DestinationAddress | If not NULL, the destination address of the message. |
[in] | SourceLinkAddress | If not NULL, the MAC address of the source. A source link-layer address option will be appended to the message. |
EFI_OUT_OF_RESOURCES | Insufficient resources to complete the operation. | |
EFI_SUCCESS | The router solicit message was successfully sent. |
[in] | IpSb | The IP service to send the packet. |
[in] | Interface | If not NULL, points to the IP6 interface to send the packet. |
[in] | SourceAddress | If not NULL, the source address of the message. |
[in] | DestinationAddress | If not NULL, the destination address of the message. |
[in] | SourceLinkAddress | If not NULL, the MAC address of the source. A source link-layer address option will be appended to the message. |
EFI_OUT_OF_RESOURCES | Insufficient resources to complete the operation. | |
EFI_SUCCESS | The router solicit message was successfully sent. |
References _IP6_ETHE_ADDR_OPTION::EtherAddr, IP6_HOP_LIMIT, IP6_LINK_LOCAL_SCOPE, IP6_SERVICE_SIGNATURE, Ip6OptionEtherSource, Ip6Output(), Ip6SetToAllNodeMulticast(), Ip6SysPacketSent(), _IP6_ETHE_ADDR_OPTION::Length, and _IP6_ETHE_ADDR_OPTION::Type.
Referenced by Ip6NdFasterTimerTicking().
EFI_STATUS Ip6SetAddress | ( | IN IP6_INTERFACE * | Interface, | |
IN EFI_IPv6_ADDRESS * | Ip6Addr, | |||
IN BOOLEAN | IsAnycast, | |||
IN UINT8 | PrefixLength, | |||
IN UINT32 | ValidLifetime, | |||
IN UINT32 | PreferredLifetime, | |||
IN IP6_DAD_CALLBACK | DadCallback, | |||
IN VOID * | Context | |||
) |
Set the interface's address. This will trigger the DAD process for the address to set. To set an already set address, the lifetimes wil be updated to the new value passed in.
[in] | Interface | The interface to set the address. |
[in] | Ip6Addr | The interface's to be assigned IPv6 address. |
[in] | IsAnycast | If TRUE, the unicast IPv6 address is anycast. Otherwise, it is not anycast. |
[in] | PrefixLength | The prefix length of the Ip6Addr. |
[in] | ValidLifetime | The valid lifetime for this address. |
[in] | PreferredLifetime | The preferred lifetime for this address. |
[in] | DadCallback | The caller's callback to trigger when DAD finishes. This is an optional parameter that may be NULL. |
[in] | Context | The context that will be passed to DadCallback. This is an optional parameter that may be NULL. |
EFI_SUCCESS | The interface is scheduled to be configured with the specified address. | |
EFI_OUT_OF_RESOURCES | Failed to set the interface's address due to lack of resources. |
References _IP6_ADDRESS_INFO::Address, _IP6_DELAY_JOIN_LIST::AddressInfo, _IP6_SERVICE::AutonomousPrefix, _IP6_DELAY_JOIN_LIST::Context, _IP6_DELAY_JOIN_LIST::DadCallback, _IP6_DELAY_JOIN_LIST::DelayTime, _IP6_DELAY_JOIN_LIST::Interface, IP6_ADDR_INFO_SIGNATURE, IP6_INTERFACE_SIGNATURE, IP6_LINK_LOCAL_PREFIX_LENGTH, IP6_ONE_SECOND_IN_MS, IP6_TIMER_INTERVAL_IN_MS, Ip6IsOneOfSetAddress(), _IP6_ADDRESS_INFO::IsAnycast, _IP6_DELAY_JOIN_LIST::Link, _IP6_SERVICE::OnlinkPrefix, _IP6_ADDRESS_INFO::PreferredLifetime, _IP6_PREFIX_LIST_ENTRY::Prefix, _IP6_PREFIX_LIST_ENTRY::PrefixLength, _IP6_ADDRESS_INFO::PrefixLength, _IP6_ADDRESS_INFO::Signature, and _IP6_ADDRESS_INFO::ValidLifetime.
Referenced by Ip6ConfigOnDhcp6Event(), Ip6ConfigSetMaunualAddress(), Ip6CreateInterface(), and Ip6ProcessRouterAdvertise().
VOID Ip6UpdateReachableTime | ( | IN OUT IP6_SERVICE * | IpSb | ) |
Update the ReachableTime in IP6 service binding instance data, in milliseconds.
[in,out] | IpSb | Points to the IP6_SERVICE. |
References IP6_MIN_RANDOM_FACTOR_SCALED, and IP6_RANDOM_FACTOR_SCALE.
Referenced by Ip6CreateService(), and Ip6ProcessRouterAdvertise().