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 * 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 5953089ab7Seschrock fnvlist_free(nvlist_t *nvl) 6053089ab7Seschrock { 6153089ab7Seschrock nvlist_free(nvl); 6253089ab7Seschrock } 6353089ab7Seschrock 6453089ab7Seschrock size_t 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 * 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 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 * 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 * 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 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 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 13153089ab7Seschrock fnvlist_add_boolean(nvlist_t *nvl, const char *name) 13253089ab7Seschrock { 133fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_boolean(nvl, name)); 13453089ab7Seschrock } 13553089ab7Seschrock 13653089ab7Seschrock void 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 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 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 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 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 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 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 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 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 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 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 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 20953089ab7Seschrock fnvlist_add_nvpair(nvlist_t *nvl, nvpair_t *pair) 21053089ab7Seschrock { 211fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_nvpair(nvl, pair)); 21253089ab7Seschrock } 21353089ab7Seschrock 21453089ab7Seschrock void 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 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 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 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 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 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 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 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 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 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 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 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 29353089ab7Seschrock fnvlist_remove(nvlist_t *nvl, const char *name) 29453089ab7Seschrock { 295fb09f5aaSMadhav Suresh VERIFY0(nvlist_remove_all(nvl, name)); 29653089ab7Seschrock } 29753089ab7Seschrock 29853089ab7Seschrock void 29953089ab7Seschrock fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair) 30053089ab7Seschrock { 301fb09f5aaSMadhav Suresh VERIFY0(nvlist_remove_nvpair(nvl, pair)); 30253089ab7Seschrock } 30353089ab7Seschrock 30453089ab7Seschrock nvpair_t * 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 31453089ab7Seschrock fnvlist_lookup_boolean(nvlist_t *nvl, const char *name) 31553089ab7Seschrock { 31653089ab7Seschrock return (nvlist_lookup_boolean(nvl, name) == 0); 31753089ab7Seschrock } 31853089ab7Seschrock 31953089ab7Seschrock boolean_t 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 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 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 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 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 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 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 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 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 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 * 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 * 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 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 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 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 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 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 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 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 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 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 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 * 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 * 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