146#define VAL_MAX_PLOCKS 1
149#define VAL_MAX_DATARULES 1
152#define VAL_MAX_NUMLEN NCX_MAX_NUMLEN
155#define VAL_BINDEX_CH '['
156#define VAL_EINDEX_CH ']'
158#define VAL_BENUM_CH '('
159#define VAL_EENUM_CH ')'
160#define VAL_INST_SEPCH '.'
161#define VAL_INDEX_SEPCH ','
162#define VAL_INDEX_CLI_SEPCH ' '
163#define VAL_CLI_SEPCH ' '
164#define VAL_QUOTE_CH '\''
165#define VAL_DBLQUOTE_CH '\"'
166#define VAL_EQUAL_CH '='
167#define VAL_XPATH_SEPCH '/'
169#define VAL_XPATH_INDEX_SEPSTR (const xmlChar *)"]["
170#define VAL_XPATH_INDEX_SEPLEN 2
173#define VAL_PASSWORD_STRING (const xmlChar *)"****"
178#define VAL_FL_DUPDONE bit0
181#define VAL_FL_DUPOK bit1
184#define VAL_FL_DEFSET bit2
187#define VAL_FL_META bit3
190#define VAL_FL_DIRTY bit4
193#define VAL_FL_UNIDONE bit5
196#define VAL_FL_DEFVALSET bit6
201#define VAL_FL_DEFVAL bit7
206#define VAL_FL_WITHDEF bit8
209#define VAL_FL_DELETED bit9
214#define VAL_FL_SUBTREE_DIRTY bit10
221#define VAL_FL_CHILD_DELETED bit11
229#define VAL_FL_IS_VAREXPR bit12
234#define VAL_FL_FIXED_VALUE bit13
239#define VAL_FL_EDIT2_MERGE bit14
242#define VAL_FL_EXTERNAL bit15
248#define VAL_FL_FORCE_CONFIG bit16
254#define VAL_FL_FORCE_CONFIG_VALUE bit17
260#define VAL_FL_VALUE_SET bit18
266#define VAL_FL_TEMP_XPATH bit19
271#define VAL_FL_UNCMTD_DELETE bit20
276#define VAL_FL_RECREATED bit21
283#define VAL_FL_SUBTREE_RECREATED bit22
289#define VAL_FL_FROM_TEMPLATE bit23
293#define VAL_FL_CANONICAL bit24
298#define VAL_FL_IS_INDEX bit25
304#define VAL_FL_WILDCARD bit26
309#define VAL_FL_ANYXML_KEY bit27
314#define VAL_FL_ANYXML_CONFIG bit28
321#define VAL_FL_ANYXML_UNKNOWN bit29
324#define VAL_FL_DEFCON_DELETED bit30
334#define VAL_FL_ADDEDIT_DELETED bit31
337/********* val_child_hdr->flags fields ***************/
347#define VAL_FL_GENERIC bit0
350#define VAL_FL_ROOT bit1
353#define VAL_FL_USE_QUE bit2
356#define VAL_FL_USE_TREE bit3
359#define VAL_FL_HDR_DIRTY bit4
362#define VAL_FL_HDR_SUBTREE_DIRTY bit5
367#define VAL_FL_HDR_RECREATED bit6
372#define VAL_FL_HDR_NOT_INSERTED bit7
376#define VAL_VIRTUAL_CACHE_TIME 3
378/* macros to access simple value types */
381#define VAL_OBJ(V) (V)->obj
384#define VAL_OBJTYPE(V) (V)->obj->objtype
387#define VAL_TYPE(V) (V)->btyp
390#define VAL_HDR(V) (V)->hdr
393#define VAL_TYPDEF(V) (V)->typdef
396#define VAL_NSID(V) (V)->nsid
399#define VAL_NAME(V) (V)->name
402#define VAL_RES(V) (V)->res
405#define VAL_BOOL(V) (V)->v.boo
408#define VAL_EMPTY(V) (V)->v.boo
411#define VAL_DOUBLE(V) (V)->v.num.d
414#define VAL_STRING(V) (V)->v.str
420#define VAL_BINARY(V) (V)->v.binary.ustr
423#define VAL_BINARY_LEN(V) (V)->v.binary.ustrlen
426#define VAL_ENU(V) (&(V)->v.enu)
429#define VAL_ENUM(V) (V)->v.enu.val
434#define VAL_ENUM_NAME(V) (V)->v.enu.name
437#define VAL_FLAG(V) (V)->v.boo
440#define VAL_NUMPTR(V) (&(V)->v.num)
443#define VAL_NUM(V) (V)->v.num
446#define VAL_LONG(V) (V)->v.num.l
449#define VAL_INT(V) (V)->v.num.i
452#define VAL_INT8(V) ((int8)((V)->v.num.i))
455#define VAL_L_INT8(V) (V)->v.num.i
458#define VAL_INT16(V) ((int16)((V)->v.num.i))
461#define VAL_L_INT16(V) (V)->v.num.i
464#define VAL_INT32(V) (V)->v.num.i
467#define VAL_INT64(V) (V)->v.num.l
470#define VAL_STR(V) (V)->v.str
473#define VAL_INSTANCE_ID(V) (V)->v.str
476#define VAL_IDREF(V) (&(V)->v.idref)
479#define VAL_IDREF_NSID(V) (V)->v.idref.nsid
482#define VAL_IDREF_NAME(V) (V)->v.idref.name
485#define VAL_IDREF_IDENTITY(V) (V)->v.idref.identity
488#define VAL_UINT(V) (V)->v.num.u
491#define VAL_UINT8(V) ((uint8)((V)->v.num.u))
494#define VAL_L_UINT8(V) (V)->v.num.u
497#define VAL_UINT16(V) ((uint16)((V)->v.num.u))
500#define VAL_L_UINT16(V) (V)->v.num.u
503#define VAL_UINT32(V) (V)->v.num.u
506#define VAL_L_UINT32(V) (V)->v.num.u
509#define VAL_UINT64(V) (V)->v.num.ul
512#define VAL_ULONG(V) (V)->v.num.ul
517#define VAL_DEC64(V) (V)->v.num.dec.val
522#define VAL_DEC64_DIGITS(V) (V)->v.num.dec.digits
527#define VAL_DEC64_ZEROES(V) (V)->v.num.dec.zeroes
530#define VAL_LIST(V) (V)->v.list
533#define VAL_BITS VAL_LIST
537#define VAL_INTERN(V) (V)->v.intbuff
541#define VAL_EXTERN(V) (V)->v.fname
545#define VAL_IS_DELETED(V) ((V)->flags & VAL_FL_DELETED)
548#define VAL_MARK_DELETED(V) val_mark_deleted(V)
551#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
554#define VAL_LAST_MODIFIED(V) (V)->last_modified
557#define VAL_ETAG(V) (V)->etag
560#define VAL_BTYPE(V) (V)->btyp
563#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
566#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
569#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
572#define VAL_VAREXPR(V) val_get_varexpr(V)
577#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
580#define VAL_REMOVE_META(M) dlq_remove(M)
585#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
590#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
595#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
598#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
601#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
604#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
609#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
612#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
615#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
618#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
621#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
624#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
627#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
630#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
633#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
636#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
639#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
642#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
645#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
648#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
651#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
654#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
657#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
660#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
663#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
666#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
669#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
672#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
675#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
678#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
681#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
684#define VAL_CHILD_HDR_OBJ(H) (H)->obj
687#define VAL_CHILD_HDR_COUNT(H) (H)->count
690#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
693#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
696#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
703#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
706#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
713#define VAL_EDITOP(V) (V)->editop
740typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
749typedef void (*errfn_t) (const char *fstr, ...);
758/* pick a log indent function for dump_value */
759typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
765typedef struct logfns_t_ {
766 dumpfn_t dumpfn; /**< log dump callback */
767 errfn_t errorfn; /**< log error callback */
768 indentfn_t indentfn; /**< log indent callback */
769 boolean suppressVariableNames; /**< suppress variable names in output */
770 FILE *outputFile; /**< manager redirect to file output */
775typedef struct val_idref_t_ {
776 xmlns_id_t nsid; /**< namespace ID */
779 ncx_identity_t *identity; /**< ID back-ptr if found */
784typedef enum val_insert_mode_t_ {
785 VAL_INS_MODE_NONE, /**< not set */
786 VAL_INS_MODE_KEY, /**< YANG key attribute */
787 VAL_INS_MODE_VALUE, /**< YANG value attribute */
788 VAL_INS_MODE_POINT /**< YANG-API point param */
789} YPACK val_insert_mode_t;
793typedef enum val_dumpvalue_mode_t_ {
794 DUMP_VAL_NONE, /**< not set */
795 DUMP_VAL_STDOUT, /**< dump val to STDOUT */
796 DUMP_VAL_LOG, /**< dump val to main log */
797 DUMP_VAL_ALT_LOG, /**< dump val to alternate log */
798 DUMP_VAL_AUDIT_LOG, /**< dump val to audit log */
799} val_dumpvalue_mode_t;
803typedef struct val_editvars_t_ {
808 struct val_value_t_ *curparent; /**< track the real parent */
809 op_insertop_t insertop; /**< YANG insert operation */
810 xmlChar *insertstr; /**< saved value or key attr */
811 struct xpath_pcb_t_ *insertxpcb; /**< key attr for insert */
812 struct val_value_t_ *insertval; /**< back-ptr if before or after */
813 val_insert_mode_t insert_mode; /**< insert mode requested */
814 uint8 silprio; /**< 2nd SIL priority for server */
815 boolean operset; /**< nc:operation here */
816 void *pcookie; /**< user pointer cookie */
817 int icookie; /**< user integer cookie */
818 boolean is_move; /**< TRUE if YPATCH MOVE operation */
819 boolean skip_sil_partial; /**< TRUE is skip_sil_partial needed */
820} YPACK val_editvars_t;
824typedef struct val_extra_t_ {
831 xmlChar *dname; /**< malloced name if needed */
845 struct val_value_t_ *virtualval;
854 struct xpath_pcb_t_ *xpathpcb;
860 plock_cb_t *plock[VAL_MAX_PLOCKS];
866 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
879 struct xpath_aio_cb_t_ *aiocb;
891typedef struct val_value_t_ {
896 struct obj_template_t_ *obj; /**< bptr to object def */
897 typ_def_t *typdef; /**< bptr to typdef if leaf */
898 const xmlChar *name; /**< back pointer to elname\n
899 * the dname field is moved to val_extra_t and only used when
900 * the value is constructed from dummy objects or no objects at all
903 struct val_value_t_ *parent; /**< back-ptr to parent if any */
904 struct val_child_hdr_t_ *hdr; /**< back-ptr to own child_hdr */
907 val_extra_t *val_extra;
909 uint32 flags; /**< internal status flags */
911 xmlns_id_t nsid; /**< namespace ID for this node */
912 ncx_btype_t btyp; /**< base type of this value */
913 ncx_data_class_t dataclass; /**< config or state data */
918 time_t last_modified;
919 ncx_etag_t etag; /**< ETag for RESTCONF */
934 dlq_hdr_t *metaQ; /**< Q of val_value_t */
939 val_editvars_t *editvars; /**< edit-vars from attrs */
940 op_editop_t editop; /**< needed for all edits */
941 status_t res; /**< validation result */
943 /* GET1 getcb moved to val_extra */
944 /* GET1 virtualval moved to val_extra */
945 /* GET1 cachetime moved to val_extra */
948 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
950 /* this field is used for NCX_BT_CHOICE
951 * If set, the object path for this node is really:
952 * $this --> casobj --> casobj.parent --> $this.parent
953 * the OBJ_TYP_CASE and OBJ_TYP_CHOICE nodes are skipped
954 * inside an XML instance document
956 * replaced by val_get_casobj() function in val_util.h
957 * struct obj_template_t_ *casobj;
960 /* xpathpcb moved to val_extra_t */
962 /* back-ptr to the partial locks that are held
964 * plock moved to val_extra
967 /* back-ptr to the data access control rules that
968 * reference this node
969 * dataruleQ moved to val_extra
972 /* malloced pointer to the variable expression found
973 * if this val node is part of a data template.
974 * The actual value in union v_ MUST be ignored if
975 * varexpr string is non-NULL!!
976 * varexpr moved to val_extra
982 ncx_owner_id_t owner_id;
985 ncx_nmda_origin_t nmda_origin;
1006 dlq_hdr_t child_hdrQ;
1027 val_idref_t idref; /**< NCX_BT_IDREF */
1028 ncx_binary_t binary; /**< NCX_BT_BINARY */
1029 ncx_list_t list; /**< NCX_BT_BITS, NCX_BT_SLIST */
1030 boolean boo; /**< NCX_BT_EMPTY, NCX_BT_BOOLEAN */
1031 ncx_enum_t enu; /**< NCX_BT_UNION, NCX_BT_ENUM */
1032 xmlChar *fname; /**< NCX_BT_EXTERN */
1033 xmlChar *intbuff; /**< NCX_BT_INTERN */
1041typedef struct val_child_hdr_t_ {
1042 dlq_hdr_t qhdr; /**< queue header */
1049 struct obj_template_t_ *obj;
1054 struct val_tree_t_ *tree;
1067} YPACK val_child_hdr_t;
1080typedef struct val_index_t_ {
1081 dlq_hdr_t qhdr; /**< queue header */
1082 val_value_t *val; /**< points to a child node */
1087typedef struct val_unique_t_ {
1088 dlq_hdr_t qhdr; /**< queue header */
1089 struct xpath_pcb_t_ *pcb; /**< live XPath CB w/ result */
1090} YPACK val_unique_t;
1102 (*val_test_fn_t) (const val_value_t *val);
1115 (*val_walker_fn_t) (val_value_t *val,
1131 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1147 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1161 (*val_test2_fn_t) (val_value_t *val,
1192 val_new_value (void);
1204 val_init_value (val_value_t *val);
1218 val_init_complex (val_value_t *val,
1232 val_init_virtual (val_value_t *val,
1234 struct obj_template_t_ *obj);
1247 val_init_from_template (val_value_t *val,
1248 struct obj_template_t_ *obj);
1261 val_reinit_from_template (val_value_t *val,
1262 struct obj_template_t_ *obj);
1275 val_free_value (val_value_t *val);
1286 val_set_name (val_value_t *val,
1287 const xmlChar *name,
1301 val_force_dname (val_value_t *val);
1313 val_set_qname (val_value_t *val,
1315 const xmlChar *name,
1329 val_string_ok (typ_def_t *typdef,
1331 const xmlChar *strval);
1349 val_string_ok_errinfo (typ_def_t *typdef,
1351 const xmlChar *strval,
1352 ncx_errinfo_t **errinfo);
1371 val_binary_ok_errinfo (typ_def_t *typdef,
1372 const xmlChar *strval,
1374 ncx_errinfo_t **errinfo);
1395 val_string_ok_ex (ses_cb_t *scb,
1398 const xmlChar *strval,
1399 ncx_errinfo_t **errinfo,
1422 val_string_ok_ex2 (ses_cb_t *scb,
1425 const xmlChar *strval,
1426 ncx_errinfo_t **errinfo,
1452 val_list_ok (typ_def_t *typdef,
1475 val_list_ok_errinfo (typ_def_t *typdef,
1478 ncx_errinfo_t **errinfo);
1494 val_enum_ok (typ_def_t *typdef,
1495 const xmlChar *enumval,
1497 const xmlChar **retstr);
1510 val_bit_ok (typ_def_t *typdef,
1511 const xmlChar *bitname,
1527 val_bitpos_ok (typ_def_t *typdef,
1529 const xmlChar **name);
1551 val_idref_ok (typ_def_t *typdef,
1552 const xmlChar *qname,
1554 const xmlChar **name,
1555 ncx_identity_t **id);
1583 val_idref_ok_ex (typ_def_t *typdef,
1584 const xmlChar *qname,
1587 ncx_module_t *impmod,
1589 const xmlChar **name,
1590 ncx_identity_t **id);
1610 val_parse_idref (ncx_module_t *mod,
1611 const xmlChar *qname,
1613 const xmlChar **name,
1614 ncx_identity_t **id);
1635 val_parse_idref_rootcb (ncx_module_t *mod,
1636 const xmlChar *qname,
1638 const xmlChar **name,
1639 ncx_identity_t **id,
1640 ncx_sm_rootcb_t *rootcb);
1653 val_range_ok (typ_def_t *typdef,
1655 const ncx_num_t *num);
1670 val_range_ok_errinfo (typ_def_t *typdef,
1672 const ncx_num_t *num,
1673 ncx_errinfo_t **errinfo);
1684 val_pattern_ok (typ_def_t *typdef,
1685 const xmlChar *strval);
1701 val_pattern_ok_errinfo (typ_def_t *typdef,
1702 const xmlChar *strval,
1703 ncx_errinfo_t **errinfo);
1716 val_simval_ok (typ_def_t *typdef,
1717 const xmlChar *simval);
1733 val_simval_ok_errinfo (typ_def_t *typdef,
1734 const xmlChar *simval,
1735 ncx_errinfo_t **errinfo);
1752 val_simval_ok_ex (typ_def_t *typdef,
1753 const xmlChar *simval,
1754 ncx_errinfo_t **errinfo,
1774 val_simval_ok_max (typ_def_t *typdef,
1775 const xmlChar *simval,
1776 ncx_errinfo_t **errinfo,
1799 val_simval_ok_max2 (typ_def_t *typdef,
1800 const xmlChar *simval,
1801 ncx_errinfo_t **errinfo,
1827 val_simval_ok_max3 (typ_def_t *typdef,
1828 const xmlChar *simval,
1829 ncx_errinfo_t **errinfo,
1848 val_union_ok (typ_def_t *typdef,
1849 const xmlChar *strval,
1850 val_value_t *retval);
1867 val_union_ok_errinfo (typ_def_t *typdef,
1868 const xmlChar *strval,
1869 val_value_t *retval,
1870 ncx_errinfo_t **errinfo);
1891 val_union_ok_ex (typ_def_t *typdef,
1892 const xmlChar *strval,
1893 val_value_t *retval,
1894 ncx_errinfo_t **errinfo,
1896 typ_def_t **match_typdef);
1920 val_union_ok_binary (typ_def_t *typdef,
1921 const xmlChar *binstr,
1923 val_value_t *retval,
1924 ncx_errinfo_t **errinfo,
1925 typ_def_t **match_typdef);
1948 val_union_ok_full (typ_def_t *typdef,
1949 const xmlChar *strval,
1950 val_value_t *contextval,
1951 val_value_t *rootval,
1952 val_value_t *retval,
1953 ncx_errinfo_t **errinfo);
1963 val_get_metaQ (val_value_t *val);
1974 val_get_first_meta (dlq_hdr_t *queue);
1985 val_get_first_meta_val (val_value_t *val);
1996 val_get_next_meta (val_value_t *curnode);
2007 val_meta_empty (val_value_t *val);
2019 val_find_meta (val_value_t *val,
2021 const xmlChar *name);
2034 val_meta_match (val_value_t *val,
2035 val_value_t *metaval);
2047 val_metadata_inst_count (val_value_t *val,
2049 const xmlChar *name);
2063 val_dump_value (val_value_t *val,
2080 val_dump_value_ex (val_value_t *val,
2082 ncx_display_mode_t display_mode,
2097 val_dump_alt_value (val_value_t *val,
2112 val_stdout_value (val_value_t *val,
2128 val_stdout_value_ex (val_value_t *val,
2130 ncx_display_mode_t display_mode,
2152 val_dump_value_max (val_value_t *val,
2154 int32 indent_amount,
2155 val_dumpvalue_mode_t dumpmode,
2156 ncx_display_mode_t display_mode,
2184 val_dump_value_full (val_value_t *val,
2186 int32 indent_amount,
2187 val_dumpvalue_mode_t dumpmode,
2188 ncx_display_mode_t display_mode,
2192 boolean expand_varexpr,
2194 logfns_t *overrideOutput);
2220 val_dump_value_full2 (val_value_t *val,
2222 int32 indent_amount,
2223 val_dumpvalue_mode_t dumpmode,
2224 ncx_display_mode_t display_mode,
2228 boolean expand_varexpr,
2231 logfns_t *overrideOutput);
2247 val_set_string (val_value_t *val,
2248 const xmlChar *valname,
2249 const xmlChar *valstr);
2268 val_set_string2 (val_value_t *val,
2269 const xmlChar *valname,
2271 const xmlChar *valstr,
2291 val_set_binary (const xmlChar *valstr,
2307 val_reset_empty (val_value_t *val);
2323 val_set_simval (val_value_t *val,
2326 const xmlChar *valname,
2327 const xmlChar *valstr);
2373 val_set_simval_str (val_value_t *val,
2376 const xmlChar *valname,
2378 const xmlChar *valstr);
2402 val_set_simval_binary (val_value_t *val,
2403 const xmlChar *binstr,
2451 val_set_simval_max (val_value_t *val,
2454 const xmlChar *valname,
2456 const xmlChar *valstr,
2474 val_make_simval (typ_def_t *typdef,
2476 const xmlChar *valname,
2477 const xmlChar *valstr,
2495 val_make_string (xmlns_id_t nsid,
2496 const xmlChar *valname,
2497 const xmlChar *valstr);
2511 val_make_binary (xmlns_id_t nsid,
2512 const xmlChar *valname,
2513 const xmlChar *valstr,
2529 val_merge (const val_value_t *src,
2540 val_clone (const val_value_t *val);
2551 val_clone2 (const val_value_t *val);
2568 val_clone_config_data (const val_value_t *val,
2590 val_clone_config_newval (const val_value_t *val,
2614 val_clone_config_save (const val_value_t *val,
2629 val_replace (val_value_t *val,
2643 val_replace_str (const xmlChar *str,
2659 val_fast_replace_string (const xmlChar *str,
2671 val_replace_stringval (val_value_t *val,
2672 const xmlChar *str);
2694 val_add_child (val_value_t *child,
2695 val_value_t *parent);
2711 val_add_child_sorted (val_value_t *child,
2712 val_value_t *parent);
2727 val_insert_child (val_value_t *child,
2728 val_value_t *current,
2729 val_value_t *parent);
2741 val_remove_child (val_value_t *child);
2754 val_swap_child (val_value_t *newchild,
2755 val_value_t *curchild);
2766 val_first_child_match (const val_value_t *parent,
2767 const val_value_t *child);
2781 val_first_child_match_fast (const val_value_t *parent,
2782 const val_value_t *child,
2783 val_value_t *lastmatch);
2798 val_next_child_match (val_value_t *parent,
2800 val_value_t *curmatch);
2810 val_next_child_same (val_value_t *curchild);
2820 val_get_first_child (const val_value_t *parent);
2830 val_get_next_child (const val_value_t *curchild);
2840 val_get_first_terminal_child (const val_value_t *parent);
2850 val_get_next_terminal_child (const val_value_t *curchild);
2867 val_find_child (const val_value_t *parent,
2868 const xmlChar *modname,
2869 const xmlChar *childname);
2886 val_find_child_fast (const val_value_t *parent,
2888 const xmlChar *childname);
2900 val_find_child_obj (const val_value_t *parent,
2901 const struct obj_template_t_ *chobj);
2919 val_find_child_que (const dlq_hdr_t *childQ,
2921 const xmlChar *childname);
2938 val_match_child (const val_value_t *parent,
2939 const xmlChar *modname,
2940 const xmlChar *childname);
2960 val_match_child_count (const val_value_t *parent,
2961 const xmlChar *modname,
2962 const xmlChar *childname,
2963 uint32 *matchcount);
2983 val_find_next_child (const val_value_t *parent,
2984 const xmlChar *modname,
2985 const xmlChar *childname,
2986 const val_value_t *curchild);
3003 val_find_next_child_fast (const val_value_t *parent,
3004 const val_value_t *curchild);
3016 val_first_child_name (val_value_t *parent,
3017 const xmlChar *name);
3029 val_first_child_qname (val_value_t *parent,
3031 const xmlChar *name);
3044 val_next_child_qname (val_value_t *parent,
3046 const xmlChar *name,
3047 val_value_t *curchild);
3068 val_first_child_string (val_value_t *parent,
3069 const xmlChar *name,
3070 const xmlChar *strval);
3082 val_child_cnt (val_value_t *parent);
3095 val_child_inst_cnt (const val_value_t *parent,
3096 const xmlChar *modname,
3097 const xmlChar *name);
3108 val_get_child_inst_id (const val_value_t *parent,
3109 const val_value_t *child);
3119 val_liststr_count (const val_value_t *val);
3135 val_index_match (const val_value_t *val1,
3136 const val_value_t *val2);
3150 val_index_compare (const val_value_t *val1,
3151 const val_value_t *val2);
3184 val_compare_max (const val_value_t *val1,
3185 const val_value_t *val2,
3225 val_compare_max_def (const val_value_t *val1,
3226 const val_value_t *val2,
3230 boolean ignore_defaults);
3257 val_compare_ex (const val_value_t *val1,
3258 const val_value_t *val2,
3259 boolean configonly);
3283 val_compare (const val_value_t *val1,
3284 const val_value_t *val2);
3307 val_compare_to_string (const val_value_t *val1,
3308 const xmlChar *strval2,
3334 val_compare_to_string_len (const val_value_t *val1,
3335 const xmlChar *strval2,
3359 val_compare_for_replace (const val_value_t *val1,
3360 const val_value_t *val2);
3382 val_compare_for_edit (const val_value_t *val1,
3383 const val_value_t *val2,
3406 val_compare_as_string (const val_value_t *val1,
3407 const val_value_t *val2,
3430 val_sprintf_simval_nc (xmlChar *buff,
3431 const val_value_t *val,
3455 val_sprintf_simval_nc_ex (xmlChar *buff,
3456 const val_value_t *val,
3474 val_make_sprintf_string (const val_value_t *val);
3490 val_resolve_scoped_name (val_value_t *val,
3491 const xmlChar *name,
3492 val_value_t **chval);
3502 val_get_iqualval (const val_value_t *val);
3524 val_duplicates_allowed (val_value_t *val);
3535 val_has_content (const val_value_t *val);
3547 val_has_content_ex (const val_value_t *val);
3558 val_has_index (const val_value_t *val);
3568 val_get_first_index (const val_value_t *val);
3578 val_get_next_index (const val_index_t *valindex);
3588 val_get_index_count (const val_value_t *val);
3603 val_parse_meta (ses_cb_t *scb,
3606 val_value_t *retval);
3616 val_set_extern (val_value_t *val,
3628 val_set_intern (val_value_t *val,
3651 val_fit_oneline (const val_value_t *val,
3665 val_create_allowed (const val_value_t *val);
3677 val_delete_allowed (const val_value_t *val);
3688 val_is_config_data (const val_value_t *val);
3700 val_is_config_save (const val_value_t *val);
3713 val_is_virtual (const val_value_t *val);
3746 val_get_virtual_value (ses_cb_t *scb,
3771 val_is_default (val_value_t *val);
3784 val_is_real (const val_value_t *val);
3794 val_get_parent_nsid (const val_value_t *val);
3809 val_instance_count (val_value_t *val,
3810 const xmlChar *modname,
3811 const xmlChar *objname);
3829 val_instance_count_fast (val_value_t *val,
3831 const xmlChar *objname,
3832 val_value_t **firstval);
3848 val_instance_count_fast2 (val_value_t *val,
3849 val_value_t *startval);
3868 val_set_extra_instance_errors (val_value_t *val,
3869 const xmlChar *modname,
3870 const xmlChar *objname,
3883 val_need_quotes (const xmlChar *str);
3894 val_all_whitespace (const xmlChar *str);
3906 val_any_whitespace (const xmlChar *str,
3919 val_match_metaval (const xml_attr_t *attr,
3921 const xmlChar *name);
3931 val_get_dirty_flag (const val_value_t *val);
3941 val_get_subtree_dirty_flag (const val_value_t *val);
3950 val_set_subtree_dirty_up (val_value_t *val);
3961 val_set_dirty_flag (val_value_t *val,
3971 val_set_child_deleted_flag (val_value_t *val);
3981 val_get_child_deleted_flag (val_value_t *val);
3998 val_clear_dirty_flag (val_value_t *val,
4000 ncx_transaction_id_t txid,
4002 boolean do_clear_default);
4012 val_dirty_subtree (const val_value_t *val);
4028 val_clean_tree (val_value_t *val);
4038 val_get_nest_level (val_value_t *val);
4050 val_get_first_leaf (val_value_t *val);
4060extern const xmlChar *
4061 val_get_mod_name (const val_value_t *val);
4071extern const xmlChar *
4072 val_get_mod_prefix (const val_value_t *val);
4082 val_get_nsid (const val_value_t *val);
4092 val_get_yang_sid (const val_value_t *val);
4102 val_change_nsid (val_value_t *val,
4113 val_change_nsid2 (val_value_t *val,
4124 val_change_nsid3 (val_value_t *val,
4140 val_make_from_insertxpcb (val_value_t *sourceval,
4149extern val_unique_t *
4150 val_new_unique (void);
4159 val_free_unique (val_unique_t *valuni);
4168extern const typ_def_t *
4169 val_get_typdef (const val_value_t *val);
4180 val_set_by_default (const val_value_t *val);
4191 val_has_withdef_default (const val_value_t *val);
4200 val_set_withdef_default (val_value_t *val);
4211 val_is_metaval (const val_value_t *val);
4222 val_move_children (val_value_t *srcval,
4223 val_value_t *destval);
4234 val_move_nonconfig_children (val_value_t *srcval,
4235 val_value_t *destval);
4257 val_cvt_generic (val_value_t *val);
4269 val_set_pcookie (val_value_t *val,
4282 val_set_icookie (val_value_t *val,
4294 val_get_pcookie (val_value_t *val);
4305 val_get_icookie (val_value_t *val);
4316 val_delete_default_leaf (val_value_t *val);
4329 val_delete_default_leaf_list (val_value_t *val);
4338 val_force_empty (val_value_t *val);
4349 val_delete_default_npcon (val_value_t *val);
4361 val_move_fields_for_xml (val_value_t *srcval,
4362 val_value_t *destval,
4374 val_move_metadata (val_value_t *srcval,
4375 val_value_t *destval);
4385 val_get_first_key (val_value_t *val);
4395 val_get_last_key (val_value_t *val);
4405 val_get_next_key (val_index_t *curkey);
4415 val_get_prev_key (val_index_t *curkey);
4425 val_remove_key (val_value_t *keyval);
4435 val_new_deleted_value (void);
4446 val_new_editvars (val_value_t *val);
4457 val_free_editvars (val_value_t *val);
4466 val_free_solo_editvars (val_editvars_t *editvars);
4480 val_all_np_containers (val_value_t *val);
4493 val_sprintf_etag (val_value_t *val,
4505 val_get_last_modified (val_value_t *val);
4514 val_force_default (val_value_t *val);
4525 val_set_all_tags (val_value_t *val,
4527 ncx_transaction_id_t txid);
4536extern const xmlChar *
4537 val_get_owner (val_value_t *val);
4546extern ncx_owner_id_t
4547 val_get_owner_id (val_value_t *val);
4557 val_need_owner_string (val_value_t *val);
4567 val_delete_children (val_value_t *val);
4576 val_clean_value (val_value_t *val);
4588 val_find_bit (val_value_t *val,
4589 const xmlChar *bitname);
4600 val_has_children (const val_value_t *val);
4611 val_add_test_valindex (val_value_t *parentval,
4612 val_value_t *keyval);
4621extern const xmlChar *
4622 val_get_yang_typename (val_value_t *val);
4632 val_set_force_config (val_value_t *val,
4643 val_clear_defvalset_flag (val_value_t *val);
4655 val_clone_valQ (dlq_hdr_t *valQ,
4656 dlq_hdr_t *return_valQ);
4667 val_clean_valQ (dlq_hdr_t *valQ);
4680 val_is_value_set (val_value_t *val);
4691 val_url_encode_string (const xmlChar *str,
4704 val_convert_any_to_container (val_value_t *val);
4714 val_clean_index_chain (val_value_t *val);
4725 val_pattern_match (const xmlRegexpPtr pattern,
4726 const xmlChar *strval);
4738 val_ocpattern_match (const regex_t *ocpattern,
4739 const xmlChar *strval);
4752 val_idref_derived_from (ncx_module_t *impmod,
4753 val_value_t *testval,
4754 const xmlChar *qname,
4769 val_set_sil_priority (val_value_t *val,
4780 val_get_sil_priority (val_value_t *val);
4791extern const xmlChar *
4792 val_find_bit_name (val_value_t *val,
4805extern const xmlChar *
4806 val_find_enum_name (val_value_t *val,
4821extern const xmlChar *
4822 val_find_enum_name2 (ncx_btype_t btyp,
4834 val_mark_deleted (val_value_t *val);
4845 val_mark_undeleted (val_value_t *val);
4859 val_has_conditional_value (val_value_t *val);
4873 val_convert_leafref (const val_value_t *val);
4897 val_compare_for_topreplace (const val_value_t *val1,
4898 const val_value_t *val2);
4927 val_compare_for_topreplace_simple (const val_value_t *val1,
4928 const val_value_t *val2);
4939 val_has_complex_child (const val_value_t *val);
4950 val_add_meta (val_value_t *metaval,
4961 val_find_root (val_value_t *val);
4971 val_set_canonical (val_value_t *val);
4982 val_get_leafref_typdef (val_value_t *val);
5005 val_ascendant_compare (val_value_t *val1,
5015extern const xmlChar *
5016 val_get_dname (const val_value_t *val);
5029 val_set_dname (val_value_t *val,
5030 const xmlChar *dname);
5044 val_set_dname2 (val_value_t *val,
5045 const xmlChar *dname,
5057 val_new_extra (val_value_t *val);
5066extern const xmlChar *
5067 val_get_varexpr (const val_value_t *val);
5078 val_set_varexpr (val_value_t *val,
5079 const xmlChar *varexpr);
5088 val_clear_varexpr (val_value_t *val);
5097 val_set_wildcard_string (val_value_t *val);
5106#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5117 val_copy_editvars (const val_value_t *val,
5130 val_set_skip_sil_partial (val_value_t *val);
5140 val_get_skip_sil_partial (const val_value_t *val);
5154 val_get_leafref_typdef_ex (val_value_t *val,
5155 boolean union_check);
5171 val_is_default_npcon (val_value_t *val);
5182 val_identity_ok (typ_def_t *typdef,
5183 ncx_identity_t *ident);
5201 val_highest_bit_set (const val_value_t *val,
5220 val_first_bit_set (const val_value_t *val,
5221 const ncx_lmem_t **lmem,
5240 val_next_bit_set (const val_value_t *val,
5241 const ncx_lmem_t *lmem,
5242 const ncx_lmem_t **nextlmem,
5251extern struct xpath_aio_cb_t_ *
5252 val_get_aiocb (const val_value_t *val);
5263 val_set_aiocb (val_value_t *val,
5264 struct xpath_aio_cb_t_ *aiocb);
5276extern ncx_sm_mpid_t *
5277 val_get_mpid (const val_value_t *val);
5289 val_set_mpid (val_value_t *val,
5290 struct ncx_sm_mpid_t_ *mpid);
5297} /* end extern 'C' */
dlq provides general double-linked list and queue support:
NCX System Logging Manager.
YANG module data structures Many internal representations of YANG module constructs.
NETCONF protocol operations.
RFC 57517 partial lock support Data structure definition.
NETCONF Session Common definitions module.
Global error messages for status code enumerations.