]>
Commit | Line | Data |
---|---|---|
46e18b3f GB |
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); |