Print this page
OS-406
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/lib/libdladm/common/libdladm.h
+++ new/usr/src/lib/libdladm/common/libdladm.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
|
↓ open down ↓ |
12 lines elided |
↑ open up ↑ |
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21 /*
22 22 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23 + * Copyright (c) 2011, Joyent, Inc. All rights reserved.
23 24 */
24 25
25 26 #ifndef _LIBDLADM_H
26 27 #define _LIBDLADM_H
27 28
28 29 #include <sys/dls_mgmt.h>
29 30 #include <sys/dld.h>
30 31 #include <sys/dlpi.h>
31 32 #include <libnvpair.h>
32 33
33 34 /*
34 35 * This file includes structures, macros and common routines shared by all
35 36 * data-link administration, and routines which do not directly administrate
36 37 * links. For example, dladm_status2str().
37 38 */
38 39
39 40 #ifdef __cplusplus
40 41 extern "C" {
41 42 #endif
42 43
43 44 #define LINKID_STR_WIDTH 10
44 45 #define DLADM_STRSIZE 256
45 46
46 47 /*
47 48 * option flags taken by the libdladm functions
48 49 *
49 50 * - DLADM_OPT_ACTIVE:
50 51 * The function requests to bringup some configuration that only take
51 52 * effect on active system (not persistent).
52 53 *
53 54 * - DLADM_OPT_PERSIST:
54 55 * The function requests to persist some configuration.
55 56 *
56 57 * - DLADM_OPT_CREATE:
57 58 * Today, only used by dladm_set_secobj() - requests to create a secobj.
58 59 *
59 60 * - DLADM_OPT_FORCE:
60 61 * The function requests to execute a specific operation forcefully.
61 62 *
62 63 * - DLADM_OPT_PREFIX:
63 64 * The function requests to generate a link name using the specified prefix.
|
↓ open down ↓ |
31 lines elided |
↑ open up ↑ |
64 65 *
65 66 * - DLADM_OPT_VLAN:
66 67 * Signifies VLAN creation code path
67 68 *
68 69 * - DLADM_OPT_NOREFRESH:
69 70 * Do not refresh the daemon after setting parameter (used by STP mcheck).
70 71 *
71 72 * - DLADM_OPT_BOOT:
72 73 * Bypass check functions during boot (used by pool property since pools
73 74 * can come up after link properties are set)
75 + *
76 + * - DLADM_OPT_TRANSIENT:
77 + * Indicates that the link assigned to a zone is transient and will be
78 + * removed when the zone shuts down.
74 79 */
75 80 #define DLADM_OPT_ACTIVE 0x00000001
76 81 #define DLADM_OPT_PERSIST 0x00000002
77 82 #define DLADM_OPT_CREATE 0x00000004
78 83 #define DLADM_OPT_FORCE 0x00000008
79 84 #define DLADM_OPT_PREFIX 0x00000010
80 85 #define DLADM_OPT_ANCHOR 0x00000020
81 86 #define DLADM_OPT_VLAN 0x00000040
82 87 #define DLADM_OPT_NOREFRESH 0x00000080
83 88 #define DLADM_OPT_BOOT 0x00000100
89 +#define DLADM_OPT_TRANSIENT 0x00000200
84 90
85 91 #define DLADM_WALK_TERMINATE 0
86 92 #define DLADM_WALK_CONTINUE -1
87 93
88 94 #define DLADM_MAX_ARG_CNT 32
89 95 #define DLADM_MAX_ARG_VALS 64
90 96
91 97 typedef enum {
92 98 DLADM_STATUS_OK = 0,
93 99 DLADM_STATUS_BADARG,
94 100 DLADM_STATUS_FAILED,
95 101 DLADM_STATUS_TOOSMALL,
96 102 DLADM_STATUS_NOTSUP,
97 103 DLADM_STATUS_NOTFOUND,
98 104 DLADM_STATUS_BADVAL,
99 105 DLADM_STATUS_NOMEM,
100 106 DLADM_STATUS_EXIST,
101 107 DLADM_STATUS_LINKINVAL,
102 108 DLADM_STATUS_PROPRDONLY,
103 109 DLADM_STATUS_BADVALCNT,
104 110 DLADM_STATUS_DBNOTFOUND,
105 111 DLADM_STATUS_DENIED,
106 112 DLADM_STATUS_IOERR,
107 113 DLADM_STATUS_TEMPONLY,
108 114 DLADM_STATUS_TIMEDOUT,
109 115 DLADM_STATUS_ISCONN,
110 116 DLADM_STATUS_NOTCONN,
111 117 DLADM_STATUS_REPOSITORYINVAL,
112 118 DLADM_STATUS_MACADDRINVAL,
113 119 DLADM_STATUS_KEYINVAL,
114 120 DLADM_STATUS_INVALIDMACADDRLEN,
115 121 DLADM_STATUS_INVALIDMACADDRTYPE,
116 122 DLADM_STATUS_LINKBUSY,
117 123 DLADM_STATUS_VIDINVAL,
118 124 DLADM_STATUS_NONOTIF,
119 125 DLADM_STATUS_TRYAGAIN,
120 126 DLADM_STATUS_IPTUNTYPE,
121 127 DLADM_STATUS_IPTUNTYPEREQD,
122 128 DLADM_STATUS_BADIPTUNLADDR,
123 129 DLADM_STATUS_BADIPTUNRADDR,
124 130 DLADM_STATUS_ADDRINUSE,
125 131 DLADM_STATUS_BADTIMEVAL,
126 132 DLADM_STATUS_INVALIDMACADDR,
127 133 DLADM_STATUS_INVALIDMACADDRNIC,
128 134 DLADM_STATUS_INVALIDMACADDRINUSE,
129 135 DLADM_STATUS_MACFACTORYSLOTINVALID,
130 136 DLADM_STATUS_MACFACTORYSLOTUSED,
131 137 DLADM_STATUS_MACFACTORYSLOTALLUSED,
132 138 DLADM_STATUS_MACFACTORYNOTSUP,
133 139 DLADM_STATUS_INVALIDMACPREFIX,
134 140 DLADM_STATUS_INVALIDMACPREFIXLEN,
135 141 DLADM_STATUS_BADCPUID,
136 142 DLADM_STATUS_CPUERR,
137 143 DLADM_STATUS_CPUNOTONLINE,
138 144 DLADM_STATUS_BADRANGE,
139 145 DLADM_STATUS_TOOMANYELEMENTS,
140 146 DLADM_STATUS_DB_NOTFOUND,
141 147 DLADM_STATUS_DB_PARSE_ERR,
142 148 DLADM_STATUS_PROP_PARSE_ERR,
143 149 DLADM_STATUS_ATTR_PARSE_ERR,
144 150 DLADM_STATUS_FLOW_DB_ERR,
145 151 DLADM_STATUS_FLOW_DB_OPEN_ERR,
146 152 DLADM_STATUS_FLOW_DB_PARSE_ERR,
147 153 DLADM_STATUS_FLOWPROP_DB_PARSE_ERR,
148 154 DLADM_STATUS_FLOW_ADD_ERR,
149 155 DLADM_STATUS_FLOW_WALK_ERR,
150 156 DLADM_STATUS_FLOW_IDENTICAL,
151 157 DLADM_STATUS_FLOW_INCOMPATIBLE,
152 158 DLADM_STATUS_FLOW_EXISTS,
153 159 DLADM_STATUS_PERSIST_FLOW_EXISTS,
154 160 DLADM_STATUS_INVALID_IP,
155 161 DLADM_STATUS_INVALID_PREFIXLEN,
156 162 DLADM_STATUS_INVALID_PROTOCOL,
157 163 DLADM_STATUS_INVALID_PORT,
158 164 DLADM_STATUS_INVALID_DSF,
159 165 DLADM_STATUS_INVALID_DSFMASK,
160 166 DLADM_STATUS_INVALID_MACMARGIN,
161 167 DLADM_STATUS_NOTDEFINED,
162 168 DLADM_STATUS_BADPROP,
163 169 DLADM_STATUS_MINMAXBW,
164 170 DLADM_STATUS_NO_HWRINGS,
165 171 DLADM_STATUS_PERMONLY,
166 172 DLADM_STATUS_OPTMISSING,
167 173 DLADM_STATUS_POOLCPU,
168 174 DLADM_STATUS_INVALID_PORT_INSTANCE,
169 175 DLADM_STATUS_PORT_IS_DOWN,
170 176 DLADM_STATUS_PKEY_NOT_PRESENT,
171 177 DLADM_STATUS_PARTITION_EXISTS,
172 178 DLADM_STATUS_INVALID_PKEY,
173 179 DLADM_STATUS_NO_IB_HW_RESOURCE,
174 180 DLADM_STATUS_INVALID_PKEY_TBL_SIZE,
175 181 DLADM_STATUS_PORT_NOPROTO,
176 182 DLADM_STATUS_INVALID_MTU
177 183 } dladm_status_t;
178 184
179 185 typedef enum {
180 186 DLADM_TYPE_STR,
181 187 DLADM_TYPE_BOOLEAN,
182 188 DLADM_TYPE_UINT64
183 189 } dladm_datatype_t;
184 190
185 191 typedef struct {
186 192 boolean_t ds_readonly;
187 193 union {
188 194 int dsu_confid;
189 195 nvlist_t *dsu_nvl;
190 196 } ds_u;
191 197 } dladm_conf_t;
192 198
193 199 #define ds_confid ds_u.dsu_confid
194 200 #define ds_nvl ds_u.dsu_nvl
195 201
196 202 #define DLADM_INVALID_CONF 0
197 203
198 204 /* opaque dladm handle to libdladm functions */
199 205 struct dladm_handle;
200 206 typedef struct dladm_handle *dladm_handle_t;
201 207
202 208 /* open/close handle */
203 209 extern dladm_status_t dladm_open(dladm_handle_t *);
204 210 extern void dladm_close(dladm_handle_t);
205 211
206 212 /*
207 213 * retrieve the dld file descriptor from handle, only libdladm and
208 214 * dlmgmtd are given access to the door file descriptor.
209 215 */
210 216 extern int dladm_dld_fd(dladm_handle_t);
211 217
212 218 typedef struct dladm_arg_info {
213 219 const char *ai_name;
214 220 char *ai_val[DLADM_MAX_ARG_VALS];
215 221 uint_t ai_count;
216 222 } dladm_arg_info_t;
217 223
218 224 typedef struct dladm_arg_list {
219 225 dladm_arg_info_t al_info[DLADM_MAX_ARG_CNT];
220 226 uint_t al_count;
221 227 char *al_buf;
222 228 } dladm_arg_list_t;
223 229
224 230 typedef enum {
225 231 DLADM_LOGTYPE_LINK = 1,
226 232 DLADM_LOGTYPE_FLOW
227 233 } dladm_logtype_t;
228 234
229 235 typedef struct dladm_usage {
230 236 char du_name[MAXLINKNAMELEN];
231 237 uint64_t du_duration;
232 238 uint64_t du_stime;
233 239 uint64_t du_etime;
234 240 uint64_t du_ipackets;
235 241 uint64_t du_rbytes;
236 242 uint64_t du_opackets;
237 243 uint64_t du_obytes;
238 244 uint64_t du_bandwidth;
239 245 boolean_t du_last;
240 246 } dladm_usage_t;
241 247
242 248 extern const char *dladm_status2str(dladm_status_t, char *);
243 249 extern dladm_status_t dladm_set_rootdir(const char *);
244 250 extern const char *dladm_class2str(datalink_class_t, char *);
245 251 extern const char *dladm_media2str(uint32_t, char *);
246 252 extern uint32_t dladm_str2media(const char *);
247 253 extern boolean_t dladm_valid_linkname(const char *);
248 254 extern boolean_t dladm_str2interval(char *, uint32_t *);
249 255 extern dladm_status_t dladm_str2bw(char *, uint64_t *);
250 256 extern const char *dladm_bw2str(int64_t, char *);
251 257 extern dladm_status_t dladm_str2pri(char *, mac_priority_level_t *);
252 258 extern const char *dladm_pri2str(mac_priority_level_t, char *);
253 259 extern dladm_status_t dladm_str2protect(char *, uint32_t *);
254 260 extern const char *dladm_protect2str(uint32_t, char *);
255 261 extern dladm_status_t dladm_str2ipv4addr(char *, void *);
256 262 extern const char *dladm_ipv4addr2str(void *, char *);
257 263 extern dladm_status_t dladm_str2ipv6addr(char *, void *);
258 264 extern const char *dladm_ipv6addr2str(void *, char *);
259 265
260 266 extern dladm_status_t dladm_parse_flow_props(char *, dladm_arg_list_t **,
261 267 boolean_t);
262 268 extern dladm_status_t dladm_parse_link_props(char *, dladm_arg_list_t **,
263 269 boolean_t);
264 270 extern void dladm_free_props(dladm_arg_list_t *);
265 271 extern dladm_status_t dladm_parse_flow_attrs(char *, dladm_arg_list_t **,
266 272 boolean_t);
267 273 extern void dladm_free_attrs(dladm_arg_list_t *);
268 274
269 275 extern dladm_status_t dladm_start_usagelog(dladm_handle_t, dladm_logtype_t,
270 276 uint_t);
271 277 extern dladm_status_t dladm_stop_usagelog(dladm_handle_t, dladm_logtype_t);
272 278 extern dladm_status_t dladm_walk_usage_res(int (*)(dladm_usage_t *, void *),
273 279 int, char *, char *, char *, char *, void *);
274 280 extern dladm_status_t dladm_walk_usage_time(int (*)(dladm_usage_t *, void *),
275 281 int, char *, char *, char *, void *);
276 282 extern dladm_status_t dladm_usage_summary(int (*)(dladm_usage_t *, void *),
277 283 int, char *, void *);
278 284 extern dladm_status_t dladm_usage_dates(int (*)(dladm_usage_t *, void *),
279 285 int, char *, char *, void *);
280 286 extern dladm_status_t dladm_zone_boot(dladm_handle_t, zoneid_t);
281 287 extern dladm_status_t dladm_zone_halt(dladm_handle_t, zoneid_t);
282 288
283 289 extern dladm_status_t dladm_strs2range(char **, uint_t, mac_propval_type_t,
284 290 mac_propval_range_t **);
285 291 extern dladm_status_t dladm_range2list(mac_propval_range_t *, void*,
286 292 uint_t *);
287 293 extern int dladm_range2strs(mac_propval_range_t *, char **);
288 294 extern dladm_status_t dladm_list2range(void *, uint_t, mac_propval_type_t,
289 295 mac_propval_range_t **);
290 296
291 297 #ifdef __cplusplus
292 298 }
293 299 #endif
294 300
295 301 #endif /* _LIBDLADM_H */
|
↓ open down ↓ |
202 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX