165641822SToomas Soome #ifndef _EFI_UDP_H 265641822SToomas Soome #define _EFI_UDP_H 365641822SToomas Soome 465641822SToomas Soome 565641822SToomas Soome /*++ 665641822SToomas Soome Copyright (c) 2013 Intel Corporation 765641822SToomas Soome 865641822SToomas Soome --*/ 965641822SToomas Soome 1065641822SToomas Soome #define EFI_UDP4_SERVICE_BINDING_PROTOCOL \ 1165641822SToomas Soome { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} } 1265641822SToomas Soome 1365641822SToomas Soome #define EFI_UDP4_PROTOCOL \ 1465641822SToomas Soome { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} } 1565641822SToomas Soome 1665641822SToomas Soome #define EFI_UDP6_SERVICE_BINDING_PROTOCOL \ 1765641822SToomas Soome { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} } 1865641822SToomas Soome 1965641822SToomas Soome #define EFI_UDP6_PROTOCOL \ 2065641822SToomas Soome { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} } 2165641822SToomas Soome 2265641822SToomas Soome INTERFACE_DECL(_EFI_UDP4); 2365641822SToomas Soome INTERFACE_DECL(_EFI_UDP6); 2465641822SToomas Soome 2565641822SToomas Soome typedef struct { 2665641822SToomas Soome BOOLEAN AcceptBroadcast; 2765641822SToomas Soome BOOLEAN AcceptPromiscuous; 2865641822SToomas Soome BOOLEAN AcceptAnyPort; 2965641822SToomas Soome BOOLEAN AllowDuplicatePort; 3065641822SToomas Soome UINT8 TypeOfService; 3165641822SToomas Soome UINT8 TimeToLive; 3265641822SToomas Soome BOOLEAN DoNotFragment; 3365641822SToomas Soome UINT32 ReceiveTimeout; 3465641822SToomas Soome UINT32 TransmitTimeout; 3565641822SToomas Soome BOOLEAN UseDefaultAddress; 3665641822SToomas Soome EFI_IPv4_ADDRESS StationAddress; 3765641822SToomas Soome EFI_IPv4_ADDRESS SubnetMask; 3865641822SToomas Soome UINT16 StationPort; 3965641822SToomas Soome EFI_IPv4_ADDRESS RemoteAddress; 4065641822SToomas Soome UINT16 RemotePort; 4165641822SToomas Soome } EFI_UDP4_CONFIG_DATA; 4265641822SToomas Soome 4365641822SToomas Soome typedef 4465641822SToomas Soome EFI_STATUS 4565641822SToomas Soome (EFIAPI *EFI_UDP4_GET_MODE_DATA) ( 4665641822SToomas Soome IN struct _EFI_UDP4 *This, 4765641822SToomas Soome OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL, 4865641822SToomas Soome OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 4965641822SToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 5065641822SToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 5165641822SToomas Soome ); 5265641822SToomas Soome 5365641822SToomas Soome typedef 5465641822SToomas Soome EFI_STATUS 5565641822SToomas Soome (EFIAPI *EFI_UDP4_CONFIGURE) ( 5665641822SToomas Soome IN struct _EFI_UDP4 *This, 5765641822SToomas Soome IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL 5865641822SToomas Soome ); 5965641822SToomas Soome 6065641822SToomas Soome typedef 6165641822SToomas Soome EFI_STATUS 6265641822SToomas Soome (EFIAPI *EFI_UDP4_GROUPS) ( 6365641822SToomas Soome IN struct _EFI_UDP4 *This, 6465641822SToomas Soome IN BOOLEAN JoinFlag, 6565641822SToomas Soome IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL 6665641822SToomas Soome ); 6765641822SToomas Soome 6865641822SToomas Soome typedef 6965641822SToomas Soome EFI_STATUS 7065641822SToomas Soome (EFIAPI *EFI_UDP4_ROUTES) ( 7165641822SToomas Soome IN struct _EFI_UDP4 *This, 7265641822SToomas Soome IN BOOLEAN DeleteRoute, 7365641822SToomas Soome IN EFI_IPv4_ADDRESS *SubnetAddress, 7465641822SToomas Soome IN EFI_IPv4_ADDRESS *SubnetMask, 7565641822SToomas Soome IN EFI_IPv4_ADDRESS *GatewayAddress 7665641822SToomas Soome ); 7765641822SToomas Soome 7865641822SToomas Soome #define EFI_NETWORK_UNREACHABLE EFIERR(100) 7965641822SToomas Soome #define EFI_HOST_UNREACHABLE EFIERR(101) 8065641822SToomas Soome #define EFI_PROTOCOL_UNREACHABLE EFIERR(102) 8165641822SToomas Soome #define EFI_PORT_UNREACHABLE EFIERR(103) 8265641822SToomas Soome 8365641822SToomas Soome typedef struct { 8465641822SToomas Soome EFI_IPv4_ADDRESS SourceAddress; 8565641822SToomas Soome UINT16 SourcePort; 8665641822SToomas Soome EFI_IPv4_ADDRESS DestinationAddress; 8765641822SToomas Soome UINT16 DestinationPort; 8865641822SToomas Soome } EFI_UDP4_SESSION_DATA; 8965641822SToomas Soome 9065641822SToomas Soome typedef struct { 9165641822SToomas Soome UINT32 FragmentLength; 9265641822SToomas Soome VOID *FragmentBuffer; 9365641822SToomas Soome } EFI_UDP4_FRAGMENT_DATA; 9465641822SToomas Soome 9565641822SToomas Soome typedef struct { 9665641822SToomas Soome EFI_TIME TimeStamp; 9765641822SToomas Soome EFI_EVENT RecycleSignal; 9865641822SToomas Soome EFI_UDP4_SESSION_DATA UdpSession; 9965641822SToomas Soome UINT32 DataLength; 10065641822SToomas Soome UINT32 FragmentCount; 10165641822SToomas Soome EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 10265641822SToomas Soome } EFI_UDP4_RECEIVE_DATA; 10365641822SToomas Soome 10465641822SToomas Soome typedef struct { 10565641822SToomas Soome EFI_UDP4_SESSION_DATA *UdpSessionData; 10665641822SToomas Soome EFI_IPv4_ADDRESS *GatewayAddress; 10765641822SToomas Soome UINT32 DataLength; 10865641822SToomas Soome UINT32 FragmentCount; 10965641822SToomas Soome EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 11065641822SToomas Soome } EFI_UDP4_TRANSMIT_DATA; 11165641822SToomas Soome 11265641822SToomas Soome typedef struct { 11365641822SToomas Soome EFI_EVENT Event; 11465641822SToomas Soome EFI_STATUS Status; 11565641822SToomas Soome union { 11665641822SToomas Soome EFI_UDP4_RECEIVE_DATA *RxData; 11765641822SToomas Soome EFI_UDP4_TRANSMIT_DATA *TxData; 11865641822SToomas Soome } Packet; 11965641822SToomas Soome } EFI_UDP4_COMPLETION_TOKEN; 12065641822SToomas Soome 12165641822SToomas Soome typedef 12265641822SToomas Soome EFI_STATUS 12365641822SToomas Soome (EFIAPI *EFI_UDP4_TRANSMIT) ( 12465641822SToomas Soome IN struct _EFI_UDP4 *This, 12565641822SToomas Soome IN EFI_UDP4_COMPLETION_TOKEN *Token 12665641822SToomas Soome ); 12765641822SToomas Soome 12865641822SToomas Soome typedef 12965641822SToomas Soome EFI_STATUS 13065641822SToomas Soome (EFIAPI *EFI_UDP4_RECEIVE) ( 13165641822SToomas Soome IN struct _EFI_UDP4 *This, 13265641822SToomas Soome IN EFI_UDP4_COMPLETION_TOKEN *Token 13365641822SToomas Soome ); 13465641822SToomas Soome 13565641822SToomas Soome typedef 13665641822SToomas Soome EFI_STATUS 13765641822SToomas Soome (EFIAPI *EFI_UDP4_CANCEL)( 13865641822SToomas Soome IN struct _EFI_UDP4 *This, 13965641822SToomas Soome IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL 14065641822SToomas Soome ); 14165641822SToomas Soome 14265641822SToomas Soome typedef 14365641822SToomas Soome EFI_STATUS 14465641822SToomas Soome (EFIAPI *EFI_UDP4_POLL) ( 14565641822SToomas Soome IN struct _EFI_UDP4 *This 14665641822SToomas Soome ); 14765641822SToomas Soome 14865641822SToomas Soome typedef struct _EFI_UDP4 { 14965641822SToomas Soome EFI_UDP4_GET_MODE_DATA GetModeData; 15065641822SToomas Soome EFI_UDP4_CONFIGURE Configure; 15165641822SToomas Soome EFI_UDP4_GROUPS Groups; 15265641822SToomas Soome EFI_UDP4_ROUTES Routes; 15365641822SToomas Soome EFI_UDP4_TRANSMIT Transmit; 15465641822SToomas Soome EFI_UDP4_RECEIVE Receive; 15565641822SToomas Soome EFI_UDP4_CANCEL Cancel; 15665641822SToomas Soome EFI_UDP4_POLL Poll; 15765641822SToomas Soome } EFI_UDP4; 15865641822SToomas Soome 15965641822SToomas Soome typedef struct { 16065641822SToomas Soome BOOLEAN AcceptPromiscuous; 16165641822SToomas Soome BOOLEAN AcceptAnyPort; 16265641822SToomas Soome BOOLEAN AllowDuplicatePort; 16365641822SToomas Soome UINT8 TrafficClass; 16465641822SToomas Soome UINT8 HopLimit; 16565641822SToomas Soome UINT32 ReceiveTimeout; 16665641822SToomas Soome UINT32 TransmitTimeout; 16765641822SToomas Soome EFI_IPv6_ADDRESS StationAddress; 16865641822SToomas Soome UINT16 StationPort; 16965641822SToomas Soome EFI_IPv6_ADDRESS RemoteAddress; 17065641822SToomas Soome UINT16 RemotePort; 17165641822SToomas Soome } EFI_UDP6_CONFIG_DATA; 17265641822SToomas Soome 17365641822SToomas Soome typedef 17465641822SToomas Soome EFI_STATUS 17565641822SToomas Soome (EFIAPI *EFI_UDP6_GET_MODE_DATA) ( 17665641822SToomas Soome IN struct _EFI_UDP6 *This, 17765641822SToomas Soome OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, 17865641822SToomas Soome OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 17965641822SToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 18065641822SToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 18165641822SToomas Soome ); 18265641822SToomas Soome 18365641822SToomas Soome typedef 18465641822SToomas Soome EFI_STATUS 18565641822SToomas Soome (EFIAPI *EFI_UDP6_CONFIGURE) ( 18665641822SToomas Soome IN struct _EFI_UDP6 *This, 18765641822SToomas Soome IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL 18865641822SToomas Soome ); 18965641822SToomas Soome 19065641822SToomas Soome typedef 19165641822SToomas Soome EFI_STATUS 19265641822SToomas Soome (EFIAPI *EFI_UDP6_GROUPS) ( 19365641822SToomas Soome IN struct _EFI_UDP6 *This, 19465641822SToomas Soome IN BOOLEAN JoinFlag, 19565641822SToomas Soome IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL 19665641822SToomas Soome ); 19765641822SToomas Soome 19865641822SToomas Soome typedef struct { 19965641822SToomas Soome EFI_IPv6_ADDRESS SourceAddress; 20065641822SToomas Soome UINT16 SourcePort; 20165641822SToomas Soome EFI_IPv6_ADDRESS DestinationAddress; 20265641822SToomas Soome UINT16 DestinationPort; 20365641822SToomas Soome } EFI_UDP6_SESSION_DATA; 20465641822SToomas Soome 20565641822SToomas Soome typedef struct { 20665641822SToomas Soome UINT32 FragmentLength; 20765641822SToomas Soome VOID *FragmentBuffer; 20865641822SToomas Soome } EFI_UDP6_FRAGMENT_DATA; 20965641822SToomas Soome 21065641822SToomas Soome typedef struct { 21165641822SToomas Soome EFI_TIME TimeStamp; 21265641822SToomas Soome EFI_EVENT RecycleSignal; 21365641822SToomas Soome EFI_UDP6_SESSION_DATA UdpSession; 21465641822SToomas Soome UINT32 DataLength; 21565641822SToomas Soome UINT32 FragmentCount; 21665641822SToomas Soome EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 21765641822SToomas Soome } EFI_UDP6_RECEIVE_DATA; 21865641822SToomas Soome 21965641822SToomas Soome typedef struct { 22065641822SToomas Soome EFI_UDP6_SESSION_DATA *UdpSessionData; 22165641822SToomas Soome UINT32 DataLength; 22265641822SToomas Soome UINT32 FragmentCount; 22365641822SToomas Soome EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 22465641822SToomas Soome } EFI_UDP6_TRANSMIT_DATA; 22565641822SToomas Soome 22665641822SToomas Soome typedef struct { 22765641822SToomas Soome EFI_EVENT Event; 22865641822SToomas Soome EFI_STATUS Status; 22965641822SToomas Soome union { 23065641822SToomas Soome EFI_UDP6_RECEIVE_DATA *RxData; 23165641822SToomas Soome EFI_UDP6_TRANSMIT_DATA *TxData; 23265641822SToomas Soome } Packet; 23365641822SToomas Soome } EFI_UDP6_COMPLETION_TOKEN; 23465641822SToomas Soome 23565641822SToomas Soome typedef 23665641822SToomas Soome EFI_STATUS 23765641822SToomas Soome (EFIAPI *EFI_UDP6_TRANSMIT) ( 23865641822SToomas Soome IN struct _EFI_UDP6 *This, 23965641822SToomas Soome IN EFI_UDP6_COMPLETION_TOKEN *Token 24065641822SToomas Soome ); 24165641822SToomas Soome 24265641822SToomas Soome typedef 24365641822SToomas Soome EFI_STATUS 24465641822SToomas Soome (EFIAPI *EFI_UDP6_RECEIVE) ( 24565641822SToomas Soome IN struct _EFI_UDP6 *This, 24665641822SToomas Soome IN EFI_UDP6_COMPLETION_TOKEN *Token 24765641822SToomas Soome ); 24865641822SToomas Soome 24965641822SToomas Soome typedef 25065641822SToomas Soome EFI_STATUS 25165641822SToomas Soome (EFIAPI *EFI_UDP6_CANCEL)( 25265641822SToomas Soome IN struct _EFI_UDP6 *This, 25365641822SToomas Soome IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL 25465641822SToomas Soome ); 25565641822SToomas Soome 25665641822SToomas Soome typedef 25765641822SToomas Soome EFI_STATUS 25865641822SToomas Soome (EFIAPI *EFI_UDP6_POLL) ( 25965641822SToomas Soome IN struct _EFI_UDP6 *This 26065641822SToomas Soome ); 26165641822SToomas Soome 26265641822SToomas Soome typedef struct _EFI_UDP6 { 26365641822SToomas Soome EFI_UDP6_GET_MODE_DATA GetModeData; 26465641822SToomas Soome EFI_UDP6_CONFIGURE Configure; 26565641822SToomas Soome EFI_UDP6_GROUPS Groups; 26665641822SToomas Soome EFI_UDP6_TRANSMIT Transmit; 26765641822SToomas Soome EFI_UDP6_RECEIVE Receive; 26865641822SToomas Soome EFI_UDP6_CANCEL Cancel; 26965641822SToomas Soome EFI_UDP6_POLL Poll; 27065641822SToomas Soome } EFI_UDP6; 27165641822SToomas Soome 27265641822SToomas Soome #endif /* _EFI_UDP_H */ 273