xref: /titanic_53/usr/src/boot/sys/boot/efi/include/efiudp.h (revision 4a5d661a82b942b6538acd26209d959ce98b593a)
1*4a5d661aSToomas Soome #ifndef _EFI_UDP_H
2*4a5d661aSToomas Soome #define _EFI_UDP_H
3*4a5d661aSToomas Soome 
4*4a5d661aSToomas Soome 
5*4a5d661aSToomas Soome /*++
6*4a5d661aSToomas Soome Copyright (c) 2013  Intel Corporation
7*4a5d661aSToomas Soome 
8*4a5d661aSToomas Soome --*/
9*4a5d661aSToomas Soome 
10*4a5d661aSToomas Soome #define EFI_UDP4_SERVICE_BINDING_PROTOCOL \
11*4a5d661aSToomas Soome     { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} }
12*4a5d661aSToomas Soome 
13*4a5d661aSToomas Soome #define EFI_UDP4_PROTOCOL \
14*4a5d661aSToomas Soome     { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} }
15*4a5d661aSToomas Soome 
16*4a5d661aSToomas Soome #define EFI_UDP6_SERVICE_BINDING_PROTOCOL \
17*4a5d661aSToomas Soome     { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} }
18*4a5d661aSToomas Soome 
19*4a5d661aSToomas Soome #define EFI_UDP6_PROTOCOL \
20*4a5d661aSToomas Soome     { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} }
21*4a5d661aSToomas Soome 
22*4a5d661aSToomas Soome INTERFACE_DECL(_EFI_UDP4);
23*4a5d661aSToomas Soome INTERFACE_DECL(_EFI_UDP6);
24*4a5d661aSToomas Soome 
25*4a5d661aSToomas Soome typedef struct {
26*4a5d661aSToomas Soome     BOOLEAN          AcceptBroadcast;
27*4a5d661aSToomas Soome     BOOLEAN          AcceptPromiscuous;
28*4a5d661aSToomas Soome     BOOLEAN          AcceptAnyPort;
29*4a5d661aSToomas Soome     BOOLEAN          AllowDuplicatePort;
30*4a5d661aSToomas Soome     UINT8            TypeOfService;
31*4a5d661aSToomas Soome     UINT8            TimeToLive;
32*4a5d661aSToomas Soome     BOOLEAN          DoNotFragment;
33*4a5d661aSToomas Soome     UINT32           ReceiveTimeout;
34*4a5d661aSToomas Soome     UINT32           TransmitTimeout;
35*4a5d661aSToomas Soome     BOOLEAN          UseDefaultAddress;
36*4a5d661aSToomas Soome     EFI_IPv4_ADDRESS StationAddress;
37*4a5d661aSToomas Soome     EFI_IPv4_ADDRESS SubnetMask;
38*4a5d661aSToomas Soome     UINT16           StationPort;
39*4a5d661aSToomas Soome     EFI_IPv4_ADDRESS RemoteAddress;
40*4a5d661aSToomas Soome     UINT16           RemotePort;
41*4a5d661aSToomas Soome } EFI_UDP4_CONFIG_DATA;
42*4a5d661aSToomas Soome 
43*4a5d661aSToomas Soome typedef
44*4a5d661aSToomas Soome EFI_STATUS
45*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_GET_MODE_DATA) (
46*4a5d661aSToomas Soome     IN struct _EFI_UDP4                 *This,
47*4a5d661aSToomas Soome     OUT EFI_UDP4_CONFIG_DATA            *Udp4ConfigData OPTIONAL,
48*4a5d661aSToomas Soome     OUT EFI_IP4_MODE_DATA               *Ip4ModeData    OPTIONAL,
49*4a5d661aSToomas Soome     OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData  OPTIONAL,
50*4a5d661aSToomas Soome     OUT EFI_SIMPLE_NETWORK_MODE         *SnpModeData    OPTIONAL
51*4a5d661aSToomas Soome     );
52*4a5d661aSToomas Soome 
53*4a5d661aSToomas Soome typedef
54*4a5d661aSToomas Soome EFI_STATUS
55*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_CONFIGURE) (
56*4a5d661aSToomas Soome     IN struct _EFI_UDP4     *This,
57*4a5d661aSToomas Soome     IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL
58*4a5d661aSToomas Soome     );
59*4a5d661aSToomas Soome 
60*4a5d661aSToomas Soome typedef
61*4a5d661aSToomas Soome EFI_STATUS
62*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_GROUPS) (
63*4a5d661aSToomas Soome     IN struct _EFI_UDP4 *This,
64*4a5d661aSToomas Soome     IN BOOLEAN          JoinFlag,
65*4a5d661aSToomas Soome     IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL
66*4a5d661aSToomas Soome     );
67*4a5d661aSToomas Soome 
68*4a5d661aSToomas Soome typedef
69*4a5d661aSToomas Soome EFI_STATUS
70*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_ROUTES) (
71*4a5d661aSToomas Soome     IN struct _EFI_UDP4 *This,
72*4a5d661aSToomas Soome     IN BOOLEAN          DeleteRoute,
73*4a5d661aSToomas Soome     IN EFI_IPv4_ADDRESS *SubnetAddress,
74*4a5d661aSToomas Soome     IN EFI_IPv4_ADDRESS *SubnetMask,
75*4a5d661aSToomas Soome     IN EFI_IPv4_ADDRESS *GatewayAddress
76*4a5d661aSToomas Soome     );
77*4a5d661aSToomas Soome 
78*4a5d661aSToomas Soome #define EFI_NETWORK_UNREACHABLE  EFIERR(100)
79*4a5d661aSToomas Soome #define EFI_HOST_UNREACHABLE     EFIERR(101)
80*4a5d661aSToomas Soome #define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
81*4a5d661aSToomas Soome #define EFI_PORT_UNREACHABLE     EFIERR(103)
82*4a5d661aSToomas Soome 
83*4a5d661aSToomas Soome typedef struct {
84*4a5d661aSToomas Soome     EFI_IPv4_ADDRESS SourceAddress;
85*4a5d661aSToomas Soome     UINT16           SourcePort;
86*4a5d661aSToomas Soome     EFI_IPv4_ADDRESS DestinationAddress;
87*4a5d661aSToomas Soome     UINT16           DestinationPort;
88*4a5d661aSToomas Soome } EFI_UDP4_SESSION_DATA;
89*4a5d661aSToomas Soome 
90*4a5d661aSToomas Soome typedef struct {
91*4a5d661aSToomas Soome     UINT32 FragmentLength;
92*4a5d661aSToomas Soome     VOID   *FragmentBuffer;
93*4a5d661aSToomas Soome } EFI_UDP4_FRAGMENT_DATA;
94*4a5d661aSToomas Soome 
95*4a5d661aSToomas Soome typedef struct {
96*4a5d661aSToomas Soome     EFI_TIME               TimeStamp;
97*4a5d661aSToomas Soome     EFI_EVENT              RecycleSignal;
98*4a5d661aSToomas Soome     EFI_UDP4_SESSION_DATA  UdpSession;
99*4a5d661aSToomas Soome     UINT32                 DataLength;
100*4a5d661aSToomas Soome     UINT32                 FragmentCount;
101*4a5d661aSToomas Soome     EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
102*4a5d661aSToomas Soome } EFI_UDP4_RECEIVE_DATA;
103*4a5d661aSToomas Soome 
104*4a5d661aSToomas Soome typedef struct {
105*4a5d661aSToomas Soome     EFI_UDP4_SESSION_DATA  *UdpSessionData;
106*4a5d661aSToomas Soome     EFI_IPv4_ADDRESS       *GatewayAddress;
107*4a5d661aSToomas Soome     UINT32                 DataLength;
108*4a5d661aSToomas Soome     UINT32                 FragmentCount;
109*4a5d661aSToomas Soome     EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
110*4a5d661aSToomas Soome } EFI_UDP4_TRANSMIT_DATA;
111*4a5d661aSToomas Soome 
112*4a5d661aSToomas Soome typedef struct {
113*4a5d661aSToomas Soome     EFI_EVENT                  Event;
114*4a5d661aSToomas Soome     EFI_STATUS                 Status;
115*4a5d661aSToomas Soome     union {
116*4a5d661aSToomas Soome         EFI_UDP4_RECEIVE_DATA  *RxData;
117*4a5d661aSToomas Soome 	EFI_UDP4_TRANSMIT_DATA *TxData;
118*4a5d661aSToomas Soome     }                          Packet;
119*4a5d661aSToomas Soome } EFI_UDP4_COMPLETION_TOKEN;
120*4a5d661aSToomas Soome 
121*4a5d661aSToomas Soome typedef
122*4a5d661aSToomas Soome EFI_STATUS
123*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_TRANSMIT) (
124*4a5d661aSToomas Soome     IN struct _EFI_UDP4          *This,
125*4a5d661aSToomas Soome     IN EFI_UDP4_COMPLETION_TOKEN *Token
126*4a5d661aSToomas Soome     );
127*4a5d661aSToomas Soome 
128*4a5d661aSToomas Soome typedef
129*4a5d661aSToomas Soome EFI_STATUS
130*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_RECEIVE) (
131*4a5d661aSToomas Soome     IN struct _EFI_UDP4          *This,
132*4a5d661aSToomas Soome     IN EFI_UDP4_COMPLETION_TOKEN *Token
133*4a5d661aSToomas Soome     );
134*4a5d661aSToomas Soome 
135*4a5d661aSToomas Soome typedef
136*4a5d661aSToomas Soome EFI_STATUS
137*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_CANCEL)(
138*4a5d661aSToomas Soome     IN struct _EFI_UDP4          *This,
139*4a5d661aSToomas Soome     IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL
140*4a5d661aSToomas Soome     );
141*4a5d661aSToomas Soome 
142*4a5d661aSToomas Soome typedef
143*4a5d661aSToomas Soome EFI_STATUS
144*4a5d661aSToomas Soome (EFIAPI *EFI_UDP4_POLL) (
145*4a5d661aSToomas Soome     IN struct _EFI_UDP4 *This
146*4a5d661aSToomas Soome     );
147*4a5d661aSToomas Soome 
148*4a5d661aSToomas Soome typedef struct _EFI_UDP4 {
149*4a5d661aSToomas Soome     EFI_UDP4_GET_MODE_DATA GetModeData;
150*4a5d661aSToomas Soome     EFI_UDP4_CONFIGURE     Configure;
151*4a5d661aSToomas Soome     EFI_UDP4_GROUPS        Groups;
152*4a5d661aSToomas Soome     EFI_UDP4_ROUTES        Routes;
153*4a5d661aSToomas Soome     EFI_UDP4_TRANSMIT      Transmit;
154*4a5d661aSToomas Soome     EFI_UDP4_RECEIVE       Receive;
155*4a5d661aSToomas Soome     EFI_UDP4_CANCEL        Cancel;
156*4a5d661aSToomas Soome     EFI_UDP4_POLL          Poll;
157*4a5d661aSToomas Soome } EFI_UDP4;
158*4a5d661aSToomas Soome 
159*4a5d661aSToomas Soome typedef struct {
160*4a5d661aSToomas Soome     BOOLEAN          AcceptPromiscuous;
161*4a5d661aSToomas Soome     BOOLEAN          AcceptAnyPort;
162*4a5d661aSToomas Soome     BOOLEAN          AllowDuplicatePort;
163*4a5d661aSToomas Soome     UINT8            TrafficClass;
164*4a5d661aSToomas Soome     UINT8            HopLimit;
165*4a5d661aSToomas Soome     UINT32           ReceiveTimeout;
166*4a5d661aSToomas Soome     UINT32           TransmitTimeout;
167*4a5d661aSToomas Soome     EFI_IPv6_ADDRESS StationAddress;
168*4a5d661aSToomas Soome     UINT16           StationPort;
169*4a5d661aSToomas Soome     EFI_IPv6_ADDRESS RemoteAddress;
170*4a5d661aSToomas Soome     UINT16           RemotePort;
171*4a5d661aSToomas Soome } EFI_UDP6_CONFIG_DATA;
172*4a5d661aSToomas Soome 
173*4a5d661aSToomas Soome typedef
174*4a5d661aSToomas Soome EFI_STATUS
175*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_GET_MODE_DATA) (
176*4a5d661aSToomas Soome     IN struct _EFI_UDP6                 *This,
177*4a5d661aSToomas Soome     OUT EFI_UDP6_CONFIG_DATA            *Udp6ConfigData OPTIONAL,
178*4a5d661aSToomas Soome     OUT EFI_IP6_MODE_DATA               *Ip6ModeData    OPTIONAL,
179*4a5d661aSToomas Soome     OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData  OPTIONAL,
180*4a5d661aSToomas Soome     OUT EFI_SIMPLE_NETWORK_MODE         *SnpModeData    OPTIONAL
181*4a5d661aSToomas Soome     );
182*4a5d661aSToomas Soome 
183*4a5d661aSToomas Soome typedef
184*4a5d661aSToomas Soome EFI_STATUS
185*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_CONFIGURE) (
186*4a5d661aSToomas Soome     IN struct _EFI_UDP6     *This,
187*4a5d661aSToomas Soome     IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL
188*4a5d661aSToomas Soome     );
189*4a5d661aSToomas Soome 
190*4a5d661aSToomas Soome typedef
191*4a5d661aSToomas Soome EFI_STATUS
192*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_GROUPS) (
193*4a5d661aSToomas Soome     IN struct _EFI_UDP6 *This,
194*4a5d661aSToomas Soome     IN BOOLEAN          JoinFlag,
195*4a5d661aSToomas Soome     IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL
196*4a5d661aSToomas Soome     );
197*4a5d661aSToomas Soome 
198*4a5d661aSToomas Soome typedef struct {
199*4a5d661aSToomas Soome     EFI_IPv6_ADDRESS SourceAddress;
200*4a5d661aSToomas Soome     UINT16           SourcePort;
201*4a5d661aSToomas Soome     EFI_IPv6_ADDRESS DestinationAddress;
202*4a5d661aSToomas Soome     UINT16           DestinationPort;
203*4a5d661aSToomas Soome } EFI_UDP6_SESSION_DATA;
204*4a5d661aSToomas Soome 
205*4a5d661aSToomas Soome typedef struct {
206*4a5d661aSToomas Soome     UINT32 FragmentLength;
207*4a5d661aSToomas Soome     VOID   *FragmentBuffer;
208*4a5d661aSToomas Soome } EFI_UDP6_FRAGMENT_DATA;
209*4a5d661aSToomas Soome 
210*4a5d661aSToomas Soome typedef struct {
211*4a5d661aSToomas Soome     EFI_TIME               TimeStamp;
212*4a5d661aSToomas Soome     EFI_EVENT              RecycleSignal;
213*4a5d661aSToomas Soome     EFI_UDP6_SESSION_DATA  UdpSession;
214*4a5d661aSToomas Soome     UINT32                 DataLength;
215*4a5d661aSToomas Soome     UINT32                 FragmentCount;
216*4a5d661aSToomas Soome     EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
217*4a5d661aSToomas Soome } EFI_UDP6_RECEIVE_DATA;
218*4a5d661aSToomas Soome 
219*4a5d661aSToomas Soome typedef struct {
220*4a5d661aSToomas Soome     EFI_UDP6_SESSION_DATA  *UdpSessionData;
221*4a5d661aSToomas Soome     UINT32                 DataLength;
222*4a5d661aSToomas Soome     UINT32                 FragmentCount;
223*4a5d661aSToomas Soome     EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
224*4a5d661aSToomas Soome } EFI_UDP6_TRANSMIT_DATA;
225*4a5d661aSToomas Soome 
226*4a5d661aSToomas Soome typedef struct {
227*4a5d661aSToomas Soome     EFI_EVENT                  Event;
228*4a5d661aSToomas Soome     EFI_STATUS                 Status;
229*4a5d661aSToomas Soome     union {
230*4a5d661aSToomas Soome         EFI_UDP6_RECEIVE_DATA  *RxData;
231*4a5d661aSToomas Soome         EFI_UDP6_TRANSMIT_DATA *TxData;
232*4a5d661aSToomas Soome     }                          Packet;
233*4a5d661aSToomas Soome } EFI_UDP6_COMPLETION_TOKEN;
234*4a5d661aSToomas Soome 
235*4a5d661aSToomas Soome typedef
236*4a5d661aSToomas Soome EFI_STATUS
237*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_TRANSMIT) (
238*4a5d661aSToomas Soome     IN struct _EFI_UDP6          *This,
239*4a5d661aSToomas Soome     IN EFI_UDP6_COMPLETION_TOKEN *Token
240*4a5d661aSToomas Soome     );
241*4a5d661aSToomas Soome 
242*4a5d661aSToomas Soome typedef
243*4a5d661aSToomas Soome EFI_STATUS
244*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_RECEIVE) (
245*4a5d661aSToomas Soome     IN struct _EFI_UDP6          *This,
246*4a5d661aSToomas Soome     IN EFI_UDP6_COMPLETION_TOKEN *Token
247*4a5d661aSToomas Soome     );
248*4a5d661aSToomas Soome 
249*4a5d661aSToomas Soome typedef
250*4a5d661aSToomas Soome EFI_STATUS
251*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_CANCEL)(
252*4a5d661aSToomas Soome     IN struct _EFI_UDP6          *This,
253*4a5d661aSToomas Soome     IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL
254*4a5d661aSToomas Soome     );
255*4a5d661aSToomas Soome 
256*4a5d661aSToomas Soome typedef
257*4a5d661aSToomas Soome EFI_STATUS
258*4a5d661aSToomas Soome (EFIAPI *EFI_UDP6_POLL) (
259*4a5d661aSToomas Soome     IN struct _EFI_UDP6 *This
260*4a5d661aSToomas Soome     );
261*4a5d661aSToomas Soome 
262*4a5d661aSToomas Soome typedef struct _EFI_UDP6 {
263*4a5d661aSToomas Soome     EFI_UDP6_GET_MODE_DATA GetModeData;
264*4a5d661aSToomas Soome     EFI_UDP6_CONFIGURE     Configure;
265*4a5d661aSToomas Soome     EFI_UDP6_GROUPS        Groups;
266*4a5d661aSToomas Soome     EFI_UDP6_TRANSMIT      Transmit;
267*4a5d661aSToomas Soome     EFI_UDP6_RECEIVE       Receive;
268*4a5d661aSToomas Soome     EFI_UDP6_CANCEL        Cancel;
269*4a5d661aSToomas Soome     EFI_UDP6_POLL          Poll;
270*4a5d661aSToomas Soome } EFI_UDP6;
271*4a5d661aSToomas Soome 
272*4a5d661aSToomas Soome #endif /* _EFI_UDP_H */
273