DNV(9)                 FreeBSD Kernel Developer's Manual                DNV(9)

NAME

     dnvlist_get, dnvlist_take - API for getting name/value pairs with a
     default value

LIBRARY

     Name/value pairs library (libnv, -lnv)

SYNOPSIS

     #include <sys/dnv.h>

     bool
     dnvlist_get_bool(const nvlist_t *nvl, const char *name, bool defval);

     uint64_t
     dnvlist_get_number(const nvlist_t *nvl, const char *name,
         uint64_t defval);

     char *
     dnvlist_get_string(const nvlist_t *nvl, const char *name,
         const char *defval);

     nvlist_t *
     dnvlist_get_nvlist(const nvlist_t *nvl, const char *name,
         nvlist_t *defval);

     int
     dnvlist_get_descriptor(const nvlist_t *nvl, const char *name,
         int defval);

     void *
     dnvlist_get_binary(const nvlist_t *nvl, const char *name, size_t *sizep,
         void *defval, size_t defsize);

     bool
     dnvlist_take_bool(const nvlist_t *nvl, const char *name, bool defval);

     uint64_t
     dnvlist_take_number(const nvlist_t *nvl, const char *name,
         uint64_t defval);

     char *
     dnvlist_take_string(const nvlist_t *nvl, const char *name,
         const char *defval);

     nvlist_t *
     dnvlist_take_nvlist(const nvlist_t *nvl, const char *name,
         nvlist_t *defval);

     int
     dnvlist_take_descriptor(const nvlist_t *nvl, const char *name,
         int defval);

     void *
     dnvlist_take_binary(const nvlist_t *nvl, const char *name, size_t *sizep,
         void *defval, size_t defsize);

DESCRIPTION

     The libnv library permits easy management of name/value pairs and can
     send and receive them over sockets.  For more information, see nv(9).

     The dnvlist_get functions return the value associated with name.  If an
     element named name does not exist, the function returns the value
     provided in defval.  Returned strings, nvlists, descriptors, binaries, or
     arrays must not be modified by the user since they still belong to the
     nvlist.  If the nvlist is in an error state, attempts to use any of these
     functions will cause the program to abort.

     The dnvlist_take functions return the value associated with name and
     removes the associated element from nvl.  If an element named name does
     not exist, the value provided in defval is returned.  When the value is a
     string, binary, or array value, the caller is responsible for freeing
     returned memory with free(3).  When the value is an nvlist, the caller is
     responsible for destroying the returned nvlist with nvlist_destroy().
     When the value is a descriptor, the caller is responsible for closing the
     returned descriptor with close(2).

SEE ALSO

     close(2), free(3), nv(9)

HISTORY

     The dnv API appeared in FreeBSD 11.0.

AUTHORS

     The dnv API was implemented by Pawel Jakub Dawidek <pawel@dawidek.net>
     under sponsorship from the FreeBSD Foundation.  This manual page was
     written by Adam Starak <starak.adam@gmail.com>

FreeBSD 15.1-STABLE-HBSD        January 3, 2025                         DNV(9)