21#ifndef __EFI_IP6_PROTOCOL_H__
22#define __EFI_IP6_PROTOCOL_H__
29#define EFI_IP6_SERVICE_BINDING_PROTOCOL_GUID \
31 0xec835dd3, 0xfe0f, 0x617b, {0xa6, 0x21, 0xb3, 0x50, 0xc3, 0xe1, 0x33, 0x88 } \
34#define EFI_IP6_PROTOCOL_GUID \
36 0x2c8759d5, 0x5c2d, 0x66ef, {0x92, 0x5f, 0xb6, 0x6c, 0x10, 0x19, 0x57, 0xe2 } \
83#define ICMP_V6_DEST_UNREACHABLE 0x1
84#define ICMP_V6_PACKET_TOO_BIG 0x2
85#define ICMP_V6_TIME_EXCEEDED 0x3
86#define ICMP_V6_PARAMETER_PROBLEM 0x4
93#define ICMP_V6_ECHO_REQUEST 0x80
94#define ICMP_V6_ECHO_REPLY 0x81
95#define ICMP_V6_LISTENER_QUERY 0x82
96#define ICMP_V6_LISTENER_REPORT 0x83
97#define ICMP_V6_LISTENER_DONE 0x84
98#define ICMP_V6_ROUTER_SOLICIT 0x85
99#define ICMP_V6_ROUTER_ADVERTISE 0x86
100#define ICMP_V6_NEIGHBOR_SOLICIT 0x87
101#define ICMP_V6_NEIGHBOR_ADVERTISE 0x88
102#define ICMP_V6_REDIRECT 0x89
103#define ICMP_V6_LISTENER_REPORT_2 0x8F
110#define ICMP_V6_NO_ROUTE_TO_DEST 0x0
111#define ICMP_V6_COMM_PROHIBITED 0x1
112#define ICMP_V6_BEYOND_SCOPE 0x2
113#define ICMP_V6_ADDR_UNREACHABLE 0x3
114#define ICMP_V6_PORT_UNREACHABLE 0x4
115#define ICMP_V6_SOURCE_ADDR_FAILED 0x5
116#define ICMP_V6_ROUTE_REJECTED 0x6
123#define ICMP_V6_TIMEOUT_HOP_LIMIT 0x0
124#define ICMP_V6_TIMEOUT_REASSEMBLE 0x1
131#define ICMP_V6_ERRONEOUS_HEADER 0x0
132#define ICMP_V6_UNRECOGNIZE_NEXT_HDR 0x1
133#define ICMP_V6_UNRECOGNIZE_OPTION 0x2
unsigned short UINT16
2-byte unsigned value.
unsigned char BOOLEAN
Logical Boolean.
unsigned char UINT8
1-byte unsigned value.
unsigned int UINT32
4-byte unsigned value.
#define VOID
Undeclared type.
#define OPTIONAL
Passing the datum to the function is optional, and a NULL is passed if the value is not supplied.
struct _EFI_IP6_TRANSMIT_DATA EFI_IP6_TRANSMIT_DATA
EFI_IP6_TRANSMIT_DATA.
EFI_GUID gEfiIp6ProtocolGuid
struct _EFI_IP6_FRAGMENT_DATA EFI_IP6_FRAGMENT_DATA
EFI_IP6_FRAGMENT_DATA describes the location and length of the IPv6 packet fragment to transmit or th...
EFI_STATUS(EFIAPI * EFI_IP6_CANCEL)(IN EFI_IP6_PROTOCOL *This, IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL)
Abort an asynchronous transmit or receive request.
EFI_STATUS(EFIAPI * EFI_IP6_GROUPS)(IN EFI_IP6_PROTOCOL *This, IN BOOLEAN JoinFlag, IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL)
Joins and leaves multicast groups.
struct _EFI_IP6_OVERRIDE_DATA EFI_IP6_OVERRIDE_DATA
EFI_IP6_OVERRIDE_DATA The information and flags in the override data structure will override default ...
EFI_STATUS(EFIAPI * EFI_IP6_ROUTES)(IN EFI_IP6_PROTOCOL *This, IN BOOLEAN DeleteRoute, IN EFI_IPv6_ADDRESS *Destination OPTIONAL, IN UINT8 PrefixLength, IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL)
Adds and deletes routing table entries.
EFI_STATUS(EFIAPI * EFI_IP6_GET_MODE_DATA)(IN EFI_IP6_PROTOCOL *This, OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL)
Gets the current operational settings for this instance of the EFI IPv6 Protocol driver.
EFI_IP6_NEIGHBOR_STATE
EFI_IP6_NEIGHBOR_STATE.
@ EfiNeighborDelay
This state is an optimization that gives upper-layer protocols additional time to provide reachabilit...
@ EfiNeighborInComplete
Address resolution is being performed on this entry.
@ EfiNeighborProbe
A reachability confirmation is actively sought by retransmitting Neighbor Solicitations every Retrans...
@ EfiNeighborReachable
Positive confirmation was received that the forward path to the neighbor was functioning properly.
@ EfiNeighborStale
Reachable Time has elapsed since the last positive confirmation was received.
EFI_STATUS(EFIAPI * EFI_IP6_POLL)(IN EFI_IP6_PROTOCOL *This)
Polls for incoming data packets and processes outgoing data packets.
EFI_STATUS(EFIAPI * EFI_IP6_CONFIGURE)(IN EFI_IP6_PROTOCOL *This, IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL)
Assigns an IPv6 address and subnet mask to this EFI IPv6 Protocol driver instance.
EFI_STATUS(EFIAPI * EFI_IP6_TRANSMIT)(IN EFI_IP6_PROTOCOL *This, IN EFI_IP6_COMPLETION_TOKEN *Token)
Places outgoing data packets into the transmit queue.
struct _EFI_IP6_PROTOCOL EFI_IP6_PROTOCOL
struct _EFI_IP6_HEADER EFI_IP6_HEADER
EFI_IP6_HEADER The fields in the IPv6 header structure are defined in the Internet Protocol version6 ...
struct _EFI_IP6_RECEIVE_DATA EFI_IP6_RECEIVE_DATA
EFI_IP6_RECEIVE_DATA.
EFI_STATUS(EFIAPI * EFI_IP6_RECEIVE)(IN EFI_IP6_PROTOCOL *This, IN EFI_IP6_COMPLETION_TOKEN *Token)
Places a receiving request into the receiving queue.
EFI_GUID gEfiIp6ServiceBindingProtocolGuid
EFI_STATUS(EFIAPI * EFI_IP6_NEIGHBORS)(IN EFI_IP6_PROTOCOL *This, IN BOOLEAN DeleteFlag, IN EFI_IPv6_ADDRESS *TargetIp6Address, IN EFI_MAC_ADDRESS *TargetLinkAddress, IN UINT32 Timeout, IN BOOLEAN Override)
Add or delete Neighbor cache entries.
EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL as defined in UEFI 2.0.
IPv6_ADDRESS EFI_IPv6_ADDRESS
16-byte buffer.
RETURN_STATUS EFI_STATUS
Function return status for EFI API.
GUID EFI_GUID
128-bit buffer containing a unique identifier value.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
UINT8 PrefixLength
The length of the prefix associated with the Address.
EFI_IPv6_ADDRESS Address
The IPv6 address.
EFI_IP6_ADDRESS_PAIR is deprecated in the UEFI 2.4B and should not be used any more.
UINT8 PrefixLength
The length of the prefix associated with the Ip6Address.
EFI_HANDLE InstanceHandle
The EFI IPv6 Protocol instance handle that is using this address/prefix pair.
EFI_IPv6_ADDRESS Ip6Address
IPv6 address in network byte order.
EFI_IP6_COMPLETION_TOKEN structures are used for both transmit and receive operations.
EFI_STATUS Status
Will be set to one of the following values:
EFI_EVENT Event
This Event will be signaled after the Status field is updated by the EFI IPv6 Protocol driver.
EFI_IP6_RECEIVE_DATA * RxData
When the Token is used for receiving, RxData is a pointer to the EFI_IP6_RECEIVE_DATA.
EFI_IP6_TRANSMIT_DATA * TxData
When the Token is used for transmitting, TxData is a pointer to the EFI_IP6_TRANSMIT_DATA.
EFI_IP6_CONFIG_DATA is used to report and change IPv6 session parameters.
BOOLEAN AcceptIcmpErrors
Set to TRUE to receive ICMP error report packets.
UINT8 TrafficClass
TrafficClass field in transmitted IPv6 packets.
UINT32 FlowLabel
FlowLabel field in transmitted IPv6 packets.
UINT32 ReceiveTimeout
The timer timeout value (number of microseconds) for the receive timeout event to be associated with ...
UINT8 DefaultProtocol
For the IPv6 packet to send and receive, this is the default value of the 'Next Header' field in the ...
UINT8 HopLimit
HopLimit field in transmitted IPv6 packets.
BOOLEAN AcceptAnyProtocol
Set to TRUE to receive all IPv6 packets that get through the receive filters.
EFI_IPv6_ADDRESS DestinationAddress
The destination address of the packets that will be transmitted.
EFI_IPv6_ADDRESS StationAddress
The station IPv6 address that will be assigned to this EFI IPv6 Protocol instance.
UINT32 TransmitTimeout
The timer timeout value (number of microseconds) for the transmit timeout event to be associated with...
BOOLEAN AcceptPromiscuous
Set to TRUE to receive all IPv6 packets that are sent to any hardware address or any protocol address...
EFI_IP6_ICMP_TYPE is used to describe those ICMP messages that are supported by this EFI IPv6 Protoco...
UINT8 Type
The type of ICMP message.
UINT8 Code
The code of the ICMP message.
UINT32 MaxPacketSize
The maximum packet size, in bytes, of the packet which the upper layer driver could feed.
EFI_IP6_NEIGHBOR_CACHE * NeighborCache
Neighbor cache entries.
UINT32 IcmpTypeCount
Number of entries in the supported ICMP types list.
EFI_IP6_ICMP_TYPE * IcmpTypeList
Array of ICMP types and codes that are supported by this EFI IPv6 Protocol driver.
UINT32 RouteCount
Number of entries in the routing table.
EFI_IP6_ADDRESS_INFO * AddressList
List of currently configured IPv6 addresses and corresponding prefix lengths assigned to this interfa...
EFI_IP6_ROUTE_TABLE * RouteTable
Routing table entries.
UINT32 NeighborCount
Number of entries in the neighbor cache.
UINT32 PrefixCount
Number of entries in the prefix table.
BOOLEAN IsStarted
Set to TRUE after this EFI IPv6 Protocol instance is started.
EFI_IPv6_ADDRESS * GroupTable
List of joined multicast group addresses.
EFI_IP6_CONFIG_DATA ConfigData
Current configuration settings.
EFI_IP6_ADDRESS_INFO * PrefixTable
On-link Prefix table entries.
UINT32 GroupCount
Number of joined multicast groups.
UINT32 AddressCount
Number of configured IPv6 addresses on this interface.
BOOLEAN IsConfigured
Set to TRUE when the EFI IPv6 Protocol instance is configured.
EFI_IP6_NEIGHBOR_CACHE is the entry structure that is used in neighbor cache.
EFI_IP6_NEIGHBOR_STATE State
State of this neighbor cache entry.
EFI_MAC_ADDRESS LinkAddress
Link-layer address of the neighbor.
EFI_IPv6_ADDRESS Neighbor
The on-link unicast/anycast IP address of the neighbor.
EFI_IP6_ROUTE_TABLE is the entry structure that is used in routing tables.
UINT8 PrefixLength
The length of the prefix associated with the Destination.
EFI_IPv6_ADDRESS Gateway
The IPv6 address of the gateway to be used as the next hop for packets to this prefix.
EFI_IPv6_ADDRESS Destination
The destination prefix to be routed.
EFI_IP6_VARIABLE_DATA is deprecated in the UEFI 2.4B and should not be used any more.
EFI_HANDLE DriverHandle
The handle of the driver that creates this entry.
UINT32 AddressCount
The number of IPv6 address pairs that follow this data structure.
EFI_IP6_ADDRESS_PAIR AddressPairs[1]
List of IPv6 address pairs that are currently in use.
32-byte buffer containing a network Media Access Control address.
EFI Time Abstraction: Year: 1900 - 9999 Month: 1 - 12 Day: 1 - 31 Hour: 0 - 23 Minute: 0 - 59 Second:...
EFI_IP6_FRAGMENT_DATA describes the location and length of the IPv6 packet fragment to transmit or th...
VOID * FragmentBuffer
Pointer to fragment data. This field may not be set to NULL.
UINT32 FragmentLength
Length of fragment data. This field may not be set to zero.
EFI_IP6_OVERRIDE_DATA The information and flags in the override data structure will override default ...
UINT8 HopLimit
Hop-Limit override.
UINT32 FlowLabel
Flow-Label override.
UINT8 Protocol
Protocol type override.
The EFI IPv6 Protocol implements a simple packet-oriented interface that can be used by drivers,...
EFI_IP6_TRANSMIT Transmit
EFI_IP6_NEIGHBORS Neighbors
EFI_IP6_GET_MODE_DATA GetModeData
EFI_IP6_CONFIGURE Configure
EFI_TIME TimeStamp
Time when the EFI IPv6 Protocol driver accepted the packet.
UINT32 HeaderLength
Length of the IPv6 packet headers, including both the IPv6 header and any extension headers.
UINT32 FragmentCount
Number of IPv6 payload fragments.
EFI_IP6_HEADER * Header
Pointer to the IPv6 packet header.
UINT32 DataLength
Sum of the lengths of IPv6 packet buffers in FragmentTable.
EFI_EVENT RecycleSignal
After this event is signaled, the receive data structure is released and must not be referenced.
EFI_IP6_FRAGMENT_DATA FragmentTable[1]
Array of payload fragment lengths and buffer pointers.
UINT32 DataLength
Total length in bytes of the FragmentTable data to transmit.
UINT32 ExtHdrsLength
Total length in byte of the IPv6 extension headers specified in ExtHdrs.
UINT8 NextHeader
The protocol of first extension header in ExtHdrs.
EFI_IP6_FRAGMENT_DATA FragmentTable[1]
Start of the fragment data table.
EFI_IP6_OVERRIDE_DATA * OverrideData
If not NULL, the IPv6 transmission control override data.
UINT32 FragmentCount
Number of entries in the fragment data table.
VOID * ExtHdrs
Pointer to the IPv6 extension headers.
EFI_IPv6_ADDRESS DestinationAddress
The destination IPv6 address.