xref: /illumos-gate/usr/src/lib/libhotplug/common/libhotplug_impl.h (revision bbf215553c7233fbab8a0afdf1fac74c44781867)
126947304SEvan Yan /*
226947304SEvan Yan  * CDDL HEADER START
326947304SEvan Yan  *
426947304SEvan Yan  * The contents of this file are subject to the terms of the
526947304SEvan Yan  * Common Development and Distribution License (the "License").
626947304SEvan Yan  * You may not use this file except in compliance with the License.
726947304SEvan Yan  *
826947304SEvan Yan  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
926947304SEvan Yan  * or http://www.opensolaris.org/os/licensing.
1026947304SEvan Yan  * See the License for the specific language governing permissions
1126947304SEvan Yan  * and limitations under the License.
1226947304SEvan Yan  *
1326947304SEvan Yan  * When distributing Covered Code, include this CDDL HEADER in each
1426947304SEvan Yan  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1526947304SEvan Yan  * If applicable, add the following below this CDDL HEADER, with the
1626947304SEvan Yan  * fields enclosed by brackets "[]" replaced with your own identifying
1726947304SEvan Yan  * information: Portions Copyright [yyyy] [name of copyright owner]
1826947304SEvan Yan  *
1926947304SEvan Yan  * CDDL HEADER END
2026947304SEvan Yan  */
2126947304SEvan Yan 
2226947304SEvan Yan /*
2326947304SEvan Yan  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
2426947304SEvan Yan  * Use is subject to license terms.
2526947304SEvan Yan  */
2626947304SEvan Yan 
2726947304SEvan Yan #ifndef _LIBHOTPLUG_IMPL_H
2826947304SEvan Yan #define	_LIBHOTPLUG_IMPL_H
2926947304SEvan Yan 
3026947304SEvan Yan #ifdef	__cplusplus
3126947304SEvan Yan extern "C" {
3226947304SEvan Yan #endif
3326947304SEvan Yan 
3426947304SEvan Yan #include <sys/param.h>
3526947304SEvan Yan #include <libhotplug.h>
3626947304SEvan Yan 
3726947304SEvan Yan /*
3826947304SEvan Yan  * Definition of a node in a hotplug information snapshot.
3926947304SEvan Yan  */
4026947304SEvan Yan struct hp_node {
4126947304SEvan Yan 	int		hp_type;
4226947304SEvan Yan 	char		*hp_name;
4326947304SEvan Yan 	char		*hp_usage;
4426947304SEvan Yan 	char		*hp_description;
4526947304SEvan Yan 	char		*hp_basepath;
4626947304SEvan Yan 	int		hp_state;
4726947304SEvan Yan 	time_t		hp_last_change;
4826947304SEvan Yan 	hp_node_t	hp_parent;
4926947304SEvan Yan 	hp_node_t	hp_child;
5026947304SEvan Yan 	hp_node_t	hp_sibling;
5126947304SEvan Yan };
5226947304SEvan Yan 
5326947304SEvan Yan /*
5426947304SEvan Yan  * Definitions used for packing/unpacking snapshots.
5526947304SEvan Yan  */
5626947304SEvan Yan #define	HP_INFO_BASE	"hp_info.basepath"
5726947304SEvan Yan #define	HP_INFO_NODE	"hp_info.node"
5826947304SEvan Yan #define	HP_INFO_BRANCH	"hp_info.branch"
5926947304SEvan Yan #define	HP_INFO_TYPE	"hp_info.type"
6026947304SEvan Yan #define	HP_INFO_NAME	"hp_info.name"
6126947304SEvan Yan #define	HP_INFO_USAGE	"hp_info.usage"
6226947304SEvan Yan #define	HP_INFO_STATE	"hp_info.state"
6326947304SEvan Yan #define	HP_INFO_DESC	"hp_info.description"
6426947304SEvan Yan #define	HP_INFO_TIME	"hp_info.last_change"
6526947304SEvan Yan 
6626947304SEvan Yan /*
67*bbf21555SRichard Lowe  * Definitions for the door interface to hotplugd(8).
6826947304SEvan Yan  */
6926947304SEvan Yan #define	HOTPLUGD_PID	"/var/run/hotplugd.pid"
7026947304SEvan Yan #define	HOTPLUGD_DOOR	"/var/run/hotplugd_door"
7126947304SEvan Yan 
7226947304SEvan Yan typedef enum {
7326947304SEvan Yan 	HP_CMD_NONE = 0,
7426947304SEvan Yan 	HP_CMD_GETINFO,
7526947304SEvan Yan 	HP_CMD_CHANGESTATE,
7626947304SEvan Yan 	HP_CMD_SETPRIVATE,
7726947304SEvan Yan 	HP_CMD_GETPRIVATE
7826947304SEvan Yan } hp_cmd_t;
7926947304SEvan Yan 
8026947304SEvan Yan #define	HPD_CMD		"hp_door.cmd"
8126947304SEvan Yan #define	HPD_PATH	"hp_door.path"
8226947304SEvan Yan #define	HPD_CONNECTION	"hp_door.connection"
8326947304SEvan Yan #define	HPD_FLAGS	"hp_door.flags"
8426947304SEvan Yan #define	HPD_STATE	"hp_door.state"
8526947304SEvan Yan #define	HPD_OPTIONS	"hp_door.options"
8626947304SEvan Yan #define	HPD_INFO	"hp_door.info"
8726947304SEvan Yan #define	HPD_STATUS	"hp_door.status"
8826947304SEvan Yan #define	HPD_SEQNUM	"hp_door.seqnum"
8926947304SEvan Yan 
9026947304SEvan Yan /*
9126947304SEvan Yan  * Definition of macros to validate flags.
9226947304SEvan Yan  */
9326947304SEvan Yan #define	HP_INIT_FLAGS_VALID(f)		((f & ~(HPINFOUSAGE)) == 0)
9426947304SEvan Yan #define	HP_SET_STATE_FLAGS_VALID(f)	((f & ~(HPFORCE | HPQUERY)) == 0)
9526947304SEvan Yan 
9626947304SEvan Yan /*
9726947304SEvan Yan  * Definition of global flag to enable debug.
9826947304SEvan Yan  */
9926947304SEvan Yan extern int	libhotplug_debug;
10026947304SEvan Yan 
10126947304SEvan Yan #ifdef	__cplusplus
10226947304SEvan Yan }
10326947304SEvan Yan #endif
10426947304SEvan Yan 
10526947304SEvan Yan #endif	/* _LIBHOTPLUG_IMPL_H */
106