1d62bc4baSyz /*
2d62bc4baSyz  * CDDL HEADER START
3d62bc4baSyz  *
4d62bc4baSyz  * The contents of this file are subject to the terms of the
5d62bc4baSyz  * Common Development and Distribution License (the "License").
6d62bc4baSyz  * You may not use this file except in compliance with the License.
7d62bc4baSyz  *
8d62bc4baSyz  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9d62bc4baSyz  * or http://www.opensolaris.org/os/licensing.
10d62bc4baSyz  * See the License for the specific language governing permissions
11d62bc4baSyz  * and limitations under the License.
12d62bc4baSyz  *
13d62bc4baSyz  * When distributing Covered Code, include this CDDL HEADER in each
14d62bc4baSyz  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15d62bc4baSyz  * If applicable, add the following below this CDDL HEADER, with the
16d62bc4baSyz  * fields enclosed by brackets "[]" replaced with your own identifying
17d62bc4baSyz  * information: Portions Copyright [yyyy] [name of copyright owner]
18d62bc4baSyz  *
19d62bc4baSyz  * CDDL HEADER END
20d62bc4baSyz  */
21d62bc4baSyz /*
2232715170SCathy Zhou  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23d62bc4baSyz  */
24d62bc4baSyz 
25d62bc4baSyz /*
26d62bc4baSyz  * This file includes structures, macros used to communicate with linkmgmt
27d62bc4baSyz  * daemon.
28d62bc4baSyz  */
29d62bc4baSyz 
30d62bc4baSyz #ifndef _LIBDLMGMT_H
31d62bc4baSyz #define	_LIBDLMGMT_H
32d62bc4baSyz 
33d62bc4baSyz #include <sys/types.h>
34d62bc4baSyz #include <libdladm.h>
35d62bc4baSyz 
36d62bc4baSyz #ifdef __cplusplus
37d62bc4baSyz extern "C" {
38d62bc4baSyz #endif
39d62bc4baSyz 
40d62bc4baSyz /*
41d62bc4baSyz  * datalink management related macros, structures.
42d62bc4baSyz  */
43d62bc4baSyz 
44d62bc4baSyz /*
45d62bc4baSyz  * Door call commands.
46d62bc4baSyz  */
47d62bc4baSyz #define	DLMGMT_CMD_CREATE_LINKID	(DLMGMT_CMD_BASE + 0)
48d62bc4baSyz #define	DLMGMT_CMD_DESTROY_LINKID	(DLMGMT_CMD_BASE + 1)
49d62bc4baSyz #define	DLMGMT_CMD_REMAP_LINKID		(DLMGMT_CMD_BASE + 2)
50d62bc4baSyz #define	DLMGMT_CMD_CREATECONF		(DLMGMT_CMD_BASE + 3)
5132715170SCathy Zhou #define	DLMGMT_CMD_OPENCONF		(DLMGMT_CMD_BASE + 4)
52d62bc4baSyz #define	DLMGMT_CMD_WRITECONF		(DLMGMT_CMD_BASE + 5)
53d62bc4baSyz #define	DLMGMT_CMD_UP_LINKID		(DLMGMT_CMD_BASE + 6)
54d62bc4baSyz #define	DLMGMT_CMD_SETATTR		(DLMGMT_CMD_BASE + 7)
55d62bc4baSyz #define	DLMGMT_CMD_UNSETATTR		(DLMGMT_CMD_BASE + 8)
56d62bc4baSyz #define	DLMGMT_CMD_REMOVECONF		(DLMGMT_CMD_BASE + 9)
57d62bc4baSyz #define	DLMGMT_CMD_DESTROYCONF		(DLMGMT_CMD_BASE + 10)
58d62bc4baSyz #define	DLMGMT_CMD_GETATTR		(DLMGMT_CMD_BASE + 11)
5932715170SCathy Zhou #define	DLMGMT_CMD_GETCONFSNAPSHOT	(DLMGMT_CMD_BASE + 12)
602b24ab6bSSebastien Roy #define	DLMGMT_CMD_ZONEBOOT		(DLMGMT_CMD_BASE + 13)
612b24ab6bSSebastien Roy #define	DLMGMT_CMD_ZONEHALT		(DLMGMT_CMD_BASE + 14)
62d62bc4baSyz 
63d62bc4baSyz typedef struct dlmgmt_door_createid_s {
64d62bc4baSyz 	int			ld_cmd;
65d62bc4baSyz 	char			ld_link[MAXLINKNAMELEN];
66d62bc4baSyz 	datalink_class_t	ld_class;
67d62bc4baSyz 	uint32_t		ld_media;
68d62bc4baSyz 	boolean_t		ld_prefix;
69d62bc4baSyz 	uint32_t		ld_flags;
70d62bc4baSyz } dlmgmt_door_createid_t;
71d62bc4baSyz 
72d62bc4baSyz typedef struct dlmgmt_door_destroyid_s {
73d62bc4baSyz 	int		ld_cmd;
74d62bc4baSyz 	datalink_id_t	ld_linkid;
75d62bc4baSyz 	uint32_t	ld_flags;
76d62bc4baSyz } dlmgmt_door_destroyid_t;
77d62bc4baSyz 
78d62bc4baSyz typedef struct dlmgmt_door_remapid_s {
79d62bc4baSyz 	int		ld_cmd;
80d62bc4baSyz 	datalink_id_t	ld_linkid;
81d62bc4baSyz 	char		ld_link[MAXLINKNAMELEN];
82d62bc4baSyz } dlmgmt_door_remapid_t;
83d62bc4baSyz 
84d62bc4baSyz typedef struct dlmgmt_door_upid_s {
85d62bc4baSyz 	int		ld_cmd;
86d62bc4baSyz 	datalink_id_t	ld_linkid;
87d62bc4baSyz } dlmgmt_door_upid_t;
88d62bc4baSyz 
89d62bc4baSyz typedef struct dlmgmt_door_createconf_s {
90d62bc4baSyz 	int			ld_cmd;
91d62bc4baSyz 	char			ld_link[MAXLINKNAMELEN];
92d62bc4baSyz 	datalink_id_t		ld_linkid;
93d62bc4baSyz 	datalink_class_t	ld_class;
94d62bc4baSyz 	uint32_t		ld_media;
95d62bc4baSyz } dlmgmt_door_createconf_t;
96d62bc4baSyz 
97d62bc4baSyz typedef struct dlmgmt_door_setattr_s {
98d62bc4baSyz 	int			ld_cmd;
9932715170SCathy Zhou 	int			ld_confid;
100d62bc4baSyz 	char			ld_attr[MAXLINKATTRLEN];
101*640aa5d6SRyan Goodfellow 	uint32_t		ld_attrsz;
102d62bc4baSyz 	dladm_datatype_t	ld_type;
103024b0a25Sseb 	char			ld_attrval[MAXLINKATTRVALLEN];
104d62bc4baSyz } dlmgmt_door_setattr_t;
105d62bc4baSyz 
106d62bc4baSyz typedef struct dlmgmt_door_unsetattr_s {
107d62bc4baSyz 	int		ld_cmd;
10832715170SCathy Zhou 	int		ld_confid;
109d62bc4baSyz 	char		ld_attr[MAXLINKATTRLEN];
110d62bc4baSyz } dlmgmt_door_unsetattr_t;
111d62bc4baSyz 
112d62bc4baSyz typedef struct dlmgmt_door_writeconf_s {
113d62bc4baSyz 	int		ld_cmd;
11432715170SCathy Zhou 	int		ld_confid;
115d62bc4baSyz } dlmgmt_door_writeconf_t;
116d62bc4baSyz 
117d62bc4baSyz typedef struct dlmgmt_door_removeconf_s {
118d62bc4baSyz 	int		ld_cmd;
119d62bc4baSyz 	datalink_id_t	ld_linkid;
120d62bc4baSyz } dlmgmt_door_removeconf_t;
121d62bc4baSyz 
122d62bc4baSyz typedef struct dlmgmt_door_destroyconf_s {
123d62bc4baSyz 	int		ld_cmd;
12432715170SCathy Zhou 	int		ld_confid;
125d62bc4baSyz } dlmgmt_door_destroyconf_t;
126d62bc4baSyz 
12732715170SCathy Zhou typedef struct dlmgmt_door_openconf_s {
128d62bc4baSyz 	int		ld_cmd;
129d62bc4baSyz 	datalink_id_t	ld_linkid;
13032715170SCathy Zhou } dlmgmt_door_openconf_t;
13132715170SCathy Zhou 
13232715170SCathy Zhou typedef struct dlmgmt_door_getconfsnapshot_s {
13332715170SCathy Zhou 	int		ld_cmd;
13432715170SCathy Zhou 	datalink_id_t	ld_linkid;
13532715170SCathy Zhou } dlmgmt_door_getconfsnapshot_t;
136d62bc4baSyz 
137d62bc4baSyz typedef struct dlmgmt_door_getattr_s {
138d62bc4baSyz 	int		ld_cmd;
13932715170SCathy Zhou 	int		ld_confid;
140d62bc4baSyz 	char		ld_attr[MAXLINKATTRLEN];
141d62bc4baSyz } dlmgmt_door_getattr_t;
142d62bc4baSyz 
14332715170SCathy Zhou typedef struct dlmgmt_createconf_retval_s {
14462ee1d25SArtem Kachitchkine 	uint_t			lr_err;
14532715170SCathy Zhou 	int			lr_confid;
14632715170SCathy Zhou } dlmgmt_createconf_retval_t;
14732715170SCathy Zhou 
14832715170SCathy Zhou typedef struct dlmgmt_openconf_retval_s {
14932715170SCathy Zhou 	uint_t		lr_err;
15032715170SCathy Zhou 	int		lr_confid;
15132715170SCathy Zhou } dlmgmt_openconf_retval_t;
15232715170SCathy Zhou 
15332715170SCathy Zhou typedef struct dlmgmt_getconfsnapshot_retval_s {
15432715170SCathy Zhou 	uint_t		lr_err;
155*640aa5d6SRyan Goodfellow 	uint32_t	lr_nvlsz;
15632715170SCathy Zhou 	/* buffer for nvl */
15732715170SCathy Zhou } dlmgmt_getconfsnapshot_retval_t;
15862ee1d25SArtem Kachitchkine 
1592b24ab6bSSebastien Roy typedef struct dlmgmt_door_zone_s {
1602b24ab6bSSebastien Roy 	int			ld_cmd;
1612b24ab6bSSebastien Roy 	zoneid_t		ld_zoneid;
1622b24ab6bSSebastien Roy } dlmgmt_door_zoneboot_t, dlmgmt_door_zonehalt_t;
1632b24ab6bSSebastien Roy 
164024b0a25Sseb typedef struct dlmgmt_retval_s	dlmgmt_remapid_retval_t,
165024b0a25Sseb 				dlmgmt_upid_retval_t,
166024b0a25Sseb 				dlmgmt_destroyid_retval_t,
167024b0a25Sseb 				dlmgmt_setattr_retval_t,
168024b0a25Sseb 				dlmgmt_unsetattr_retval_t,
169024b0a25Sseb 				dlmgmt_writeconf_retval_t,
170024b0a25Sseb 				dlmgmt_removeconf_retval_t,
1712b24ab6bSSebastien Roy 				dlmgmt_destroyconf_retval_t,
1722b24ab6bSSebastien Roy 				dlmgmt_zoneboot_retval_t,
1732b24ab6bSSebastien Roy 				dlmgmt_zonehalt_retval_t;
174d62bc4baSyz 
175d62bc4baSyz typedef struct dlmgmt_linkid_retval_s	dlmgmt_createid_retval_t;
176d62bc4baSyz 
177d62bc4baSyz #ifdef __cplusplus
178d62bc4baSyz }
179d62bc4baSyz #endif
180d62bc4baSyz 
181d62bc4baSyz #endif /* _LIBDLMGMT_H */
182