Curle
4300dc655c
The lib/inc folders are from the GNU-EFI project. The documentation is from the uefi.org site. Yes, I know there are duplicate includes. I have a plan for them.
273 lines
7.1 KiB
C
273 lines
7.1 KiB
C
#ifndef _EFI_UDP_H
|
|
#define _EFI_UDP_H
|
|
|
|
|
|
/*++
|
|
Copyright (c) 2013 Intel Corporation
|
|
|
|
--*/
|
|
|
|
#define EFI_UDP4_SERVICE_BINDING_PROTOCOL \
|
|
{ 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} }
|
|
|
|
#define EFI_UDP4_PROTOCOL \
|
|
{ 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} }
|
|
|
|
#define EFI_UDP6_SERVICE_BINDING_PROTOCOL \
|
|
{ 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} }
|
|
|
|
#define EFI_UDP6_PROTOCOL \
|
|
{ 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} }
|
|
|
|
INTERFACE_DECL(_EFI_UDP4);
|
|
INTERFACE_DECL(_EFI_UDP6);
|
|
|
|
typedef struct {
|
|
BOOLEAN AcceptBroadcast;
|
|
BOOLEAN AcceptPromiscuous;
|
|
BOOLEAN AcceptAnyPort;
|
|
BOOLEAN AllowDuplicatePort;
|
|
UINT8 TypeOfService;
|
|
UINT8 TimeToLive;
|
|
BOOLEAN DoNotFragment;
|
|
UINT32 ReceiveTimeout;
|
|
UINT32 TransmitTimeout;
|
|
BOOLEAN UseDefaultAddress;
|
|
EFI_IPv4_ADDRESS StationAddress;
|
|
EFI_IPv4_ADDRESS SubnetMask;
|
|
UINT16 StationPort;
|
|
EFI_IPv4_ADDRESS RemoteAddress;
|
|
UINT16 RemotePort;
|
|
} EFI_UDP4_CONFIG_DATA;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_GET_MODE_DATA) (
|
|
IN struct _EFI_UDP4 *This,
|
|
OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL,
|
|
OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,
|
|
OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
|
|
OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_CONFIGURE) (
|
|
IN struct _EFI_UDP4 *This,
|
|
IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_GROUPS) (
|
|
IN struct _EFI_UDP4 *This,
|
|
IN BOOLEAN JoinFlag,
|
|
IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_ROUTES) (
|
|
IN struct _EFI_UDP4 *This,
|
|
IN BOOLEAN DeleteRoute,
|
|
IN EFI_IPv4_ADDRESS *SubnetAddress,
|
|
IN EFI_IPv4_ADDRESS *SubnetMask,
|
|
IN EFI_IPv4_ADDRESS *GatewayAddress
|
|
);
|
|
|
|
#define EFI_NETWORK_UNREACHABLE EFIERR(100)
|
|
#define EFI_HOST_UNREACHABLE EFIERR(101)
|
|
#define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
|
|
#define EFI_PORT_UNREACHABLE EFIERR(103)
|
|
|
|
typedef struct {
|
|
EFI_IPv4_ADDRESS SourceAddress;
|
|
UINT16 SourcePort;
|
|
EFI_IPv4_ADDRESS DestinationAddress;
|
|
UINT16 DestinationPort;
|
|
} EFI_UDP4_SESSION_DATA;
|
|
|
|
typedef struct {
|
|
UINT32 FragmentLength;
|
|
VOID *FragmentBuffer;
|
|
} EFI_UDP4_FRAGMENT_DATA;
|
|
|
|
typedef struct {
|
|
EFI_TIME TimeStamp;
|
|
EFI_EVENT RecycleSignal;
|
|
EFI_UDP4_SESSION_DATA UdpSession;
|
|
UINT32 DataLength;
|
|
UINT32 FragmentCount;
|
|
EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
|
|
} EFI_UDP4_RECEIVE_DATA;
|
|
|
|
typedef struct {
|
|
EFI_UDP4_SESSION_DATA *UdpSessionData;
|
|
EFI_IPv4_ADDRESS *GatewayAddress;
|
|
UINT32 DataLength;
|
|
UINT32 FragmentCount;
|
|
EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
|
|
} EFI_UDP4_TRANSMIT_DATA;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS Status;
|
|
union {
|
|
EFI_UDP4_RECEIVE_DATA *RxData;
|
|
EFI_UDP4_TRANSMIT_DATA *TxData;
|
|
} Packet;
|
|
} EFI_UDP4_COMPLETION_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_TRANSMIT) (
|
|
IN struct _EFI_UDP4 *This,
|
|
IN EFI_UDP4_COMPLETION_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_RECEIVE) (
|
|
IN struct _EFI_UDP4 *This,
|
|
IN EFI_UDP4_COMPLETION_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_CANCEL)(
|
|
IN struct _EFI_UDP4 *This,
|
|
IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP4_POLL) (
|
|
IN struct _EFI_UDP4 *This
|
|
);
|
|
|
|
typedef struct _EFI_UDP4 {
|
|
EFI_UDP4_GET_MODE_DATA GetModeData;
|
|
EFI_UDP4_CONFIGURE Configure;
|
|
EFI_UDP4_GROUPS Groups;
|
|
EFI_UDP4_ROUTES Routes;
|
|
EFI_UDP4_TRANSMIT Transmit;
|
|
EFI_UDP4_RECEIVE Receive;
|
|
EFI_UDP4_CANCEL Cancel;
|
|
EFI_UDP4_POLL Poll;
|
|
} EFI_UDP4;
|
|
|
|
typedef struct {
|
|
BOOLEAN AcceptPromiscuous;
|
|
BOOLEAN AcceptAnyPort;
|
|
BOOLEAN AllowDuplicatePort;
|
|
UINT8 TrafficClass;
|
|
UINT8 HopLimit;
|
|
UINT32 ReceiveTimeout;
|
|
UINT32 TransmitTimeout;
|
|
EFI_IPv6_ADDRESS StationAddress;
|
|
UINT16 StationPort;
|
|
EFI_IPv6_ADDRESS RemoteAddress;
|
|
UINT16 RemotePort;
|
|
} EFI_UDP6_CONFIG_DATA;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_GET_MODE_DATA) (
|
|
IN struct _EFI_UDP6 *This,
|
|
OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL,
|
|
OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL,
|
|
OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
|
|
OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_CONFIGURE) (
|
|
IN struct _EFI_UDP6 *This,
|
|
IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_GROUPS) (
|
|
IN struct _EFI_UDP6 *This,
|
|
IN BOOLEAN JoinFlag,
|
|
IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL
|
|
);
|
|
|
|
typedef struct {
|
|
EFI_IPv6_ADDRESS SourceAddress;
|
|
UINT16 SourcePort;
|
|
EFI_IPv6_ADDRESS DestinationAddress;
|
|
UINT16 DestinationPort;
|
|
} EFI_UDP6_SESSION_DATA;
|
|
|
|
typedef struct {
|
|
UINT32 FragmentLength;
|
|
VOID *FragmentBuffer;
|
|
} EFI_UDP6_FRAGMENT_DATA;
|
|
|
|
typedef struct {
|
|
EFI_TIME TimeStamp;
|
|
EFI_EVENT RecycleSignal;
|
|
EFI_UDP6_SESSION_DATA UdpSession;
|
|
UINT32 DataLength;
|
|
UINT32 FragmentCount;
|
|
EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
|
|
} EFI_UDP6_RECEIVE_DATA;
|
|
|
|
typedef struct {
|
|
EFI_UDP6_SESSION_DATA *UdpSessionData;
|
|
UINT32 DataLength;
|
|
UINT32 FragmentCount;
|
|
EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
|
|
} EFI_UDP6_TRANSMIT_DATA;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS Status;
|
|
union {
|
|
EFI_UDP6_RECEIVE_DATA *RxData;
|
|
EFI_UDP6_TRANSMIT_DATA *TxData;
|
|
} Packet;
|
|
} EFI_UDP6_COMPLETION_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_TRANSMIT) (
|
|
IN struct _EFI_UDP6 *This,
|
|
IN EFI_UDP6_COMPLETION_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_RECEIVE) (
|
|
IN struct _EFI_UDP6 *This,
|
|
IN EFI_UDP6_COMPLETION_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_CANCEL)(
|
|
IN struct _EFI_UDP6 *This,
|
|
IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UDP6_POLL) (
|
|
IN struct _EFI_UDP6 *This
|
|
);
|
|
|
|
typedef struct _EFI_UDP6 {
|
|
EFI_UDP6_GET_MODE_DATA GetModeData;
|
|
EFI_UDP6_CONFIGURE Configure;
|
|
EFI_UDP6_GROUPS Groups;
|
|
EFI_UDP6_TRANSMIT Transmit;
|
|
EFI_UDP6_RECEIVE Receive;
|
|
EFI_UDP6_CANCEL Cancel;
|
|
EFI_UDP6_POLL Poll;
|
|
} EFI_UDP6;
|
|
|
|
#endif /* _EFI_UDP_H */
|