Blame src/plugins/lanplus/lanplus.h

Packit Service ed0f68
/*
Packit Service ed0f68
 * Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Redistribution and use in source and binary forms, with or without
Packit Service ed0f68
 * modification, are permitted provided that the following conditions
Packit Service ed0f68
 * are met:
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Redistribution of source code must retain the above copyright
Packit Service ed0f68
 * notice, this list of conditions and the following disclaimer.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Redistribution in binary form must reproduce the above copyright
Packit Service ed0f68
 * notice, this list of conditions and the following disclaimer in the
Packit Service ed0f68
 * documentation and/or other materials provided with the distribution.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Neither the name of Sun Microsystems, Inc. or the names of
Packit Service ed0f68
 * contributors may be used to endorse or promote products derived
Packit Service ed0f68
 * from this software without specific prior written permission.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * This software is provided "AS IS," without a warranty of any kind.
Packit Service ed0f68
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
Packit Service ed0f68
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
Packit Service ed0f68
 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
Packit Service ed0f68
 * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
Packit Service ed0f68
 * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
Packit Service ed0f68
 * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL
Packit Service ed0f68
 * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
Packit Service ed0f68
 * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
Packit Service ed0f68
 * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
Packit Service ed0f68
 * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
Packit Service ed0f68
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Packit Service ed0f68
 */
Packit Service ed0f68
Packit Service ed0f68
#ifndef IPMI_LANPLUS_H
Packit Service ed0f68
#define IPMI_LANPLUS_H
Packit Service ed0f68
Packit Service ed0f68
#include <ipmitool/ipmi.h>
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_LANPLUS_PORT           0x26f
Packit Service ed0f68
Packit Service ed0f68
/*
Packit Service ed0f68
 * RAKP return codes.  These values come from table 13-15 of the IPMI v2
Packit Service ed0f68
 * specification.
Packit Service ed0f68
 */
Packit Service ed0f68
#define IPMI_RAKP_STATUS_NO_ERRORS                          0x00
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INSUFFICIENT_RESOURCES_FOR_SESSION 0x01
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_SESSION_ID                 0x02
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_PAYLOAD_TYPE               0x03
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_AUTHENTICATION_ALGORITHM   0x04
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_INTEGRITTY_ALGORITHM       0x05
Packit Service ed0f68
#define IPMI_RAKP_STATUS_NO_MATCHING_AUTHENTICATION_PAYLOAD 0x06
Packit Service ed0f68
#define IPMI_RAKP_STATUS_NO_MATCHING_INTEGRITY_PAYLOAD      0x07
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INACTIVE_SESSION_ID                0x08
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_ROLE                       0x09
Packit Service ed0f68
#define IPMI_RAKP_STATUS_UNAUTHORIZED_ROLE_REQUESTED        0x0A
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INSUFFICIENT_RESOURCES_FOR_ROLE    0x0B
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_NAME_LENGTH                0x0C
Packit Service ed0f68
#define IPMI_RAKP_STATUS_UNAUTHORIZED_NAME                  0x0D
Packit Service ed0f68
#define IPMI_RAKP_STATUS_UNAUTHORIZED_GUID                  0x0E
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_INTEGRITY_CHECK_VALUE      0x0F
Packit Service ed0f68
#define IPMI_RAKP_STATUS_INVALID_CONFIDENTIALITY_ALGORITHM  0x10
Packit Service ed0f68
#define IPMI_RAKP_STATUS_NO_CIPHER_SUITE_MATCH              0x11
Packit Service ed0f68
#define IPMI_RAKP_STATUS_ILLEGAL_PARAMTER                   0x12	
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_LAN_CHANNEL_1	0x07
Packit Service ed0f68
#define IPMI_LAN_CHANNEL_2	0x06
Packit Service ed0f68
#define IPMI_LAN_CHANNEL_E	0x0e
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_LAN_TIMEOUT	1
Packit Service ed0f68
#define IPMI_LAN_RETRY		4
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_PRIV_CALLBACK 1
Packit Service ed0f68
#define IPMI_PRIV_USER     2
Packit Service ed0f68
#define IPMI_PRIV_OPERATOR 3
Packit Service ed0f68
#define IPMI_PRIV_ADMIN    4
Packit Service ed0f68
#define IPMI_PRIV_OEM      5
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE 0x10
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
/* Session message offsets, from table 13-8 of the v2 specification */
Packit Service ed0f68
#define IPMI_LANPLUS_OFFSET_AUTHTYPE     0x04
Packit Service ed0f68
#define IPMI_LANPLUS_OFFSET_PAYLOAD_TYPE 0x05
Packit Service ed0f68
#define IPMI_LANPLUS_OFFSET_SESSION_ID   0x06
Packit Service ed0f68
#define IPMI_LANPLUS_OFFSET_SEQUENCE_NUM 0x0A
Packit Service ed0f68
#define IPMI_LANPLUS_OFFSET_PAYLOAD_SIZE 0x0E
Packit Service ed0f68
#define IPMI_LANPLUS_OFFSET_PAYLOAD      0x10
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_GET_CHANNEL_AUTH_CAP 0x38
Packit Service ed0f68
Packit Service ed0f68
/*
Packit Service ed0f68
 * TODO: these are wild guesses and should be checked
Packit Service ed0f68
 */
