xref: /illumos-gate/usr/src/common/nvpair/fnvpair.c (revision 3b2aab18)
153089ab7Seschrock /*
253089ab7Seschrock  * CDDL HEADER START
353089ab7Seschrock  *
453089ab7Seschrock  * The contents of this file are subject to the terms of the
553089ab7Seschrock  * Common Development and Distribution License (the "License").
653089ab7Seschrock  * You may not use this file except in compliance with the License.
753089ab7Seschrock  *
853089ab7Seschrock  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
953089ab7Seschrock  * or http://www.opensolaris.org/os/licensing.
1053089ab7Seschrock  * See the License for the specific language governing permissions
1153089ab7Seschrock  * and limitations under the License.
1253089ab7Seschrock  *
1353089ab7Seschrock  * When distributing Covered Code, include this CDDL HEADER in each
1453089ab7Seschrock  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1553089ab7Seschrock  * If applicable, add the following below this CDDL HEADER, with the
1653089ab7Seschrock  * fields enclosed by brackets "[]" replaced with your own identifying
1753089ab7Seschrock  * information: Portions Copyright [yyyy] [name of copyright owner]
1853089ab7Seschrock  *
1953089ab7Seschrock  * CDDL HEADER END
2053089ab7Seschrock  */
2153089ab7Seschrock 
2253089ab7Seschrock /*
2353089ab7Seschrock  * Copyright (c) 2012 by Delphix. All rights reserved.
2453089ab7Seschrock  */
2553089ab7Seschrock 
2653089ab7Seschrock #include <sys/nvpair.h>
2753089ab7Seschrock #include <sys/kmem.h>
2853089ab7Seschrock #include <sys/debug.h>
29*3b2aab18SMatthew Ahrens #include <sys/param.h>
3053089ab7Seschrock #ifndef _KERNEL
3153089ab7Seschrock #include <stdlib.h>
3253089ab7Seschrock #endif
3353089ab7Seschrock 
3453089ab7Seschrock /*
3553089ab7Seschrock  * "Force" nvlist wrapper.
3653089ab7Seschrock  *
3753089ab7Seschrock  * These functions wrap the nvlist_* functions with assertions that assume
3853089ab7Seschrock  * the operation is successful.  This allows the caller's code to be much
3953089ab7Seschrock  * more readable, especially for the fnvlist_lookup_* and fnvpair_value_*
4053089ab7Seschrock  * functions, which can return the requested value (rather than filling in
4153089ab7Seschrock  * a pointer).
4253089ab7Seschrock  *
4353089ab7Seschrock  * These functions use NV_UNIQUE_NAME, encoding NV_ENCODE_NATIVE, and allocate
4453089ab7Seschrock  * with KM_SLEEP.
4553089ab7Seschrock  *
4653089ab7Seschrock  * More wrappers should be added as needed -- for example
4753089ab7Seschrock  * nvlist_lookup_*_array and nvpair_value_*_array.
4853089ab7Seschrock  */
4953089ab7Seschrock 
5053089ab7Seschrock nvlist_t *
fnvlist_alloc(void)5153089ab7Seschrock fnvlist_alloc(void)
5253089ab7Seschrock {
5353089ab7Seschrock 	nvlist_t *nvl;
54fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_alloc(&nvl, NV_UNIQUE_NAME, KM_SLEEP));
5553089ab7Seschrock 	return (nvl);
5653089ab7Seschrock }
5753089ab7Seschrock 
5853089ab7Seschrock void
fnvlist_free(nvlist_t * nvl)5953089ab7Seschrock fnvlist_free(nvlist_t *nvl)
6053089ab7Seschrock {
6153089ab7Seschrock 	nvlist_free(nvl);
6253089ab7Seschrock }
6353089ab7Seschrock 
6453089ab7Seschrock size_t
fnvlist_size(nvlist_t * nvl)6553089ab7Seschrock fnvlist_size(nvlist_t *nvl)
6653089ab7Seschrock {
6753089ab7Seschrock 	size_t size;
68fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_size(nvl, &size, NV_ENCODE_NATIVE));
6953089ab7Seschrock 	return (size);
7053089ab7Seschrock }
7153089ab7Seschrock 
7253089ab7Seschrock /*
7353089ab7Seschrock  * Returns allocated buffer of size *sizep.  Caller must free the buffer with
7453089ab7Seschrock  * fnvlist_pack_free().
7553089ab7Seschrock  */
7653089ab7Seschrock char *
fnvlist_pack(nvlist_t * nvl,size_t * sizep)7753089ab7Seschrock fnvlist_pack(nvlist_t *nvl, size_t *sizep)
7853089ab7Seschrock {
7953089ab7Seschrock 	char *packed = 0;
8053089ab7Seschrock 	VERIFY3U(nvlist_pack(nvl, &packed, sizep, NV_ENCODE_NATIVE,
8153089ab7Seschrock 	    KM_SLEEP), ==, 0);
8253089ab7Seschrock 	return (packed);
8353089ab7Seschrock }
8453089ab7Seschrock 
8553089ab7Seschrock /*ARGSUSED*/
8653089ab7Seschrock void
fnvlist_pack_free(char * pack,size_t size)8753089ab7Seschrock fnvlist_pack_free(char *pack, size_t size)
8853089ab7Seschrock {
8953089ab7Seschrock #ifdef _KERNEL
9053089ab7Seschrock 	kmem_free(pack, size);
9153089ab7Seschrock #else
9253089ab7Seschrock 	free(pack);
9353089ab7Seschrock #endif
9453089ab7Seschrock }
9553089ab7Seschrock 
9653089ab7Seschrock nvlist_t *
fnvlist_unpack(char * buf,size_t buflen)9753089ab7Seschrock fnvlist_unpack(char *buf, size_t buflen)
9853089ab7Seschrock {
9953089ab7Seschrock 	nvlist_t *rv;
100fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_unpack(buf, buflen, &rv, KM_SLEEP));
10153089ab7Seschrock 	return (rv);
10253089ab7Seschrock }
10353089ab7Seschrock 
10453089ab7Seschrock nvlist_t *
fnvlist_dup(nvlist_t * nvl)10553089ab7Seschrock fnvlist_dup(nvlist_t *nvl)
10653089ab7Seschrock {
10753089ab7Seschrock 	nvlist_t *rv;
108fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_dup(nvl, &rv, KM_SLEEP));
10953089ab7Seschrock 	return (rv);
11053089ab7Seschrock }
11153089ab7Seschrock 
11253089ab7Seschrock void
fnvlist_merge(nvlist_t * dst,nvlist_t * src)11353089ab7Seschrock fnvlist_merge(nvlist_t *dst, nvlist_t *src)
11453089ab7Seschrock {
115fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_merge(dst, src, KM_SLEEP));
11653089ab7Seschrock }
11753089ab7Seschrock 
118*3b2aab18SMatthew Ahrens size_t
fnvlist_num_pairs(nvlist_t * nvl)119*3b2aab18SMatthew Ahrens fnvlist_num_pairs(nvlist_t *nvl)
120*3b2aab18SMatthew Ahrens {
121*3b2aab18SMatthew Ahrens 	size_t count = 0;
122*3b2aab18SMatthew Ahrens 	nvpair_t *pair;
123*3b2aab18SMatthew Ahrens 
124*3b2aab18SMatthew Ahrens 	for (pair = nvlist_next_nvpair(nvl, 0); pair != NULL;
125*3b2aab18SMatthew Ahrens 	    pair = nvlist_next_nvpair(nvl, pair))
126*3b2aab18SMatthew Ahrens 		count++;
127*3b2aab18SMatthew Ahrens 	return (count);
128*3b2aab18SMatthew Ahrens }
129*3b2aab18SMatthew Ahrens 
13053089ab7Seschrock void
fnvlist_add_boolean(nvlist_t * nvl,const char * name)13153089ab7Seschrock fnvlist_add_boolean(nvlist_t *nvl, const char *name)
13253089ab7Seschrock {
133fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_boolean(nvl, name));
13453089ab7Seschrock }
13553089ab7Seschrock 
13653089ab7Seschrock void
fnvlist_add_boolean_value(nvlist_t * nvl,const char * name,boolean_t val)13753089ab7Seschrock fnvlist_add_boolean_value(nvlist_t *nvl, const char *name, boolean_t val)
13853089ab7Seschrock {
139fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_boolean_value(nvl, name, val));
14053089ab7Seschrock }
14153089ab7Seschrock 
14253089ab7Seschrock void
fnvlist_add_byte(nvlist_t * nvl,const char * name,uchar_t val)14353089ab7Seschrock fnvlist_add_byte(nvlist_t *nvl, const char *name, uchar_t val)
14453089ab7Seschrock {
145fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_byte(nvl, name, val));
14653089ab7Seschrock }
14753089ab7Seschrock 
14853089ab7Seschrock void
fnvlist_add_int8(nvlist_t * nvl,const char * name,int8_t val)14953089ab7Seschrock fnvlist_add_int8(nvlist_t *nvl, const char *name, int8_t val)
15053089ab7Seschrock {
151fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int8(nvl, name, val));
15253089ab7Seschrock }
15353089ab7Seschrock 
15453089ab7Seschrock void
fnvlist_add_uint8(nvlist_t * nvl,const char * name,uint8_t val)15553089ab7Seschrock fnvlist_add_uint8(nvlist_t *nvl, const char *name, uint8_t val)
15653089ab7Seschrock {
157fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint8(nvl, name, val));
15853089ab7Seschrock }
15953089ab7Seschrock 
16053089ab7Seschrock void
fnvlist_add_int16(nvlist_t * nvl,const char * name,int16_t val)16153089ab7Seschrock fnvlist_add_int16(nvlist_t *nvl, const char *name, int16_t val)
16253089ab7Seschrock {
163fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int16(nvl, name, val));
16453089ab7Seschrock }
16553089ab7Seschrock 
16653089ab7Seschrock void
fnvlist_add_uint16(nvlist_t * nvl,const char * name,uint16_t val)16753089ab7Seschrock fnvlist_add_uint16(nvlist_t *nvl, const char *name, uint16_t val)
16853089ab7Seschrock {
169fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint16(nvl, name, val));
17053089ab7Seschrock }
17153089ab7Seschrock 
17253089ab7Seschrock void
fnvlist_add_int32(nvlist_t * nvl,const char * name,int32_t val)17353089ab7Seschrock fnvlist_add_int32(nvlist_t *nvl, const char *name, int32_t val)
17453089ab7Seschrock {
175fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int32(nvl, name, val));
17653089ab7Seschrock }
17753089ab7Seschrock 
17853089ab7Seschrock void
fnvlist_add_uint32(nvlist_t * nvl,const char * name,uint32_t val)17953089ab7Seschrock fnvlist_add_uint32(nvlist_t *nvl, const char *name, uint32_t val)
18053089ab7Seschrock {
181fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint32(nvl, name, val));
18253089ab7Seschrock }
18353089ab7Seschrock 
18453089ab7Seschrock void
fnvlist_add_int64(nvlist_t * nvl,const char * name,int64_t val)18553089ab7Seschrock fnvlist_add_int64(nvlist_t *nvl, const char *name, int64_t val)
18653089ab7Seschrock {
187fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int64(nvl, name, val));
18853089ab7Seschrock }
18953089ab7Seschrock 
19053089ab7Seschrock void
fnvlist_add_uint64(nvlist_t * nvl,const char * name,uint64_t val)19153089ab7Seschrock fnvlist_add_uint64(nvlist_t *nvl, const char *name, uint64_t val)
19253089ab7Seschrock {
193fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint64(nvl, name, val));
19453089ab7Seschrock }
19553089ab7Seschrock 
19653089ab7Seschrock void
fnvlist_add_string(nvlist_t * nvl,const char * name,const char * val)19753089ab7Seschrock fnvlist_add_string(nvlist_t *nvl, const char *name, const char *val)
19853089ab7Seschrock {
199fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_string(nvl, name, val));
20053089ab7Seschrock }
20153089ab7Seschrock 
20253089ab7Seschrock void
fnvlist_add_nvlist(nvlist_t * nvl,const char * name,nvlist_t * val)20353089ab7Seschrock fnvlist_add_nvlist(nvlist_t *nvl, const char *name, nvlist_t *val)
20453089ab7Seschrock {
205fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_nvlist(nvl, name, val));
20653089ab7Seschrock }
20753089ab7Seschrock 
20853089ab7Seschrock void
fnvlist_add_nvpair(nvlist_t * nvl,nvpair_t * pair)20953089ab7Seschrock fnvlist_add_nvpair(nvlist_t *nvl, nvpair_t *pair)
21053089ab7Seschrock {
211fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_nvpair(nvl, pair));
21253089ab7Seschrock }
21353089ab7Seschrock 
21453089ab7Seschrock void
fnvlist_add_boolean_array(nvlist_t * nvl,const char * name,boolean_t * val,uint_t n)21553089ab7Seschrock fnvlist_add_boolean_array(nvlist_t *nvl, const char *name,
21653089ab7Seschrock     boolean_t *val, uint_t n)
21753089ab7Seschrock {
218fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_boolean_array(nvl, name, val, n));
21953089ab7Seschrock }
22053089ab7Seschrock 
22153089ab7Seschrock void
fnvlist_add_byte_array(nvlist_t * nvl,const char * name,uchar_t * val,uint_t n)22253089ab7Seschrock fnvlist_add_byte_array(nvlist_t *nvl, const char *name, uchar_t *val, uint_t n)
22353089ab7Seschrock {
224fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_byte_array(nvl, name, val, n));
22553089ab7Seschrock }
22653089ab7Seschrock 
22753089ab7Seschrock void
fnvlist_add_int8_array(nvlist_t * nvl,const char * name,int8_t * val,uint_t n)22853089ab7Seschrock fnvlist_add_int8_array(nvlist_t *nvl, const char *name, int8_t *val, uint_t n)
22953089ab7Seschrock {
230fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int8_array(nvl, name, val, n));
23153089ab7Seschrock }
23253089ab7Seschrock 
23353089ab7Seschrock void
fnvlist_add_uint8_array(nvlist_t * nvl,const char * name,uint8_t * val,uint_t n)23453089ab7Seschrock fnvlist_add_uint8_array(nvlist_t *nvl, const char *name, uint8_t *val, uint_t n)
23553089ab7Seschrock {
236fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint8_array(nvl, name, val, n));
23753089ab7Seschrock }
23853089ab7Seschrock 
23953089ab7Seschrock void
fnvlist_add_int16_array(nvlist_t * nvl,const char * name,int16_t * val,uint_t n)24053089ab7Seschrock fnvlist_add_int16_array(nvlist_t *nvl, const char *name, int16_t *val, uint_t n)
24153089ab7Seschrock {
242fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int16_array(nvl, name, val, n));
24353089ab7Seschrock }
24453089ab7Seschrock 
24553089ab7Seschrock void
fnvlist_add_uint16_array(nvlist_t * nvl,const char * name,uint16_t * val,uint_t n)24653089ab7Seschrock fnvlist_add_uint16_array(nvlist_t *nvl, const char *name,
24753089ab7Seschrock     uint16_t *val, uint_t n)
24853089ab7Seschrock {
249fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint16_array(nvl, name, val, n));
25053089ab7Seschrock }
25153089ab7Seschrock 
25253089ab7Seschrock void
fnvlist_add_int32_array(nvlist_t * nvl,const char * name,int32_t * val,uint_t n)25353089ab7Seschrock fnvlist_add_int32_array(nvlist_t *nvl, const char *name, int32_t *val, uint_t n)
25453089ab7Seschrock {
255fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int32_array(nvl, name, val, n));
25653089ab7Seschrock }
25753089ab7Seschrock 
25853089ab7Seschrock void
fnvlist_add_uint32_array(nvlist_t * nvl,const char * name,uint32_t * val,uint_t n)25953089ab7Seschrock fnvlist_add_uint32_array(nvlist_t *nvl, const char *name,
26053089ab7Seschrock     uint32_t *val, uint_t n)
26153089ab7Seschrock {
262fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint32_array(nvl, name, val, n));
26353089ab7Seschrock }
26453089ab7Seschrock 
26553089ab7Seschrock void
fnvlist_add_int64_array(nvlist_t * nvl,const char * name,int64_t * val,uint_t n)26653089ab7Seschrock fnvlist_add_int64_array(nvlist_t *nvl, const char *name, int64_t *val, uint_t n)
26753089ab7Seschrock {
268fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_int64_array(nvl, name, val, n));
26953089ab7Seschrock }
27053089ab7Seschrock 
27153089ab7Seschrock void
fnvlist_add_uint64_array(nvlist_t * nvl,const char * name,uint64_t * val,uint_t n)27253089ab7Seschrock fnvlist_add_uint64_array(nvlist_t *nvl, const char *name,
27353089ab7Seschrock     uint64_t *val, uint_t n)
27453089ab7Seschrock {
275fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_uint64_array(nvl, name, val, n));
27653089ab7Seschrock }
27753089ab7Seschrock 
27853089ab7Seschrock void
fnvlist_add_string_array(nvlist_t * nvl,const char * name,char * const * val,uint_t n)27953089ab7Seschrock fnvlist_add_string_array(nvlist_t *nvl, const char *name,
28053089ab7Seschrock     char * const *val, uint_t n)
28153089ab7Seschrock {
282fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_string_array(nvl, name, val, n));
28353089ab7Seschrock }
28453089ab7Seschrock 
28553089ab7Seschrock void
fnvlist_add_nvlist_array(nvlist_t * nvl,const char * name,nvlist_t ** val,uint_t n)28653089ab7Seschrock fnvlist_add_nvlist_array(nvlist_t *nvl, const char *name,
28753089ab7Seschrock     nvlist_t **val, uint_t n)
28853089ab7Seschrock {
289fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_add_nvlist_array(nvl, name, val, n));
29053089ab7Seschrock }
29153089ab7Seschrock 
29253089ab7Seschrock void
fnvlist_remove(nvlist_t * nvl,const char * name)29353089ab7Seschrock fnvlist_remove(nvlist_t *nvl, const char *name)
29453089ab7Seschrock {
295fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_remove_all(nvl, name));
29653089ab7Seschrock }
29753089ab7Seschrock 
29853089ab7Seschrock void
fnvlist_remove_nvpair(nvlist_t * nvl,nvpair_t * pair)29953089ab7Seschrock fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair)
30053089ab7Seschrock {
301fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_remove_nvpair(nvl, pair));
30253089ab7Seschrock }
30353089ab7Seschrock 
30453089ab7Seschrock nvpair_t *
fnvlist_lookup_nvpair(nvlist_t * nvl,const char * name)30553089ab7Seschrock fnvlist_lookup_nvpair(nvlist_t *nvl, const char *name)
30653089ab7Seschrock {
30753089ab7Seschrock 	nvpair_t *rv;
308fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_nvpair(nvl, name, &rv));
30953089ab7Seschrock 	return (rv);
31053089ab7Seschrock }
31153089ab7Seschrock 
31253089ab7Seschrock /* returns B_TRUE if the entry exists */
31353089ab7Seschrock boolean_t
fnvlist_lookup_boolean(nvlist_t * nvl,const char * name)31453089ab7Seschrock fnvlist_lookup_boolean(nvlist_t *nvl, const char *name)
31553089ab7Seschrock {
31653089ab7Seschrock 	return (nvlist_lookup_boolean(nvl, name) == 0);
31753089ab7Seschrock }
31853089ab7Seschrock 
31953089ab7Seschrock boolean_t
fnvlist_lookup_boolean_value(nvlist_t * nvl,const char * name)32053089ab7Seschrock fnvlist_lookup_boolean_value(nvlist_t *nvl, const char *name)
32153089ab7Seschrock {
32253089ab7Seschrock 	boolean_t rv;
323fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_boolean_value(nvl, name, &rv));
32453089ab7Seschrock 	return (rv);
32553089ab7Seschrock }
32653089ab7Seschrock 
32753089ab7Seschrock uchar_t
fnvlist_lookup_byte(nvlist_t * nvl,const char * name)32853089ab7Seschrock fnvlist_lookup_byte(nvlist_t *nvl, const char *name)
32953089ab7Seschrock {
33053089ab7Seschrock 	uchar_t rv;
331fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_byte(nvl, name, &rv));
33253089ab7Seschrock 	return (rv);
33353089ab7Seschrock }
33453089ab7Seschrock 
33553089ab7Seschrock int8_t
fnvlist_lookup_int8(nvlist_t * nvl,const char * name)33653089ab7Seschrock fnvlist_lookup_int8(nvlist_t *nvl, const char *name)
33753089ab7Seschrock {
33853089ab7Seschrock 	int8_t rv;
339fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_int8(nvl, name, &rv));
34053089ab7Seschrock 	return (rv);
34153089ab7Seschrock }
34253089ab7Seschrock 
34353089ab7Seschrock int16_t
fnvlist_lookup_int16(nvlist_t * nvl,const char * name)34453089ab7Seschrock fnvlist_lookup_int16(nvlist_t *nvl, const char *name)
34553089ab7Seschrock {
34653089ab7Seschrock 	int16_t rv;
347fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_int16(nvl, name, &rv));
34853089ab7Seschrock 	return (rv);
34953089ab7Seschrock }
35053089ab7Seschrock 
35153089ab7Seschrock int32_t
fnvlist_lookup_int32(nvlist_t * nvl,const char * name)35253089ab7Seschrock fnvlist_lookup_int32(nvlist_t *nvl, const char *name)
35353089ab7Seschrock {
35453089ab7Seschrock 	int32_t rv;
355fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_int32(nvl, name, &rv));
35653089ab7Seschrock 	return (rv);
35753089ab7Seschrock }
35853089ab7Seschrock 
35953089ab7Seschrock int64_t
fnvlist_lookup_int64(nvlist_t * nvl,const char * name)36053089ab7Seschrock fnvlist_lookup_int64(nvlist_t *nvl, const char *name)
36153089ab7Seschrock {
36253089ab7Seschrock 	int64_t rv;
363fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_int64(nvl, name, &rv));
36453089ab7Seschrock 	return (rv);
36553089ab7Seschrock }
36653089ab7Seschrock 
36753089ab7Seschrock uint8_t
fnvlist_lookup_uint8_t(nvlist_t * nvl,const char * name)36853089ab7Seschrock fnvlist_lookup_uint8_t(nvlist_t *nvl, const char *name)
36953089ab7Seschrock {
37053089ab7Seschrock 	uint8_t rv;
371fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_uint8(nvl, name, &rv));
37253089ab7Seschrock 	return (rv);
37353089ab7Seschrock }
37453089ab7Seschrock 
37553089ab7Seschrock uint16_t
fnvlist_lookup_uint16(nvlist_t * nvl,const char * name)37653089ab7Seschrock fnvlist_lookup_uint16(nvlist_t *nvl, const char *name)
37753089ab7Seschrock {
37853089ab7Seschrock 	uint16_t rv;
379fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_uint16(nvl, name, &rv));
38053089ab7Seschrock 	return (rv);
38153089ab7Seschrock }
38253089ab7Seschrock 
38353089ab7Seschrock uint32_t
fnvlist_lookup_uint32(nvlist_t * nvl,const char * name)38453089ab7Seschrock fnvlist_lookup_uint32(nvlist_t *nvl, const char *name)
38553089ab7Seschrock {
38653089ab7Seschrock 	uint32_t rv;
387fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_uint32(nvl, name, &rv));
38853089ab7Seschrock 	return (rv);
38953089ab7Seschrock }
39053089ab7Seschrock 
39153089ab7Seschrock uint64_t
fnvlist_lookup_uint64(nvlist_t * nvl,const char * name)39253089ab7Seschrock fnvlist_lookup_uint64(nvlist_t *nvl, const char *name)
39353089ab7Seschrock {
39453089ab7Seschrock 	uint64_t rv;
395fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_uint64(nvl, name, &rv));
39653089ab7Seschrock 	return (rv);
39753089ab7Seschrock }
39853089ab7Seschrock 
39953089ab7Seschrock char *
fnvlist_lookup_string(nvlist_t * nvl,const char * name)40053089ab7Seschrock fnvlist_lookup_string(nvlist_t *nvl, const char *name)
40153089ab7Seschrock {
40253089ab7Seschrock 	char *rv;
403fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_string(nvl, name, &rv));
40453089ab7Seschrock 	return (rv);
40553089ab7Seschrock }
40653089ab7Seschrock 
40753089ab7Seschrock nvlist_t *
fnvlist_lookup_nvlist(nvlist_t * nvl,const char * name)40853089ab7Seschrock fnvlist_lookup_nvlist(nvlist_t *nvl, const char *name)
40953089ab7Seschrock {
41053089ab7Seschrock 	nvlist_t *rv;
411fb09f5aaSMadhav Suresh 	VERIFY0(nvlist_lookup_nvlist(nvl, name, &rv));
41253089ab7Seschrock 	return (rv);
41353089ab7Seschrock }
41453089ab7Seschrock 
41553089ab7Seschrock boolean_t
fnvpair_value_boolean_value(nvpair_t * nvp)41653089ab7Seschrock fnvpair_value_boolean_value(nvpair_t *nvp)
41753089ab7Seschrock {
41853089ab7Seschrock 	boolean_t rv;
419fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_boolean_value(nvp, &rv));
42053089ab7Seschrock 	return (rv);
42153089ab7Seschrock }
42253089ab7Seschrock 
42353089ab7Seschrock uchar_t
fnvpair_value_byte(nvpair_t * nvp)42453089ab7Seschrock fnvpair_value_byte(nvpair_t *nvp)
42553089ab7Seschrock {
42653089ab7Seschrock 	uchar_t rv;
427fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_byte(nvp, &rv));
42853089ab7Seschrock 	return (rv);
42953089ab7Seschrock }
43053089ab7Seschrock 
43153089ab7Seschrock int8_t
fnvpair_value_int8(nvpair_t * nvp)43253089ab7Seschrock fnvpair_value_int8(nvpair_t *nvp)
43353089ab7Seschrock {
43453089ab7Seschrock 	int8_t rv;
435fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_int8(nvp, &rv));
43653089ab7Seschrock 	return (rv);
43753089ab7Seschrock }
43853089ab7Seschrock 
43953089ab7Seschrock int16_t
fnvpair_value_int16(nvpair_t * nvp)44053089ab7Seschrock fnvpair_value_int16(nvpair_t *nvp)
44153089ab7Seschrock {
44253089ab7Seschrock 	int16_t rv;
443fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_int16(nvp, &rv));
44453089ab7Seschrock 	return (rv);
44553089ab7Seschrock }
44653089ab7Seschrock 
44753089ab7Seschrock int32_t
fnvpair_value_int32(nvpair_t * nvp)44853089ab7Seschrock fnvpair_value_int32(nvpair_t *nvp)
44953089ab7Seschrock {
45053089ab7Seschrock 	int32_t rv;
451fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_int32(nvp, &rv));
45253089ab7Seschrock 	return (rv);
45353089ab7Seschrock }
45453089ab7Seschrock 
45553089ab7Seschrock int64_t
fnvpair_value_int64(nvpair_t * nvp)45653089ab7Seschrock fnvpair_value_int64(nvpair_t *nvp)
45753089ab7Seschrock {
45853089ab7Seschrock 	int64_t rv;
459fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_int64(nvp, &rv));
46053089ab7Seschrock 	return (rv);
46153089ab7Seschrock }
46253089ab7Seschrock 
46353089ab7Seschrock uint8_t
fnvpair_value_uint8_t(nvpair_t * nvp)46453089ab7Seschrock fnvpair_value_uint8_t(nvpair_t *nvp)
46553089ab7Seschrock {
46653089ab7Seschrock 	uint8_t rv;
467fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_uint8(nvp, &rv));
46853089ab7Seschrock 	return (rv);
46953089ab7Seschrock }
47053089ab7Seschrock 
47153089ab7Seschrock uint16_t
fnvpair_value_uint16(nvpair_t * nvp)47253089ab7Seschrock fnvpair_value_uint16(nvpair_t *nvp)
47353089ab7Seschrock {
47453089ab7Seschrock 	uint16_t rv;
475fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_uint16(nvp, &rv));
47653089ab7Seschrock 	return (rv);
47753089ab7Seschrock }
47853089ab7Seschrock 
47953089ab7Seschrock uint32_t
fnvpair_value_uint32(nvpair_t * nvp)48053089ab7Seschrock fnvpair_value_uint32(nvpair_t *nvp)
48153089ab7Seschrock {
48253089ab7Seschrock 	uint32_t rv;
483fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_uint32(nvp, &rv));
48453089ab7Seschrock 	return (rv);
48553089ab7Seschrock }
48653089ab7Seschrock 
48753089ab7Seschrock uint64_t
fnvpair_value_uint64(nvpair_t * nvp)48853089ab7Seschrock fnvpair_value_uint64(nvpair_t *nvp)
48953089ab7Seschrock {
49053089ab7Seschrock 	uint64_t rv;
491fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_uint64(nvp, &rv));
49253089ab7Seschrock 	return (rv);
49353089ab7Seschrock }
49453089ab7Seschrock 
49553089ab7Seschrock char *
fnvpair_value_string(nvpair_t * nvp)49653089ab7Seschrock fnvpair_value_string(nvpair_t *nvp)
49753089ab7Seschrock {
49853089ab7Seschrock 	char *rv;
499fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_string(nvp, &rv));
50053089ab7Seschrock 	return (rv);
50153089ab7Seschrock }
50253089ab7Seschrock 
50353089ab7Seschrock nvlist_t *
fnvpair_value_nvlist(nvpair_t * nvp)50453089ab7Seschrock fnvpair_value_nvlist(nvpair_t *nvp)
50553089ab7Seschrock {
50653089ab7Seschrock 	nvlist_t *rv;
507fb09f5aaSMadhav Suresh 	VERIFY0(nvpair_value_nvlist(nvp, &rv));
50853089ab7Seschrock 	return (rv);
50953089ab7Seschrock }
510