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