xref: /openbmc/ipmitool/src/plugins/lanplus/lanplus.h (revision c18ec02f3304ce2a889a50e378f07a4168af3884)
1*c18ec02fSPetter Reinholdtsen /*
2*c18ec02fSPetter Reinholdtsen  * Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved.
3*c18ec02fSPetter Reinholdtsen  *
4*c18ec02fSPetter Reinholdtsen  * Redistribution and use in source and binary forms, with or without
5*c18ec02fSPetter Reinholdtsen  * modification, are permitted provided that the following conditions
6*c18ec02fSPetter Reinholdtsen  * are met:
7*c18ec02fSPetter Reinholdtsen  *
8*c18ec02fSPetter Reinholdtsen  * Redistribution of source code must retain the above copyright
9*c18ec02fSPetter Reinholdtsen  * notice, this list of conditions and the following disclaimer.
10*c18ec02fSPetter Reinholdtsen  *
11*c18ec02fSPetter Reinholdtsen  * Redistribution in binary form must reproduce the above copyright
12*c18ec02fSPetter Reinholdtsen  * notice, this list of conditions and the following disclaimer in the
13*c18ec02fSPetter Reinholdtsen  * documentation and/or other materials provided with the distribution.
14*c18ec02fSPetter Reinholdtsen  *
15*c18ec02fSPetter Reinholdtsen  * Neither the name of Sun Microsystems, Inc. or the names of
16*c18ec02fSPetter Reinholdtsen  * contributors may be used to endorse or promote products derived
17*c18ec02fSPetter Reinholdtsen  * from this software without specific prior written permission.
18*c18ec02fSPetter Reinholdtsen  *
19*c18ec02fSPetter Reinholdtsen  * This software is provided "AS IS," without a warranty of any kind.
20*c18ec02fSPetter Reinholdtsen  * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
21*c18ec02fSPetter Reinholdtsen  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
22*c18ec02fSPetter Reinholdtsen  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
23*c18ec02fSPetter Reinholdtsen  * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
24*c18ec02fSPetter Reinholdtsen  * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
25*c18ec02fSPetter Reinholdtsen  * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL
26*c18ec02fSPetter Reinholdtsen  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
27*c18ec02fSPetter Reinholdtsen  * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
28*c18ec02fSPetter Reinholdtsen  * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
29*c18ec02fSPetter Reinholdtsen  * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
30*c18ec02fSPetter Reinholdtsen  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
31*c18ec02fSPetter Reinholdtsen  */
32*c18ec02fSPetter Reinholdtsen 
33*c18ec02fSPetter Reinholdtsen #ifndef IPMI_LANPLUS_H
34*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_H
35*c18ec02fSPetter Reinholdtsen 
36*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi.h>
37*c18ec02fSPetter Reinholdtsen 
38*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_PORT           0x26f
39*c18ec02fSPetter Reinholdtsen 
40*c18ec02fSPetter Reinholdtsen /*
41*c18ec02fSPetter Reinholdtsen  * RAKP return codes.  These values come from table 13-15 of the IPMI v2
42*c18ec02fSPetter Reinholdtsen  * specification.
43*c18ec02fSPetter Reinholdtsen  */
44*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_NO_ERRORS                          0x00
45*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INSUFFICIENT_RESOURCES_FOR_SESSION 0x01
46*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_SESSION_ID                 0x02
47*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_PAYLOAD_TYPE               0x03
48*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_AUTHENTICATION_ALGORITHM   0x04
49*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_INTEGRITTY_ALGORITHM       0x05
50*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_NO_MATCHING_AUTHENTICATION_PAYLOAD 0x06
51*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_NO_MATCHING_INTEGRITY_PAYLOAD      0x07
52*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INACTIVE_SESSION_ID                0x08
53*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_ROLE                       0x09
54*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_UNAUTHORIZED_ROLE_REQUESTED        0x0A
55*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INSUFFICIENT_RESOURCES_FOR_ROLE    0x0B
56*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_NAME_LENGTH                0x0C
57*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_UNAUTHORIZED_NAME                  0x0D
58*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_UNAUTHORIZED_GUID                  0x0E
59*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_INTEGRITY_CHECK_VALUE      0x0F
60*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_INVALID_CONFIDENTIALITY_ALGORITHM  0x10
61*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_NO_CIPHER_SUITE_MATCH              0x11
62*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP_STATUS_ILLEGAL_PARAMTER                   0x12
63*c18ec02fSPetter Reinholdtsen 
64*c18ec02fSPetter Reinholdtsen 
65*c18ec02fSPetter Reinholdtsen #define IPMI_LAN_CHANNEL_1	0x07
66*c18ec02fSPetter Reinholdtsen #define IPMI_LAN_CHANNEL_2	0x06
67*c18ec02fSPetter Reinholdtsen #define IPMI_LAN_CHANNEL_E	0x0e
68*c18ec02fSPetter Reinholdtsen 
69*c18ec02fSPetter Reinholdtsen #define IPMI_LAN_TIMEOUT	1
70*c18ec02fSPetter Reinholdtsen #define IPMI_LAN_RETRY		4
71*c18ec02fSPetter Reinholdtsen 
72*c18ec02fSPetter Reinholdtsen #define IPMI_PRIV_CALLBACK 1
73*c18ec02fSPetter Reinholdtsen #define IPMI_PRIV_USER     2
74*c18ec02fSPetter Reinholdtsen #define IPMI_PRIV_OPERATOR 3
75*c18ec02fSPetter Reinholdtsen #define IPMI_PRIV_ADMIN    4
76*c18ec02fSPetter Reinholdtsen #define IPMI_PRIV_OEM      5
77*c18ec02fSPetter Reinholdtsen 
78*c18ec02fSPetter Reinholdtsen 
79*c18ec02fSPetter Reinholdtsen #define IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE 0x10
80*c18ec02fSPetter Reinholdtsen 
81*c18ec02fSPetter Reinholdtsen 
82*c18ec02fSPetter Reinholdtsen /* Session message offsets, from table 13-8 of the v2 specification */
83*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_OFFSET_AUTHTYPE     0x04
84*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_OFFSET_PAYLOAD_TYPE 0x05
85*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_OFFSET_SESSION_ID   0x06
86*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_OFFSET_SEQUENCE_NUM 0x0A
87*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_OFFSET_PAYLOAD_SIZE 0x0E
88*c18ec02fSPetter Reinholdtsen #define IPMI_LANPLUS_OFFSET_PAYLOAD      0x10
89*c18ec02fSPetter Reinholdtsen 
90*c18ec02fSPetter Reinholdtsen 
91*c18ec02fSPetter Reinholdtsen #define IPMI_GET_CHANNEL_AUTH_CAP 0x38
92*c18ec02fSPetter Reinholdtsen 
93*c18ec02fSPetter Reinholdtsen /*
94*c18ec02fSPetter Reinholdtsen  * TODO: these are wild guesses and should be checked
95*c18ec02fSPetter Reinholdtsen  */
96*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_CONF_HEADER_SIZE   0x20
97*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_PAYLOAD_SIZE       0xFFFF /* Includes confidentiality header/trailer */
98*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_CONF_TRAILER_SIZE  0x20
99*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_INTEGRITY_PAD_SIZE 0x20
100*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_AUTH_CODE_SIZE     0x20
101*c18ec02fSPetter Reinholdtsen 
102*c18ec02fSPetter Reinholdtsen #define IPMI_REQUEST_MESSAGE_SIZE   0x07
103*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_MAC_SIZE           0x14 /* The largest mac we ever expect to generate */
104*c18ec02fSPetter Reinholdtsen #define IPMI_SHA1_AUTHCODE_SIZE     0x0C
105*c18ec02fSPetter Reinholdtsen 
106*c18ec02fSPetter Reinholdtsen /*
107*c18ec02fSPetter Reinholdtsen  *This is accurate, as long as we're only passing 1 auth algorithm,
108*c18ec02fSPetter Reinholdtsen  * one integrity algorithm, and 1 encyrption alogrithm
109*c18ec02fSPetter Reinholdtsen  */
110*c18ec02fSPetter Reinholdtsen #define IPMI_OPEN_SESSION_REQUEST_SIZE 32
111*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP1_MESSAGE_SIZE        44
112*c18ec02fSPetter Reinholdtsen #define IPMI_RAKP3_MESSAGE_MAX_SIZE    28
113*c18ec02fSPetter Reinholdtsen 
114*c18ec02fSPetter Reinholdtsen #define IPMI_MAX_USER_NAME_LENGTH      16
115*c18ec02fSPetter Reinholdtsen 
116*c18ec02fSPetter Reinholdtsen extern const struct valstr ipmi_privlvl_vals[];
117*c18ec02fSPetter Reinholdtsen extern const struct valstr ipmi_authtype_vals[];
118*c18ec02fSPetter Reinholdtsen 
119*c18ec02fSPetter Reinholdtsen extern struct ipmi_intf ipmi_lanplus_intf;
120*c18ec02fSPetter Reinholdtsen 
121*c18ec02fSPetter Reinholdtsen struct ipmi_rs * ipmi_lan_send_cmd(struct ipmi_intf * intf, struct ipmi_rq * req);
122*c18ec02fSPetter Reinholdtsen int  ipmi_lanplus_open(struct ipmi_intf * intf);
123*c18ec02fSPetter Reinholdtsen void ipmi_lanplus_close(struct ipmi_intf * intf);
124*c18ec02fSPetter Reinholdtsen int ipmiv2_lan_ping(struct ipmi_intf * intf);
125*c18ec02fSPetter Reinholdtsen 
126*c18ec02fSPetter Reinholdtsen #endif /*IPMI_LAN_H*/
127