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
380#define VAL_MIN_REGEX_LEN 5
383#define VAL_REGEX_END_CHAR ')'
386#define VAL_REGEX_R1 (const xmlChar *)"r1("
389#define VAL_REGEX_R2 (const xmlChar *)"r2("
392#define VAL_REGEX_R_LEN 3
395/* macros to access simple value types */
398#define VAL_OBJ(V) (V)->obj
401#define VAL_OBJTYPE(V) (V)->obj->objtype
404#define VAL_TYPE(V) (V)->btyp
407#define VAL_HDR(V) (V)->hdr
410#define VAL_TYPDEF(V) (V)->typdef
413#define VAL_NSID(V) (V)->nsid
416#define VAL_NAME(V) (V)->name
419#define VAL_RES(V) (V)->res
422#define VAL_BOOL(V) (V)->v.boo
425#define VAL_EMPTY(V) (V)->v.boo
428#define VAL_DOUBLE(V) (V)->v.num.d
431#define VAL_STRING(V) (V)->v.str
437#define VAL_BINARY(V) (V)->v.binary.ustr
440#define VAL_BINARY_LEN(V) (V)->v.binary.ustrlen
443#define VAL_EXTERN_BINARY(V) (V)->extern_binary
446#define VAL_ENU(V) (&(V)->v.enu)
449#define VAL_ENUM(V) (V)->v.enu.val
454#define VAL_ENUM_NAME(V) (V)->v.enu.name
457#define VAL_FLAG(V) (V)->v.boo
460#define VAL_NUMPTR(V) (&(V)->v.num)
463#define VAL_NUM(V) (V)->v.num
466#define VAL_LONG(V) (V)->v.num.l
469#define VAL_INT(V) (V)->v.num.i
472#define VAL_INT8(V) ((int8)((V)->v.num.i))
475#define VAL_L_INT8(V) (V)->v.num.i
478#define VAL_INT16(V) ((int16)((V)->v.num.i))
481#define VAL_L_INT16(V) (V)->v.num.i
484#define VAL_INT32(V) (V)->v.num.i
487#define VAL_INT64(V) (V)->v.num.l
490#define VAL_STR(V) (V)->v.str
493#define VAL_INSTANCE_ID(V) (V)->v.str
496#define VAL_IDREF(V) (&(V)->v.idref)
499#define VAL_IDREF_NSID(V) (V)->v.idref.nsid
502#define VAL_IDREF_NAME(V) (V)->v.idref.name
505#define VAL_IDREF_IDENTITY(V) (V)->v.idref.identity
508#define VAL_UINT(V) (V)->v.num.u
511#define VAL_UINT8(V) ((uint8)((V)->v.num.u))
514#define VAL_L_UINT8(V) (V)->v.num.u
517#define VAL_UINT16(V) ((uint16)((V)->v.num.u))
520#define VAL_L_UINT16(V) (V)->v.num.u
523#define VAL_UINT32(V) (V)->v.num.u
526#define VAL_L_UINT32(V) (V)->v.num.u
529#define VAL_UINT64(V) (V)->v.num.ul
532#define VAL_ULONG(V) (V)->v.num.ul
537#define VAL_DEC64(V) (V)->v.num.dec.val
542#define VAL_DEC64_DIGITS(V) (V)->v.num.dec.digits
547#define VAL_DEC64_ZEROES(V) (V)->v.num.dec.zeroes
550#define VAL_LIST(V) (V)->v.list
553#define VAL_BITS VAL_LIST
557#define VAL_INTERN(V) (V)->v.intbuff
561#define VAL_EXTERN(V) (V)->v.fname
565#define VAL_IS_DELETED(V) ((V)->flags & VAL_FL_DELETED)
568#define VAL_CLR_DELETED(V) (V)->flags &= ~VAL_FL_DELETED
571#define VAL_MARK_DELETED(V) val_mark_deleted(V)
574#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
577#define VAL_LAST_MODIFIED(V) (V)->last_modified
580#define VAL_ETAG(V) (V)->etag
583#define VAL_BTYPE(V) (V)->btyp
586#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
589#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
592#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
595#define VAL_VAREXPR(V) val_get_varexpr(V)
600#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
603#define VAL_REMOVE_META(M) dlq_remove(M)
608#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
613#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
618#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
621#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
624#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
627#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
632#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
635#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
638#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
641#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
644#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
647#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
650#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
653#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
656#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
659#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
662#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
665#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
668#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
671#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
674#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
677#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
680#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
683#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
686#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
689#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
692#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
695#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
698#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
701#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
704#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
707#define VAL_CHILD_HDR_OBJ(H) (H)->obj
710#define VAL_CHILD_HDR_COUNT(H) (H)->count
713#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
716#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
719#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
726#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
729#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
732#define VAL_CLR_ADDEDIT_DELETED(V) (V)->flags &= ~VAL_FL_ADDEDIT_DELETED
739#define VAL_EDITOP(V) (V)->editop
741#define VAL_EXTERN_VALONLY(V) (V)->extern_valonly
746#define VAL_SET_DEFSET(V) (V)->flags |= VAL_FL_DEFSET
752#define VAL_CLR_DEFSET(V) (V)->flags &= ~VAL_FL_DEFSET
754/* Value node is from anydata that was replaced by datapath */
755#define VAL_FROM_ANYDATA(V) (V)->from_anydata
758#define VAL_EXTRA(V) (V)->val_extra
762#define VAL_IS_FORCE_CONFIG(V) ((V)->flags & VAL_FL_FORCE_CONFIG)
764#define VAL_SET_FORCE_CONFIG(V) (V)->flags |= VAL_FL_FORCE_CONFIG
769#define VAL_SET_HDR_RECREATED(V) (V)->flags |= VAL_FL_HDR_RECREATED
772#define VAL_IS_HDR_RECREATED(V) ((V)->flags & VAL_FL_HDR_RECREATED)
800typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
809typedef void (*errfn_t) (const char *fstr, ...);
818/* pick a log indent function for dump_value */
819typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
825typedef struct logfns_t_ {
826 dumpfn_t dumpfn; /**< log dump callback */
827 errfn_t errorfn; /**< log error callback */
828 indentfn_t indentfn; /**< log indent callback */
829 boolean suppressVariableNames; /**< suppress variable names in output */
830 FILE *outputFile; /**< manager redirect to file output */
835typedef struct val_idref_t_ {
836 xmlns_id_t nsid; /**< namespace ID */
839 ncx_identity_t *identity; /**< ID back-ptr if found */
844typedef enum val_insert_mode_t_ {
845 VAL_INS_MODE_NONE, /**< not set */
846 VAL_INS_MODE_KEY, /**< YANG key attribute */
847 VAL_INS_MODE_VALUE, /**< YANG value attribute */
848 VAL_INS_MODE_POINT /**< YANG-API point param */
849} YPACK val_insert_mode_t;
853typedef enum val_dumpvalue_mode_t_ {
854 DUMP_VAL_NONE, /**< not set */
855 DUMP_VAL_STDOUT, /**< dump val to STDOUT */
856 DUMP_VAL_LOG, /**< dump val to main log */
857 DUMP_VAL_ALT_LOG, /**< dump val to alternate log */
858 DUMP_VAL_AUDIT_LOG, /**< dump val to audit log */
859} val_dumpvalue_mode_t;
863typedef struct val_editvars_t_ {
868 struct val_value_t_ *curparent; /**< track the real parent */
869 op_insertop_t insertop; /**< YANG insert operation */
870 xmlChar *insertstr; /**< saved value or key attr */
871 struct xpath_pcb_t_ *insertxpcb; /**< key attr for insert */
872 struct val_value_t_ *insertval; /**< back-ptr if before or after */
873 val_insert_mode_t insert_mode; /**< insert mode requested */
874 uint8 silprio; /**< 2nd SIL priority for server */
875 boolean operset; /**< nc:operation here */
876 void *pcookie; /**< user pointer cookie */
877 int icookie; /**< user integer cookie */
878 boolean is_move; /**< TRUE if YPATCH MOVE operation */
879 boolean skip_sil_partial; /**< TRUE if skip_sil_partial needed */
880 boolean deleted; /**< TRUE if deleted from commit_deletes */
881} YPACK val_editvars_t;
885typedef struct val_extra_t_ {
892 xmlChar *dname; /**< malloced name if needed */
906 struct val_value_t_ *virtualval;
915 struct xpath_pcb_t_ *xpathpcb;
921 plock_cb_t *plock[VAL_MAX_PLOCKS];
927 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
940 struct xpath_aio_cb_t_ *aiocb;
947 struct val_value_t_ *leafrefval;
953 typ_pattern_t *regex_filter;
962typedef struct val_value_t_ {
967 struct obj_template_t_ *obj; /**< bptr to object def */
968 typ_def_t *typdef; /**< bptr to typdef if leaf */
969 const xmlChar *name; /**< back pointer to elname\n
970 * the dname field is moved to val_extra_t and only used when
971 * the value is constructed from dummy objects or no objects at all
974 struct val_value_t_ *parent; /**< back-ptr to parent if any */
975 struct val_child_hdr_t_ *hdr; /**< back-ptr to own child_hdr */
978 val_extra_t *val_extra;
980 uint32 flags; /**< internal status flags */
982 xmlns_id_t nsid; /**< namespace ID for this node */
983 ncx_btype_t btyp; /**< base type of this value */
984 ncx_data_class_t dataclass; /**< config or state data */
989 time_t last_modified;
990 ncx_etag_t etag; /**< ETag for RESTCONF */
1005 dlq_hdr_t *metaQ; /**< Q of val_value_t */
1010 val_editvars_t *editvars; /**< edit-vars from attrs */
1011 op_editop_t editop; /**< needed for all edits */
1012 status_t res; /**< validation result */
1014 /* GET1 getcb moved to val_extra */
1015 /* GET1 virtualval moved to val_extra */
1016 /* GET1 cachetime moved to val_extra */
1019 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
1021 /* this field is used for NCX_BT_CHOICE
1022 * If set, the object path for this node is really:
1023 * $this --> casobj --> casobj.parent --> $this.parent
1024 * the OBJ_TYP_CASE and OBJ_TYP_CHOICE nodes are skipped
1025 * inside an XML instance document
1027 * replaced by val_get_casobj() function in val_util.h
1028 * struct obj_template_t_ *casobj;
1031 /* xpathpcb moved to val_extra_t */
1033 /* back-ptr to the partial locks that are held
1035 * plock moved to val_extra
1038 /* back-ptr to the data access control rules that
1039 * reference this node
1040 * dataruleQ moved to val_extra
1043 /* malloced pointer to the variable expression found
1044 * if this val node is part of a data template.
1045 * The actual value in union v_ MUST be ignored if
1046 * varexpr string is non-NULL!!
1047 * varexpr moved to val_extra
1053 ncx_owner_id_t owner_id;
1056 ncx_nmda_origin_t nmda_origin;
1059 boolean extern_valonly;
1062 boolean extern_binary;
1071 boolean from_anydata;
1092 dlq_hdr_t child_hdrQ;
1113 val_idref_t idref; /**< NCX_BT_IDREF */
1114 ncx_binary_t binary; /**< NCX_BT_BINARY */
1115 ncx_list_t list; /**< NCX_BT_BITS, NCX_BT_SLIST */
1116 boolean boo; /**< NCX_BT_EMPTY, NCX_BT_BOOLEAN */
1117 ncx_enum_t enu; /**< NCX_BT_UNION, NCX_BT_ENUM */
1118 xmlChar *fname; /**< NCX_BT_EXTERN */
1119 xmlChar *intbuff; /**< NCX_BT_INTERN */
1127typedef struct val_child_hdr_t_ {
1128 dlq_hdr_t qhdr; /**< queue header */
1135 struct obj_template_t_ *obj;
1140 struct val_tree_t_ *tree;
1153} YPACK val_child_hdr_t;
1166typedef struct val_index_t_ {
1167 dlq_hdr_t qhdr; /**< queue header */
1168 val_value_t *val; /**< points to a child node */
1181 (*val_test_fn_t) (const val_value_t *val);
1194 (*val_walker_fn_t) (val_value_t *val,
1210 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1226 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1240 (*val_test2_fn_t) (val_value_t *val,
1271 val_new_value (void);
1283 val_init_value (val_value_t *val);
1297 val_init_complex (val_value_t *val,
1311 val_init_virtual (val_value_t *val,
1313 struct obj_template_t_ *obj);
1326 val_init_from_template (val_value_t *val,
1327 struct obj_template_t_ *obj);
1340 val_reinit_from_template (val_value_t *val,
1341 struct obj_template_t_ *obj);
1354 val_free_value (val_value_t *val);
1365 val_set_name (val_value_t *val,
1366 const xmlChar *name,
1380 val_force_dname (val_value_t *val);
1392 val_set_qname (val_value_t *val,
1394 const xmlChar *name,
1408 val_string_ok (typ_def_t *typdef,
1410 const xmlChar *strval);
1428 val_string_ok_errinfo (typ_def_t *typdef,
1430 const xmlChar *strval,
1431 ncx_errinfo_t **errinfo);
1450 val_binary_ok_errinfo (typ_def_t *typdef,
1451 const xmlChar *strval,
1453 ncx_errinfo_t **errinfo);
1474 val_string_ok_ex (ses_cb_t *scb,
1477 const xmlChar *strval,
1478 ncx_errinfo_t **errinfo,
1501 val_string_ok_ex2 (ses_cb_t *scb,
1504 const xmlChar *strval,
1505 ncx_errinfo_t **errinfo,
1531 val_list_ok (typ_def_t *typdef,
1554 val_list_ok_errinfo (typ_def_t *typdef,
1557 ncx_errinfo_t **errinfo);
1573 val_enum_ok (typ_def_t *typdef,
1574 const xmlChar *enumval,
1576 const xmlChar **retstr);
1589 val_bit_ok (typ_def_t *typdef,
1590 const xmlChar *bitname,
1606 val_bitpos_ok (typ_def_t *typdef,
1608 const xmlChar **name);
1630 val_idref_ok (typ_def_t *typdef,
1631 const xmlChar *qname,
1633 const xmlChar **name,
1634 ncx_identity_t **id);
1662 val_idref_ok_ex (typ_def_t *typdef,
1663 const xmlChar *qname,
1666 ncx_module_t *impmod,
1668 const xmlChar **name,
1669 ncx_identity_t **id);
1689 val_parse_idref (ncx_module_t *mod,
1690 const xmlChar *qname,
1692 const xmlChar **name,
1693 ncx_identity_t **id);
1714 val_parse_idref_rootcb (ncx_module_t *mod,
1715 const xmlChar *qname,
1717 const xmlChar **name,
1718 ncx_identity_t **id,
1719 ncx_sm_rootcb_t *rootcb);
1732 val_range_ok (typ_def_t *typdef,
1734 const ncx_num_t *num);
1749 val_range_ok_errinfo (typ_def_t *typdef,
1751 const ncx_num_t *num,
1752 ncx_errinfo_t **errinfo);
1763 val_pattern_ok (typ_def_t *typdef,
1764 const xmlChar *strval);
1780 val_pattern_ok_errinfo (typ_def_t *typdef,
1781 const xmlChar *strval,
1782 ncx_errinfo_t **errinfo);
1795 val_simval_ok (typ_def_t *typdef,
1796 const xmlChar *simval);
1812 val_simval_ok_errinfo (typ_def_t *typdef,
1813 const xmlChar *simval,
1814 ncx_errinfo_t **errinfo);
1831 val_simval_ok_ex (typ_def_t *typdef,
1832 const xmlChar *simval,
1833 ncx_errinfo_t **errinfo,
1853 val_simval_ok_max (typ_def_t *typdef,
1854 const xmlChar *simval,
1855 ncx_errinfo_t **errinfo,
1878 val_simval_ok_max2 (typ_def_t *typdef,
1879 const xmlChar *simval,
1880 ncx_errinfo_t **errinfo,
1906 val_simval_ok_max3 (typ_def_t *typdef,
1907 const xmlChar *simval,
1908 ncx_errinfo_t **errinfo,
1927 val_union_ok (typ_def_t *typdef,
1928 const xmlChar *strval,
1929 val_value_t *retval);
1946 val_union_ok_errinfo (typ_def_t *typdef,
1947 const xmlChar *strval,
1948 val_value_t *retval,
1949 ncx_errinfo_t **errinfo);
1970 val_union_ok_ex (typ_def_t *typdef,
1971 const xmlChar *strval,
1972 val_value_t *retval,
1973 ncx_errinfo_t **errinfo,
1975 typ_def_t **match_typdef);
1999 val_union_ok_binary (typ_def_t *typdef,
2000 const xmlChar *binstr,
2002 val_value_t *retval,
2003 ncx_errinfo_t **errinfo,
2004 typ_def_t **match_typdef);
2027 val_union_ok_full (typ_def_t *typdef,
2028 const xmlChar *strval,
2029 val_value_t *contextval,
2030 val_value_t *rootval,
2031 val_value_t *retval,
2032 ncx_errinfo_t **errinfo);
2042 val_get_metaQ (val_value_t *val);
2053 val_get_first_meta (dlq_hdr_t *queue);
2064 val_get_first_meta_val (val_value_t *val);
2075 val_get_next_meta (val_value_t *curnode);
2086 val_meta_empty (val_value_t *val);
2098 val_find_meta (val_value_t *val,
2100 const xmlChar *name);
2113 val_meta_match (val_value_t *val,
2114 val_value_t *metaval);
2126 val_metadata_inst_count (val_value_t *val,
2128 const xmlChar *name);
2142 val_dump_value (val_value_t *val,
2159 val_dump_value_config (val_value_t *val,
2176 val_dump_value_ex (val_value_t *val,
2178 ncx_display_mode_t display_mode,
2193 val_dump_alt_value (val_value_t *val,
2208 val_stdout_value (val_value_t *val,
2224 val_stdout_value_ex (val_value_t *val,
2226 ncx_display_mode_t display_mode,
2248 val_dump_value_max (val_value_t *val,
2250 int32 indent_amount,
2251 val_dumpvalue_mode_t dumpmode,
2252 ncx_display_mode_t display_mode,
2276 val_dump_value_nonconfig (val_value_t *val,
2278 int32 indent_amount,
2279 val_dumpvalue_mode_t dumpmode,
2280 ncx_display_mode_t display_mode,
2307 val_dump_value_full (val_value_t *val,
2309 int32 indent_amount,
2310 val_dumpvalue_mode_t dumpmode,
2311 ncx_display_mode_t display_mode,
2315 boolean expand_varexpr,
2317 logfns_t *overrideOutput);
2343 val_dump_value_full2 (val_value_t *val,
2345 int32 indent_amount,
2346 val_dumpvalue_mode_t dumpmode,
2347 ncx_display_mode_t display_mode,
2351 boolean expand_varexpr,
2354 logfns_t *overrideOutput);
2370 val_set_string (val_value_t *val,
2371 const xmlChar *valname,
2372 const xmlChar *valstr);
2391 val_set_string2 (val_value_t *val,
2392 const xmlChar *valname,
2394 const xmlChar *valstr,
2419 val_set_string3 (val_value_t *val,
2420 const xmlChar *valname,
2422 const xmlChar *valstr,
2424 boolean is_dblquote);
2443 val_set_binary (const xmlChar *valstr,
2459 val_reset_empty (val_value_t *val);
2475 val_set_simval (val_value_t *val,
2478 const xmlChar *valname,
2479 const xmlChar *valstr);
2525 val_set_simval_str (val_value_t *val,
2528 const xmlChar *valname,
2530 const xmlChar *valstr);
2554 val_set_simval_binary (val_value_t *val,
2555 const xmlChar *binstr,
2603 val_set_simval_max (val_value_t *val,
2606 const xmlChar *valname,
2608 const xmlChar *valstr,
2626 val_make_simval (typ_def_t *typdef,
2628 const xmlChar *valname,
2629 const xmlChar *valstr,
2647 val_make_string (xmlns_id_t nsid,
2648 const xmlChar *valname,
2649 const xmlChar *valstr);
2663 val_make_binary (xmlns_id_t nsid,
2664 const xmlChar *valname,
2665 const xmlChar *valstr,
2681 val_merge (const val_value_t *src,
2692 val_clone (const val_value_t *val);
2703 val_clone2 (const val_value_t *val);
2720 val_clone_config_data (const val_value_t *val,
2742 val_clone_config_newval (const val_value_t *val,
2766 val_clone_config_newval_keys_only (const val_value_t *val,
2790 val_clone_config_save (const val_value_t *val,
2816 val_clone_config_false (const val_value_t *val,
2831 val_replace (val_value_t *val,
2845 val_replace_str (const xmlChar *str,
2861 val_fast_replace_string (const xmlChar *str,
2873 val_replace_stringval (val_value_t *val,
2874 const xmlChar *str);
2894 val_add_child (val_value_t *child,
2895 val_value_t *parent);
2910 val_add_child_sorted (val_value_t *child,
2911 val_value_t *parent);
2926 val_insert_child (val_value_t *child,
2927 val_value_t *current,
2928 val_value_t *parent);
2940 val_remove_child (val_value_t *child);
2953 val_swap_child (val_value_t *newchild,
2954 val_value_t *curchild);
2965 val_first_child_match (const val_value_t *parent,
2966 const val_value_t *child);
2980 val_first_child_match_fast (const val_value_t *parent,
2981 const val_value_t *child,
2982 val_value_t *lastmatch);
2997 val_next_child_match (val_value_t *parent,
2999 val_value_t *curmatch);
3009 val_next_child_same (val_value_t *curchild);
3019 val_get_first_child (const val_value_t *parent);
3029 val_get_next_child (const val_value_t *curchild);
3039 val_get_first_terminal_child (const val_value_t *parent);
3049 val_get_next_terminal_child (const val_value_t *curchild);
3066 val_find_child (const val_value_t *parent,
3067 const xmlChar *modname,
3068 const xmlChar *childname);
3085 val_find_child_fast (const val_value_t *parent,
3087 const xmlChar *childname);
3099 val_find_child_obj (const val_value_t *parent,
3100 const struct obj_template_t_ *chobj);
3118 val_find_child_que (const dlq_hdr_t *childQ,
3120 const xmlChar *childname);
3137 val_match_child (const val_value_t *parent,
3138 const xmlChar *modname,
3139 const xmlChar *childname);
3159 val_match_child_count (const val_value_t *parent,
3160 const xmlChar *modname,
3161 const xmlChar *childname,
3162 uint32 *matchcount);
3182 val_find_next_child (const val_value_t *parent,
3183 const xmlChar *modname,
3184 const xmlChar *childname,
3185 const val_value_t *curchild);
3202 val_find_next_child_fast (const val_value_t *parent,
3203 const val_value_t *curchild);
3215 val_first_child_name (val_value_t *parent,
3216 const xmlChar *name);
3228 val_first_child_qname (val_value_t *parent,
3230 const xmlChar *name);
3243 val_next_child_qname (val_value_t *parent,
3245 const xmlChar *name,
3246 val_value_t *curchild);
3267 val_first_child_string (val_value_t *parent,
3268 const xmlChar *name,
3269 const xmlChar *strval);
3281 val_child_cnt (val_value_t *parent);
3294 val_child_inst_cnt (const val_value_t *parent,
3295 const xmlChar *modname,
3296 const xmlChar *name);
3307 val_get_child_inst_id (const val_value_t *parent,
3308 const val_value_t *child);
3318 val_liststr_count (const val_value_t *val);
3334 val_index_match (const val_value_t *val1,
3335 const val_value_t *val2);
3349 val_index_compare (const val_value_t *val1,
3350 const val_value_t *val2);
3385 val_compare_max (const val_value_t *val1,
3386 const val_value_t *val2,
3429 val_compare_max_def (const val_value_t *val1,
3430 const val_value_t *val2,
3434 boolean ignore_defaults);
3461 val_compare_ex (const val_value_t *val1,
3462 const val_value_t *val2,
3463 boolean configonly);
3487 val_compare (const val_value_t *val1,
3488 const val_value_t *val2);
3511 val_compare_to_string (const val_value_t *val1,
3512 const xmlChar *strval2,
3538 val_compare_to_string_len (const val_value_t *val1,
3539 const xmlChar *strval2,
3551// val_compare_for_replace (const val_value_t *val1,
3552// const val_value_t *val2);
3574 val_compare_for_edit (const val_value_t *val1,
3575 const val_value_t *val2,
3598 val_compare_as_string (const val_value_t *val1,
3599 const val_value_t *val2,
3622 val_sprintf_simval_nc (xmlChar *buff,
3623 const val_value_t *val,
3647 val_sprintf_simval_nc_ex (xmlChar *buff,
3648 const val_value_t *val,
3678 val_sprintf_simval_xpath (xmlChar *buff,
3679 const val_value_t *val,
3711 val_sprintf_binary (xmlChar *buff,
3712 const val_value_t *val,
3730 val_make_sprintf_string (const val_value_t *val);
3746 val_resolve_scoped_name (val_value_t *val,
3747 const xmlChar *name,
3748 val_value_t **chval);
3758 val_get_iqualval (const val_value_t *val);
3780 val_duplicates_allowed (val_value_t *val);
3791 val_has_content (const val_value_t *val);
3803 val_has_content_ex (const val_value_t *val);
3814 val_has_index (const val_value_t *val);
3824 val_get_first_index (const val_value_t *val);
3834 val_get_next_index (const val_index_t *valindex);
3844 val_get_index_count (const val_value_t *val);
3859 val_parse_meta (ses_cb_t *scb,
3862 val_value_t *retval);
3872 val_set_extern (val_value_t *val,
3884 val_set_intern (val_value_t *val,
3907 val_fit_oneline (const val_value_t *val,
3921 val_create_allowed (const val_value_t *val);
3933 val_delete_allowed (const val_value_t *val);
3944 val_is_config_data (const val_value_t *val);
3956 val_is_config_save (const val_value_t *val);
3976 val_is_config_false (const val_value_t *val);
3989 val_is_virtual (const val_value_t *val);
4022 val_get_virtual_value (ses_cb_t *scb,
4047 val_is_default (val_value_t *val);
4060 val_is_real (const val_value_t *val);
4070 val_get_parent_nsid (const val_value_t *val);
4085 val_instance_count (val_value_t *val,
4086 const xmlChar *modname,
4087 const xmlChar *objname);
4105 val_instance_count_fast (val_value_t *val,
4107 const xmlChar *objname,
4108 val_value_t **firstval);
4124 val_instance_count_fast2 (val_value_t *val,
4125 val_value_t *startval);
4144 val_set_extra_instance_errors (val_value_t *val,
4145 const xmlChar *modname,
4146 const xmlChar *objname,
4159 val_need_quotes (const xmlChar *str);
4172 val_has_dquotes (const xmlChar *str);
4183 val_need_dquotes (const xmlChar *str);
4194 val_all_whitespace (const xmlChar *str);
4206 val_any_whitespace (const xmlChar *str,
4219 val_match_metaval (const xml_attr_t *attr,
4221 const xmlChar *name);
4231 val_get_dirty_flag (const val_value_t *val);
4241 val_get_subtree_dirty_flag (const val_value_t *val);
4250 val_set_subtree_dirty_up (val_value_t *val);
4261 val_set_dirty_flag (val_value_t *val,
4271 val_set_child_deleted_flag (val_value_t *val);
4281 val_get_child_deleted_flag (val_value_t *val);
4297 val_clear_dirty_flag (val_value_t *val,
4299 ncx_transaction_id_t txid,
4301 boolean do_clear_default);
4310 val_clear_child_dirty_flag (val_value_t *val);
4320 val_dirty_subtree (const val_value_t *val);
4336 val_clean_tree (val_value_t *val);
4346 val_get_nest_level (val_value_t *val);
4358 val_get_first_leaf (val_value_t *val);
4368extern const xmlChar *
4369 val_get_mod_name (const val_value_t *val);
4379extern const xmlChar *
4380 val_get_mod_prefix (const val_value_t *val);
4390 val_get_nsid (const val_value_t *val);
4400 val_get_yang_sid (const val_value_t *val);
4410 val_change_nsid (val_value_t *val,
4421 val_change_nsid2 (val_value_t *val,
4432 val_change_nsid3 (val_value_t *val,
4448 val_make_from_insertxpcb (val_value_t *sourceval,
4458extern const typ_def_t *
4459 val_get_typdef (const val_value_t *val);
4470 val_set_by_default (const val_value_t *val);
4481 val_has_withdef_default (const val_value_t *val);
4490 val_set_withdef_default (val_value_t *val);
4501 val_is_metaval (const val_value_t *val);
4512 val_move_children (val_value_t *srcval,
4513 val_value_t *destval);
4524 val_move_nonconfig_children (val_value_t *srcval,
4525 val_value_t *destval);
4547 val_cvt_generic (val_value_t *val);
4559 val_set_pcookie (val_value_t *val,
4572 val_set_icookie (val_value_t *val,
4584 val_get_pcookie (val_value_t *val);
4595 val_get_icookie (val_value_t *val);
4606 val_delete_default_leaf (val_value_t *val);
4619 val_delete_default_leaf_list (val_value_t *val);
4628 val_force_empty (val_value_t *val);
4639 val_delete_default_npcon (val_value_t *val);
4651 val_move_fields_for_xml (val_value_t *srcval,
4652 val_value_t *destval,
4664 val_move_metadata (val_value_t *srcval,
4665 val_value_t *destval);
4675 val_get_first_key (val_value_t *val);
4685 val_get_last_key (val_value_t *val);
4695 val_get_next_key (val_index_t *curkey);
4705 val_get_prev_key (val_index_t *curkey);
4715 val_remove_key (val_value_t *keyval);
4725 val_new_deleted_value (void);
4736 val_new_editvars (val_value_t *val);
4747 val_free_editvars (val_value_t *val);
4756 val_free_solo_editvars (val_editvars_t *editvars);
4770 val_all_np_containers (val_value_t *val);
4783 val_sprintf_etag (val_value_t *val,
4795 val_get_last_modified (val_value_t *val);
4804 val_force_default (val_value_t *val);
4815 val_set_all_tags (val_value_t *val,
4817 ncx_transaction_id_t txid);
4826extern const xmlChar *
4827 val_get_owner (val_value_t *val);
4836extern ncx_owner_id_t
4837 val_get_owner_id (val_value_t *val);
4847 val_need_owner_string (val_value_t *val);
4857 val_delete_children (val_value_t *val);
4866 val_clean_value (val_value_t *val);
4878 val_find_bit (val_value_t *val,
4879 const xmlChar *bitname);
4890 val_has_children (const val_value_t *val);
4901 val_add_test_valindex (val_value_t *parentval,
4902 val_value_t *keyval);
4911extern const xmlChar *
4912 val_get_yang_typename (val_value_t *val);
4922 val_set_force_config (val_value_t *val,
4933 val_clear_defvalset_flag (val_value_t *val);
4945 val_clone_valQ (dlq_hdr_t *valQ,
4946 dlq_hdr_t *return_valQ);
4957 val_clean_valQ (dlq_hdr_t *valQ);
4970 val_is_value_set (val_value_t *val);
4981 val_url_encode_string (const xmlChar *str,
4998 val_quote_encode_string (const xmlChar *str,
5013 val_convert_any_to_container (val_value_t *val);
5023 val_clean_index_chain (val_value_t *val);
5034 val_pattern_match (const xmlRegexpPtr pattern,
5035 const xmlChar *strval);
5047 val_ocpattern_match (const regex_t *ocpattern,
5048 const xmlChar *strval);
5061 val_idref_derived_from (ncx_module_t *impmod,
5062 val_value_t *testval,
5063 const xmlChar *qname,
5078 val_set_sil_priority (val_value_t *val,
5089 val_get_sil_priority (val_value_t *val);
5100extern const xmlChar *
5101 val_find_bit_name (val_value_t *val,
5114extern const xmlChar *
5115 val_find_enum_name (val_value_t *val,
5130extern const xmlChar *
5131 val_find_enum_name2 (ncx_btype_t btyp,
5146 val_mark_deleted (val_value_t *val);
5157 val_mark_undeleted (val_value_t *val);
5171 val_has_conditional_value (val_value_t *val);
5185 val_convert_leafref (const val_value_t *val);
5199 val_convert_leafref_ext (val_value_t *val);
5225 val_compare_for_topreplace (const val_value_t *val1,
5226 const val_value_t *val2);
5257 val_compare_for_topreplace_simple (const val_value_t *val1,
5258 const val_value_t *val2);
5269 val_has_complex_child (const val_value_t *val);
5280 val_add_meta (val_value_t *metaval,
5291 val_find_root (val_value_t *val);
5301 val_set_canonical (val_value_t *val);
5312 val_get_leafref_typdef (val_value_t *val);
5335 val_ascendant_compare (val_value_t *val1,
5345extern const xmlChar *
5346 val_get_dname (const val_value_t *val);
5359 val_set_dname (val_value_t *val,
5360 const xmlChar *dname);
5374 val_set_dname2 (val_value_t *val,
5375 const xmlChar *dname,
5387 val_new_extra (val_value_t *val);
5396extern const xmlChar *
5397 val_get_varexpr (const val_value_t *val);
5408 val_set_varexpr (val_value_t *val,
5409 const xmlChar *varexpr);
5418 val_clear_varexpr (val_value_t *val);
5427 val_set_wildcard_string (val_value_t *val);
5436#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5447 val_copy_editvars (const val_value_t *val,
5461 val_set_skip_sil_partial (val_value_t *val);
5471 val_get_skip_sil_partial (const val_value_t *val);
5485 val_get_leafref_typdef_ex (val_value_t *val,
5486 boolean union_check);
5502 val_is_default_npcon (val_value_t *val);
5513 val_identity_ok (typ_def_t *typdef,
5514 ncx_identity_t *ident);
5532 val_highest_bit_set (const val_value_t *val,
5551 val_first_bit_set (const val_value_t *val,
5552 const ncx_lmem_t **lmem,
5571 val_next_bit_set (const val_value_t *val,
5572 const ncx_lmem_t *lmem,
5573 const ncx_lmem_t **nextlmem,
5582extern struct xpath_aio_cb_t_ *
5583 val_get_aiocb (const val_value_t *val);
5594 val_set_aiocb (val_value_t *val,
5595 struct xpath_aio_cb_t_ *aiocb);
5607extern ncx_sm_mpid_t *
5608 val_get_mpid (const val_value_t *val);
5620 val_set_mpid (val_value_t *val,
5621 struct ncx_sm_mpid_t_ *mpid);
5639 val_set_deleted_from_commit_deletes (val_value_t *val,
5657 val_get_deleted_from_commit_deletes (const val_value_t *val);
5671 val_clean_leafref_cache (val_value_t *val);
5703 val_set_child_leaf (val_value_t *parent,
5704 const xmlChar *modname,
5705 const xmlChar *childname,
5706 const xmlChar *valstr);
5745 val_delete_child_leaf (val_value_t *parent,
5746 val_value_t *curparent,
5747 const xmlChar *modname,
5748 const xmlChar *childname);
5761 val_is_all_digits (const xmlChar *str);
5779 val_cvt_instanceid_filter (val_value_t *val);
5790extern typ_pattern_t *
5791 val_get_regex_filter (val_value_t *val);
5806 val_set_regex_filter (val_value_t *val,
5807 typ_pattern_t *regex_filter);
5822 val_test_regex_filter (typ_pattern_t *pat,
5823 const xmlChar *strval,
5839 val_is_regex_filter (const xmlChar *testval,
5846} /* 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.