• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/contrib/libnv/

Lines Matching refs:nvl

97 #define	NVLIST_MAGIC	0x6e766c	/* "nvl" */
107 #define NVLIST_ASSERT(nvl) do { \
108 PJDLOG_ASSERT((nvl) != NULL); \
109 PJDLOG_ASSERT((nvl)->nvl_magic == NVLIST_MAGIC); \
131 nvlist_t *nvl;
135 nvl = nv_malloc(sizeof(*nvl));
136 if (nvl == NULL)
138 nvl->nvl_error = 0;
139 nvl->nvl_flags = flags;
140 nvl->nvl_parent = NULL;
141 nvl->nvl_array_next = NULL;
142 TAILQ_INIT(&nvl->nvl_head);
143 nvl->nvl_magic = NVLIST_MAGIC;
145 return (nvl);
149 nvlist_destroy(nvlist_t *nvl)
153 if (nvl == NULL)
158 NVLIST_ASSERT(nvl);
160 while ((nvp = nvlist_first_nvpair(nvl)) != NULL) {
161 nvlist_remove_nvpair(nvl, nvp);
164 if (nvl->nvl_array_next != NULL)
165 nvpair_free_structure(nvl->nvl_array_next);
166 nvl->nvl_array_next = NULL;
167 nvl->nvl_parent = NULL;
168 nvl->nvl_magic = 0;
169 nv_free(nvl);
175 nvlist_set_error(nvlist_t *nvl, int error)
184 if (nvl != NULL && error != 0 && nvl->nvl_error == 0)
185 nvl->nvl_error = error;
189 nvlist_error(const nvlist_t *nvl)
192 if (nvl == NULL)
195 NVLIST_ASSERT(nvl);
197 return (nvl->nvl_error);
201 nvlist_get_nvpair_parent(const nvlist_t *nvl)
204 NVLIST_ASSERT(nvl);
206 return (nvl->nvl_parent);
210 nvlist_get_parent(const nvlist_t *nvl, void **cookiep)
214 NVLIST_ASSERT(nvl);
216 nvp = nvl->nvl_parent;
226 nvlist_set_parent(nvlist_t *nvl, nvpair_t *parent)
229 NVLIST_ASSERT(nvl);
231 nvl->nvl_parent = parent;
235 nvlist_set_array_next(nvlist_t *nvl, nvpair_t *ele)
238 NVLIST_ASSERT(nvl);
241 nvl->nvl_flags |= NV_FLAG_IN_ARRAY;
243 nvl->nvl_flags &= ~NV_FLAG_IN_ARRAY;
244 nv_free(nvl->nvl_array_next);
247 nvl->nvl_array_next = ele;
251 nvlist_in_array(const nvlist_t *nvl)
254 NVLIST_ASSERT(nvl);
256 return ((nvl->nvl_flags & NV_FLAG_IN_ARRAY) != 0);
260 nvlist_get_array_next(const nvlist_t *nvl)
264 NVLIST_ASSERT(nvl);
266 nvp = nvl->nvl_array_next;
274 nvlist_get_pararr(const nvlist_t *nvl, void **cookiep)
278 ret = nvlist_get_array_next(nvl);
285 return (nvlist_get_parent(nvl, cookiep));
289 nvlist_empty(const nvlist_t *nvl)
292 NVLIST_ASSERT(nvl);
293 PJDLOG_ASSERT(nvl->nvl_error == 0);
295 return (nvlist_first_nvpair(nvl) == NULL);
299 nvlist_flags(const nvlist_t *nvl)
302 NVLIST_ASSERT(nvl);
303 PJDLOG_ASSERT(nvl->nvl_error == 0);
305 return (nvl->nvl_flags & NV_FLAG_PUBLIC_MASK);
309 nvlist_set_flags(nvlist_t *nvl, int flags)
312 NVLIST_ASSERT(nvl);
313 PJDLOG_ASSERT(nvl->nvl_error == 0);
315 nvl->nvl_flags = flags;
327 nvlist_find(const nvlist_t *nvl, int type, const char *name)
331 NVLIST_ASSERT(nvl);
332 PJDLOG_ASSERT(nvl->nvl_error == 0);
336 for (nvp = nvlist_first_nvpair(nvl); nvp != NULL;
337 nvp = nvlist_next_nvpair(nvl, nvp)) {
340 if ((nvl->nvl_flags & NV_FLAG_IGNORE_CASE) != 0) {
357 nvlist_exists_type(const nvlist_t *nvl, const char *name, int type)
360 NVLIST_ASSERT(nvl);
361 PJDLOG_ASSERT(nvl->nvl_error == 0);
365 return (nvlist_find(nvl, type, name) != NULL);
369 nvlist_free_type(nvlist_t *nvl, const char *name, int type)
373 NVLIST_ASSERT(nvl);
374 PJDLOG_ASSERT(nvl->nvl_error == 0);
378 nvp = nvlist_find(nvl, type, name);
380 nvlist_free_nvpair(nvl, nvp);
386 nvlist_clone(const nvlist_t *nvl)
391 NVLIST_ASSERT(nvl);
393 if (nvl->nvl_error != 0) {
394 ERRNO_SET(nvl->nvl_error);
398 newnvl = nvlist_create(nvl->nvl_flags & NV_FLAG_PUBLIC_MASK);
399 for (nvp = nvlist_first_nvpair(nvl); nvp != NULL;
400 nvp = nvlist_next_nvpair(nvl, nvp)) {
415 nvlist_dump_error_check(const nvlist_t *nvl, int fd, int level)
418 if (nvlist_error(nvl) != 0) {
420 nvlist_error(nvl));
431 nvlist_dump(const nvlist_t *nvl, int fd)
439 if (nvlist_dump_error_check(nvl, fd, level))
442 nvp = nvlist_first_nvpair(nvl);
470 nvl = tmpnvl;
587 nvl = tmpnvl;
598 while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
601 if (nvlist_in_array(nvl))
603 nvl = nvlist_get_pararr(nvl, &cookie);
604 if (nvl == NULL)
606 if (nvlist_in_array(nvl) && cookie == NULL) {
607 nvp = nvlist_first_nvpair(nvl);
613 if (nvlist_in_array(nvl) && cookie == NULL)
620 nvlist_fdump(const nvlist_t *nvl, FILE *fp)
624 nvlist_dump(nvl, fileno(fp));
632 nvlist_size(const nvlist_t *nvl)
641 NVLIST_ASSERT(nvl);
642 PJDLOG_ASSERT(nvl->nvl_error == 0);
645 nvp = nvlist_first_nvpair(nvl);
656 nvl = tmpnvl;
679 nvl = tmpnvl;
687 while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
690 nvl = nvlist_get_pararr(nvl, &cookie);
691 if (nvl == NULL)
693 if (nvlist_in_array(nvl) && cookie == NULL) {
694 nvp = nvlist_first_nvpair(nvl);
699 if (nvlist_in_array(nvl) && cookie == NULL)
710 nvlist_xdescriptors(const nvlist_t *nvl, int *descs)
716 NVLIST_ASSERT(nvl);
717 PJDLOG_ASSERT(nvl->nvl_error == 0);
721 while (nvlist_next(nvl, &type, &cookie) != NULL) {
743 nvl = nvpair_get_nvlist(nvp);
755 nvl = value[0];
761 } while ((nvl = nvlist_get_pararr(nvl, &cookie)) != NULL);
769 nvlist_descriptors(const nvlist_t *nvl, size_t *nitemsp)
774 nitems = nvlist_ndescriptors(nvl);
779 nvlist_xdescriptors(nvl, fds);
788 nvlist_ndescriptors(const nvlist_t *nvl)
796 NVLIST_ASSERT(nvl);
797 PJDLOG_ASSERT(nvl->nvl_error == 0);
802 while (nvlist_next(nvl, &type, &cookie) != NULL) {
809 nvl = nvpair_get_nvlist(nvp);
821 nvl = value[0];
836 } while ((nvl = nvlist_get_pararr(nvl, &cookie)) != NULL);
845 nvlist_pack_header(const nvlist_t *nvl, unsigned char *ptr, size_t *leftp)
849 NVLIST_ASSERT(nvl);
853 nvlhdr.nvlh_flags = nvl->nvl_flags;
857 nvlhdr.nvlh_descriptors = nvlist_ndescriptors(nvl);
868 nvlist_xpack(const nvlist_t *nvl, int64_t *fdidxp, size_t *sizep)
876 NVLIST_ASSERT(nvl);
878 if (nvl->nvl_error != 0) {
879 ERRNO_SET(nvl->nvl_error);
883 size = nvlist_size(nvl);
891 ptr = nvlist_pack_header(nvl, ptr, &left);
893 nvp = nvlist_first_nvpair(nvl);
921 nvl = tmpnvl;
970 nvl = tmpnvl;
981 while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
984 if (nvlist_in_array(nvl)) {
990 nvl = nvlist_get_pararr(nvl, &cookie);
991 if (nvl == NULL)
993 if (nvlist_in_array(nvl) && cookie == NULL) {
994 nvp = nvlist_first_nvpair(nvl);
995 ptr = nvlist_pack_header(nvl, ptr,
1009 if (nvlist_in_array(nvl) && cookie == NULL)
1024 nvlist_pack(const nvlist_t *nvl, size_t *sizep)
1027 NVLIST_ASSERT(nvl);
1029 if (nvl->nvl_error != 0) {
1030 ERRNO_SET(nvl->nvl_error);
1034 if (nvlist_ndescriptors(nvl) > 0) {
1039 return (nvlist_xpack(nvl, NULL, sizep));
1069 nvlist_unpack_header(nvlist_t *nvl, const unsigned char *ptr, size_t nfds,
1095 inarrayf = (nvl->nvl_flags & NV_FLAG_IN_ARRAY);
1096 nvl->nvl_flags = (nvlhdr.nvlh_flags & NV_FLAG_PUBLIC_MASK) | inarrayf;
1114 nvlist_t *nvl, *retnvl, *tmpnvl, *array;
1125 nvl = retnvl = nvlist_create(0);
1126 if (nvl == NULL)
1129 ptr = nvlist_unpack_header(nvl, ptr, nfds, &isbe, &left);
1132 if (nvl->nvl_flags != flags) {
1175 if (nvl->nvl_parent == NULL)
1177 nvl = nvpair_nvlist(nvl->nvl_parent);
1181 if (nvl->nvl_array_next == NULL) {
1182 if (nvl->nvl_parent == NULL)
1184 nvl = nvpair_nvlist(nvl->nvl_parent);
1186 nvl = __DECONST(nvlist_t *,
1187 nvlist_get_array_next(nvl));
1188 ptr = nvlist_unpack_header(nvl, ptr, nfds,
1224 if (!nvlist_move_nvpair(nvl, nvp))
1227 nvl = tmpnvl;
1247 nvlist_send(int sock, const nvlist_t *nvl)
1255 if (nvlist_error(nvl) != 0) {
1256 ERRNO_SET(nvlist_error(nvl));
1260 fds = nvlist_descriptors(nvl, &nfds);
1267 data = nvlist_xpack(nvl, &fdidx, &datasize);
1292 nvlist_t *nvl, *ret;
1326 nvl = nvlist_xunpack(buf, size, fds, nfds, flags);
1327 if (nvl == NULL) {
1335 ret = nvl;
1346 nvlist_xfer(int sock, nvlist_t *nvl, int flags)
1349 if (nvlist_send(sock, nvl) < 0) {
1350 nvlist_destroy(nvl);
1353 nvlist_destroy(nvl);
1359 nvlist_first_nvpair(const nvlist_t *nvl)
1362 NVLIST_ASSERT(nvl);
1364 return (TAILQ_FIRST(&nvl->nvl_head));
1368 nvlist_next_nvpair(const nvlist_t *nvl __unused, const nvpair_t *nvp)
1372 NVLIST_ASSERT(nvl);
1374 PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl);
1377 PJDLOG_ASSERT(retnvp == NULL || nvpair_nvlist(retnvp) == nvl);
1384 nvlist_prev_nvpair(const nvlist_t *nvl __unused, const nvpair_t *nvp)
1388 NVLIST_ASSERT(nvl);
1390 PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl);
1393 PJDLOG_ASSERT(nvpair_nvlist(retnvp) == nvl);
1399 nvlist_next(const nvlist_t *nvl, int *typep, void **cookiep)
1403 NVLIST_ASSERT(nvl);
1406 nvp = nvlist_first_nvpair(nvl);
1408 nvp = nvlist_next_nvpair(nvl, *cookiep);
1419 nvlist_exists(const nvlist_t *nvl, const char *name)
1422 return (nvlist_find(nvl, NV_TYPE_NONE, name) != NULL);
1427 nvlist_exists_##type(const nvlist_t *nvl, const char *name) \
1430 return (nvlist_find(nvl, NV_TYPE_##TYPE, name) != NULL); \
1451 nvlist_add_nvpair(nvlist_t *nvl, const nvpair_t *nvp)
1457 if (nvlist_error(nvl) != 0) {
1458 ERRNO_SET(nvlist_error(nvl));
1461 if ((nvl->nvl_flags & NV_FLAG_NO_UNIQUE) == 0) {
1462 if (nvlist_exists(nvl, nvpair_name(nvp))) {
1463 nvl->nvl_error = EEXIST;
1464 ERRNO_SET(nvlist_error(nvl));
1471 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1472 ERRNO_SET(nvlist_error(nvl));
1476 nvpair_insert(&nvl->nvl_head, newnvp, nvl);
1480 nvlist_add_stringf(nvlist_t *nvl, const char *name, const char *valuefmt, ...)
1485 nvlist_add_stringv(nvl, name, valuefmt, valueap);
1490 nvlist_add_stringv(nvlist_t *nvl, const char *name, const char *valuefmt,
1495 if (nvlist_error(nvl) != 0) {
1496 ERRNO_SET(nvlist_error(nvl));
1502 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1503 ERRNO_SET(nvl->nvl_error);
1505 (void)nvlist_move_nvpair(nvl, nvp);
1510 nvlist_add_null(nvlist_t *nvl, const char *name)
1514 if (nvlist_error(nvl) != 0) {
1515 ERRNO_SET(nvlist_error(nvl));
1521 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1522 ERRNO_SET(nvl->nvl_error);
1524 (void)nvlist_move_nvpair(nvl, nvp);
1529 nvlist_add_binary(nvlist_t *nvl, const char *name, const void *value,
1534 if (nvlist_error(nvl) != 0) {
1535 ERRNO_SET(nvlist_error(nvl));
1541 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1542 ERRNO_SET(nvl->nvl_error);
1544 (void)nvlist_move_nvpair(nvl, nvp);
1551 nvlist_add_##type(nvlist_t *nvl, const char *name, vtype value) \
1555 if (nvlist_error(nvl) != 0) { \
1556 ERRNO_SET(nvlist_error(nvl)); \
1562 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM); \
1563 ERRNO_SET(nvl->nvl_error); \
1565 (void)nvlist_move_nvpair(nvl, nvp); \
1581 nvlist_add_##type##_array(nvlist_t *nvl, const char *name, vtype value, \
1586 if (nvlist_error(nvl) != 0) { \
1587 ERRNO_SET(nvlist_error(nvl)); \
1593 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM); \
1594 ERRNO_SET(nvl->nvl_error); \
1596 (void)nvlist_move_nvpair(nvl, nvp); \
1612 nvlist_append_##type##_array(nvlist_t *nvl, const char *name, vtype value)\
1616 if (nvlist_error(nvl) != 0) { \
1617 ERRNO_SET(nvlist_error(nvl)); \
1620 nvp = nvlist_find(nvl, NV_TYPE_##TYPE##_ARRAY, name); \
1622 nvlist_add_##type##_array(nvl, name, &value, 1); \
1626 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM); \
1627 ERRNO_SET(nvl->nvl_error); \
1642 nvlist_move_nvpair(nvlist_t *nvl, nvpair_t *nvp)
1648 if (nvlist_error(nvl) != 0) {
1650 ERRNO_SET(nvlist_error(nvl));
1653 if ((nvl->nvl_flags & NV_FLAG_NO_UNIQUE) == 0) {
1654 if (nvlist_exists(nvl, nvpair_name(nvp))) {
1656 nvl->nvl_error = EEXIST;
1657 ERRNO_SET(nvl->nvl_error);
1662 nvpair_insert(&nvl->nvl_head, nvp, nvl);
1667 nvlist_move_string(nvlist_t *nvl, const char *name, char *value)
1671 if (nvlist_error(nvl) != 0) {
1673 ERRNO_SET(nvlist_error(nvl));
1679 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1680 ERRNO_SET(nvl->nvl_error);
1682 (void)nvlist_move_nvpair(nvl, nvp);
1687 nvlist_move_nvlist(nvlist_t *nvl, const char *name, nvlist_t *value)
1691 if (nvlist_error(nvl) != 0) {
1694 ERRNO_SET(nvlist_error(nvl));
1700 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1701 ERRNO_SET(nvl->nvl_error);
1703 (void)nvlist_move_nvpair(nvl, nvp);
1709 nvlist_move_descriptor(nvlist_t *nvl, const char *name, int value)
1713 if (nvlist_error(nvl) != 0) {
1715 ERRNO_SET(nvlist_error(nvl));
1721 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1722 ERRNO_SET(nvl->nvl_error);
1724 (void)nvlist_move_nvpair(nvl, nvp);
1730 nvlist_move_binary(nvlist_t *nvl, const char *name, void *value, size_t size)
1734 if (nvlist_error(nvl) != 0) {
1736 ERRNO_SET(nvlist_error(nvl));
1742 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1743 ERRNO_SET(nvl->nvl_error);
1745 (void)nvlist_move_nvpair(nvl, nvp);
1750 nvlist_move_bool_array(nvlist_t *nvl, const char *name, bool *value,
1755 if (nvlist_error(nvl) != 0) {
1757 ERRNO_SET(nvlist_error(nvl));
1763 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1764 ERRNO_SET(nvl->nvl_error);
1766 (void)nvlist_move_nvpair(nvl, nvp);
1771 nvlist_move_string_array(nvlist_t *nvl, const char *name, char **value,
1777 if (nvlist_error(nvl) != 0) {
1783 ERRNO_SET(nvlist_error(nvl));
1789 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1790 ERRNO_SET(nvl->nvl_error);
1792 (void)nvlist_move_nvpair(nvl, nvp);
1797 nvlist_move_nvlist_array(nvlist_t *nvl, const char *name, nvlist_t **value,
1803 if (nvlist_error(nvl) != 0) {
1811 ERRNO_SET(nvlist_error(nvl));
1817 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1818 ERRNO_SET(nvl->nvl_error);
1820 (void)nvlist_move_nvpair(nvl, nvp);
1825 nvlist_move_number_array(nvlist_t *nvl, const char *name, uint64_t *value,
1830 if (nvlist_error(nvl) != 0) {
1832 ERRNO_SET(nvlist_error(nvl));
1838 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1839 ERRNO_SET(nvl->nvl_error);
1841 (void)nvlist_move_nvpair(nvl, nvp);
1847 nvlist_move_descriptor_array(nvlist_t *nvl, const char *name, int *value,
1853 if (nvlist_error(nvl) != 0) {
1860 ERRNO_SET(nvlist_error(nvl));
1866 nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM);
1867 ERRNO_SET(nvl->nvl_error);
1869 (void)nvlist_move_nvpair(nvl, nvp);
1875 nvlist_get_nvpair(const nvlist_t *nvl, const char *name)
1878 return (nvlist_find(nvl, NV_TYPE_NONE, name));
1883 nvlist_get_##type(const nvlist_t *nvl, const char *name) \
1887 nvp = nvlist_find(nvl, NV_TYPE_##TYPE, name); \
1904 nvlist_get_binary(const nvlist_t *nvl, const char *name, size_t *sizep)
1908 nvp = nvlist_find(nvl, NV_TYPE_BINARY, name);
1917 nvlist_get_##type##_array(const nvlist_t *nvl, const char *name, \
1922 nvp = nvlist_find(nvl, NV_TYPE_##TYPE##_ARRAY, name); \
1940 nvlist_take_##type(nvlist_t *nvl, const char *name) \
1945 nvp = nvlist_find(nvl, NV_TYPE_##TYPE, name); \
1949 nvlist_remove_nvpair(nvl, nvp); \
1965 nvlist_take_binary(nvlist_t *nvl, const char *name, size_t *sizep)
1970 nvp = nvlist_find(nvl, NV_TYPE_BINARY, name);
1975 nvlist_remove_nvpair(nvl, nvp);
1982 nvlist_take_##type##_array(nvlist_t *nvl, const char *name, \
1988 nvp = nvlist_find(nvl, NV_TYPE_##TYPE##_ARRAY, name); \
1992 nvlist_remove_nvpair(nvl, nvp); \
2006 nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
2009 NVLIST_ASSERT(nvl);
2011 PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl);
2013 nvpair_remove(&nvl->nvl_head, nvp, nvl);
2017 nvlist_free(nvlist_t *nvl, const char *name)
2020 nvlist_free_type(nvl, name, NV_TYPE_NONE);
2025 nvlist_free_##type(nvlist_t *nvl, const char *name) \
2028 nvlist_free_type(nvl, name, NV_TYPE_##TYPE); \
2049 nvlist_free_nvpair(nvlist_t *nvl, nvpair_t *nvp)
2052 NVLIST_ASSERT(nvl);
2054 PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl);
2056 nvlist_remove_nvpair(nvl, nvp);