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);
3279 val_compare_max (const val_value_t *val1,
3280 const val_value_t *val2,
3323 val_compare_max_def (const val_value_t *val1,
3324 const val_value_t *val2,
3328 boolean ignore_defaults);
3355 val_compare_ex (const val_value_t *val1,
3356 const val_value_t *val2,
3357 boolean configonly);
3381 val_compare (const val_value_t *val1,
3382 const val_value_t *val2);
3405 val_compare_to_string (const val_value_t *val1,
3406 const xmlChar *strval2,
3432 val_compare_to_string_len (const val_value_t *val1,
3433 const xmlChar *strval2,
3445// val_compare_for_replace (const val_value_t *val1,
3446// const val_value_t *val2);
3468 val_compare_for_edit (const val_value_t *val1,
3469 const val_value_t *val2,
3492 val_compare_as_string (const val_value_t *val1,
3493 const val_value_t *val2,
3516 val_sprintf_simval_nc (xmlChar *buff,
3517 const val_value_t *val,
3541 val_sprintf_simval_nc_ex (xmlChar *buff,
3542 const val_value_t *val,
3572 val_sprintf_simval_xpath (xmlChar *buff,
3573 const val_value_t *val,
3592 val_make_sprintf_string (const val_value_t *val);
3608 val_resolve_scoped_name (val_value_t *val,
3609 const xmlChar *name,
3610 val_value_t **chval);
3620 val_get_iqualval (const val_value_t *val);
3642 val_duplicates_allowed (val_value_t *val);
3653 val_has_content (const val_value_t *val);
3665 val_has_content_ex (const val_value_t *val);
3676 val_has_index (const val_value_t *val);
3686 val_get_first_index (const val_value_t *val);
3696 val_get_next_index (const val_index_t *valindex);
3706 val_get_index_count (const val_value_t *val);
3721 val_parse_meta (ses_cb_t *scb,
3724 val_value_t *retval);
3734 val_set_extern (val_value_t *val,
3746 val_set_intern (val_value_t *val,
3769 val_fit_oneline (const val_value_t *val,
3783 val_create_allowed (const val_value_t *val);
3795 val_delete_allowed (const val_value_t *val);
3806 val_is_config_data (const val_value_t *val);
3818 val_is_config_save (const val_value_t *val);
3831 val_is_virtual (const val_value_t *val);
3864 val_get_virtual_value (ses_cb_t *scb,
3889 val_is_default (val_value_t *val);
3902 val_is_real (const val_value_t *val);
3912 val_get_parent_nsid (const val_value_t *val);
3927 val_instance_count (val_value_t *val,
3928 const xmlChar *modname,
3929 const xmlChar *objname);
3947 val_instance_count_fast (val_value_t *val,
3949 const xmlChar *objname,
3950 val_value_t **firstval);
3966 val_instance_count_fast2 (val_value_t *val,
3967 val_value_t *startval);
3986 val_set_extra_instance_errors (val_value_t *val,
3987 const xmlChar *modname,
3988 const xmlChar *objname,
4001 val_need_quotes (const xmlChar *str);
4014 val_has_dquotes (const xmlChar *str);
4025 val_need_dquotes (const xmlChar *str);
4036 val_all_whitespace (const xmlChar *str);
4048 val_any_whitespace (const xmlChar *str,
4061 val_match_metaval (const xml_attr_t *attr,
4063 const xmlChar *name);
4073 val_get_dirty_flag (const val_value_t *val);
4083 val_get_subtree_dirty_flag (const val_value_t *val);
4092 val_set_subtree_dirty_up (val_value_t *val);
4103 val_set_dirty_flag (val_value_t *val,
4113 val_set_child_deleted_flag (val_value_t *val);
4123 val_get_child_deleted_flag (val_value_t *val);
4139 val_clear_dirty_flag (val_value_t *val,
4141 ncx_transaction_id_t txid,
4143 boolean do_clear_default);
4152 val_clear_child_dirty_flag (val_value_t *val);
4162 val_dirty_subtree (const val_value_t *val);
4178 val_clean_tree (val_value_t *val);
4188 val_get_nest_level (val_value_t *val);
4200 val_get_first_leaf (val_value_t *val);
4210extern const xmlChar *
4211 val_get_mod_name (const val_value_t *val);
4221extern const xmlChar *
4222 val_get_mod_prefix (const val_value_t *val);
4232 val_get_nsid (const val_value_t *val);
4242 val_get_yang_sid (const val_value_t *val);
4252 val_change_nsid (val_value_t *val,
4263 val_change_nsid2 (val_value_t *val,
4274 val_change_nsid3 (val_value_t *val,
4290 val_make_from_insertxpcb (val_value_t *sourceval,
4300extern const typ_def_t *
4301 val_get_typdef (const val_value_t *val);
4312 val_set_by_default (const val_value_t *val);
4323 val_has_withdef_default (const val_value_t *val);
4332 val_set_withdef_default (val_value_t *val);
4343 val_is_metaval (const val_value_t *val);
4354 val_move_children (val_value_t *srcval,
4355 val_value_t *destval);
4366 val_move_nonconfig_children (val_value_t *srcval,
4367 val_value_t *destval);
4389 val_cvt_generic (val_value_t *val);
4401 val_set_pcookie (val_value_t *val,
4414 val_set_icookie (val_value_t *val,
4426 val_get_pcookie (val_value_t *val);
4437 val_get_icookie (val_value_t *val);
4448 val_delete_default_leaf (val_value_t *val);
4461 val_delete_default_leaf_list (val_value_t *val);
4470 val_force_empty (val_value_t *val);
4481 val_delete_default_npcon (val_value_t *val);
4493 val_move_fields_for_xml (val_value_t *srcval,
4494 val_value_t *destval,
4506 val_move_metadata (val_value_t *srcval,
4507 val_value_t *destval);
4517 val_get_first_key (val_value_t *val);
4527 val_get_last_key (val_value_t *val);
4537 val_get_next_key (val_index_t *curkey);
4547 val_get_prev_key (val_index_t *curkey);
4557 val_remove_key (val_value_t *keyval);
4567 val_new_deleted_value (void);
4578 val_new_editvars (val_value_t *val);
4589 val_free_editvars (val_value_t *val);
4598 val_free_solo_editvars (val_editvars_t *editvars);
4612 val_all_np_containers (val_value_t *val);
4625 val_sprintf_etag (val_value_t *val,
4637 val_get_last_modified (val_value_t *val);
4646 val_force_default (val_value_t *val);
4657 val_set_all_tags (val_value_t *val,
4659 ncx_transaction_id_t txid);
4668extern const xmlChar *
4669 val_get_owner (val_value_t *val);
4678extern ncx_owner_id_t
4679 val_get_owner_id (val_value_t *val);
4689 val_need_owner_string (val_value_t *val);
4699 val_delete_children (val_value_t *val);
4708 val_clean_value (val_value_t *val);
4720 val_find_bit (val_value_t *val,
4721 const xmlChar *bitname);
4732 val_has_children (const val_value_t *val);
4743 val_add_test_valindex (val_value_t *parentval,
4744 val_value_t *keyval);
4753extern const xmlChar *
4754 val_get_yang_typename (val_value_t *val);
4764 val_set_force_config (val_value_t *val,
4775 val_clear_defvalset_flag (val_value_t *val);
4787 val_clone_valQ (dlq_hdr_t *valQ,
4788 dlq_hdr_t *return_valQ);
4799 val_clean_valQ (dlq_hdr_t *valQ);
4812 val_is_value_set (val_value_t *val);
4823 val_url_encode_string (const xmlChar *str,
4840 val_quote_encode_string (const xmlChar *str,
4855 val_convert_any_to_container (val_value_t *val);
4865 val_clean_index_chain (val_value_t *val);
4876 val_pattern_match (const xmlRegexpPtr pattern,
4877 const xmlChar *strval);
4889 val_ocpattern_match (const regex_t *ocpattern,
4890 const xmlChar *strval);
4903 val_idref_derived_from (ncx_module_t *impmod,
4904 val_value_t *testval,
4905 const xmlChar *qname,
4920 val_set_sil_priority (val_value_t *val,
4931 val_get_sil_priority (val_value_t *val);
4942extern const xmlChar *
4943 val_find_bit_name (val_value_t *val,
4956extern const xmlChar *
4957 val_find_enum_name (val_value_t *val,
4972extern const xmlChar *
4973 val_find_enum_name2 (ncx_btype_t btyp,
4985 val_mark_deleted (val_value_t *val);
4996 val_mark_undeleted (val_value_t *val);
5010 val_has_conditional_value (val_value_t *val);
5024 val_convert_leafref (const val_value_t *val);
5050 val_compare_for_topreplace (const val_value_t *val1,
5051 const val_value_t *val2);
5082 val_compare_for_topreplace_simple (const val_value_t *val1,
5083 const val_value_t *val2);
5094 val_has_complex_child (const val_value_t *val);
5105 val_add_meta (val_value_t *metaval,
5116 val_find_root (val_value_t *val);
5126 val_set_canonical (val_value_t *val);
5137 val_get_leafref_typdef (val_value_t *val);
5160 val_ascendant_compare (val_value_t *val1,
5170extern const xmlChar *
5171 val_get_dname (const val_value_t *val);
5184 val_set_dname (val_value_t *val,
5185 const xmlChar *dname);
5199 val_set_dname2 (val_value_t *val,
5200 const xmlChar *dname,
5212 val_new_extra (val_value_t *val);
5221extern const xmlChar *
5222 val_get_varexpr (const val_value_t *val);
5233 val_set_varexpr (val_value_t *val,
5234 const xmlChar *varexpr);
5243 val_clear_varexpr (val_value_t *val);
5252 val_set_wildcard_string (val_value_t *val);
5261#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5272 val_copy_editvars (const val_value_t *val,
5285 val_set_skip_sil_partial (val_value_t *val);
5295 val_get_skip_sil_partial (const val_value_t *val);
5309 val_get_leafref_typdef_ex (val_value_t *val,
5310 boolean union_check);
5326 val_is_default_npcon (val_value_t *val);
5337 val_identity_ok (typ_def_t *typdef,
5338 ncx_identity_t *ident);
5356 val_highest_bit_set (const val_value_t *val,
5375 val_first_bit_set (const val_value_t *val,
5376 const ncx_lmem_t **lmem,
5395 val_next_bit_set (const val_value_t *val,
5396 const ncx_lmem_t *lmem,
5397 const ncx_lmem_t **nextlmem,
5406extern struct xpath_aio_cb_t_ *
5407 val_get_aiocb (const val_value_t *val);
5418 val_set_aiocb (val_value_t *val,
5419 struct xpath_aio_cb_t_ *aiocb);
5431extern ncx_sm_mpid_t *
5432 val_get_mpid (const val_value_t *val);
5444 val_set_mpid (val_value_t *val,
5445 struct ncx_sm_mpid_t_ *mpid);
5459 val_set_deleted_from_commit_deletes (val_value_t *val,
5476 val_get_deleted_from_commit_deletes (const val_value_t *val);
5483} /* 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.