xref: /freebsd/stand/efi/include/efiudp.h (revision 2a63c3be)
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