xref: /titanic_53/usr/src/cmd/rmvolmgr/rmm_common.h (revision b941d3fc4e70b4411341c7aeb53517bbff5f2df4)
118c2aff7Sartem /*
218c2aff7Sartem  * CDDL HEADER START
318c2aff7Sartem  *
418c2aff7Sartem  * The contents of this file are subject to the terms of the
518c2aff7Sartem  * Common Development and Distribution License (the "License").
618c2aff7Sartem  * You may not use this file except in compliance with the License.
718c2aff7Sartem  *
818c2aff7Sartem  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
918c2aff7Sartem  * or http://www.opensolaris.org/os/licensing.
1018c2aff7Sartem  * See the License for the specific language governing permissions
1118c2aff7Sartem  * and limitations under the License.
1218c2aff7Sartem  *
1318c2aff7Sartem  * When distributing Covered Code, include this CDDL HEADER in each
1418c2aff7Sartem  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1518c2aff7Sartem  * If applicable, add the following below this CDDL HEADER, with the
1618c2aff7Sartem  * fields enclosed by brackets "[]" replaced with your own identifying
1718c2aff7Sartem  * information: Portions Copyright [yyyy] [name of copyright owner]
1818c2aff7Sartem  *
1918c2aff7Sartem  * CDDL HEADER END
2018c2aff7Sartem  */
2118c2aff7Sartem /*
22*b941d3fcSartem  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
2318c2aff7Sartem  * Use is subject to license terms.
2418c2aff7Sartem  */
2518c2aff7Sartem 
2618c2aff7Sartem #ifndef	_COMMON_H
2718c2aff7Sartem #define	_COMMON_H
2818c2aff7Sartem 
2918c2aff7Sartem #pragma ident	"%Z%%M%	%I%	%E% SMI"
3018c2aff7Sartem 
3118c2aff7Sartem #ifdef	__cplusplus
3218c2aff7Sartem extern "C" {
3318c2aff7Sartem #endif
3418c2aff7Sartem 
3518c2aff7Sartem #include <sys/types.h>
3618c2aff7Sartem #include <unistd.h>
3718c2aff7Sartem #include <zone.h>
3818c2aff7Sartem 
3918c2aff7Sartem #include <glib.h>
4018c2aff7Sartem #include <libhal.h>
4118c2aff7Sartem #include <libhal-storage.h>
4218c2aff7Sartem 
4318c2aff7Sartem #include "vold.h"
4418c2aff7Sartem 
4518c2aff7Sartem typedef enum {
4618c2aff7Sartem 	RMM_EOK = 0,
4718c2aff7Sartem 	RMM_EDBUS_CONNECT,	/* cannot connect to DBUS */
4818c2aff7Sartem 	RMM_EHAL_CONNECT	/* cannot connect to HAL */
4918c2aff7Sartem } rmm_error_t;
5018c2aff7Sartem 
510ebe3100Sartem enum {
520ebe3100Sartem 	RMM_PRINT_MOUNTABLE	= 0x1,
530ebe3100Sartem 	RMM_PRINT_EJECTABLE	= 0x2
540ebe3100Sartem };
550ebe3100Sartem 
56*b941d3fcSartem /* D-Bus timeout in milliseconds */
57*b941d3fcSartem enum {
58*b941d3fcSartem 	RMM_MOUNT_TIMEOUT	= 60000,
59*b941d3fcSartem 	RMM_UNMOUNT_TIMEOUT	= 60000,
60*b941d3fcSartem 	RMM_EJECT_TIMEOUT	= 60000,
61*b941d3fcSartem 	RMM_CLOSETRAY_TIMEOUT	= 60000
62*b941d3fcSartem };
63*b941d3fcSartem 
6418c2aff7Sartem #define	HAL_BRANCH_LOCAL	"/org/freedesktop/Hal/devices/local"
6518c2aff7Sartem 
6618c2aff7Sartem #define	NELEM(a)	(sizeof (a) / sizeof (*(a)))
6718c2aff7Sartem 
6818c2aff7Sartem extern char *progname;
6918c2aff7Sartem 
7018c2aff7Sartem LibHalContext	*rmm_hal_init(LibHalDeviceAdded, LibHalDeviceRemoved,
7118c2aff7Sartem 		LibHalDevicePropertyModified, DBusError *, rmm_error_t *);
7218c2aff7Sartem void		rmm_hal_fini(LibHalContext *hal_ctx);
7318c2aff7Sartem 
7418c2aff7Sartem LibHalDrive	*rmm_hal_volume_find(LibHalContext *, const char *,
7518c2aff7Sartem 		DBusError *, GSList **);
7618c2aff7Sartem LibHalDrive	*rmm_hal_volume_find_default(LibHalContext *, DBusError *,
7718c2aff7Sartem 		const char **, GSList **);
7818c2aff7Sartem LibHalDrive	*rmm_hal_volume_findby(LibHalContext *, const char *,
7918c2aff7Sartem 		const char *, GSList **);
8018c2aff7Sartem LibHalDrive	*rmm_hal_volume_findby_nickname(LibHalContext *, const char *,
8118c2aff7Sartem 		GSList **);
820ebe3100Sartem void		rmm_print_volume_nicknames(LibHalContext *, DBusError *, int);
8318c2aff7Sartem void		rmm_volumes_free(GSList *);
8418c2aff7Sartem 
8518c2aff7Sartem boolean_t	rmm_hal_mount(LibHalContext *, const char *,
8618c2aff7Sartem 		char **, int, char *, DBusError *);
8718c2aff7Sartem boolean_t	rmm_hal_unmount(LibHalContext *, const char *, DBusError *);
8818c2aff7Sartem boolean_t	rmm_hal_eject(LibHalContext *, const char *, DBusError *);
8918c2aff7Sartem boolean_t	rmm_hal_closetray(LibHalContext *, const char *, DBusError *);
9018c2aff7Sartem boolean_t	rmm_hal_rescan(LibHalContext *, const char *, DBusError *);
9118c2aff7Sartem boolean_t	rmm_hal_claim_branch(LibHalContext *, const char *);
9218c2aff7Sartem boolean_t	rmm_hal_unclaim_branch(LibHalContext *, const char *);
9318c2aff7Sartem 
9418c2aff7Sartem boolean_t	rmm_action(LibHalContext *, const char *name, action_t action,
9518c2aff7Sartem 		struct action_arg *aap, char **, int, char *);
9618c2aff7Sartem boolean_t	rmm_rescan(LibHalContext *, const char *, boolean_t);
9718c2aff7Sartem 
9818c2aff7Sartem void		rmm_update_vold_mountpoints(LibHalContext *, const char *,
9918c2aff7Sartem 		struct action_arg *);
10018c2aff7Sartem 
10118c2aff7Sartem boolean_t	rmm_volume_aa_from_prop(LibHalContext *, const char *,
10218c2aff7Sartem 		LibHalVolume *, struct action_arg *);
10318c2aff7Sartem void		rmm_volume_aa_update_mountpoint(LibHalContext *, const char *,
10418c2aff7Sartem 		struct action_arg *aap);
10518c2aff7Sartem void		rmm_volume_aa_free(struct action_arg *);
10618c2aff7Sartem 
10718c2aff7Sartem char		*rmm_get_mnttab_mount_point(const char *);
10818c2aff7Sartem const char	*rmm_strerror(DBusError *, int);
10918c2aff7Sartem void		rmm_dbus_error_free(DBusError *);
11018c2aff7Sartem 
11118c2aff7Sartem char		*rmm_vold_convert_volume_label(const char *name, size_t len);
11218c2aff7Sartem int		makepath(char *, mode_t);
11318c2aff7Sartem void		dprintf(const char *, ...);
11418c2aff7Sartem 
11518c2aff7Sartem #ifdef	__cplusplus
11618c2aff7Sartem }
11718c2aff7Sartem #endif
11818c2aff7Sartem 
11918c2aff7Sartem #endif	/* _COMMON_H */
120