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 //
48 typedef 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 //
74 typedef enum {
75   IpmiUnspecified,
76   IpmiStaticAddrsss,
77   IpmiDynamicAddressBmcDhcp,
78   IpmiDynamicAddressBiosDhcp,
79   IpmiDynamicAddressBmcNonDhcp
80 } IPMI_IP_ADDRESS_SRC;
81 
82 //
83 // Destination Type
84 //
85 typedef 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 
97 typedef 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 
107 typedef struct {
108   UINT8 IpAddress[4];
109 } IPMI_LAN_IP_ADDRESS;
110 
111 typedef struct {
112   UINT8 AddressSrc : 4;
113   UINT8 Reserved : 4;
114 } IPMI_LAN_IP_ADDRESS_SRC;
115 
116 typedef struct {
117   UINT8 MacAddress[6];
118 } IPMI_LAN_MAC_ADDRESS;
119 
120 typedef struct {
121   UINT8 IpAddress[4];
122 } IPMI_LAN_SUBNET_MASK;
123 
124 typedef 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 
133 typedef struct {
134   UINT8 RcmpPortMsb;
135   UINT8 RcmpPortLsb;
136 } IPMI_LAN_RCMP_PORT;
137 
138 typedef struct {
139   UINT8 EnableBmcArpResponse : 1;
140   UINT8 EnableBmcGratuitousArp : 1;
141   UINT8 Reserved : 6;
142 } IPMI_LAN_BMC_GENERATED_ARP_CONTROL;
143 
144 typedef struct {
145   UINT8 ArpInterval;
146 } IPMI_LAN_ARP_INTERVAL;
147 
148 typedef struct {
149   UINT8 Data[18];
150 } IPMI_LAN_COMMUNITY_STRING;
151 
152 typedef 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 
160 typedef 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 
171 typedef 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 //
229 typedef 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 
239 typedef 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 
249 typedef struct {
250   UINT8 InactivityTimeout : 4;
251   UINT8 Reserved : 4;
252 } IPMI_EMP_INACTIVITY_TIMEOUT;
253 
254 typedef 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 
268 typedef struct {
269   UINT8 CloseSessionOnDCDLoss : 1;
270   UINT8 EnableSessionInactivityTimeout : 1;
271   UINT8 Reserved : 6;
272 } IPMI_EMP_SESSION_TERMINATION;
273 
274 typedef 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 
285 typedef struct {
286   UINT8 RingDurationInterval : 6;
287   UINT8 Reserved1 : 2;
288   UINT8 RingDeadTime : 4;
289   UINT8 Reserved : 4;
290 } IPMI_EMP_MODEM_RING_TIME;
291 
292 typedef struct {
293   UINT8 Reserved;
294   UINT8 InitString[48];
295 } IPMI_EMP_MODEM_INIT_STRING;
296 
297 typedef struct {
298   UINT8 EscapeSequence[5];
299 } IPMI_EMP_MODEM_ESC_SEQUENCE;
300 
301 typedef struct {
302   UINT8 HangupSequence[8];
303 } IPMI_EMP_MODEM_HANGUP_SEQUENCE;
304 
305 typedef struct {
306   UINT8 ModelDialCommend[8];
307 } IPMI_MODEM_DIALUP_COMMAND;
308 
309 typedef struct {
310   UINT8 PageBlackoutInterval;
311 } IPMI_PAGE_BLACKOUT_INTERVAL;
312 
313 typedef struct {
314   UINT8 CommunityString[18];
315 } IPMI_EMP_COMMUNITY_STRING;
316 
317 typedef struct {
318   UINT8 Reserved5 : 4;
319   UINT8 DialStringSelector : 4;
320 } IPMI_DIAL_PAGE_DESTINATION;
321 
322 typedef struct {
323   UINT8 TapAccountSelector : 4;
324   UINT8 Reserved : 4;
325 } IPMI_TAP_PAGE_DESTINATION;
326 
327 typedef struct {
328   UINT8 PPPAccountSetSelector;
329   UINT8 DialStringSelector;
330 } IPMI_PPP_ALERT_DESTINATION;
331 
332 typedef 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 
338 typedef 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 
352 typedef 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 
367 typedef struct {
368   UINT8 DialStringSelector : 4;
369   UINT8 Reserved1 : 4;
370   UINT8 Reserved2;
371   UINT8 DialString[48];
372 } IPMI_DESTINATION_DIAL_STRING;
373 
374 typedef union {
375   UINT32  IpAddressLong;
376   UINT8   IpAddress[4];
377 } IPMI_PPP_IP_ADDRESS;
378 
379 typedef struct {
380   UINT8 IpAddressSelector : 4;
381   UINT8 Reserved1 : 4;
382   IPMI_PPP_IP_ADDRESS PppIpAddress;
383 } IPMI_DESTINATION_IP_ADDRESS;
384 
385 typedef struct {
386   UINT8 TapSelector;
387   UINT8 TapServiceSelector : 4;
388   UINT8 TapDialStringSelector : 4;
389 } IPMI_DESTINATION_TAP_ACCOUNT;
390 
391 typedef struct {
392   UINT8 TapSelector;
393   UINT8 PagerIdString[16];
394 } IPMI_TAP_PAGER_ID_STRING;
395 
396 typedef 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 //
437 typedef 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 
444 typedef 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