summaryrefslogtreecommitdiff
path: root/include/ipmitool/ipmi_session.h
blob: 21ff12f97ad999270009da4cf93c06aaaeda1f57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * Redistribution of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * Redistribution in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * Neither the name of Sun Microsystems, Inc. or the names of
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * 
 * This software is provided "AS IS," without a warranty of any kind.
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
 * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
 * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
 * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL
 * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
 * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
 * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
 * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 */

#ifndef IPMI_SESSION_H
#define IPMI_SESSION_H

#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <ipmitool/ipmi.h>

#define IPMI_GET_SESSION_INFO 0x3D

/*
 * From table 22.25 of the IPMIv2 specification
 */
#ifdef HAVE_PRAGMA_PACK
#pragma pack(1)
#endif
struct get_session_info_rsp
{
	uint8_t session_handle;

	#if WORDS_BIGENDIAN
	uint8_t __reserved1        : 2;
	uint8_t session_slot_count : 6; /* 1-based */
	#else
	uint8_t session_slot_count : 6; /* 1-based */
	uint8_t __reserved1        : 2;
	#endif

	#if WORDS_BIGENDIAN
	uint8_t __reserved2          : 2;
	uint8_t active_session_count : 6; /* 1-based */
	#else
	uint8_t active_session_count : 6; /* 1-based */
	uint8_t __reserved2          : 2;
	#endif

	#if WORDS_BIGENDIAN
	uint8_t __reserved3          : 2;
	uint8_t user_id              : 6;
	#else
	uint8_t user_id              : 6;
	uint8_t __reserved3          : 2;
	#endif

	#if WORDS_BIGENDIAN
	uint8_t __reserved4          : 4;
	uint8_t privilege_level      : 4;
	#else
	uint8_t privilege_level      : 4;
	uint8_t __reserved4          : 4;
	#endif

	#if WORDS_BIGENDIAN
	uint8_t auxiliary_data       : 4;
	uint8_t channel_number       : 4;
	#else
	uint8_t channel_number       : 4;
	uint8_t auxiliary_data       : 4;
	#endif

	union
	{
		/* Only exists if channel type is 802.3 LAN */
		struct
		{
			uint8_t console_ip[4];  /* MSBF */
			uint8_t console_mac[6]; /* MSBF */
			uint16_t      console_port;   /* LSBF */
		} lan_data;

		/* Only exists if channel type is async. serial modem */
		struct
		{
			uint8_t session_channel_activity_type;
		
			#if WORDS_BIGENDIAN
			uint8_t __reserved5          : 4;
			uint8_t destination_selector : 4;
			#else
			uint8_t destination_selector : 4;
			uint8_t __reserved5          : 4;
			#endif

 			uint8_t console_ip[4];   /* MSBF */

			/* Only exists if session is PPP */
			uint16_t console_port;        /* LSBF */
		} modem_data;
	} channel_data;
} ATTRIBUTE_PACKING;
#ifdef HAVE_PRAGMA_PACK
#pragma pack(0)
#endif



int ipmi_session_main(struct ipmi_intf *, int, char **);

#endif /*IPMI_CHANNEL_H*/