NetworkPkg/Ip6Dxe/Ip6If.h File Reference


Data Structures

struct  IP6_LINK_RX_TOKEN
struct  IP6_LINK_TX_TOKEN
struct  _IP6_ADDRESS_INFO
struct  _IP6_INTERFACE

Defines

#define IP6_LINK_RX_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'R')
#define IP6_LINK_TX_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'T')
#define IP6_INTERFACE_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'I')
#define IP6_ADDR_INFO_SIGNATURE   SIGNATURE_32 ('I', 'P', 'A', 'I')

Typedefs

typedef VOID(* IP6_FRAME_CALLBACK )(NET_BUF *Packet, EFI_STATUS IoStatus, UINT32 LinkFlag, VOID *Context)
typedef BOOLEAN(* IP6_FRAME_TO_CANCEL )(IP6_LINK_TX_TOKEN *Frame, VOID *Context)

Functions

IP6_INTERFACEIp6CreateInterface (IN IP6_SERVICE *IpSb, IN BOOLEAN LinkLocal)
VOID Ip6CleanInterface (IN IP6_INTERFACE *Interface, IN IP6_PROTOCOL *IpInstance)
VOID Ip6FreeLinkTxToken (IN IP6_LINK_TX_TOKEN *Token)
VOID EFIAPI Ip6OnFrameReceived (IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS Ip6ReceiveFrame (IN IP6_FRAME_CALLBACK CallBack, IN IP6_SERVICE *IpSb)
EFI_STATUS Ip6SendFrame (IN IP6_INTERFACE *Interface, IN IP6_PROTOCOL *IpInstance, IN NET_BUF *Packet, IN EFI_IPv6_ADDRESS *NextHop, IN IP6_FRAME_CALLBACK CallBack, IN VOID *Context)
VOID EFIAPI Ip6TimerTicking (IN EFI_EVENT Event, IN VOID *Context)

Detailed Description

Definition for IP6 pesudo interface structure.

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_ADDR_INFO_SIGNATURE   SIGNATURE_32 ('I', 'P', 'A', 'I')

#define IP6_INTERFACE_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'I')

#define IP6_LINK_RX_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'R')

#define IP6_LINK_TX_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'T')


Typedef Documentation

typedef VOID(* IP6_FRAME_CALLBACK)(NET_BUF *Packet, EFI_STATUS IoStatus, UINT32 LinkFlag, VOID *Context)

typedef BOOLEAN(* IP6_FRAME_TO_CANCEL)(IP6_LINK_TX_TOKEN *Frame, VOID *Context)


Function Documentation

VOID Ip6CleanInterface ( IN IP6_INTERFACE Interface,
IN IP6_PROTOCOL IpInstance 
)

Free the interface used by IpInstance. All the IP instance with the same Ip/prefix pair share the same interface. It is reference counted. All the frames that haven't been sent will be cancelled. Because the IpInstance is optional, the caller must remove IpInstance from the interface's instance list.

Parameters:
[in] Interface The interface used by the IpInstance.
[in] IpInstance The IP instance that free the interface. NULL if the IP driver is releasing the default interface.

References IP6_INTERFACE_SIGNATURE, Ip6CancelFrames(), Ip6CancelInstanceFrame(), and Ip6RemoveAddr().

Referenced by Ip6CleanProtocol(), and Ip6CleanService().

IP6_INTERFACE* Ip6CreateInterface ( IN IP6_SERVICE IpSb,
IN BOOLEAN  LinkLocal 
)

VOID Ip6FreeLinkTxToken ( IN IP6_LINK_TX_TOKEN Token  ) 

Free the link layer transmit token. It will close the event then free the memory used.

Parameters:
[in] Token Token to free.
Free the link layer transmit token. It will close the event, then free the memory used.

Parameters:
[in] Token Token to free.

References IP6_LINK_TX_SIGNATURE.

Referenced by Ip6FreeNeighborEntry(), Ip6OnArpResolved(), Ip6OnFrameSentDpc(), and Ip6SendFrame().

VOID EFIAPI Ip6OnFrameReceived ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Request Ip6OnFrameReceivedDpc as a DPC at TPL_CALLBACK

Parameters:
Event The receive event delivered to MNP for receive.
Context Context for the callback.
Request Ip6OnFrameReceivedDpc as a DPC at TPL_CALLBACK.

Parameters:
Event The receive event delivered to MNP for receive.
Context Context for the callback.

References Ip6OnFrameReceivedDpc().

Referenced by Ip6CreateService().

EFI_STATUS Ip6ReceiveFrame ( IN IP6_FRAME_CALLBACK  CallBack,
IN IP6_SERVICE IpSb 
)

Request to receive the packet from the interface.

Parameters:
[in] CallBack Function to call when the receive finished.
[in] IpSb Points to the IP6 service binding instance.
Return values:
EFI_ALREADY_STARTED There is already a pending receive request.
EFI_OUT_OF_RESOURCES Failed to allocate resources to receive.
EFI_SUCCESS The recieve request has been started.
Request to receive the packet from the interface.

Parameters:
[in] CallBack Function to call when receive finished.
[in] IpSb Points to IP6 service binding instance.
Return values:
EFI_ALREADY_STARTED There is already a pending receive request.
EFI_OUT_OF_RESOURCES Failed to allocate resource to receive.
EFI_SUCCESS The recieve request has been started.

References IP6_LINK_RX_TOKEN::CallBack, IP6_LINK_RX_TOKEN::Context, IP6_SERVICE_SIGNATURE, and IP6_LINK_RX_TOKEN::MnpToken.

Referenced by Ip6AcceptFrame(), and Ip6DriverBindingStart().

EFI_STATUS Ip6SendFrame ( IN IP6_INTERFACE Interface,
IN IP6_PROTOCOL IpInstance,
IN NET_BUF *  Packet,
IN EFI_IPv6_ADDRESS *  NextHop,
IN IP6_FRAME_CALLBACK  CallBack,
IN VOID *  Context 
)

Send a frame from the interface. If the next hop is multicast address, it is transmitted immediately. If the next hop is a unicast, and the NextHop's MAC is not known, it will perform address resolution. If some error happened, the CallBack won't be called. So, the caller must test the return value, and take action when there is an error.

Parameters:
[in] Interface The interface to send the frame from
[in] IpInstance The IP child that request the transmission. NULL if it is the IP6 driver itself.
[in] Packet The packet to transmit.
[in] NextHop The immediate destination to transmit the packet to.
[in] CallBack Function to call back when transmit finished.
[in] Context Opaque parameter to the call back.
Return values:
EFI_OUT_OF_RESOURCES Failed to allocate resource to send the frame.
EFI_NO_MAPPING Can't resolve the MAC for the nexthop.
EFI_SUCCESS The packet successfully transmitted.
Send a frame from the interface. If the next hop is a multicast address, it is transmitted immediately. If the next hop is a unicast, and the NextHop's MAC is not known, it will perform address resolution. If an error occurred, the CallBack won't be called. So, the caller must test the return value, and take action when there is an error.

Parameters:
[in] Interface The interface to send the frame from
[in] IpInstance The IP child that request the transmission. NULL if it is the IP6 driver itself.
[in] Packet The packet to transmit.
[in] NextHop The immediate destination to transmit the packet to.
[in] CallBack Function to call back when transmit finished.
[in] Context Opaque parameter to the callback.
Return values:
EFI_OUT_OF_RESOURCES Failed to allocate resource to send the frame.
EFI_NO_MAPPING Can't resolve the MAC for the nexthop.
EFI_SUCCESS The packet successfully transmitted.

References _IP6_NEIGHBOR_ENTRY::ArpFree, _IP6_NEIGHBOR_ENTRY::ArpList, IP6_LINK_TX_TOKEN::DstMac, _IP6_NEIGHBOR_ENTRY::Frames, _IP6_NEIGHBOR_ENTRY::Interface, IP6_DELAY_FIRST_PROBE_TIME, IP6_GET_TICKS, IP6_SERVICE_SIGNATURE, Ip6CreateLinkTxToken(), Ip6FindNeighborEntry(), Ip6FreeLinkTxToken(), Ip6GetMulticastMac(), IP6_LINK_TX_TOKEN::Link, _IP6_NEIGHBOR_ENTRY::LinkAddress, _IP6_SERVICE::LinkLocalOk, _IP6_SERVICE::Mnp, IP6_LINK_TX_TOKEN::MnpToken, _IP6_SERVICE::SnpMode, _IP6_NEIGHBOR_ENTRY::State, and _IP6_NEIGHBOR_ENTRY::Ticks.

Referenced by Ip6Output().

VOID EFIAPI Ip6TimerTicking ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

The heartbeat timer of IP6 service instance. It times out all of its IP6 children's received-but-not-delivered and transmitted-but-not-recycle packets.

Parameters:
[in] Event The IP6 service instance's heart beat timer.
[in] Context The IP6 service instance.
The heartbeat timer of IP6 service instance. It times out all of its IP6 children's received-but-not-delivered and transmitted-but-not-recycle packets.

Parameters:
[in] Event The IP6 service instance's heartbeat timer.
[in] Context The IP6 service instance.

References IP6_SERVICE_SIGNATURE, Ip6MldTimerTicking(), Ip6NdTimerTicking(), and Ip6PacketTimerTicking().

Referenced by Ip6CreateService().


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