1/** @file
2  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
3
4  This file contains all NetFn Transport commands, including:
5    IPM LAN Commands (Chapter 23)
6    IPMI Serial/Modem Commands (Chapter 25)
7    SOL Commands (Chapter 26)
8    Command Forwarding Commands (Chapter 35b)
9
10  See IPMI specification, Appendix G, Command Assignments
11  and Appendix H, Sub-function Assignments.
12
13  Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>
14  This program and the accompanying materials
15  are licensed and made available under the terms and conditions of the BSD License
16  which accompanies this distribution.  The full text of the license may be found at
17  http://opensource.org/licenses/bsd-license.php
18
19  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
20  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21**/
22
23#ifndef _IPMI_NET_FN_TRANSPORT_H_
24#define _IPMI_NET_FN_TRANSPORT_H_
25
26#pragma pack(1)
27//
28// Net function definition for Transport command
29//
30#define IPMI_NETFN_TRANSPORT  0x0C
31
32//
33//  Below is Definitions for IPM LAN Commands (Chapter 23)
34//
35
36//
37//  Definitions for Set Lan Configuration Parameters command
38//
39#define IPMI_TRANSPORT_SET_LAN_CONFIG_PARAMETERS 0x01
40
41//
42//  Constants and Structure definitions for "Set Lan Configuration Parameters" command to follow here
43//
44
45//
46// LAN Management Structure
47//
48typedef enum {
49  IpmiLanReserved1,
50  IpmiLanReserved2,
51  IpmiLanAuthType,
52  IpmiLanIpAddress,
53  IpmiLanIpAddressSource,
54  IpmiLanMacAddress,
55  IpmiLanSubnetMask,
56  IpmiLanIpv4HeaderParam,
57  IpmiLanPrimaryRcmpPort,
58  IpmiLanSecondaryRcmpPort,
59  IpmiLanBmcGeneratedArpCtrl,
60  IpmiLanArpInterval,
61  IpmiLanDefaultGateway,
62  IpmiLanDefaultGatewayMac,
63  IpmiLanBackupGateway,
64  IpmiLanBackupGatewayMac,
65  IpmiLanCommunityString,
66  IpmiLanReserved3,
67  IpmiLanDestinationType,
68  IpmiLanDestinationAddress
69} IPMI_LAN_OPTION_TYPE;
70
71//
72// IP Address Source
73//
74typedef enum {
75  IpmiUnspecified,
76  IpmiStaticAddrsss,
77  IpmiDynamicAddressBmcDhcp,
78  IpmiDynamicAddressBiosDhcp,
79  IpmiDynamicAddressBmcNonDhcp
80} IPMI_IP_ADDRESS_SRC;
81
82//
83// Destination Type
84//
85typedef enum {
86  IpmiPetTrapDestination,
87  IpmiDirectedEventDestination,
88  IpmiReserved1,
89  IpmiReserved2,
90  IpmiReserved3,
91  IpmiReserved4,
92  IpmiReserved5,
93  IpmiOem1,
94  IpmiOem2
95} IPMI_LAN_DEST_TYPE_DEST_TYPE;
96
97typedef struct {
98  UINT8 NoAuth : 1;
99  UINT8 MD2Auth : 1;
100  UINT8 MD5Auth : 1;
101  UINT8 Reserved1 : 1;
102  UINT8 StraightPswd : 1;
103  UINT8 OemType : 1;
104  UINT8 Reserved2 : 2;
105} IPMI_LAN_AUTH_TYPE;
106
107typedef struct {
108  UINT8 IpAddress[4];
109} IPMI_LAN_IP_ADDRESS;
110
111typedef struct {
112  UINT8 AddressSrc : 4;
113  UINT8 Reserved : 4;
114} IPMI_LAN_IP_ADDRESS_SRC;
115
116typedef struct {
117  UINT8 MacAddress[6];
118} IPMI_LAN_MAC_ADDRESS;
119
120typedef struct {
121  UINT8 IpAddress[4];
122} IPMI_LAN_SUBNET_MASK;
123
124typedef struct {
125  UINT8 TimeToLive;
126  UINT8 IpFlag : 3;
127  UINT8 Reserved1 : 5;
128  UINT8 Precedence : 3;
129  UINT8 Reserved2 : 1;
130  UINT8 ServiceType : 4;
131} IPMI_LAN_IPV4_HDR_PARAM;
132
133typedef struct {
134  UINT8 RcmpPortMsb;
135  UINT8 RcmpPortLsb;
136} IPMI_LAN_RCMP_PORT;
137
138typedef struct {
139  UINT8 EnableBmcArpResponse : 1;
140  UINT8 EnableBmcGratuitousArp : 1;
141  UINT8 Reserved : 6;
142} IPMI_LAN_BMC_GENERATED_ARP_CONTROL;
143
144typedef struct {
145  UINT8 ArpInterval;
146} IPMI_LAN_ARP_INTERVAL;
147
148typedef struct {
149  UINT8 Data[18];
150} IPMI_LAN_COMMUNITY_STRING;
151
152typedef struct {
153  UINT8 DestinationSelector : 4;
154  UINT8 Reserved2 : 4;
155  UINT8 DestinationType : 3;
156  UINT8 Reserved1 : 4;
157  UINT8 AlertAcknowledged : 1;
158} IPMI_LAN_DEST_TYPE;
159
160typedef struct {
161  UINT8               DestinationSelector : 4;
162  UINT8               Reserved1 : 4;
163  UINT8               AlertingIpAddressSelector : 4;
164  UINT8               AddressFormat : 4;
165  UINT8               UseDefaultGateway : 1;
166  UINT8               Reserved2 : 7;
167  IPMI_LAN_IP_ADDRESS  AlertingIpAddress;
168  IPMI_LAN_MAC_ADDRESS AlertingMacAddress;
169} IPMI_LAN_DEST_ADDRESS;
170
171typedef union {
172  IPMI_LAN_AUTH_TYPE                 IpmiLanAuthType;
173  IPMI_LAN_IP_ADDRESS                IpmiLanIpAddress;
174  IPMI_LAN_IP_ADDRESS_SRC            IpmiLanIpAddressSrc;
175  IPMI_LAN_MAC_ADDRESS               IpmiLanMacAddress;
176  IPMI_LAN_SUBNET_MASK               IpmiLanSubnetMask;
177  IPMI_LAN_IPV4_HDR_PARAM            IpmiLanIpv4HdrParam;
178  IPMI_LAN_RCMP_PORT                 IpmiLanPrimaryRcmpPort;
179  IPMI_LAN_BMC_GENERATED_ARP_CONTROL IpmiLanArpControl;
180  IPMI_LAN_ARP_INTERVAL              IpmiLanArpInterval;
181  IPMI_LAN_COMMUNITY_STRING          IpmiLanCommunityString;
182  IPMI_LAN_DEST_TYPE                 IpmiLanDestType;
183  IPMI_LAN_DEST_ADDRESS              IpmiLanDestAddress;
184} IPMI_LAN_OPTIONS;
185
186//
187//  Definitions for Get Lan Configuration Parameters command
188//
189#define IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS 0x02
190
191//
192//  Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here
193//
194
195//
196//  Definitions for Suspend BMC ARPs command
197//
198#define IPMI_TRANSPORT_SUSPEND_BMC_ARPS  0x03
199
200//
201//  Constants and Structure definitions for "Suspend BMC ARPs" command to follow here
202//
203
204//
205//  Definitions for Get IP-UDP-RMCP Statistics command
206//
207#define IPMI_TRANSPORT_GET_PACKET_STATISTICS 0x04
208
209//
210//  Constants and Structure definitions for "Get IP-UDP-RMCP Statistics" command to follow here
211//
212
213//
214//  Below is Definitions for IPMI Serial/Modem Commands (Chapter 25)
215//
216
217//
218//  Definitions for Set Serial/Modem Configuration command
219//
220#define IPMI_TRANSPORT_SET_SERIAL_CONFIGURATION  0x10
221
222//
223//  Constants and Structure definitions for "Set Serial/Modem Configuration" command to follow here
224//
225
226//
227// EMP OPTION DATA
228//
229typedef struct {
230  UINT8 NoAuthentication : 1;
231  UINT8 MD2Authentication : 1;
232  UINT8 MD5Authentication : 1;
233  UINT8 Reserved1 : 1;
234  UINT8 StraightPassword : 1;
235  UINT8 OemProprietary : 1;
236  UINT8 Reservd2 : 2;
237} IPMI_EMP_AUTH_TYPE;
238
239typedef struct {
240  UINT8 EnableBasicMode : 1;
241  UINT8 EnablePPPMode : 1;
242  UINT8 EnableTerminalMode : 1;
243  UINT8 Reserved1 : 2;
244  UINT8 SnoopOsPPPNegotiation : 1;
245  UINT8 Reserved2 : 1;
246  UINT8 DirectConnect : 1;
247} IPMI_EMP_CONNECTION_TYPE;
248
249typedef struct {
250  UINT8 InactivityTimeout : 4;
251  UINT8 Reserved : 4;
252} IPMI_EMP_INACTIVITY_TIMEOUT;
253
254typedef struct {
255  UINT8 IpmiCallback : 1;
256  UINT8 CBCPCallback : 1;
257  UINT8 Reserved1 : 6;
258  UINT8 CbcpEnableNoCallback : 1;
259  UINT8 CbcpEnablePreSpecifiedNumber : 1;
260  UINT8 CbcpEnableUserSpecifiedNumber : 1;
261  UINT8 CbcpEnableCallbackFromList : 1;
262  UINT8 Reserved : 4;
263  UINT8 CallbackDestination1;
264  UINT8 CallbackDestination2;
265  UINT8 CallbackDestination3;
266} IPMI_EMP_CHANNEL_CALLBACK_CONTROL;
267
268typedef struct {
269  UINT8 CloseSessionOnDCDLoss : 1;
270  UINT8 EnableSessionInactivityTimeout : 1;
271  UINT8 Reserved : 6;
272} IPMI_EMP_SESSION_TERMINATION;
273
274typedef struct {
275  UINT8 Reserved1 : 5;
276  UINT8 EnableDtrHangup : 1;
277  UINT8 FlowControl : 2;
278  UINT8 BitRate : 4;
279  UINT8 Reserved2 : 4;
280  UINT8 SaveSetting : 1;
281  UINT8 SetComPort : 1;
282  UINT8 Reserved3 : 6;
283} IPMI_EMP_MESSAGING_COM_SETTING;
284
285typedef struct {
286  UINT8 RingDurationInterval : 6;
287  UINT8 Reserved1 : 2;
288  UINT8 RingDeadTime : 4;
289  UINT8 Reserved : 4;
290} IPMI_EMP_MODEM_RING_TIME;
291
292typedef struct {
293  UINT8 Reserved;
294  UINT8 InitString[48];
295} IPMI_EMP_MODEM_INIT_STRING;
296
297typedef struct {
298  UINT8 EscapeSequence[5];
299} IPMI_EMP_MODEM_ESC_SEQUENCE;
300
301typedef struct {
302  UINT8 HangupSequence[8];
303} IPMI_EMP_MODEM_HANGUP_SEQUENCE;
304
305typedef struct {
306  UINT8 ModelDialCommend[8];
307} IPMI_MODEM_DIALUP_COMMAND;
308
309typedef struct {
310  UINT8 PageBlackoutInterval;
311} IPMI_PAGE_BLACKOUT_INTERVAL;
312
313typedef struct {
314  UINT8 CommunityString[18];
315} IPMI_EMP_COMMUNITY_STRING;
316
317typedef struct {
318  UINT8 Reserved5 : 4;
319  UINT8 DialStringSelector : 4;
320} IPMI_DIAL_PAGE_DESTINATION;
321
322typedef struct {
323  UINT8 TapAccountSelector : 4;
324  UINT8 Reserved : 4;
325} IPMI_TAP_PAGE_DESTINATION;
326
327typedef struct {
328  UINT8 PPPAccountSetSelector;
329  UINT8 DialStringSelector;
330} IPMI_PPP_ALERT_DESTINATION;
331
332typedef union {
333  IPMI_DIAL_PAGE_DESTINATION    DialPageDestination;
334  IPMI_TAP_PAGE_DESTINATION     TapPageDestination;
335  IPMI_PPP_ALERT_DESTINATION    PppAlertDestination;
336} IPMI_DEST_TYPE_SPECIFIC;
337
338typedef struct {
339  UINT8 DestinationSelector : 4;
340  UINT8 Reserved1 : 4;
341  UINT8 DestinationType : 4;
342  UINT8 Reserved2 : 3;
343  UINT8 AlertAckRequired : 1;
344  UINT8 AlertAckTimeoutSeconds;
345  UINT8 NumRetriesCall : 3;
346  UINT8 Reserved3 : 1;
347  UINT8 NumRetryAlert : 3;
348  UINT8 Reserved4 : 1;
349  IPMI_DEST_TYPE_SPECIFIC DestinationTypeSpecific;
350} IPMI_EMP_DESTINATION_INFO;
351
352typedef struct {
353  UINT8 DestinationSelector : 4;
354  UINT8 Reserved1 : 4;
355  UINT8 Parity : 3;
356  UINT8 CharacterSize : 1;
357  UINT8 StopBit : 1;
358  UINT8 DtrHangup : 1;
359  UINT8 FlowControl : 2;
360  UINT8 BitRate : 4;
361  UINT8 Reserved2 : 4;
362  UINT8 SaveSetting : 1;
363  UINT8 SetComPort : 1;
364  UINT8 Reserved3 : 6;
365} IPMI_EMP_DESTINATION_COM_SETTING;
366
367typedef struct {
368  UINT8 DialStringSelector : 4;
369  UINT8 Reserved1 : 4;
370  UINT8 Reserved2;
371  UINT8 DialString[48];
372} IPMI_DESTINATION_DIAL_STRING;
373
374typedef union {
375  UINT32  IpAddressLong;
376  UINT8   IpAddress[4];
377} IPMI_PPP_IP_ADDRESS;
378
379typedef struct {
380  UINT8 IpAddressSelector : 4;
381  UINT8 Reserved1 : 4;
382  IPMI_PPP_IP_ADDRESS PppIpAddress;
383} IPMI_DESTINATION_IP_ADDRESS;
384
385typedef struct {
386  UINT8 TapSelector;
387  UINT8 TapServiceSelector : 4;
388  UINT8 TapDialStringSelector : 4;
389} IPMI_DESTINATION_TAP_ACCOUNT;
390
391typedef struct {
392  UINT8 TapSelector;
393  UINT8 PagerIdString[16];
394} IPMI_TAP_PAGER_ID_STRING;
395
396typedef union {
397  UINT8                              OptionData;
398  IPMI_EMP_AUTH_TYPE                 EmpAuthType;
399  IPMI_EMP_CONNECTION_TYPE           EmpConnectionType;
400  IPMI_EMP_INACTIVITY_TIMEOUT        EmpInactivityTimeout;
401  IPMI_EMP_CHANNEL_CALLBACK_CONTROL  EmpCallbackControl;
402  IPMI_EMP_SESSION_TERMINATION       EmpSessionTermination;
403  IPMI_EMP_MESSAGING_COM_SETTING     EmpMessagingComSetting;
404  IPMI_EMP_MODEM_RING_TIME           EmpModemRingTime;
405  IPMI_EMP_MODEM_INIT_STRING         EmpModemInitString;
406  IPMI_EMP_MODEM_ESC_SEQUENCE        EmpModemEscSequence;
407  IPMI_EMP_MODEM_HANGUP_SEQUENCE     EmpModemHangupSequence;
408  IPMI_MODEM_DIALUP_COMMAND          EmpModemDialupCommand;
409  IPMI_PAGE_BLACKOUT_INTERVAL        EmpPageBlackoutInterval;
410  IPMI_EMP_COMMUNITY_STRING          EmpCommunityString;
411  IPMI_EMP_DESTINATION_INFO          EmpDestinationInfo;
412  IPMI_EMP_DESTINATION_COM_SETTING   EmpDestinationComSetting;
413  UINT8                              CallRetryBusySignalInterval;
414  IPMI_DESTINATION_DIAL_STRING       DestinationDialString;
415  IPMI_DESTINATION_IP_ADDRESS        DestinationIpAddress;
416  IPMI_DESTINATION_TAP_ACCOUNT       DestinationTapAccount;
417  IPMI_TAP_PAGER_ID_STRING           TapPagerIdString;
418} IPMI_EMP_OPTIONS;
419
420//
421//  Definitions for Get Serial/Modem Configuration command
422//
423#define IPMI_TRANSPORT_GET_SERIAL_CONFIGURATION  0x11
424
425//
426//  Constants and Structure definitions for "Get Serial/Modem Configuration" command to follow here
427//
428
429//
430//  Definitions for Set Serial/Modem Mux command
431//
432#define IPMI_TRANSPORT_SET_SERIAL_MUX  0x12
433
434//
435//  Constants and Structure definitions for "Set Serial/Modem Mux" command to follow here
436//
437typedef struct {
438  UINT8 ChannelNo : 4;
439  UINT8 Reserved1 : 4;
440  UINT8 MuxSetting : 4;
441  UINT8 Reserved2 : 4;
442} IPMI_SET_SERIAL_MODEM_MUX_COMMAND_REQUEST;
443
444typedef struct {
445  UINT8 MuxSetToBmc : 1;
446  UINT8 CommandStatus : 1;
447  UINT8 MessagingSessionActive : 1;
448  UINT8 AlertInProgress : 1;
449  UINT8 Reserved2 : 2;
450  UINT8 MuxToBmcAllowed : 1;
451  UINT8 MuxToSystemBlocked : 1;
452} IPMI_SET_SERIAL_MODEM_MUX_COMMAND_RESPONSE;
453
454//
455//  Definitions for Get TAP Response Code command
456//
457#define IPMI_TRANSPORT_GET_TAP_RESPONSE_CODE 0x13
458
459//
460//  Constants and Structure definitions for "Get TAP Response Code" command to follow here
461//
462
463//
464//  Definitions for Set PPP UDP Proxy Transmit Data command
465//
466#define IPMI_TRANSPORT_SET_PPP_UDP_PROXY_TXDATA  0x14
467
468//
469//  Constants and Structure definitions for "Set PPP UDP Proxy Transmit Data" command to follow here
470//
471
472//
473//  Definitions for Get PPP UDP Proxy Transmit Data command
474//
475#define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_TXDATA  0x15
476
477//
478//  Constants and Structure definitions for "Get PPP UDP Proxy Transmit Data" command to follow here
479//
480
481//
482//  Definitions for Send PPP UDP Proxy Packet command
483//
484#define IPMI_TRANSPORT_SEND_PPP_UDP_PROXY_PACKET 0x16
485
486//
487//  Constants and Structure definitions for "Send PPP UDP Proxy Packet" command to follow here
488//
489
490//
491//  Definitions for Get PPP UDP Proxy Receive Data command
492//
493#define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_RX  0x17
494
495//
496//  Constants and Structure definitions for "Get PPP UDP Proxy Receive Data" command to follow here
497//
498
499//
500//  Definitions for Serial/Modem connection active command
501//
502#define IPMI_TRANSPORT_SERIAL_CONNECTION_ACTIVE  0x18
503
504//
505//  Constants and Structure definitions for "Serial/Modem connection active" command to follow here
506//
507
508//
509//  Definitions for Callback command
510//
511#define IPMI_TRANSPORT_CALLBACK  0x19
512
513//
514//  Constants and Structure definitions for "Callback" command to follow here
515//
516
517//
518//  Definitions for Set user Callback Options command
519//
520#define IPMI_TRANSPORT_SET_USER_CALLBACK_OPTIONS 0x1A
521
522//
523//  Constants and Structure definitions for "Set user Callback Options" command to follow here
524//
525
526//
527//  Definitions for Get user Callback Options command
528//
529#define IPMI_TRANSPORT_GET_USER_CALLBACK_OPTIONS 0x1B
530
531//
532//  Constants and Structure definitions for "Get user Callback Options" command to follow here
533//
534
535//
536//  Below is Definitions for SOL Commands (Chapter 26)
537//
538
539//
540//  Definitions for SOL activating command
541//
542#define IPMI_TRANSPORT_SOL_ACTIVATING  0x20
543
544//
545//  Constants and Structure definitions for "SOL activating" command to follow here
546//
547
548//
549//  Definitions for Set SOL Configuration Parameters command
550//
551#define IPMI_TRANSPORT_SET_SOL_CONFIG_PARAM  0x21
552
553//
554//  Constants and Structure definitions for "Set SOL Configuration Parameters" command to follow here
555//
556
557//
558//  Definitions for Get SOL Configuration Parameters command
559//
560#define IPMI_TRANSPORT_GET_SOL_CONFIG_PARAM  0x22
561
562//
563//  Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here
564//
565#pragma pack()
566#endif
567