Add -p switch to "zpool get"
[zfs.git] / lib / libshare / libshare_impl.h
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21
22 /*
23  * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
24  * Copyright (c) 2011 Gunnar Beutner
25  */
26
27 struct sa_handle_impl;
28
29 typedef struct sa_share_fsinfo {
30         boolean_t active;
31         char *resource;
32         char *shareopts;
33 } sa_share_fsinfo_t;
34
35 typedef struct sa_share_impl {
36         struct sa_share_impl *next;
37
38         struct sa_handle_impl *handle;
39
40         char *sharepath;
41         char *dataset;
42
43         sa_share_fsinfo_t *fsinfo; /* per-fstype information */
44 } *sa_share_impl_t;
45
46 #define FSINFO(impl_share, fstype) (&(impl_share->fsinfo[fstype->fsinfo_index]))
47
48 typedef struct sa_share_ops {
49         int (*enable_share)(sa_share_impl_t share);
50         int (*disable_share)(sa_share_impl_t share);
51         int (*validate_shareopts)(const char *shareopts);
52         int (*update_shareopts)(sa_share_impl_t impl_share,
53             const char *resource, const char *shareopts);
54         void (*clear_shareopts)(sa_share_impl_t impl_share);
55 } sa_share_ops_t;
56
57 typedef struct sa_fstype {
58         struct sa_fstype *next;
59
60         const char *name;
61         const sa_share_ops_t *ops;
62         int fsinfo_index;
63 } sa_fstype_t;
64
65 typedef struct sa_handle_impl {
66         libzfs_handle_t *zfs_libhandle;
67         sa_share_impl_t shares;
68 } *sa_handle_impl_t;
69
70 sa_fstype_t *register_fstype(const char *name, const sa_share_ops_t *ops);