1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21/* 22 * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26#ifndef IPMI_LAN_H 27#define IPMI_LAN_H 28 29#ifdef __cplusplus 30extern "C" { 31#endif 32 33#pragma pack(1) 34 35#define IPMI_CMD_GET_SESSION_CHALLENGE 0x39 36#define IPMI_CMD_ACTIVATE_SESSION 0x3a 37#define IPMI_CMD_SET_SESSION_PRIVLVL 0x3b 38#define IPMI_CMD_CLOSE_SESSION 0x3c 39 40#define IPMI_AUTHCODE_BUF_SIZE 20 41/* 42 * See section 22.13 43 */ 44#define IPMI_SESSION_AUTHTYPE_NONE 0x01 45#define IPMI_SESSION_AUTHTYPE_MD2 0x02 46#define IPMI_SESSION_AUTHTYPE_MD5 0x04 47#define IPMI_SESSION_AUTHTYPE_PASSWORD 0x10 48#define IPMI_SESSION_AUTHTYPE_OEM 0x20 49 50#define IPMI_SESSION_PRIV_UNSPECIFIED 0x0 51#define IPMI_SESSION_PRIV_CALLBACK 0x1 52#define IPMI_SESSION_PRIV_USER 0x2 53#define IPMI_SESSION_PRIV_OPERATOR 0x3 54#define IPMI_SESSION_PRIV_ADMIN 0x4 55#define IPMI_SESSION_PRIV_OEM 0x5 56 57#define IPMI_BMC_SLAVE_ADDR 0x20 58#define IPMI_BUF_SIZE 1024 59#define IPMI_REMOTE_SWID 0x81 60 61/* 62 * The primary RMCP port 63 */ 64#define RMCP_UDP_PORT 623 65 66/* 67 * The ASF IANA Enterprise Number 68 */ 69#define ASF_RMCP_IANA 4542 70 71/* 72 * ASF Message Types for presence ping and pong 73 */ 74#define ASF_TYPE_PING 0x80 75#define ASF_TYPE_PONG 0x40 76 77/* 78 * ASF message header 79 * 80 * See section 13.2.3 81 */ 82typedef struct asf_hdr { 83 uint32_t ah_iana; 84 uint8_t ah_msg_type; 85 uint8_t ah_msg_tag; 86 uint8_t __reserved1; 87 uint8_t ah_dlen; 88} asf_hdr_t; 89 90/* 91 * RMCP message header 92 * 93 * See section 13.1.3 94 */ 95#define RMCP_VERSION_1 0x06 96#define RMCP_CLASS_ASF 0x06 97#define RMCP_CLASS_IPMI 0x07 98#define RMCP_CLASS_OEM 0x08 99 100typedef struct rmcp_hdr { 101 uint8_t rh_version; 102 uint8_t __reserved1; 103 uint8_t rh_seq; 104 DECL_BITFIELD3( 105 rh_msg_class:5, 106 __reserved2:2, 107 rh_msg_type:1); 108} rmcp_hdr_t; 109 110/* 111 * IPMI Session Header 112 * 113 * The IPMI session header contains some optional payload fields that are only 114 * present in RMCP+ sessions or if the payload type is "OEM explicit". This 115 * structure is only intended to represent the session header for IPMI v1.5 116 * messages. 117 * 118 * See section 13.6 119 */ 120typedef struct v15_session_hdr { 121 uint8_t sh_authtype; 122 uint32_t sh_seq; 123 uint32_t sh_id; 124} v15_session_hdr_t; 125 126/* 127 * IPMI Lan Message Header 128 * 129 * See section 13.8 130 */ 131typedef struct ipmi_msg_hdr { 132 uint8_t imh_addr1; 133 DECL_BITFIELD2( 134 imh_lun:2, 135 imh_netfn:6); 136 uint8_t imh_csum; 137 uint8_t imh_addr2; 138 uint8_t imh_seq; 139 uint8_t imh_cmd; 140} ipmi_msg_hdr_t; 141 142#pragma pack() 143 144#ifdef __cplusplus 145} 146#endif 147 148#endif /* IPMI_LAN_H */ 149