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>
293b2aab18SMatthew 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
1183b2aab18SMatthew Ahrens size_t
fnvlist_num_pairs(nvlist_t * nvl)1193b2aab18SMatthew Ahrens fnvlist_num_pairs(nvlist_t *nvl)
1203b2aab18SMatthew Ahrens {
1213b2aab18SMatthew Ahrens size_t count = 0;
1223b2aab18SMatthew Ahrens nvpair_t *pair;
1233b2aab18SMatthew Ahrens
1243b2aab18SMatthew Ahrens for (pair = nvlist_next_nvpair(nvl, 0); pair != NULL;
1253b2aab18SMatthew Ahrens pair = nvlist_next_nvpair(nvl, pair))
1263b2aab18SMatthew Ahrens count++;
1273b2aab18SMatthew Ahrens return (count);
1283b2aab18SMatthew Ahrens }
1293b2aab18SMatthew 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(nvlist_t * nvl,const char * name)368*b6249276SRobert Mustacchi fnvlist_lookup_uint8(nvlist_t *nvl, const char *name)
369*b6249276SRobert Mustacchi {
370*b6249276SRobert Mustacchi uint8_t rv;
371*b6249276SRobert Mustacchi VERIFY0(nvlist_lookup_uint8(nvl, name, &rv));
372*b6249276SRobert Mustacchi return (rv);
373*b6249276SRobert Mustacchi }
374*b6249276SRobert Mustacchi
375*b6249276SRobert Mustacchi /*
376*b6249276SRobert Mustacchi * This version with the _t suffix was put in a public version of the libnvpair
377*b6249276SRobert Mustacchi * mapfile. While it is no longer in the header file, it remains here for binary
378*b6249276SRobert Mustacchi * compatibility. All new software should use fnvlist_lookup_uint8().
379*b6249276SRobert Mustacchi */
380*b6249276SRobert Mustacchi uint8_t
fnvlist_lookup_uint8_t(nvlist_t * nvl,const char * name)38153089ab7Seschrock fnvlist_lookup_uint8_t(nvlist_t *nvl, const char *name)
38253089ab7Seschrock {
38353089ab7Seschrock uint8_t rv;
384fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint8(nvl, name, &rv));
38553089ab7Seschrock return (rv);
38653089ab7Seschrock }
38753089ab7Seschrock
38853089ab7Seschrock uint16_t
fnvlist_lookup_uint16(nvlist_t * nvl,const char * name)38953089ab7Seschrock fnvlist_lookup_uint16(nvlist_t *nvl, const char *name)
39053089ab7Seschrock {
39153089ab7Seschrock uint16_t rv;
392fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint16(nvl, name, &rv));
39353089ab7Seschrock return (rv);
39453089ab7Seschrock }
39553089ab7Seschrock
39653089ab7Seschrock uint32_t
fnvlist_lookup_uint32(nvlist_t * nvl,const char * name)39753089ab7Seschrock fnvlist_lookup_uint32(nvlist_t *nvl, const char *name)
39853089ab7Seschrock {
39953089ab7Seschrock uint32_t rv;
400fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint32(nvl, name, &rv));
40153089ab7Seschrock return (rv);
40253089ab7Seschrock }
40353089ab7Seschrock
40453089ab7Seschrock uint64_t
fnvlist_lookup_uint64(nvlist_t * nvl,const char * name)40553089ab7Seschrock fnvlist_lookup_uint64(nvlist_t *nvl, const char *name)
40653089ab7Seschrock {
40753089ab7Seschrock uint64_t rv;
408fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint64(nvl, name, &rv));
40953089ab7Seschrock return (rv);
41053089ab7Seschrock }
41153089ab7Seschrock
41253089ab7Seschrock char *
fnvlist_lookup_string(nvlist_t * nvl,const char * name)41353089ab7Seschrock fnvlist_lookup_string(nvlist_t *nvl, const char *name)
41453089ab7Seschrock {
41553089ab7Seschrock char *rv;
416fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_string(nvl, name, &rv));
41753089ab7Seschrock return (rv);
41853089ab7Seschrock }
41953089ab7Seschrock
42053089ab7Seschrock nvlist_t *
fnvlist_lookup_nvlist(nvlist_t * nvl,const char * name)42153089ab7Seschrock fnvlist_lookup_nvlist(nvlist_t *nvl, const char *name)
42253089ab7Seschrock {
42353089ab7Seschrock nvlist_t *rv;
424fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_nvlist(nvl, name, &rv));
42553089ab7Seschrock return (rv);
42653089ab7Seschrock }
42753089ab7Seschrock
42853089ab7Seschrock boolean_t
fnvpair_value_boolean_value(nvpair_t * nvp)42953089ab7Seschrock fnvpair_value_boolean_value(nvpair_t *nvp)
43053089ab7Seschrock {
43153089ab7Seschrock boolean_t rv;
432fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_boolean_value(nvp, &rv));
43353089ab7Seschrock return (rv);
43453089ab7Seschrock }
43553089ab7Seschrock
43653089ab7Seschrock uchar_t
fnvpair_value_byte(nvpair_t * nvp)43753089ab7Seschrock fnvpair_value_byte(nvpair_t *nvp)
43853089ab7Seschrock {
43953089ab7Seschrock uchar_t rv;
440fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_byte(nvp, &rv));
44153089ab7Seschrock return (rv);
44253089ab7Seschrock }
44353089ab7Seschrock
44453089ab7Seschrock int8_t
fnvpair_value_int8(nvpair_t * nvp)44553089ab7Seschrock fnvpair_value_int8(nvpair_t *nvp)
44653089ab7Seschrock {
44753089ab7Seschrock int8_t rv;
448fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int8(nvp, &rv));
44953089ab7Seschrock return (rv);
45053089ab7Seschrock }
45153089ab7Seschrock
45253089ab7Seschrock int16_t
fnvpair_value_int16(nvpair_t * nvp)45353089ab7Seschrock fnvpair_value_int16(nvpair_t *nvp)
45453089ab7Seschrock {
45553089ab7Seschrock int16_t rv;
456fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int16(nvp, &rv));
45753089ab7Seschrock return (rv);
45853089ab7Seschrock }
45953089ab7Seschrock
46053089ab7Seschrock int32_t
fnvpair_value_int32(nvpair_t * nvp)46153089ab7Seschrock fnvpair_value_int32(nvpair_t *nvp)
46253089ab7Seschrock {
46353089ab7Seschrock int32_t rv;
464fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int32(nvp, &rv));
46553089ab7Seschrock return (rv);
46653089ab7Seschrock }
46753089ab7Seschrock
46853089ab7Seschrock int64_t
fnvpair_value_int64(nvpair_t * nvp)46953089ab7Seschrock fnvpair_value_int64(nvpair_t *nvp)
47053089ab7Seschrock {
47153089ab7Seschrock int64_t rv;
472fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int64(nvp, &rv));
47353089ab7Seschrock return (rv);
47453089ab7Seschrock }
47553089ab7Seschrock
47653089ab7Seschrock uint8_t
fnvpair_value_uint8(nvpair_t * nvp)477*b6249276SRobert Mustacchi fnvpair_value_uint8(nvpair_t *nvp)
478*b6249276SRobert Mustacchi {
479*b6249276SRobert Mustacchi uint8_t rv;
480*b6249276SRobert Mustacchi VERIFY0(nvpair_value_uint8(nvp, &rv));
481*b6249276SRobert Mustacchi return (rv);
482*b6249276SRobert Mustacchi }
483*b6249276SRobert Mustacchi
484*b6249276SRobert Mustacchi /*
485*b6249276SRobert Mustacchi * This version with the _t suffix was put in a public version of the libnvpair
486*b6249276SRobert Mustacchi * mapfile. While it is no longer in the header file, it remains here for binary
487*b6249276SRobert Mustacchi * compatibility. All new software should use fnvpair_value_uint8().
488*b6249276SRobert Mustacchi */
489*b6249276SRobert Mustacchi uint8_t
fnvpair_value_uint8_t(nvpair_t * nvp)49053089ab7Seschrock fnvpair_value_uint8_t(nvpair_t *nvp)
49153089ab7Seschrock {
49253089ab7Seschrock uint8_t rv;
493fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint8(nvp, &rv));
49453089ab7Seschrock return (rv);
49553089ab7Seschrock }
49653089ab7Seschrock
49753089ab7Seschrock uint16_t
fnvpair_value_uint16(nvpair_t * nvp)49853089ab7Seschrock fnvpair_value_uint16(nvpair_t *nvp)
49953089ab7Seschrock {
50053089ab7Seschrock uint16_t rv;
501fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint16(nvp, &rv));
50253089ab7Seschrock return (rv);
50353089ab7Seschrock }
50453089ab7Seschrock
50553089ab7Seschrock uint32_t
fnvpair_value_uint32(nvpair_t * nvp)50653089ab7Seschrock fnvpair_value_uint32(nvpair_t *nvp)
50753089ab7Seschrock {
50853089ab7Seschrock uint32_t rv;
509fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint32(nvp, &rv));
51053089ab7Seschrock return (rv);
51153089ab7Seschrock }
51253089ab7Seschrock
51353089ab7Seschrock uint64_t
fnvpair_value_uint64(nvpair_t * nvp)51453089ab7Seschrock fnvpair_value_uint64(nvpair_t *nvp)
51553089ab7Seschrock {
51653089ab7Seschrock uint64_t rv;
517fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint64(nvp, &rv));
51853089ab7Seschrock return (rv);
51953089ab7Seschrock }
52053089ab7Seschrock
52153089ab7Seschrock char *
fnvpair_value_string(nvpair_t * nvp)52253089ab7Seschrock fnvpair_value_string(nvpair_t *nvp)
52353089ab7Seschrock {
52453089ab7Seschrock char *rv;
525fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_string(nvp, &rv));
52653089ab7Seschrock return (rv);
52753089ab7Seschrock }
52853089ab7Seschrock
52953089ab7Seschrock nvlist_t *
fnvpair_value_nvlist(nvpair_t * nvp)53053089ab7Seschrock fnvpair_value_nvlist(nvpair_t *nvp)
53153089ab7Seschrock {
53253089ab7Seschrock nvlist_t *rv;
533fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_nvlist(nvp, &rv));
53453089ab7Seschrock return (rv);
53553089ab7Seschrock }
536