2007-06-28 09:00:39 +02:00
|
|
|
/*++
|
|
|
|
|
|
|
|
Copyright (c) 2006, 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.
|
|
|
|
|
|
|
|
Module Name:
|
|
|
|
|
|
|
|
Udp4.h
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
|
|
|
|
--*/
|
|
|
|
|
|
|
|
#ifndef _UDP4_H_
|
|
|
|
#define _UDP4_H_
|
|
|
|
|
|
|
|
#include EFI_PROTOCOL_DEFINITION (ServiceBinding)
|
|
|
|
#include EFI_PROTOCOL_DEFINITION (Ip4)
|
|
|
|
|
|
|
|
//
|
|
|
|
//GUID definitions
|
|
|
|
//
|
|
|
|
#define EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID \
|
2008-03-28 13:00:46 +01:00
|
|
|
{ 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} }
|
2007-06-28 09:00:39 +02:00
|
|
|
|
|
|
|
#define EFI_UDP4_PROTOCOL_GUID \
|
2008-03-28 13:00:46 +01:00
|
|
|
{ 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} }
|
2007-06-28 09:00:39 +02:00
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HANDLE InstanceHandle;
|
|
|
|
EFI_IPv4_ADDRESS LocalAddress;
|
|
|
|
UINT16 LocalPort;
|
|
|
|
EFI_IPv4_ADDRESS RemoteAddress;
|
|
|
|
UINT16 RemotePort;
|
|
|
|
} EFI_UDP4_SERVICE_POINT;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HANDLE DriverHandle;
|
|
|
|
UINT32 ServiceCount;
|
|
|
|
EFI_UDP4_SERVICE_POINT Services[1];
|
|
|
|
} EFI_UDP4_VARIABLE_DATA;
|
|
|
|
|
|
|
|
//
|
|
|
|
//ICMP error definitions
|
|
|
|
//
|
|
|
|
#define EFI_NETWORK_UNREACHABLE EFIERR(100)
|
|
|
|
#define EFI_HOST_UNREACHABLE EFIERR(101)
|
|
|
|
#define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
|
|
|
|
#define EFI_PORT_UNREACHABLE EFIERR(103)
|
|
|
|
|
|
|
|
EFI_FORWARD_DECLARATION (EFI_UDP4_PROTOCOL);
|
|
|
|
|
|
|
|
//*************************************************
|
|
|
|
// EFI_UDP4_FRAGMENT_DATA *
|
|
|
|
//*************************************************
|
|
|
|
typedef struct {
|
|
|
|
UINT32 FragmentLength;
|
|
|
|
VOID *FragmentBuffer;
|
|
|
|
} EFI_UDP4_FRAGMENT_DATA;
|
|
|
|
|
|
|
|
//*************************************************
|
|
|
|
// EFI_UDP4_SESSION_DATA *
|
|
|
|
//*************************************************
|
|
|
|
typedef struct {
|
|
|
|
EFI_IPv4_ADDRESS SourceAddress;
|
|
|
|
UINT16 SourcePort;
|
|
|
|
EFI_IPv4_ADDRESS DestinationAddress;
|
|
|
|
UINT16 DestinationPort;
|
|
|
|
} EFI_UDP4_SESSION_DATA;
|
|
|
|
|
|
|
|
//************************************************
|
|
|
|
// EFI_UDP4_CONFIG_DATA *
|
|
|
|
//************************************************
|
|
|
|
typedef struct {
|
|
|
|
//Receiving Filters
|
|
|
|
BOOLEAN AcceptBroadcast;
|
|
|
|
BOOLEAN AcceptPromiscuous;
|
|
|
|
BOOLEAN AcceptAnyPort;
|
|
|
|
BOOLEAN AllowDuplicatePort;
|
|
|
|
//I/O parameters
|
|
|
|
UINT8 TypeOfService;
|
|
|
|
UINT8 TimeToLive;
|
|
|
|
BOOLEAN DoNotFragment;
|
|
|
|
UINT32 ReceiveTimeout;
|
|
|
|
UINT32 TransmitTimeout;
|
|
|
|
//Access Point
|
|
|
|
BOOLEAN UseDefaultAddress;
|
|
|
|
EFI_IPv4_ADDRESS StationAddress;
|
|
|
|
EFI_IPv4_ADDRESS SubnetMask;
|
|
|
|
UINT16 StationPort;
|
|
|
|
EFI_IPv4_ADDRESS RemoteAddress;
|
|
|
|
UINT16 RemotePort;
|
|
|
|
} EFI_UDP4_CONFIG_DATA;
|
|
|
|
|
|
|
|
//*******************************************************
|
|
|
|
// EFI_UDP4_TRANSMIT_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;
|
|
|
|
|
|
|
|
//*******************************************************
|
|
|
|
// EFI_UDP4_RECEIVE_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;
|
|
|
|
|
|
|
|
|
|
|
|
//*******************************************************
|
|
|
|
// EFI_UDP4_COMPLETION_TOKEN *
|
|
|
|
//*******************************************************
|
|
|
|
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_GET_MODE_DATA) (
|
|
|
|
IN EFI_UDP4_PROTOCOL *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 EFI_UDP4_PROTOCOL *This,
|
|
|
|
IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL
|
|
|
|
);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
EFI_STATUS
|
|
|
|
(EFIAPI *EFI_UDP4_GROUPS) (
|
|
|
|
IN EFI_UDP4_PROTOCOL *This,
|
|
|
|
IN BOOLEAN JoinFlag,
|
|
|
|
IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL
|
|
|
|
);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
EFI_STATUS
|
|
|
|
(EFIAPI *EFI_UDP4_ROUTES) (
|
|
|
|
IN EFI_UDP4_PROTOCOL *This,
|
|
|
|
IN BOOLEAN DeleteRoute,
|
|
|
|
IN EFI_IPv4_ADDRESS *SubnetAddress,
|
|
|
|
IN EFI_IPv4_ADDRESS *SubnetMask,
|
|
|
|
IN EFI_IPv4_ADDRESS *GatewayAddress
|
|
|
|
);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
EFI_STATUS
|
|
|
|
(EFIAPI *EFI_UDP4_TRANSMIT) (
|
|
|
|
IN EFI_UDP4_PROTOCOL *This,
|
|
|
|
IN EFI_UDP4_COMPLETION_TOKEN *Token
|
|
|
|
);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
EFI_STATUS
|
|
|
|
(EFIAPI *EFI_UDP4_RECEIVE) (
|
|
|
|
IN EFI_UDP4_PROTOCOL *This,
|
|
|
|
IN EFI_UDP4_COMPLETION_TOKEN *Token
|
|
|
|
);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
EFI_STATUS
|
|
|
|
(EFIAPI *EFI_UDP4_CANCEL)(
|
|
|
|
IN EFI_UDP4_PROTOCOL *This,
|
|
|
|
IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL
|
|
|
|
);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
EFI_STATUS
|
|
|
|
(EFIAPI *EFI_UDP4_POLL) (
|
|
|
|
IN EFI_UDP4_PROTOCOL *This
|
|
|
|
);
|
|
|
|
|
2008-03-20 17:37:48 +01:00
|
|
|
struct _EFI_UDP4_PROTOCOL {
|
2007-06-28 09:00:39 +02:00
|
|
|
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;
|
2008-03-20 17:37:48 +01:00
|
|
|
};
|
2007-06-28 09:00:39 +02:00
|
|
|
|
|
|
|
extern EFI_GUID gEfiUdp4ServiceBindingProtocolGuid;
|
|
|
|
extern EFI_GUID gEfiUdp4ProtocolGuid;
|
|
|
|
extern EFI_GUID gEfiUdp4RegistryDataGuid;
|
|
|
|
|
|
|
|
#endif
|