NetworkPkg/Ip6Dxe/Ip6Nd.h File Reference


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_ROUTERIp6CreateDefaultRouter (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_ROUTERIp6FindDefaultRouter (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_ENTRYIp6FindDADEntry (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Target, OUT IP6_INTERFACE **Interface)
IP6_PREFIX_LIST_ENTRYIp6CreatePrefixListEntry (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_ENTRYIp6FindPrefixListEntry (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_ENTRYIp6CreateNeighborEntry (IN IP6_SERVICE *IpSb, IN IP6_ARP_CALLBACK CallBack, IN EFI_IPv6_ADDRESS *Ip6Address, IN EFI_MAC_ADDRESS *LinkAddress)
IP6_NEIGHBOR_ENTRYIp6FindNeighborEntry (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)

Detailed Description

Definition of Neighbor Discovery support routines.

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 Documentation

#define IP6_GET_TICKS ( Ms   )     (((Ms) + IP6_TIMER_INTERVAL_IN_MS - 1) / IP6_TIMER_INTERVAL_IN_MS)


Typedef Documentation

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


Enumeration Type Documentation

anonymous enum

Enumerator:
IP6_INF_ROUTER_LIFETIME 
IP6_MAX_RTR_SOLICITATION_DELAY  1000 milliseconds
IP6_MAX_RTR_SOLICITATIONS 
IP6_RTR_SOLICITATION_INTERVAL 
IP6_MIN_RANDOM_FACTOR_SCALED 
IP6_MAX_RANDOM_FACTOR_SCALED 
IP6_RANDOM_FACTOR_SCALE 
IP6_MAX_MULTICAST_SOLICIT 
IP6_MAX_UNICAST_SOLICIT 
IP6_MAX_ANYCAST_DELAY_TIME 
IP6_MAX_NEIGHBOR_ADV 
IP6_REACHABLE_TIME 
IP6_RETRANS_TIMER 
IP6_DELAY_FIRST_PROBE_TIME 
IP6_MIN_LINK_MTU 
IP6_MAX_LINK_MTU 
IP6_IS_ROUTER_FLAG 
IP6_SOLICITED_FLAG 
IP6_OVERRIDE_FLAG 
IP6_M_ADDR_CONFIG_FLAG 
IP6_O_CONFIG_FLAG 
IP6_ON_LINK_FLAG 
IP6_AUTO_CONFIG_FLAG 
IP6_ND_LENGTH 
IP6_RA_LENGTH 
IP6_REDITECT_LENGTH 
IP6_DAD_ENTRY_SIGNATURE 


Function Documentation

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

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.

Parameters:
[in] IpSb The pointer to the IP6_SERVICE instance.
[in] ListHead The list entry head of the prefix list table.
Release the resource in the prefix list table, and destroy the list entry and corresponding addresses or route entries.

Parameters:
[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.

Parameters:
[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.
Returns:
NULL if it failed to allocate memory for the default router node. Otherwise, point to the created default router node.

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.

Parameters:
[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.
Returns:
NULL if failed to allocate memory for the neighbor cache entry. Otherwise, point to the created neighbor cache entry.

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.

Parameters:
[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.
Returns:
NULL if it failed to allocate memory for the prefix node. Otherwise, point to the created or existing prefix list entry.

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

Parameters:
[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.
Return values:
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.

Parameters:
[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.

Parameters:
[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.

Parameters:
[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.
Returns:
NULL if failed to find the matching DAD entry. Otherwise, point to the found DAD entry.

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.

Parameters:
[in] IpSb The pointer to the IP6_SERVICE instance.
[in] Ip6Address The IPv6 address of the to be searched default router node.
Returns:
NULL if it failed to find the matching default router node. Otherwise, point to the found 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.

Parameters:
[in] IpSb The pointer to the IP6_SERVICE instance.
[in] Ip6Address Points to the IPv6 address of the neighbor.
Returns:
NULL if it failed to find the matching neighbor cache entry. Otherwise, point to the found neighbor cache entry.

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.

Parameters:
[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.
Returns:
NULL if cannot find the IP6 prefix list entry. Otherwise, return the pointer to the IP6 prefix list entry.

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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.

Parameters:
[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  ) 

VOID Ip6OnDADFinished ( IN BOOLEAN  IsDadPassed,
IN IP6_INTERFACE IpIf,
IN IP6_DAD_ENTRY DadEntry 
)

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

Process the Neighbor Advertisement message.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.
Process the Router Advertisement message according to RFC4861.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
EFI_OUT_OF_RESOURCES Insufficient resources to complete the operation.
EFI_SUCCESS The router solicit message was successfully sent.
Generate router solicit message and send it out to Destination Address or All Router Link Local scope multicast address.

Parameters:
[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.
Return values:
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.

Parameters:
[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.
Return values:
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.

Parameters:
[in,out] IpSb Points to the IP6_SERVICE.

References IP6_MIN_RANDOM_FACTOR_SCALED, and IP6_RANDOM_FACTOR_SCALE.

Referenced by Ip6CreateService(), and Ip6ProcessRouterAdvertise().


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