Packit Service ed0f68
#define IPMI_MAX_CONF_HEADER_SIZE   0x20
Packit Service ed0f68
#define IPMI_MAX_PAYLOAD_SIZE       0xFFFF /* Includes confidentiality header/trailer */
Packit Service ed0f68
#define IPMI_MAX_CONF_TRAILER_SIZE  0x20
Packit Service ed0f68
#define IPMI_MAX_INTEGRITY_PAD_SIZE IPMI_MAX_MD_SIZE
Packit Service ed0f68
#define IPMI_MAX_AUTH_CODE_SIZE     IPMI_MAX_MD_SIZE
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_REQUEST_MESSAGE_SIZE   0x07
Packit Service ed0f68
#define IPMI_MAX_MAC_SIZE           IPMI_MAX_MD_SIZE /* The largest mac we ever expect to generate */
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_SHA1_AUTHCODE_SIZE          12
Packit Service ed0f68
#define IPMI_HMAC_MD5_AUTHCODE_SIZE      16
Packit Service ed0f68
#define IPMI_MD5_AUTHCODE_SIZE           16
Packit Service ed0f68
#define IPMI_HMAC_SHA256_AUTHCODE_SIZE   16
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_SHA_DIGEST_LENGTH                20
Packit Service ed0f68
#define IPMI_MD5_DIGEST_LENGTH                16
Packit Service ed0f68
#define IPMI_SHA256_DIGEST_LENGTH             32
Packit Service ed0f68
Packit Service ed0f68
/*
Packit Service ed0f68
 *This is accurate, as long as we're only passing 1 auth algorithm,
Packit Service ed0f68
 * one integrity algorithm, and 1 encyrption alogrithm
Packit Service ed0f68
 */
Packit Service ed0f68
#define IPMI_OPEN_SESSION_REQUEST_SIZE 32
Packit Service ed0f68
#define IPMI_RAKP1_MESSAGE_SIZE        44
Packit Service ed0f68
#define IPMI_RAKP3_MESSAGE_MAX_SIZE    (8 + IPMI_MAX_MD_SIZE)
Packit Service ed0f68
Packit Service ed0f68
#define IPMI_MAX_USER_NAME_LENGTH      16
Packit Service ed0f68
Packit Service ed0f68
extern const struct valstr ipmi_privlvl_vals[];
Packit Service ed0f68
extern const struct valstr ipmi_authtype_vals[];
Packit Service ed0f68
Packit Service ed0f68
extern struct ipmi_intf ipmi_lanplus_intf;
Packit Service ed0f68
Packit Service ed0f68
struct ipmi_rs * ipmi_lan_send_cmd(struct ipmi_intf * intf, struct ipmi_rq * req);
Packit Service ed0f68
int  ipmi_lanplus_open(struct ipmi_intf * intf);
Packit Service ed0f68
void ipmi_lanplus_close(struct ipmi_intf * intf);
Packit Service ed0f68
int ipmiv2_lan_ping(struct ipmi_intf * intf);
Packit Service ed0f68
Packit Service ed0f68
#endif /*IPMI_LAN_H*/