1# 2# Copyright 2015 ClusterHQ 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17""" 18Python bindings for ``libnvpair``. 19""" 20from __future__ import absolute_import, division, print_function 21 22CDEF = """ 23 typedef ... nvlist_t; 24 typedef ... nvpair_t; 25 26 27 typedef enum { 28 DATA_TYPE_UNKNOWN = 0, 29 DATA_TYPE_BOOLEAN, 30 DATA_TYPE_BYTE, 31 DATA_TYPE_INT16, 32 DATA_TYPE_UINT16, 33 DATA_TYPE_INT32, 34 DATA_TYPE_UINT32, 35 DATA_TYPE_INT64, 36 DATA_TYPE_UINT64, 37 DATA_TYPE_STRING, 38 DATA_TYPE_BYTE_ARRAY, 39 DATA_TYPE_INT16_ARRAY, 40 DATA_TYPE_UINT16_ARRAY, 41 DATA_TYPE_INT32_ARRAY, 42 DATA_TYPE_UINT32_ARRAY, 43 DATA_TYPE_INT64_ARRAY, 44 DATA_TYPE_UINT64_ARRAY, 45 DATA_TYPE_STRING_ARRAY, 46 DATA_TYPE_HRTIME, 47 DATA_TYPE_NVLIST, 48 DATA_TYPE_NVLIST_ARRAY, 49 DATA_TYPE_BOOLEAN_VALUE, 50 DATA_TYPE_INT8, 51 DATA_TYPE_UINT8, 52 DATA_TYPE_BOOLEAN_ARRAY, 53 DATA_TYPE_INT8_ARRAY, 54 DATA_TYPE_UINT8_ARRAY 55 } data_type_t; 56 typedef enum { B_FALSE, B_TRUE } boolean_t; 57 58 typedef unsigned char uchar_t; 59 typedef unsigned int uint_t; 60 61 int nvlist_alloc(nvlist_t **, uint_t, int); 62 void nvlist_free(nvlist_t *); 63 64 int nvlist_unpack(char *, size_t, nvlist_t **, int); 65 66 void dump_nvlist(nvlist_t *, int); 67 int nvlist_dup(nvlist_t *, nvlist_t **, int); 68 69 int nvlist_add_boolean(nvlist_t *, const char *); 70 int nvlist_add_boolean_value(nvlist_t *, const char *, boolean_t); 71 int nvlist_add_byte(nvlist_t *, const char *, uchar_t); 72 int nvlist_add_int8(nvlist_t *, const char *, int8_t); 73 int nvlist_add_uint8(nvlist_t *, const char *, uint8_t); 74 int nvlist_add_int16(nvlist_t *, const char *, int16_t); 75 int nvlist_add_uint16(nvlist_t *, const char *, uint16_t); 76 int nvlist_add_int32(nvlist_t *, const char *, int32_t); 77 int nvlist_add_uint32(nvlist_t *, const char *, uint32_t); 78 int nvlist_add_int64(nvlist_t *, const char *, int64_t); 79 int nvlist_add_uint64(nvlist_t *, const char *, uint64_t); 80 int nvlist_add_string(nvlist_t *, const char *, const char *); 81 int nvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *); 82 int nvlist_add_boolean_array(nvlist_t *, const char *, 83 const boolean_t *, uint_t); 84 int nvlist_add_byte_array(nvlist_t *, const char *, 85 const uchar_t *, uint_t); 86 int nvlist_add_int8_array(nvlist_t *, const char *, 87 const int8_t *, uint_t); 88 int nvlist_add_uint8_array(nvlist_t *, const char *, 89 const uint8_t *, uint_t); 90 int nvlist_add_int16_array(nvlist_t *, const char *, 91 const int16_t *, uint_t); 92 int nvlist_add_uint16_array(nvlist_t *, const char *, 93 const uint16_t *, uint_t); 94 int nvlist_add_int32_array(nvlist_t *, const char *, 95 const int32_t *, uint_t); 96 int nvlist_add_uint32_array(nvlist_t *, const char *, 97 const uint32_t *, uint_t); 98 int nvlist_add_int64_array(nvlist_t *, const char *, 99 const int64_t *, uint_t); 100 int nvlist_add_uint64_array(nvlist_t *, const char *, 101 const uint64_t *, uint_t); 102 int nvlist_add_string_array(nvlist_t *, const char *, 103 const char * const *, uint_t); 104 int nvlist_add_nvlist_array(nvlist_t *, const char *, 105 const nvlist_t * const *, uint_t); 106 107 nvpair_t *nvlist_next_nvpair(nvlist_t *, nvpair_t *); 108 nvpair_t *nvlist_prev_nvpair(nvlist_t *, nvpair_t *); 109 char *nvpair_name(nvpair_t *); 110 data_type_t nvpair_type(nvpair_t *); 111 int nvpair_type_is_array(nvpair_t *); 112 int nvpair_value_boolean_value(nvpair_t *, boolean_t *); 113 int nvpair_value_byte(nvpair_t *, uchar_t *); 114 int nvpair_value_int8(nvpair_t *, int8_t *); 115 int nvpair_value_uint8(nvpair_t *, uint8_t *); 116 int nvpair_value_int16(nvpair_t *, int16_t *); 117 int nvpair_value_uint16(nvpair_t *, uint16_t *); 118 int nvpair_value_int32(nvpair_t *, int32_t *); 119 int nvpair_value_uint32(nvpair_t *, uint32_t *); 120 int nvpair_value_int64(nvpair_t *, int64_t *); 121 int nvpair_value_uint64(nvpair_t *, uint64_t *); 122 int nvpair_value_string(nvpair_t *, char **); 123 int nvpair_value_nvlist(nvpair_t *, nvlist_t **); 124 int nvpair_value_boolean_array(nvpair_t *, boolean_t **, uint_t *); 125 int nvpair_value_byte_array(nvpair_t *, uchar_t **, uint_t *); 126 int nvpair_value_int8_array(nvpair_t *, int8_t **, uint_t *); 127 int nvpair_value_uint8_array(nvpair_t *, uint8_t **, uint_t *); 128 int nvpair_value_int16_array(nvpair_t *, int16_t **, uint_t *); 129 int nvpair_value_uint16_array(nvpair_t *, uint16_t **, uint_t *); 130 int nvpair_value_int32_array(nvpair_t *, int32_t **, uint_t *); 131 int nvpair_value_uint32_array(nvpair_t *, uint32_t **, uint_t *); 132 int nvpair_value_int64_array(nvpair_t *, int64_t **, uint_t *); 133 int nvpair_value_uint64_array(nvpair_t *, uint64_t **, uint_t *); 134 int nvpair_value_string_array(nvpair_t *, char ***, uint_t *); 135 int nvpair_value_nvlist_array(nvpair_t *, nvlist_t ***, uint_t *); 136""" 137 138SOURCE = """ 139#include <libzfs/sys/nvpair.h> 140""" 141 142LIBRARY = "nvpair" 143 144# vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 145