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> 2953089ab7Seschrock #ifndef _KERNEL 3053089ab7Seschrock #include <stdlib.h> 3153089ab7Seschrock #endif 3253089ab7Seschrock 3353089ab7Seschrock /* 3453089ab7Seschrock * "Force" nvlist wrapper. 3553089ab7Seschrock * 3653089ab7Seschrock * These functions wrap the nvlist_* functions with assertions that assume 3753089ab7Seschrock * the operation is successful. This allows the caller's code to be much 3853089ab7Seschrock * more readable, especially for the fnvlist_lookup_* and fnvpair_value_* 3953089ab7Seschrock * functions, which can return the requested value (rather than filling in 4053089ab7Seschrock * a pointer). 4153089ab7Seschrock * 4253089ab7Seschrock * These functions use NV_UNIQUE_NAME, encoding NV_ENCODE_NATIVE, and allocate 4353089ab7Seschrock * with KM_SLEEP. 4453089ab7Seschrock * 4553089ab7Seschrock * More wrappers should be added as needed -- for example 4653089ab7Seschrock * nvlist_lookup_*_array and nvpair_value_*_array. 4753089ab7Seschrock */ 4853089ab7Seschrock 4953089ab7Seschrock nvlist_t * 5053089ab7Seschrock fnvlist_alloc(void) 5153089ab7Seschrock { 5253089ab7Seschrock nvlist_t *nvl; 53*fb09f5aaSMadhav Suresh VERIFY0(nvlist_alloc(&nvl, NV_UNIQUE_NAME, KM_SLEEP)); 5453089ab7Seschrock return (nvl); 5553089ab7Seschrock } 5653089ab7Seschrock 5753089ab7Seschrock void 5853089ab7Seschrock fnvlist_free(nvlist_t *nvl) 5953089ab7Seschrock { 6053089ab7Seschrock nvlist_free(nvl); 6153089ab7Seschrock } 6253089ab7Seschrock 6353089ab7Seschrock size_t 6453089ab7Seschrock fnvlist_size(nvlist_t *nvl) 6553089ab7Seschrock { 6653089ab7Seschrock size_t size; 67*fb09f5aaSMadhav Suresh VERIFY0(nvlist_size(nvl, &size, NV_ENCODE_NATIVE)); 6853089ab7Seschrock return (size); 6953089ab7Seschrock } 7053089ab7Seschrock 7153089ab7Seschrock /* 7253089ab7Seschrock * Returns allocated buffer of size *sizep. Caller must free the buffer with 7353089ab7Seschrock * fnvlist_pack_free(). 7453089ab7Seschrock */ 7553089ab7Seschrock char * 7653089ab7Seschrock fnvlist_pack(nvlist_t *nvl, size_t *sizep) 7753089ab7Seschrock { 7853089ab7Seschrock char *packed = 0; 7953089ab7Seschrock VERIFY3U(nvlist_pack(nvl, &packed, sizep, NV_ENCODE_NATIVE, 8053089ab7Seschrock KM_SLEEP), ==, 0); 8153089ab7Seschrock return (packed); 8253089ab7Seschrock } 8353089ab7Seschrock 8453089ab7Seschrock /*ARGSUSED*/ 8553089ab7Seschrock void 8653089ab7Seschrock fnvlist_pack_free(char *pack, size_t size) 8753089ab7Seschrock { 8853089ab7Seschrock #ifdef _KERNEL 8953089ab7Seschrock kmem_free(pack, size); 9053089ab7Seschrock #else 9153089ab7Seschrock free(pack); 9253089ab7Seschrock #endif 9353089ab7Seschrock } 9453089ab7Seschrock 9553089ab7Seschrock nvlist_t * 9653089ab7Seschrock fnvlist_unpack(char *buf, size_t buflen) 9753089ab7Seschrock { 9853089ab7Seschrock nvlist_t *rv; 99*fb09f5aaSMadhav Suresh VERIFY0(nvlist_unpack(buf, buflen, &rv, KM_SLEEP)); 10053089ab7Seschrock return (rv); 10153089ab7Seschrock } 10253089ab7Seschrock 10353089ab7Seschrock nvlist_t * 10453089ab7Seschrock fnvlist_dup(nvlist_t *nvl) 10553089ab7Seschrock { 10653089ab7Seschrock nvlist_t *rv; 107*fb09f5aaSMadhav Suresh VERIFY0(nvlist_dup(nvl, &rv, KM_SLEEP)); 10853089ab7Seschrock return (rv); 10953089ab7Seschrock } 11053089ab7Seschrock 11153089ab7Seschrock void 11253089ab7Seschrock fnvlist_merge(nvlist_t *dst, nvlist_t *src) 11353089ab7Seschrock { 114*fb09f5aaSMadhav Suresh VERIFY0(nvlist_merge(dst, src, KM_SLEEP)); 11553089ab7Seschrock } 11653089ab7Seschrock 11753089ab7Seschrock void 11853089ab7Seschrock fnvlist_add_boolean(nvlist_t *nvl, const char *name) 11953089ab7Seschrock { 120*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_boolean(nvl, name)); 12153089ab7Seschrock } 12253089ab7Seschrock 12353089ab7Seschrock void 12453089ab7Seschrock fnvlist_add_boolean_value(nvlist_t *nvl, const char *name, boolean_t val) 12553089ab7Seschrock { 126*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_boolean_value(nvl, name, val)); 12753089ab7Seschrock } 12853089ab7Seschrock 12953089ab7Seschrock void 13053089ab7Seschrock fnvlist_add_byte(nvlist_t *nvl, const char *name, uchar_t val) 13153089ab7Seschrock { 132*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_byte(nvl, name, val)); 13353089ab7Seschrock } 13453089ab7Seschrock 13553089ab7Seschrock void 13653089ab7Seschrock fnvlist_add_int8(nvlist_t *nvl, const char *name, int8_t val) 13753089ab7Seschrock { 138*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int8(nvl, name, val)); 13953089ab7Seschrock } 14053089ab7Seschrock 14153089ab7Seschrock void 14253089ab7Seschrock fnvlist_add_uint8(nvlist_t *nvl, const char *name, uint8_t val) 14353089ab7Seschrock { 144*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint8(nvl, name, val)); 14553089ab7Seschrock } 14653089ab7Seschrock 14753089ab7Seschrock void 14853089ab7Seschrock fnvlist_add_int16(nvlist_t *nvl, const char *name, int16_t val) 14953089ab7Seschrock { 150*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int16(nvl, name, val)); 15153089ab7Seschrock } 15253089ab7Seschrock 15353089ab7Seschrock void 15453089ab7Seschrock fnvlist_add_uint16(nvlist_t *nvl, const char *name, uint16_t val) 15553089ab7Seschrock { 156*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint16(nvl, name, val)); 15753089ab7Seschrock } 15853089ab7Seschrock 15953089ab7Seschrock void 16053089ab7Seschrock fnvlist_add_int32(nvlist_t *nvl, const char *name, int32_t val) 16153089ab7Seschrock { 162*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int32(nvl, name, val)); 16353089ab7Seschrock } 16453089ab7Seschrock 16553089ab7Seschrock void 16653089ab7Seschrock fnvlist_add_uint32(nvlist_t *nvl, const char *name, uint32_t val) 16753089ab7Seschrock { 168*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint32(nvl, name, val)); 16953089ab7Seschrock } 17053089ab7Seschrock 17153089ab7Seschrock void 17253089ab7Seschrock fnvlist_add_int64(nvlist_t *nvl, const char *name, int64_t val) 17353089ab7Seschrock { 174*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int64(nvl, name, val)); 17553089ab7Seschrock } 17653089ab7Seschrock 17753089ab7Seschrock void 17853089ab7Seschrock fnvlist_add_uint64(nvlist_t *nvl, const char *name, uint64_t val) 17953089ab7Seschrock { 180*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint64(nvl, name, val)); 18153089ab7Seschrock } 18253089ab7Seschrock 18353089ab7Seschrock void 18453089ab7Seschrock fnvlist_add_string(nvlist_t *nvl, const char *name, const char *val) 18553089ab7Seschrock { 186*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_string(nvl, name, val)); 18753089ab7Seschrock } 18853089ab7Seschrock 18953089ab7Seschrock void 19053089ab7Seschrock fnvlist_add_nvlist(nvlist_t *nvl, const char *name, nvlist_t *val) 19153089ab7Seschrock { 192*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_nvlist(nvl, name, val)); 19353089ab7Seschrock } 19453089ab7Seschrock 19553089ab7Seschrock void 19653089ab7Seschrock fnvlist_add_nvpair(nvlist_t *nvl, nvpair_t *pair) 19753089ab7Seschrock { 198*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_nvpair(nvl, pair)); 19953089ab7Seschrock } 20053089ab7Seschrock 20153089ab7Seschrock void 20253089ab7Seschrock fnvlist_add_boolean_array(nvlist_t *nvl, const char *name, 20353089ab7Seschrock boolean_t *val, uint_t n) 20453089ab7Seschrock { 205*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_boolean_array(nvl, name, val, n)); 20653089ab7Seschrock } 20753089ab7Seschrock 20853089ab7Seschrock void 20953089ab7Seschrock fnvlist_add_byte_array(nvlist_t *nvl, const char *name, uchar_t *val, uint_t n) 21053089ab7Seschrock { 211*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_byte_array(nvl, name, val, n)); 21253089ab7Seschrock } 21353089ab7Seschrock 21453089ab7Seschrock void 21553089ab7Seschrock fnvlist_add_int8_array(nvlist_t *nvl, const char *name, int8_t *val, uint_t n) 21653089ab7Seschrock { 217*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int8_array(nvl, name, val, n)); 21853089ab7Seschrock } 21953089ab7Seschrock 22053089ab7Seschrock void 22153089ab7Seschrock fnvlist_add_uint8_array(nvlist_t *nvl, const char *name, uint8_t *val, uint_t n) 22253089ab7Seschrock { 223*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint8_array(nvl, name, val, n)); 22453089ab7Seschrock } 22553089ab7Seschrock 22653089ab7Seschrock void 22753089ab7Seschrock fnvlist_add_int16_array(nvlist_t *nvl, const char *name, int16_t *val, uint_t n) 22853089ab7Seschrock { 229*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int16_array(nvl, name, val, n)); 23053089ab7Seschrock } 23153089ab7Seschrock 23253089ab7Seschrock void 23353089ab7Seschrock fnvlist_add_uint16_array(nvlist_t *nvl, const char *name, 23453089ab7Seschrock uint16_t *val, uint_t n) 23553089ab7Seschrock { 236*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint16_array(nvl, name, val, n)); 23753089ab7Seschrock } 23853089ab7Seschrock 23953089ab7Seschrock void 24053089ab7Seschrock fnvlist_add_int32_array(nvlist_t *nvl, const char *name, int32_t *val, uint_t n) 24153089ab7Seschrock { 242*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int32_array(nvl, name, val, n)); 24353089ab7Seschrock } 24453089ab7Seschrock 24553089ab7Seschrock void 24653089ab7Seschrock fnvlist_add_uint32_array(nvlist_t *nvl, const char *name, 24753089ab7Seschrock uint32_t *val, uint_t n) 24853089ab7Seschrock { 249*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint32_array(nvl, name, val, n)); 25053089ab7Seschrock } 25153089ab7Seschrock 25253089ab7Seschrock void 25353089ab7Seschrock fnvlist_add_int64_array(nvlist_t *nvl, const char *name, int64_t *val, uint_t n) 25453089ab7Seschrock { 255*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_int64_array(nvl, name, val, n)); 25653089ab7Seschrock } 25753089ab7Seschrock 25853089ab7Seschrock void 25953089ab7Seschrock fnvlist_add_uint64_array(nvlist_t *nvl, const char *name, 26053089ab7Seschrock uint64_t *val, uint_t n) 26153089ab7Seschrock { 262*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_uint64_array(nvl, name, val, n)); 26353089ab7Seschrock } 26453089ab7Seschrock 26553089ab7Seschrock void 26653089ab7Seschrock fnvlist_add_string_array(nvlist_t *nvl, const char *name, 26753089ab7Seschrock char * const *val, uint_t n) 26853089ab7Seschrock { 269*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_string_array(nvl, name, val, n)); 27053089ab7Seschrock } 27153089ab7Seschrock 27253089ab7Seschrock void 27353089ab7Seschrock fnvlist_add_nvlist_array(nvlist_t *nvl, const char *name, 27453089ab7Seschrock nvlist_t **val, uint_t n) 27553089ab7Seschrock { 276*fb09f5aaSMadhav Suresh VERIFY0(nvlist_add_nvlist_array(nvl, name, val, n)); 27753089ab7Seschrock } 27853089ab7Seschrock 27953089ab7Seschrock void 28053089ab7Seschrock fnvlist_remove(nvlist_t *nvl, const char *name) 28153089ab7Seschrock { 282*fb09f5aaSMadhav Suresh VERIFY0(nvlist_remove_all(nvl, name)); 28353089ab7Seschrock } 28453089ab7Seschrock 28553089ab7Seschrock void 28653089ab7Seschrock fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair) 28753089ab7Seschrock { 288*fb09f5aaSMadhav Suresh VERIFY0(nvlist_remove_nvpair(nvl, pair)); 28953089ab7Seschrock } 29053089ab7Seschrock 29153089ab7Seschrock nvpair_t * 29253089ab7Seschrock fnvlist_lookup_nvpair(nvlist_t *nvl, const char *name) 29353089ab7Seschrock { 29453089ab7Seschrock nvpair_t *rv; 295*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_nvpair(nvl, name, &rv)); 29653089ab7Seschrock return (rv); 29753089ab7Seschrock } 29853089ab7Seschrock 29953089ab7Seschrock /* returns B_TRUE if the entry exists */ 30053089ab7Seschrock boolean_t 30153089ab7Seschrock fnvlist_lookup_boolean(nvlist_t *nvl, const char *name) 30253089ab7Seschrock { 30353089ab7Seschrock return (nvlist_lookup_boolean(nvl, name) == 0); 30453089ab7Seschrock } 30553089ab7Seschrock 30653089ab7Seschrock boolean_t 30753089ab7Seschrock fnvlist_lookup_boolean_value(nvlist_t *nvl, const char *name) 30853089ab7Seschrock { 30953089ab7Seschrock boolean_t rv; 310*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_boolean_value(nvl, name, &rv)); 31153089ab7Seschrock return (rv); 31253089ab7Seschrock } 31353089ab7Seschrock 31453089ab7Seschrock uchar_t 31553089ab7Seschrock fnvlist_lookup_byte(nvlist_t *nvl, const char *name) 31653089ab7Seschrock { 31753089ab7Seschrock uchar_t rv; 318*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_byte(nvl, name, &rv)); 31953089ab7Seschrock return (rv); 32053089ab7Seschrock } 32153089ab7Seschrock 32253089ab7Seschrock int8_t 32353089ab7Seschrock fnvlist_lookup_int8(nvlist_t *nvl, const char *name) 32453089ab7Seschrock { 32553089ab7Seschrock int8_t rv; 326*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_int8(nvl, name, &rv)); 32753089ab7Seschrock return (rv); 32853089ab7Seschrock } 32953089ab7Seschrock 33053089ab7Seschrock int16_t 33153089ab7Seschrock fnvlist_lookup_int16(nvlist_t *nvl, const char *name) 33253089ab7Seschrock { 33353089ab7Seschrock int16_t rv; 334*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_int16(nvl, name, &rv)); 33553089ab7Seschrock return (rv); 33653089ab7Seschrock } 33753089ab7Seschrock 33853089ab7Seschrock int32_t 33953089ab7Seschrock fnvlist_lookup_int32(nvlist_t *nvl, const char *name) 34053089ab7Seschrock { 34153089ab7Seschrock int32_t rv; 342*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_int32(nvl, name, &rv)); 34353089ab7Seschrock return (rv); 34453089ab7Seschrock } 34553089ab7Seschrock 34653089ab7Seschrock int64_t 34753089ab7Seschrock fnvlist_lookup_int64(nvlist_t *nvl, const char *name) 34853089ab7Seschrock { 34953089ab7Seschrock int64_t rv; 350*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_int64(nvl, name, &rv)); 35153089ab7Seschrock return (rv); 35253089ab7Seschrock } 35353089ab7Seschrock 35453089ab7Seschrock uint8_t 35553089ab7Seschrock fnvlist_lookup_uint8_t(nvlist_t *nvl, const char *name) 35653089ab7Seschrock { 35753089ab7Seschrock uint8_t rv; 358*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint8(nvl, name, &rv)); 35953089ab7Seschrock return (rv); 36053089ab7Seschrock } 36153089ab7Seschrock 36253089ab7Seschrock uint16_t 36353089ab7Seschrock fnvlist_lookup_uint16(nvlist_t *nvl, const char *name) 36453089ab7Seschrock { 36553089ab7Seschrock uint16_t rv; 366*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint16(nvl, name, &rv)); 36753089ab7Seschrock return (rv); 36853089ab7Seschrock } 36953089ab7Seschrock 37053089ab7Seschrock uint32_t 37153089ab7Seschrock fnvlist_lookup_uint32(nvlist_t *nvl, const char *name) 37253089ab7Seschrock { 37353089ab7Seschrock uint32_t rv; 374*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint32(nvl, name, &rv)); 37553089ab7Seschrock return (rv); 37653089ab7Seschrock } 37753089ab7Seschrock 37853089ab7Seschrock uint64_t 37953089ab7Seschrock fnvlist_lookup_uint64(nvlist_t *nvl, const char *name) 38053089ab7Seschrock { 38153089ab7Seschrock uint64_t rv; 382*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_uint64(nvl, name, &rv)); 38353089ab7Seschrock return (rv); 38453089ab7Seschrock } 38553089ab7Seschrock 38653089ab7Seschrock char * 38753089ab7Seschrock fnvlist_lookup_string(nvlist_t *nvl, const char *name) 38853089ab7Seschrock { 38953089ab7Seschrock char *rv; 390*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_string(nvl, name, &rv)); 39153089ab7Seschrock return (rv); 39253089ab7Seschrock } 39353089ab7Seschrock 39453089ab7Seschrock nvlist_t * 39553089ab7Seschrock fnvlist_lookup_nvlist(nvlist_t *nvl, const char *name) 39653089ab7Seschrock { 39753089ab7Seschrock nvlist_t *rv; 398*fb09f5aaSMadhav Suresh VERIFY0(nvlist_lookup_nvlist(nvl, name, &rv)); 39953089ab7Seschrock return (rv); 40053089ab7Seschrock } 40153089ab7Seschrock 40253089ab7Seschrock boolean_t 40353089ab7Seschrock fnvpair_value_boolean_value(nvpair_t *nvp) 40453089ab7Seschrock { 40553089ab7Seschrock boolean_t rv; 406*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_boolean_value(nvp, &rv)); 40753089ab7Seschrock return (rv); 40853089ab7Seschrock } 40953089ab7Seschrock 41053089ab7Seschrock uchar_t 41153089ab7Seschrock fnvpair_value_byte(nvpair_t *nvp) 41253089ab7Seschrock { 41353089ab7Seschrock uchar_t rv; 414*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_byte(nvp, &rv)); 41553089ab7Seschrock return (rv); 41653089ab7Seschrock } 41753089ab7Seschrock 41853089ab7Seschrock int8_t 41953089ab7Seschrock fnvpair_value_int8(nvpair_t *nvp) 42053089ab7Seschrock { 42153089ab7Seschrock int8_t rv; 422*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int8(nvp, &rv)); 42353089ab7Seschrock return (rv); 42453089ab7Seschrock } 42553089ab7Seschrock 42653089ab7Seschrock int16_t 42753089ab7Seschrock fnvpair_value_int16(nvpair_t *nvp) 42853089ab7Seschrock { 42953089ab7Seschrock int16_t rv; 430*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int16(nvp, &rv)); 43153089ab7Seschrock return (rv); 43253089ab7Seschrock } 43353089ab7Seschrock 43453089ab7Seschrock int32_t 43553089ab7Seschrock fnvpair_value_int32(nvpair_t *nvp) 43653089ab7Seschrock { 43753089ab7Seschrock int32_t rv; 438*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int32(nvp, &rv)); 43953089ab7Seschrock return (rv); 44053089ab7Seschrock } 44153089ab7Seschrock 44253089ab7Seschrock int64_t 44353089ab7Seschrock fnvpair_value_int64(nvpair_t *nvp) 44453089ab7Seschrock { 44553089ab7Seschrock int64_t rv; 446*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_int64(nvp, &rv)); 44753089ab7Seschrock return (rv); 44853089ab7Seschrock } 44953089ab7Seschrock 45053089ab7Seschrock uint8_t 45153089ab7Seschrock fnvpair_value_uint8_t(nvpair_t *nvp) 45253089ab7Seschrock { 45353089ab7Seschrock uint8_t rv; 454*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint8(nvp, &rv)); 45553089ab7Seschrock return (rv); 45653089ab7Seschrock } 45753089ab7Seschrock 45853089ab7Seschrock uint16_t 45953089ab7Seschrock fnvpair_value_uint16(nvpair_t *nvp) 46053089ab7Seschrock { 46153089ab7Seschrock uint16_t rv; 462*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint16(nvp, &rv)); 46353089ab7Seschrock return (rv); 46453089ab7Seschrock } 46553089ab7Seschrock 46653089ab7Seschrock uint32_t 46753089ab7Seschrock fnvpair_value_uint32(nvpair_t *nvp) 46853089ab7Seschrock { 46953089ab7Seschrock uint32_t rv; 470*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint32(nvp, &rv)); 47153089ab7Seschrock return (rv); 47253089ab7Seschrock } 47353089ab7Seschrock 47453089ab7Seschrock uint64_t 47553089ab7Seschrock fnvpair_value_uint64(nvpair_t *nvp) 47653089ab7Seschrock { 47753089ab7Seschrock uint64_t rv; 478*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_uint64(nvp, &rv)); 47953089ab7Seschrock return (rv); 48053089ab7Seschrock } 48153089ab7Seschrock 48253089ab7Seschrock char * 48353089ab7Seschrock fnvpair_value_string(nvpair_t *nvp) 48453089ab7Seschrock { 48553089ab7Seschrock char *rv; 486*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_string(nvp, &rv)); 48753089ab7Seschrock return (rv); 48853089ab7Seschrock } 48953089ab7Seschrock 49053089ab7Seschrock nvlist_t * 49153089ab7Seschrock fnvpair_value_nvlist(nvpair_t *nvp) 49253089ab7Seschrock { 49353089ab7Seschrock nvlist_t *rv; 494*fb09f5aaSMadhav Suresh VERIFY0(nvpair_value_nvlist(nvp, &rv)); 49553089ab7Seschrock return (rv); 49653089ab7Seschrock } 497