xref: /titanic_54/usr/src/common/nvpair/fnvpair.c (revision 53089ab7c84db6fb76c16ca50076c147cda11757)
1*53089ab7Seschrock /*
2*53089ab7Seschrock  * CDDL HEADER START
3*53089ab7Seschrock  *
4*53089ab7Seschrock  * The contents of this file are subject to the terms of the
5*53089ab7Seschrock  * Common Development and Distribution License (the "License").
6*53089ab7Seschrock  * You may not use this file except in compliance with the License.
7*53089ab7Seschrock  *
8*53089ab7Seschrock  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*53089ab7Seschrock  * or http://www.opensolaris.org/os/licensing.
10*53089ab7Seschrock  * See the License for the specific language governing permissions
11*53089ab7Seschrock  * and limitations under the License.
12*53089ab7Seschrock  *
13*53089ab7Seschrock  * When distributing Covered Code, include this CDDL HEADER in each
14*53089ab7Seschrock  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*53089ab7Seschrock  * If applicable, add the following below this CDDL HEADER, with the
16*53089ab7Seschrock  * fields enclosed by brackets "[]" replaced with your own identifying
17*53089ab7Seschrock  * information: Portions Copyright [yyyy] [name of copyright owner]
18*53089ab7Seschrock  *
19*53089ab7Seschrock  * CDDL HEADER END
20*53089ab7Seschrock  */
21*53089ab7Seschrock 
22*53089ab7Seschrock /*
23*53089ab7Seschrock  * Copyright (c) 2012 by Delphix. All rights reserved.
24*53089ab7Seschrock  */
25*53089ab7Seschrock 
26*53089ab7Seschrock #include <sys/nvpair.h>
27*53089ab7Seschrock #include <sys/kmem.h>
28*53089ab7Seschrock #include <sys/debug.h>
29*53089ab7Seschrock #ifndef _KERNEL
30*53089ab7Seschrock #include <stdlib.h>
31*53089ab7Seschrock #endif
32*53089ab7Seschrock 
33*53089ab7Seschrock /*
34*53089ab7Seschrock  * "Force" nvlist wrapper.
35*53089ab7Seschrock  *
36*53089ab7Seschrock  * These functions wrap the nvlist_* functions with assertions that assume
37*53089ab7Seschrock  * the operation is successful.  This allows the caller's code to be much
38*53089ab7Seschrock  * more readable, especially for the fnvlist_lookup_* and fnvpair_value_*
39*53089ab7Seschrock  * functions, which can return the requested value (rather than filling in
40*53089ab7Seschrock  * a pointer).
41*53089ab7Seschrock  *
42*53089ab7Seschrock  * These functions use NV_UNIQUE_NAME, encoding NV_ENCODE_NATIVE, and allocate
43*53089ab7Seschrock  * with KM_SLEEP.
44*53089ab7Seschrock  *
45*53089ab7Seschrock  * More wrappers should be added as needed -- for example
46*53089ab7Seschrock  * nvlist_lookup_*_array and nvpair_value_*_array.
47*53089ab7Seschrock  */
48*53089ab7Seschrock 
49*53089ab7Seschrock nvlist_t *
50*53089ab7Seschrock fnvlist_alloc(void)
51*53089ab7Seschrock {
52*53089ab7Seschrock 	nvlist_t *nvl;
53*53089ab7Seschrock 	VERIFY3U(nvlist_alloc(&nvl, NV_UNIQUE_NAME, KM_SLEEP), ==, 0);
54*53089ab7Seschrock 	return (nvl);
55*53089ab7Seschrock }
56*53089ab7Seschrock 
57*53089ab7Seschrock void
58*53089ab7Seschrock fnvlist_free(nvlist_t *nvl)
59*53089ab7Seschrock {
60*53089ab7Seschrock 	nvlist_free(nvl);
61*53089ab7Seschrock }
62*53089ab7Seschrock 
63*53089ab7Seschrock size_t
64*53089ab7Seschrock fnvlist_size(nvlist_t *nvl)
65*53089ab7Seschrock {
66*53089ab7Seschrock 	size_t size;
67*53089ab7Seschrock 	VERIFY3U(nvlist_size(nvl, &size, NV_ENCODE_NATIVE), ==, 0);
68*53089ab7Seschrock 	return (size);
69*53089ab7Seschrock }
70*53089ab7Seschrock 
71*53089ab7Seschrock /*
72*53089ab7Seschrock  * Returns allocated buffer of size *sizep.  Caller must free the buffer with
73*53089ab7Seschrock  * fnvlist_pack_free().
74*53089ab7Seschrock  */
75*53089ab7Seschrock char *
76*53089ab7Seschrock fnvlist_pack(nvlist_t *nvl, size_t *sizep)
77*53089ab7Seschrock {
78*53089ab7Seschrock 	char *packed = 0;
79*53089ab7Seschrock 	VERIFY3U(nvlist_pack(nvl, &packed, sizep, NV_ENCODE_NATIVE,
80*53089ab7Seschrock 	    KM_SLEEP), ==, 0);
81*53089ab7Seschrock 	return (packed);
82*53089ab7Seschrock }
83*53089ab7Seschrock 
84*53089ab7Seschrock /*ARGSUSED*/
85*53089ab7Seschrock void
86*53089ab7Seschrock fnvlist_pack_free(char *pack, size_t size)
87*53089ab7Seschrock {
88*53089ab7Seschrock #ifdef _KERNEL
89*53089ab7Seschrock 	kmem_free(pack, size);
90*53089ab7Seschrock #else
91*53089ab7Seschrock 	free(pack);
92*53089ab7Seschrock #endif
93*53089ab7Seschrock }
94*53089ab7Seschrock 
95*53089ab7Seschrock nvlist_t *
96*53089ab7Seschrock fnvlist_unpack(char *buf, size_t buflen)
97*53089ab7Seschrock {
98*53089ab7Seschrock 	nvlist_t *rv;
99*53089ab7Seschrock 	VERIFY3U(nvlist_unpack(buf, buflen, &rv, KM_SLEEP), ==, 0);
100*53089ab7Seschrock 	return (rv);
101*53089ab7Seschrock }
102*53089ab7Seschrock 
103*53089ab7Seschrock nvlist_t *
104*53089ab7Seschrock fnvlist_dup(nvlist_t *nvl)
105*53089ab7Seschrock {
106*53089ab7Seschrock 	nvlist_t *rv;
107*53089ab7Seschrock 	VERIFY3U(nvlist_dup(nvl, &rv, KM_SLEEP), ==, 0);
108*53089ab7Seschrock 	return (rv);
109*53089ab7Seschrock }
110*53089ab7Seschrock 
111*53089ab7Seschrock void
112*53089ab7Seschrock fnvlist_merge(nvlist_t *dst, nvlist_t *src)
113*53089ab7Seschrock {
114*53089ab7Seschrock 	VERIFY3U(nvlist_merge(dst, src, KM_SLEEP), ==, 0);
115*53089ab7Seschrock }
116*53089ab7Seschrock 
117*53089ab7Seschrock void
118*53089ab7Seschrock fnvlist_add_boolean(nvlist_t *nvl, const char *name)
119*53089ab7Seschrock {
120*53089ab7Seschrock 	VERIFY3U(nvlist_add_boolean(nvl, name), ==, 0);
121*53089ab7Seschrock }
122*53089ab7Seschrock 
123*53089ab7Seschrock void
124*53089ab7Seschrock fnvlist_add_boolean_value(nvlist_t *nvl, const char *name, boolean_t val)
125*53089ab7Seschrock {
126*53089ab7Seschrock 	VERIFY3U(nvlist_add_boolean_value(nvl, name, val), ==, 0);
127*53089ab7Seschrock }
128*53089ab7Seschrock 
129*53089ab7Seschrock void
130*53089ab7Seschrock fnvlist_add_byte(nvlist_t *nvl, const char *name, uchar_t val)
131*53089ab7Seschrock {
132*53089ab7Seschrock 	VERIFY3U(nvlist_add_byte(nvl, name, val), ==, 0);
133*53089ab7Seschrock }
134*53089ab7Seschrock 
135*53089ab7Seschrock void
136*53089ab7Seschrock fnvlist_add_int8(nvlist_t *nvl, const char *name, int8_t val)
137*53089ab7Seschrock {
138*53089ab7Seschrock 	VERIFY3U(nvlist_add_int8(nvl, name, val), ==, 0);
139*53089ab7Seschrock }
140*53089ab7Seschrock 
141*53089ab7Seschrock void
142*53089ab7Seschrock fnvlist_add_uint8(nvlist_t *nvl, const char *name, uint8_t val)
143*53089ab7Seschrock {
144*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint8(nvl, name, val), ==, 0);
145*53089ab7Seschrock }
146*53089ab7Seschrock 
147*53089ab7Seschrock void
148*53089ab7Seschrock fnvlist_add_int16(nvlist_t *nvl, const char *name, int16_t val)
149*53089ab7Seschrock {
150*53089ab7Seschrock 	VERIFY3U(nvlist_add_int16(nvl, name, val), ==, 0);
151*53089ab7Seschrock }
152*53089ab7Seschrock 
153*53089ab7Seschrock void
154*53089ab7Seschrock fnvlist_add_uint16(nvlist_t *nvl, const char *name, uint16_t val)
155*53089ab7Seschrock {
156*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint16(nvl, name, val), ==, 0);
157*53089ab7Seschrock }
158*53089ab7Seschrock 
159*53089ab7Seschrock void
160*53089ab7Seschrock fnvlist_add_int32(nvlist_t *nvl, const char *name, int32_t val)
161*53089ab7Seschrock {
162*53089ab7Seschrock 	VERIFY3U(nvlist_add_int32(nvl, name, val), ==, 0);
163*53089ab7Seschrock }
164*53089ab7Seschrock 
165*53089ab7Seschrock void
166*53089ab7Seschrock fnvlist_add_uint32(nvlist_t *nvl, const char *name, uint32_t val)
167*53089ab7Seschrock {
168*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint32(nvl, name, val), ==, 0);
169*53089ab7Seschrock }
170*53089ab7Seschrock 
171*53089ab7Seschrock void
172*53089ab7Seschrock fnvlist_add_int64(nvlist_t *nvl, const char *name, int64_t val)
173*53089ab7Seschrock {
174*53089ab7Seschrock 	VERIFY3U(nvlist_add_int64(nvl, name, val), ==, 0);
175*53089ab7Seschrock }
176*53089ab7Seschrock 
177*53089ab7Seschrock void
178*53089ab7Seschrock fnvlist_add_uint64(nvlist_t *nvl, const char *name, uint64_t val)
179*53089ab7Seschrock {
180*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint64(nvl, name, val), ==, 0);
181*53089ab7Seschrock }
182*53089ab7Seschrock 
183*53089ab7Seschrock void
184*53089ab7Seschrock fnvlist_add_string(nvlist_t *nvl, const char *name, const char *val)
185*53089ab7Seschrock {
186*53089ab7Seschrock 	VERIFY3U(nvlist_add_string(nvl, name, val), ==, 0);
187*53089ab7Seschrock }
188*53089ab7Seschrock 
189*53089ab7Seschrock void
190*53089ab7Seschrock fnvlist_add_nvlist(nvlist_t *nvl, const char *name, nvlist_t *val)
191*53089ab7Seschrock {
192*53089ab7Seschrock 	VERIFY3U(nvlist_add_nvlist(nvl, name, val), ==, 0);
193*53089ab7Seschrock }
194*53089ab7Seschrock 
195*53089ab7Seschrock void
196*53089ab7Seschrock fnvlist_add_nvpair(nvlist_t *nvl, nvpair_t *pair)
197*53089ab7Seschrock {
198*53089ab7Seschrock 	VERIFY3U(nvlist_add_nvpair(nvl, pair), ==, 0);
199*53089ab7Seschrock }
200*53089ab7Seschrock 
201*53089ab7Seschrock void
202*53089ab7Seschrock fnvlist_add_boolean_array(nvlist_t *nvl, const char *name,
203*53089ab7Seschrock     boolean_t *val, uint_t n)
204*53089ab7Seschrock {
205*53089ab7Seschrock 	VERIFY3U(nvlist_add_boolean_array(nvl, name, val, n), ==, 0);
206*53089ab7Seschrock }
207*53089ab7Seschrock 
208*53089ab7Seschrock void
209*53089ab7Seschrock fnvlist_add_byte_array(nvlist_t *nvl, const char *name, uchar_t *val, uint_t n)
210*53089ab7Seschrock {
211*53089ab7Seschrock 	VERIFY3U(nvlist_add_byte_array(nvl, name, val, n), ==, 0);
212*53089ab7Seschrock }
213*53089ab7Seschrock 
214*53089ab7Seschrock void
215*53089ab7Seschrock fnvlist_add_int8_array(nvlist_t *nvl, const char *name, int8_t *val, uint_t n)
216*53089ab7Seschrock {
217*53089ab7Seschrock 	VERIFY3U(nvlist_add_int8_array(nvl, name, val, n), ==, 0);
218*53089ab7Seschrock }
219*53089ab7Seschrock 
220*53089ab7Seschrock void
221*53089ab7Seschrock fnvlist_add_uint8_array(nvlist_t *nvl, const char *name, uint8_t *val, uint_t n)
222*53089ab7Seschrock {
223*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint8_array(nvl, name, val, n), ==, 0);
224*53089ab7Seschrock }
225*53089ab7Seschrock 
226*53089ab7Seschrock void
227*53089ab7Seschrock fnvlist_add_int16_array(nvlist_t *nvl, const char *name, int16_t *val, uint_t n)
228*53089ab7Seschrock {
229*53089ab7Seschrock 	VERIFY3U(nvlist_add_int16_array(nvl, name, val, n), ==, 0);
230*53089ab7Seschrock }
231*53089ab7Seschrock 
232*53089ab7Seschrock void
233*53089ab7Seschrock fnvlist_add_uint16_array(nvlist_t *nvl, const char *name,
234*53089ab7Seschrock     uint16_t *val, uint_t n)
235*53089ab7Seschrock {
236*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint16_array(nvl, name, val, n), ==, 0);
237*53089ab7Seschrock }
238*53089ab7Seschrock 
239*53089ab7Seschrock void
240*53089ab7Seschrock fnvlist_add_int32_array(nvlist_t *nvl, const char *name, int32_t *val, uint_t n)
241*53089ab7Seschrock {
242*53089ab7Seschrock 	VERIFY3U(nvlist_add_int32_array(nvl, name, val, n), ==, 0);
243*53089ab7Seschrock }
244*53089ab7Seschrock 
245*53089ab7Seschrock void
246*53089ab7Seschrock fnvlist_add_uint32_array(nvlist_t *nvl, const char *name,
247*53089ab7Seschrock     uint32_t *val, uint_t n)
248*53089ab7Seschrock {
249*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint32_array(nvl, name, val, n), ==, 0);
250*53089ab7Seschrock }
251*53089ab7Seschrock 
252*53089ab7Seschrock void
253*53089ab7Seschrock fnvlist_add_int64_array(nvlist_t *nvl, const char *name, int64_t *val, uint_t n)
254*53089ab7Seschrock {
255*53089ab7Seschrock 	VERIFY3U(nvlist_add_int64_array(nvl, name, val, n), ==, 0);
256*53089ab7Seschrock }
257*53089ab7Seschrock 
258*53089ab7Seschrock void
259*53089ab7Seschrock fnvlist_add_uint64_array(nvlist_t *nvl, const char *name,
260*53089ab7Seschrock     uint64_t *val, uint_t n)
261*53089ab7Seschrock {
262*53089ab7Seschrock 	VERIFY3U(nvlist_add_uint64_array(nvl, name, val, n), ==, 0);
263*53089ab7Seschrock }
264*53089ab7Seschrock 
265*53089ab7Seschrock void
266*53089ab7Seschrock fnvlist_add_string_array(nvlist_t *nvl, const char *name,
267*53089ab7Seschrock     char * const *val, uint_t n)
268*53089ab7Seschrock {
269*53089ab7Seschrock 	VERIFY3U(nvlist_add_string_array(nvl, name, val, n), ==, 0);
270*53089ab7Seschrock }
271*53089ab7Seschrock 
272*53089ab7Seschrock void
273*53089ab7Seschrock fnvlist_add_nvlist_array(nvlist_t *nvl, const char *name,
274*53089ab7Seschrock     nvlist_t **val, uint_t n)
275*53089ab7Seschrock {
276*53089ab7Seschrock 	VERIFY3U(nvlist_add_nvlist_array(nvl, name, val, n), ==, 0);
277*53089ab7Seschrock }
278*53089ab7Seschrock 
279*53089ab7Seschrock void
280*53089ab7Seschrock fnvlist_remove(nvlist_t *nvl, const char *name)
281*53089ab7Seschrock {
282*53089ab7Seschrock 	VERIFY3U(nvlist_remove_all(nvl, name), ==, 0);
283*53089ab7Seschrock }
284*53089ab7Seschrock 
285*53089ab7Seschrock void
286*53089ab7Seschrock fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair)
287*53089ab7Seschrock {
288*53089ab7Seschrock 	VERIFY3U(nvlist_remove_nvpair(nvl, pair), ==, 0);
289*53089ab7Seschrock }
290*53089ab7Seschrock 
291*53089ab7Seschrock nvpair_t *
292*53089ab7Seschrock fnvlist_lookup_nvpair(nvlist_t *nvl, const char *name)
293*53089ab7Seschrock {
294*53089ab7Seschrock 	nvpair_t *rv;
295*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_nvpair(nvl, name, &rv), ==, 0);
296*53089ab7Seschrock 	return (rv);
297*53089ab7Seschrock }
298*53089ab7Seschrock 
299*53089ab7Seschrock /* returns B_TRUE if the entry exists */
300*53089ab7Seschrock boolean_t
301*53089ab7Seschrock fnvlist_lookup_boolean(nvlist_t *nvl, const char *name)
302*53089ab7Seschrock {
303*53089ab7Seschrock 	return (nvlist_lookup_boolean(nvl, name) == 0);
304*53089ab7Seschrock }
305*53089ab7Seschrock 
306*53089ab7Seschrock boolean_t
307*53089ab7Seschrock fnvlist_lookup_boolean_value(nvlist_t *nvl, const char *name)
308*53089ab7Seschrock {
309*53089ab7Seschrock 	boolean_t rv;
310*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_boolean_value(nvl, name, &rv), ==, 0);
311*53089ab7Seschrock 	return (rv);
312*53089ab7Seschrock }
313*53089ab7Seschrock 
314*53089ab7Seschrock uchar_t
315*53089ab7Seschrock fnvlist_lookup_byte(nvlist_t *nvl, const char *name)
316*53089ab7Seschrock {
317*53089ab7Seschrock 	uchar_t rv;
318*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_byte(nvl, name, &rv), ==, 0);
319*53089ab7Seschrock 	return (rv);
320*53089ab7Seschrock }
321*53089ab7Seschrock 
322*53089ab7Seschrock int8_t
323*53089ab7Seschrock fnvlist_lookup_int8(nvlist_t *nvl, const char *name)
324*53089ab7Seschrock {
325*53089ab7Seschrock 	int8_t rv;
326*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_int8(nvl, name, &rv), ==, 0);
327*53089ab7Seschrock 	return (rv);
328*53089ab7Seschrock }
329*53089ab7Seschrock 
330*53089ab7Seschrock int16_t
331*53089ab7Seschrock fnvlist_lookup_int16(nvlist_t *nvl, const char *name)
332*53089ab7Seschrock {
333*53089ab7Seschrock 	int16_t rv;
334*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_int16(nvl, name, &rv), ==, 0);
335*53089ab7Seschrock 	return (rv);
336*53089ab7Seschrock }
337*53089ab7Seschrock 
338*53089ab7Seschrock int32_t
339*53089ab7Seschrock fnvlist_lookup_int32(nvlist_t *nvl, const char *name)
340*53089ab7Seschrock {
341*53089ab7Seschrock 	int32_t rv;
342*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_int32(nvl, name, &rv), ==, 0);
343*53089ab7Seschrock 	return (rv);
344*53089ab7Seschrock }
345*53089ab7Seschrock 
346*53089ab7Seschrock int64_t
347*53089ab7Seschrock fnvlist_lookup_int64(nvlist_t *nvl, const char *name)
348*53089ab7Seschrock {
349*53089ab7Seschrock 	int64_t rv;
350*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_int64(nvl, name, &rv), ==, 0);
351*53089ab7Seschrock 	return (rv);
352*53089ab7Seschrock }
353*53089ab7Seschrock 
354*53089ab7Seschrock uint8_t
355*53089ab7Seschrock fnvlist_lookup_uint8_t(nvlist_t *nvl, const char *name)
356*53089ab7Seschrock {
357*53089ab7Seschrock 	uint8_t rv;
358*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_uint8(nvl, name, &rv), ==, 0);
359*53089ab7Seschrock 	return (rv);
360*53089ab7Seschrock }
361*53089ab7Seschrock 
362*53089ab7Seschrock uint16_t
363*53089ab7Seschrock fnvlist_lookup_uint16(nvlist_t *nvl, const char *name)
364*53089ab7Seschrock {
365*53089ab7Seschrock 	uint16_t rv;
366*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_uint16(nvl, name, &rv), ==, 0);
367*53089ab7Seschrock 	return (rv);
368*53089ab7Seschrock }
369*53089ab7Seschrock 
370*53089ab7Seschrock uint32_t
371*53089ab7Seschrock fnvlist_lookup_uint32(nvlist_t *nvl, const char *name)
372*53089ab7Seschrock {
373*53089ab7Seschrock 	uint32_t rv;
374*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_uint32(nvl, name, &rv), ==, 0);
375*53089ab7Seschrock 	return (rv);
376*53089ab7Seschrock }
377*53089ab7Seschrock 
378*53089ab7Seschrock uint64_t
379*53089ab7Seschrock fnvlist_lookup_uint64(nvlist_t *nvl, const char *name)
380*53089ab7Seschrock {
381*53089ab7Seschrock 	uint64_t rv;
382*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_uint64(nvl, name, &rv), ==, 0);
383*53089ab7Seschrock 	return (rv);
384*53089ab7Seschrock }
385*53089ab7Seschrock 
386*53089ab7Seschrock char *
387*53089ab7Seschrock fnvlist_lookup_string(nvlist_t *nvl, const char *name)
388*53089ab7Seschrock {
389*53089ab7Seschrock 	char *rv;
390*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_string(nvl, name, &rv), ==, 0);
391*53089ab7Seschrock 	return (rv);
392*53089ab7Seschrock }
393*53089ab7Seschrock 
394*53089ab7Seschrock nvlist_t *
395*53089ab7Seschrock fnvlist_lookup_nvlist(nvlist_t *nvl, const char *name)
396*53089ab7Seschrock {
397*53089ab7Seschrock 	nvlist_t *rv;
398*53089ab7Seschrock 	VERIFY3U(nvlist_lookup_nvlist(nvl, name, &rv), ==, 0);
399*53089ab7Seschrock 	return (rv);
400*53089ab7Seschrock }
401*53089ab7Seschrock 
402*53089ab7Seschrock boolean_t
403*53089ab7Seschrock fnvpair_value_boolean_value(nvpair_t *nvp)
404*53089ab7Seschrock {
405*53089ab7Seschrock 	boolean_t rv;
406*53089ab7Seschrock 	VERIFY3U(nvpair_value_boolean_value(nvp, &rv), ==, 0);
407*53089ab7Seschrock 	return (rv);
408*53089ab7Seschrock }
409*53089ab7Seschrock 
410*53089ab7Seschrock uchar_t
411*53089ab7Seschrock fnvpair_value_byte(nvpair_t *nvp)
412*53089ab7Seschrock {
413*53089ab7Seschrock 	uchar_t rv;
414*53089ab7Seschrock 	VERIFY3U(nvpair_value_byte(nvp, &rv), ==, 0);
415*53089ab7Seschrock 	return (rv);
416*53089ab7Seschrock }
417*53089ab7Seschrock 
418*53089ab7Seschrock int8_t
419*53089ab7Seschrock fnvpair_value_int8(nvpair_t *nvp)
420*53089ab7Seschrock {
421*53089ab7Seschrock 	int8_t rv;
422*53089ab7Seschrock 	VERIFY3U(nvpair_value_int8(nvp, &rv), ==, 0);
423*53089ab7Seschrock 	return (rv);
424*53089ab7Seschrock }
425*53089ab7Seschrock 
426*53089ab7Seschrock int16_t
427*53089ab7Seschrock fnvpair_value_int16(nvpair_t *nvp)
428*53089ab7Seschrock {
429*53089ab7Seschrock 	int16_t rv;
430*53089ab7Seschrock 	VERIFY3U(nvpair_value_int16(nvp, &rv), ==, 0);
431*53089ab7Seschrock 	return (rv);
432*53089ab7Seschrock }
433*53089ab7Seschrock 
434*53089ab7Seschrock int32_t
435*53089ab7Seschrock fnvpair_value_int32(nvpair_t *nvp)
436*53089ab7Seschrock {
437*53089ab7Seschrock 	int32_t rv;
438*53089ab7Seschrock 	VERIFY3U(nvpair_value_int32(nvp, &rv), ==, 0);
439*53089ab7Seschrock 	return (rv);
440*53089ab7Seschrock }
441*53089ab7Seschrock 
442*53089ab7Seschrock int64_t
443*53089ab7Seschrock fnvpair_value_int64(nvpair_t *nvp)
444*53089ab7Seschrock {
445*53089ab7Seschrock 	int64_t rv;
446*53089ab7Seschrock 	VERIFY3U(nvpair_value_int64(nvp, &rv), ==, 0);
447*53089ab7Seschrock 	return (rv);
448*53089ab7Seschrock }
449*53089ab7Seschrock 
450*53089ab7Seschrock uint8_t
451*53089ab7Seschrock fnvpair_value_uint8_t(nvpair_t *nvp)
452*53089ab7Seschrock {
453*53089ab7Seschrock 	uint8_t rv;
454*53089ab7Seschrock 	VERIFY3U(nvpair_value_uint8(nvp, &rv), ==, 0);
455*53089ab7Seschrock 	return (rv);
456*53089ab7Seschrock }
457*53089ab7Seschrock 
458*53089ab7Seschrock uint16_t
459*53089ab7Seschrock fnvpair_value_uint16(nvpair_t *nvp)
460*53089ab7Seschrock {
461*53089ab7Seschrock 	uint16_t rv;
462*53089ab7Seschrock 	VERIFY3U(nvpair_value_uint16(nvp, &rv), ==, 0);
463*53089ab7Seschrock 	return (rv);
464*53089ab7Seschrock }
465*53089ab7Seschrock 
466*53089ab7Seschrock uint32_t
467*53089ab7Seschrock fnvpair_value_uint32(nvpair_t *nvp)
468*53089ab7Seschrock {
469*53089ab7Seschrock 	uint32_t rv;
470*53089ab7Seschrock 	VERIFY3U(nvpair_value_uint32(nvp, &rv), ==, 0);
471*53089ab7Seschrock 	return (rv);
472*53089ab7Seschrock }
473*53089ab7Seschrock 
474*53089ab7Seschrock uint64_t
475*53089ab7Seschrock fnvpair_value_uint64(nvpair_t *nvp)
476*53089ab7Seschrock {
477*53089ab7Seschrock 	uint64_t rv;
478*53089ab7Seschrock 	VERIFY3U(nvpair_value_uint64(nvp, &rv), ==, 0);
479*53089ab7Seschrock 	return (rv);
480*53089ab7Seschrock }
481*53089ab7Seschrock 
482*53089ab7Seschrock char *
483*53089ab7Seschrock fnvpair_value_string(nvpair_t *nvp)
484*53089ab7Seschrock {
485*53089ab7Seschrock 	char *rv;
486*53089ab7Seschrock 	VERIFY3U(nvpair_value_string(nvp, &rv), ==, 0);
487*53089ab7Seschrock 	return (rv);
488*53089ab7Seschrock }
489*53089ab7Seschrock 
490*53089ab7Seschrock nvlist_t *
491*53089ab7Seschrock fnvpair_value_nvlist(nvpair_t *nvp)
492*53089ab7Seschrock {
493*53089ab7Seschrock 	nvlist_t *rv;
494*53089ab7Seschrock 	VERIFY3U(nvpair_value_nvlist(nvp, &rv), ==, 0);
495*53089ab7Seschrock 	return (rv);
496*53089ab7Seschrock }
497