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_CLR_DELETED(V) (V)->flags &= ~VAL_FL_DELETED
551#define VAL_MARK_DELETED(V) val_mark_deleted(V)
554#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
557#define VAL_LAST_MODIFIED(V) (V)->last_modified
560#define VAL_ETAG(V) (V)->etag
563#define VAL_BTYPE(V) (V)->btyp
566#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
569#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
572#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
575#define VAL_VAREXPR(V) val_get_varexpr(V)
580#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
583#define VAL_REMOVE_META(M) dlq_remove(M)
588#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
593#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
598#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
601#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
604#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
607#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
612#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
615#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
618#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
621#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
624#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
627#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
630#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
633#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
636#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
639#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
642#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
645#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
648#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
651#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
654#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
657#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
660#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
663#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
666#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
669#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
672#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
675#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
678#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
681#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
684#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
687#define VAL_CHILD_HDR_OBJ(H) (H)->obj
690#define VAL_CHILD_HDR_COUNT(H) (H)->count
693#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
696#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
699#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
706#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
709#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
716#define VAL_EDITOP(V) (V)->editop
718#define VAL_EXTERN_VALONLY(V) (V)->extern_valonly
723#define VAL_SET_DEFSET(V) (V)->flags |= VAL_FL_DEFSET
729#define VAL_CLR_DEFSET(V) (V)->flags &= ~VAL_FL_DEFSET
731/* Value node is from anydata that was replaced by datapath */
732#define VAL_FROM_ANYDATA(V) (V)->from_anydata
760typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
769typedef void (*errfn_t) (const char *fstr, ...);
778/* pick a log indent function for dump_value */
779typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
785typedef struct logfns_t_ {
786 dumpfn_t dumpfn; /**< log dump callback */
787 errfn_t errorfn; /**< log error callback */
788 indentfn_t indentfn; /**< log indent callback */
789 boolean suppressVariableNames; /**< suppress variable names in output */
790 FILE *outputFile; /**< manager redirect to file output */
795typedef struct val_idref_t_ {
796 xmlns_id_t nsid; /**< namespace ID */
799 ncx_identity_t *identity; /**< ID back-ptr if found */
804typedef enum val_insert_mode_t_ {
805 VAL_INS_MODE_NONE, /**< not set */
806 VAL_INS_MODE_KEY, /**< YANG key attribute */
807 VAL_INS_MODE_VALUE, /**< YANG value attribute */
808 VAL_INS_MODE_POINT /**< YANG-API point param */
809} YPACK val_insert_mode_t;
813typedef enum val_dumpvalue_mode_t_ {
814 DUMP_VAL_NONE, /**< not set */
815 DUMP_VAL_STDOUT, /**< dump val to STDOUT */
816 DUMP_VAL_LOG, /**< dump val to main log */
817 DUMP_VAL_ALT_LOG, /**< dump val to alternate log */
818 DUMP_VAL_AUDIT_LOG, /**< dump val to audit log */
819} val_dumpvalue_mode_t;
823typedef struct val_editvars_t_ {
828 struct val_value_t_ *curparent; /**< track the real parent */
829 op_insertop_t insertop; /**< YANG insert operation */
830 xmlChar *insertstr; /**< saved value or key attr */
831 struct xpath_pcb_t_ *insertxpcb; /**< key attr for insert */
832 struct val_value_t_ *insertval; /**< back-ptr if before or after */
833 val_insert_mode_t insert_mode; /**< insert mode requested */
834 uint8 silprio; /**< 2nd SIL priority for server */
835 boolean operset; /**< nc:operation here */
836 void *pcookie; /**< user pointer cookie */
837 int icookie; /**< user integer cookie */
838 boolean is_move; /**< TRUE if YPATCH MOVE operation */
839 boolean skip_sil_partial; /**< TRUE if skip_sil_partial needed */
840 boolean deleted; /**< TRUE if deleted from commit_deletes */
841} YPACK val_editvars_t;
845typedef struct val_extra_t_ {
852 xmlChar *dname; /**< malloced name if needed */
866 struct val_value_t_ *virtualval;
875 struct xpath_pcb_t_ *xpathpcb;
881 plock_cb_t *plock[VAL_MAX_PLOCKS];
887 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
900 struct xpath_aio_cb_t_ *aiocb;
912typedef struct val_value_t_ {
917 struct obj_template_t_ *obj; /**< bptr to object def */
918 typ_def_t *typdef; /**< bptr to typdef if leaf */
919 const xmlChar *name; /**< back pointer to elname\n
920 * the dname field is moved to val_extra_t and only used when
921 * the value is constructed from dummy objects or no objects at all
924 struct val_value_t_ *parent; /**< back-ptr to parent if any */
925 struct val_child_hdr_t_ *hdr; /**< back-ptr to own child_hdr */
928 val_extra_t *val_extra;
930 uint32 flags; /**< internal status flags */
932 xmlns_id_t nsid; /**< namespace ID for this node */
933 ncx_btype_t btyp; /**< base type of this value */
934 ncx_data_class_t dataclass; /**< config or state data */
939 time_t last_modified;
940 ncx_etag_t etag; /**< ETag for RESTCONF */
955 dlq_hdr_t *metaQ; /**< Q of val_value_t */
960 val_editvars_t *editvars; /**< edit-vars from attrs */
961 op_editop_t editop; /**< needed for all edits */
962 status_t res; /**< validation result */
964 /* GET1 getcb moved to val_extra */
965 /* GET1 virtualval moved to val_extra */
966 /* GET1 cachetime moved to val_extra */
969 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
971 /* this field is used for NCX_BT_CHOICE
972 * If set, the object path for this node is really:
973 * $this --> casobj --> casobj.parent --> $this.parent
974 * the OBJ_TYP_CASE and OBJ_TYP_CHOICE nodes are skipped
975 * inside an XML instance document
977 * replaced by val_get_casobj() function in val_util.h
978 * struct obj_template_t_ *casobj;
981 /* xpathpcb moved to val_extra_t */
983 /* back-ptr to the partial locks that are held
985 * plock moved to val_extra
988 /* back-ptr to the data access control rules that
989 * reference this node
990 * dataruleQ moved to val_extra
993 /* malloced pointer to the variable expression found
994 * if this val node is part of a data template.
995 * The actual value in union v_ MUST be ignored if
996 * varexpr string is non-NULL!!
997 * varexpr moved to val_extra
1003 ncx_owner_id_t owner_id;
1006 ncx_nmda_origin_t nmda_origin;
1009 boolean extern_valonly;
1018 boolean from_anydata;
1039 dlq_hdr_t child_hdrQ;
1060 val_idref_t idref; /**< NCX_BT_IDREF */
1061 ncx_binary_t binary; /**< NCX_BT_BINARY */
1062 ncx_list_t list; /**< NCX_BT_BITS, NCX_BT_SLIST */
1063 boolean boo; /**< NCX_BT_EMPTY, NCX_BT_BOOLEAN */
1064 ncx_enum_t enu; /**< NCX_BT_UNION, NCX_BT_ENUM */
1065 xmlChar *fname; /**< NCX_BT_EXTERN */
1066 xmlChar *intbuff; /**< NCX_BT_INTERN */
1074typedef struct val_child_hdr_t_ {
1075 dlq_hdr_t qhdr; /**< queue header */
1082 struct obj_template_t_ *obj;
1087 struct val_tree_t_ *tree;
1100} YPACK val_child_hdr_t;
1113typedef struct val_index_t_ {
1114 dlq_hdr_t qhdr; /**< queue header */
1115 val_value_t *val; /**< points to a child node */
1128 (*val_test_fn_t) (const val_value_t *val);
1141 (*val_walker_fn_t) (val_value_t *val,
1157 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1173 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1187 (*val_test2_fn_t) (val_value_t *val,
1218 val_new_value (void);
1230 val_init_value (val_value_t *val);
1244 val_init_complex (val_value_t *val,
1258 val_init_virtual (val_value_t *val,
1260 struct obj_template_t_ *obj);
1273 val_init_from_template (val_value_t *val,
1274 struct obj_template_t_ *obj);
1287 val_reinit_from_template (val_value_t *val,
1288 struct obj_template_t_ *obj);
1301 val_free_value (val_value_t *val);
1312 val_set_name (val_value_t *val,
1313 const xmlChar *name,
1327 val_force_dname (val_value_t *val);
1339 val_set_qname (val_value_t *val,
1341 const xmlChar *name,
1355 val_string_ok (typ_def_t *typdef,
1357 const xmlChar *strval);
1375 val_string_ok_errinfo (typ_def_t *typdef,
1377 const xmlChar *strval,
1378 ncx_errinfo_t **errinfo);
1397 val_binary_ok_errinfo (typ_def_t *typdef,
1398 const xmlChar *strval,
1400 ncx_errinfo_t **errinfo);
1421 val_string_ok_ex (ses_cb_t *scb,
1424 const xmlChar *strval,
1425 ncx_errinfo_t **errinfo,
1448 val_string_ok_ex2 (ses_cb_t *scb,
1451 const xmlChar *strval,
1452 ncx_errinfo_t **errinfo,
1478 val_list_ok (typ_def_t *typdef,
1501 val_list_ok_errinfo (typ_def_t *typdef,
1504 ncx_errinfo_t **errinfo);
1520 val_enum_ok (typ_def_t *typdef,
1521 const xmlChar *enumval,
1523 const xmlChar **retstr);
1536 val_bit_ok (typ_def_t *typdef,
1537 const xmlChar *bitname,
1553 val_bitpos_ok (typ_def_t *typdef,
1555 const xmlChar **name);
1577 val_idref_ok (typ_def_t *typdef,
1578 const xmlChar *qname,
1580 const xmlChar **name,
1581 ncx_identity_t **id);
1609 val_idref_ok_ex (typ_def_t *typdef,
1610 const xmlChar *qname,
1613 ncx_module_t *impmod,
1615 const xmlChar **name,
1616 ncx_identity_t **id);
1636 val_parse_idref (ncx_module_t *mod,
1637 const xmlChar *qname,
1639 const xmlChar **name,
1640 ncx_identity_t **id);
1661 val_parse_idref_rootcb (ncx_module_t *mod,
1662 const xmlChar *qname,
1664 const xmlChar **name,
1665 ncx_identity_t **id,
1666 ncx_sm_rootcb_t *rootcb);
1679 val_range_ok (typ_def_t *typdef,
1681 const ncx_num_t *num);
1696 val_range_ok_errinfo (typ_def_t *typdef,
1698 const ncx_num_t *num,
1699 ncx_errinfo_t **errinfo);
1710 val_pattern_ok (typ_def_t *typdef,
1711 const xmlChar *strval);
1727 val_pattern_ok_errinfo (typ_def_t *typdef,
1728 const xmlChar *strval,
1729 ncx_errinfo_t **errinfo);
1742 val_simval_ok (typ_def_t *typdef,
1743 const xmlChar *simval);
1759 val_simval_ok_errinfo (typ_def_t *typdef,
1760 const xmlChar *simval,
1761 ncx_errinfo_t **errinfo);
1778 val_simval_ok_ex (typ_def_t *typdef,
1779 const xmlChar *simval,
1780 ncx_errinfo_t **errinfo,
1800 val_simval_ok_max (typ_def_t *typdef,
1801 const xmlChar *simval,
1802 ncx_errinfo_t **errinfo,
1825 val_simval_ok_max2 (typ_def_t *typdef,
1826 const xmlChar *simval,
1827 ncx_errinfo_t **errinfo,
1853 val_simval_ok_max3 (typ_def_t *typdef,
1854 const xmlChar *simval,
1855 ncx_errinfo_t **errinfo,
1874 val_union_ok (typ_def_t *typdef,
1875 const xmlChar *strval,
1876 val_value_t *retval);
1893 val_union_ok_errinfo (typ_def_t *typdef,
1894 const xmlChar *strval,
1895 val_value_t *retval,
1896 ncx_errinfo_t **errinfo);
1917 val_union_ok_ex (typ_def_t *typdef,
1918 const xmlChar *strval,
1919 val_value_t *retval,
1920 ncx_errinfo_t **errinfo,
1922 typ_def_t **match_typdef);
1946 val_union_ok_binary (typ_def_t *typdef,
1947 const xmlChar *binstr,
1949 val_value_t *retval,
1950 ncx_errinfo_t **errinfo,
1951 typ_def_t **match_typdef);
1974 val_union_ok_full (typ_def_t *typdef,
1975 const xmlChar *strval,
1976 val_value_t *contextval,
1977 val_value_t *rootval,
1978 val_value_t *retval,
1979 ncx_errinfo_t **errinfo);
1989 val_get_metaQ (val_value_t *val);
2000 val_get_first_meta (dlq_hdr_t *queue);
2011 val_get_first_meta_val (val_value_t *val);
2022 val_get_next_meta (val_value_t *curnode);
2033 val_meta_empty (val_value_t *val);
2045 val_find_meta (val_value_t *val,
2047 const xmlChar *name);
2060 val_meta_match (val_value_t *val,
2061 val_value_t *metaval);
2073 val_metadata_inst_count (val_value_t *val,
2075 const xmlChar *name);
2089 val_dump_value (val_value_t *val,
2106 val_dump_value_config (val_value_t *val,
2123 val_dump_value_ex (val_value_t *val,
2125 ncx_display_mode_t display_mode,
2140 val_dump_alt_value (val_value_t *val,
2155 val_stdout_value (val_value_t *val,
2171 val_stdout_value_ex (val_value_t *val,
2173 ncx_display_mode_t display_mode,
2195 val_dump_value_max (val_value_t *val,
2197 int32 indent_amount,
2198 val_dumpvalue_mode_t dumpmode,
2199 ncx_display_mode_t display_mode,
2227 val_dump_value_full (val_value_t *val,
2229 int32 indent_amount,
2230 val_dumpvalue_mode_t dumpmode,
2231 ncx_display_mode_t display_mode,
2235 boolean expand_varexpr,
2237 logfns_t *overrideOutput);
2263 val_dump_value_full2 (val_value_t *val,
2265 int32 indent_amount,
2266 val_dumpvalue_mode_t dumpmode,
2267 ncx_display_mode_t display_mode,
2271 boolean expand_varexpr,
2274 logfns_t *overrideOutput);
2290 val_set_string (val_value_t *val,
2291 const xmlChar *valname,
2292 const xmlChar *valstr);
2311 val_set_string2 (val_value_t *val,
2312 const xmlChar *valname,
2314 const xmlChar *valstr,
2339 val_set_string3 (val_value_t *val,
2340 const xmlChar *valname,
2342 const xmlChar *valstr,
2344 boolean is_dblquote);
2363 val_set_binary (const xmlChar *valstr,
2379 val_reset_empty (val_value_t *val);
2395 val_set_simval (val_value_t *val,
2398 const xmlChar *valname,
2399 const xmlChar *valstr);
2445 val_set_simval_str (val_value_t *val,
2448 const xmlChar *valname,
2450 const xmlChar *valstr);
2474 val_set_simval_binary (val_value_t *val,
2475 const xmlChar *binstr,
2523 val_set_simval_max (val_value_t *val,
2526 const xmlChar *valname,
2528 const xmlChar *valstr,
2546 val_make_simval (typ_def_t *typdef,
2548 const xmlChar *valname,
2549 const xmlChar *valstr,
2567 val_make_string (xmlns_id_t nsid,
2568 const xmlChar *valname,
2569 const xmlChar *valstr);
2583 val_make_binary (xmlns_id_t nsid,
2584 const xmlChar *valname,
2585 const xmlChar *valstr,
2601 val_merge (const val_value_t *src,
2612 val_clone (const val_value_t *val);
2623 val_clone2 (const val_value_t *val);
2640 val_clone_config_data (const val_value_t *val,
2662 val_clone_config_newval (const val_value_t *val,
2686 val_clone_config_newval_keys_only (const val_value_t *val,
2710 val_clone_config_save (const val_value_t *val,
2725 val_replace (val_value_t *val,
2739 val_replace_str (const xmlChar *str,
2755 val_fast_replace_string (const xmlChar *str,
2767 val_replace_stringval (val_value_t *val,
2768 const xmlChar *str);
2788 val_add_child (val_value_t *child,
2789 val_value_t *parent);
2804 val_add_child_sorted (val_value_t *child,
2805 val_value_t *parent);
2820 val_insert_child (val_value_t *child,
2821 val_value_t *current,
2822 val_value_t *parent);
2834 val_remove_child (val_value_t *child);
2847 val_swap_child (val_value_t *newchild,
2848 val_value_t *curchild);
2859 val_first_child_match (const val_value_t *parent,
2860 const val_value_t *child);
2874 val_first_child_match_fast (const val_value_t *parent,
2875 const val_value_t *child,
2876 val_value_t *lastmatch);
2891 val_next_child_match (val_value_t *parent,
2893 val_value_t *curmatch);
2903 val_next_child_same (val_value_t *curchild);
2913 val_get_first_child (const val_value_t *parent);
2923 val_get_next_child (const val_value_t *curchild);
2933 val_get_first_terminal_child (const val_value_t *parent);
2943 val_get_next_terminal_child (const val_value_t *curchild);
2960 val_find_child (const val_value_t *parent,
2961 const xmlChar *modname,
2962 const xmlChar *childname);
2979 val_find_child_fast (const val_value_t *parent,
2981 const xmlChar *childname);
2993 val_find_child_obj (const val_value_t *parent,
2994 const struct obj_template_t_ *chobj);
3012 val_find_child_que (const dlq_hdr_t *childQ,
3014 const xmlChar *childname);
3031 val_match_child (const val_value_t *parent,
3032 const xmlChar *modname,
3033 const xmlChar *childname);
3053 val_match_child_count (const val_value_t *parent,
3054 const xmlChar *modname,
3055 const xmlChar *childname,
3056 uint32 *matchcount);
3076 val_find_next_child (const val_value_t *parent,
3077 const xmlChar *modname,
3078 const xmlChar *childname,
3079 const val_value_t *curchild);
3096 val_find_next_child_fast (const val_value_t *parent,
3097 const val_value_t *curchild);
3109 val_first_child_name (val_value_t *parent,
3110 const xmlChar *name);
3122 val_first_child_qname (val_value_t *parent,
3124 const xmlChar *name);
3137 val_next_child_qname (val_value_t *parent,
3139 const xmlChar *name,
3140 val_value_t *curchild);
3161 val_first_child_string (val_value_t *parent,
3162 const xmlChar *name,
3163 const xmlChar *strval);
3175 val_child_cnt (val_value_t *parent);
3188 val_child_inst_cnt (const val_value_t *parent,
3189 const xmlChar *modname,
3190 const xmlChar *name);
3201 val_get_child_inst_id (const val_value_t *parent,
3202 const val_value_t *child);
3212 val_liststr_count (const val_value_t *val);
3228 val_index_match (const val_value_t *val1,
3229 const val_value_t *val2);
3243 val_index_compare (const val_value_t *val1,
3244 const val_value_t *val2);
3277 val_compare_max (const val_value_t *val1,
3278 const val_value_t *val2,
3318 val_compare_max_def (const val_value_t *val1,
3319 const val_value_t *val2,
3323 boolean ignore_defaults);
3350 val_compare_ex (const val_value_t *val1,
3351 const val_value_t *val2,
3352 boolean configonly);
3376 val_compare (const val_value_t *val1,
3377 const val_value_t *val2);
3400 val_compare_to_string (const val_value_t *val1,
3401 const xmlChar *strval2,
3427 val_compare_to_string_len (const val_value_t *val1,
3428 const xmlChar *strval2,
3452 val_compare_for_replace (const val_value_t *val1,
3453 const val_value_t *val2);
3475 val_compare_for_edit (const val_value_t *val1,
3476 const val_value_t *val2,
3499 val_compare_as_string (const val_value_t *val1,
3500 const val_value_t *val2,
3523 val_sprintf_simval_nc (xmlChar *buff,
3524 const val_value_t *val,
3548 val_sprintf_simval_nc_ex (xmlChar *buff,
3549 const val_value_t *val,
3579 val_sprintf_simval_xpath (xmlChar *buff,
3580 const val_value_t *val,
3599 val_make_sprintf_string (const val_value_t *val);
3615 val_resolve_scoped_name (val_value_t *val,
3616 const xmlChar *name,
3617 val_value_t **chval);
3627 val_get_iqualval (const val_value_t *val);
3649 val_duplicates_allowed (val_value_t *val);
3660 val_has_content (const val_value_t *val);
3672 val_has_content_ex (const val_value_t *val);
3683 val_has_index (const val_value_t *val);
3693 val_get_first_index (const val_value_t *val);
3703 val_get_next_index (const val_index_t *valindex);
3713 val_get_index_count (const val_value_t *val);
3728 val_parse_meta (ses_cb_t *scb,
3731 val_value_t *retval);
3741 val_set_extern (val_value_t *val,
3753 val_set_intern (val_value_t *val,
3776 val_fit_oneline (const val_value_t *val,
3790 val_create_allowed (const val_value_t *val);
3802 val_delete_allowed (const val_value_t *val);
3813 val_is_config_data (const val_value_t *val);
3825 val_is_config_save (const val_value_t *val);
3838 val_is_virtual (const val_value_t *val);
3871 val_get_virtual_value (ses_cb_t *scb,
3896 val_is_default (val_value_t *val);
3909 val_is_real (const val_value_t *val);
3919 val_get_parent_nsid (const val_value_t *val);
3934 val_instance_count (val_value_t *val,
3935 const xmlChar *modname,
3936 const xmlChar *objname);
3954 val_instance_count_fast (val_value_t *val,
3956 const xmlChar *objname,
3957 val_value_t **firstval);
3973 val_instance_count_fast2 (val_value_t *val,
3974 val_value_t *startval);
3993 val_set_extra_instance_errors (val_value_t *val,
3994 const xmlChar *modname,
3995 const xmlChar *objname,
4008 val_need_quotes (const xmlChar *str);
4021 val_has_dquotes (const xmlChar *str);
4032 val_need_dquotes (const xmlChar *str);
4043 val_all_whitespace (const xmlChar *str);
4055 val_any_whitespace (const xmlChar *str,
4068 val_match_metaval (const xml_attr_t *attr,
4070 const xmlChar *name);
4080 val_get_dirty_flag (const val_value_t *val);
4090 val_get_subtree_dirty_flag (const val_value_t *val);
4099 val_set_subtree_dirty_up (val_value_t *val);
4110 val_set_dirty_flag (val_value_t *val,
4120 val_set_child_deleted_flag (val_value_t *val);
4130 val_get_child_deleted_flag (val_value_t *val);
4146 val_clear_dirty_flag (val_value_t *val,
4148 ncx_transaction_id_t txid,
4150 boolean do_clear_default);
4159 val_clear_child_dirty_flag (val_value_t *val);
4169 val_dirty_subtree (const val_value_t *val);
4185 val_clean_tree (val_value_t *val);
4195 val_get_nest_level (val_value_t *val);
4207 val_get_first_leaf (val_value_t *val);
4217extern const xmlChar *
4218 val_get_mod_name (const val_value_t *val);
4228extern const xmlChar *
4229 val_get_mod_prefix (const val_value_t *val);
4239 val_get_nsid (const val_value_t *val);
4249 val_get_yang_sid (const val_value_t *val);
4259 val_change_nsid (val_value_t *val,
4270 val_change_nsid2 (val_value_t *val,
4281 val_change_nsid3 (val_value_t *val,
4297 val_make_from_insertxpcb (val_value_t *sourceval,
4307extern const typ_def_t *
4308 val_get_typdef (const val_value_t *val);
4319 val_set_by_default (const val_value_t *val);
4330 val_has_withdef_default (const val_value_t *val);
4339 val_set_withdef_default (val_value_t *val);
4350 val_is_metaval (const val_value_t *val);
4361 val_move_children (val_value_t *srcval,
4362 val_value_t *destval);
4373 val_move_nonconfig_children (val_value_t *srcval,
4374 val_value_t *destval);
4396 val_cvt_generic (val_value_t *val);
4408 val_set_pcookie (val_value_t *val,
4421 val_set_icookie (val_value_t *val,
4433 val_get_pcookie (val_value_t *val);
4444 val_get_icookie (val_value_t *val);
4455 val_delete_default_leaf (val_value_t *val);
4468 val_delete_default_leaf_list (val_value_t *val);
4477 val_force_empty (val_value_t *val);
4488 val_delete_default_npcon (val_value_t *val);
4500 val_move_fields_for_xml (val_value_t *srcval,
4501 val_value_t *destval,
4513 val_move_metadata (val_value_t *srcval,
4514 val_value_t *destval);
4524 val_get_first_key (val_value_t *val);
4534 val_get_last_key (val_value_t *val);
4544 val_get_next_key (val_index_t *curkey);
4554 val_get_prev_key (val_index_t *curkey);
4564 val_remove_key (val_value_t *keyval);
4574 val_new_deleted_value (void);
4585 val_new_editvars (val_value_t *val);
4596 val_free_editvars (val_value_t *val);
4605 val_free_solo_editvars (val_editvars_t *editvars);
4619 val_all_np_containers (val_value_t *val);
4632 val_sprintf_etag (val_value_t *val,
4644 val_get_last_modified (val_value_t *val);
4653 val_force_default (val_value_t *val);
4664 val_set_all_tags (val_value_t *val,
4666 ncx_transaction_id_t txid);
4675extern const xmlChar *
4676 val_get_owner (val_value_t *val);
4685extern ncx_owner_id_t
4686 val_get_owner_id (val_value_t *val);
4696 val_need_owner_string (val_value_t *val);
4706 val_delete_children (val_value_t *val);
4715 val_clean_value (val_value_t *val);
4727 val_find_bit (val_value_t *val,
4728 const xmlChar *bitname);
4739 val_has_children (const val_value_t *val);
4750 val_add_test_valindex (val_value_t *parentval,
4751 val_value_t *keyval);
4760extern const xmlChar *
4761 val_get_yang_typename (val_value_t *val);
4771 val_set_force_config (val_value_t *val,
4782 val_clear_defvalset_flag (val_value_t *val);
4794 val_clone_valQ (dlq_hdr_t *valQ,
4795 dlq_hdr_t *return_valQ);
4806 val_clean_valQ (dlq_hdr_t *valQ);
4819 val_is_value_set (val_value_t *val);
4830 val_url_encode_string (const xmlChar *str,
4847 val_quote_encode_string (const xmlChar *str,
4862 val_convert_any_to_container (val_value_t *val);
4872 val_clean_index_chain (val_value_t *val);
4883 val_pattern_match (const xmlRegexpPtr pattern,
4884 const xmlChar *strval);
4896 val_ocpattern_match (const regex_t *ocpattern,
4897 const xmlChar *strval);
4910 val_idref_derived_from (ncx_module_t *impmod,
4911 val_value_t *testval,
4912 const xmlChar *qname,
4927 val_set_sil_priority (val_value_t *val,
4938 val_get_sil_priority (val_value_t *val);
4949extern const xmlChar *
4950 val_find_bit_name (val_value_t *val,
4963extern const xmlChar *
4964 val_find_enum_name (val_value_t *val,
4979extern const xmlChar *
4980 val_find_enum_name2 (ncx_btype_t btyp,
4992 val_mark_deleted (val_value_t *val);
5003 val_mark_undeleted (val_value_t *val);
5017 val_has_conditional_value (val_value_t *val);
5031 val_convert_leafref (const val_value_t *val);
5055 val_compare_for_topreplace (const val_value_t *val1,
5056 const val_value_t *val2);
5085 val_compare_for_topreplace_simple (const val_value_t *val1,
5086 const val_value_t *val2);
5097 val_has_complex_child (const val_value_t *val);
5108 val_add_meta (val_value_t *metaval,
5119 val_find_root (val_value_t *val);
5129 val_set_canonical (val_value_t *val);
5140 val_get_leafref_typdef (val_value_t *val);
5163 val_ascendant_compare (val_value_t *val1,
5173extern const xmlChar *
5174 val_get_dname (const val_value_t *val);
5187 val_set_dname (val_value_t *val,
5188 const xmlChar *dname);
5202 val_set_dname2 (val_value_t *val,
5203 const xmlChar *dname,
5215 val_new_extra (val_value_t *val);
5224extern const xmlChar *
5225 val_get_varexpr (const val_value_t *val);
5236 val_set_varexpr (val_value_t *val,
5237 const xmlChar *varexpr);
5246 val_clear_varexpr (val_value_t *val);
5255 val_set_wildcard_string (val_value_t *val);
5264#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5275 val_copy_editvars (const val_value_t *val,
5288 val_set_skip_sil_partial (val_value_t *val);
5298 val_get_skip_sil_partial (const val_value_t *val);
5312 val_get_leafref_typdef_ex (val_value_t *val,
5313 boolean union_check);
5329 val_is_default_npcon (val_value_t *val);
5340 val_identity_ok (typ_def_t *typdef,
5341 ncx_identity_t *ident);
5359 val_highest_bit_set (const val_value_t *val,
5378 val_first_bit_set (const val_value_t *val,
5379 const ncx_lmem_t **lmem,
5398 val_next_bit_set (const val_value_t *val,
5399 const ncx_lmem_t *lmem,
5400 const ncx_lmem_t **nextlmem,
5409extern struct xpath_aio_cb_t_ *
5410 val_get_aiocb (const val_value_t *val);
5421 val_set_aiocb (val_value_t *val,
5422 struct xpath_aio_cb_t_ *aiocb);
5434extern ncx_sm_mpid_t *
5435 val_get_mpid (const val_value_t *val);
5447 val_set_mpid (val_value_t *val,
5448 struct ncx_sm_mpid_t_ *mpid);
5462 val_set_deleted_from_commit_deletes (val_value_t *val,
5479 val_get_deleted_from_commit_deletes (const val_value_t *val);
5486} /* 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.