yumapro  25.10-2
YumaPro SDK
Loading...
Searching...
No Matches
val.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2025, YumaWorks, Inc., All Rights Reserved.
4 *
5 * Unless required by applicable law or agreed to in writing,
6 * software distributed under the License is distributed on an
7 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 * KIND, either express or implied. See the License for the
9 * specific language governing permissions and limitations
10 * under the License.
11 */
12#ifndef _H_val
13#define _H_val
14
15/* FILE: val.h
16*********************************************************************
17* *
18* P U R P O S E *
19* *
20*********************************************************************/
21
30/*********************************************************************
31* *
32* C H A N G E H I S T O R Y *
33* *
34*********************************************************************
35
36date init comment
37----------------------------------------------------------------------
3819-dec-05 abb Begun
3921jul08 abb start obj-based rewrite
40
41*/
42
43#include <xmlstring.h>
44#include <time.h>
45
46#include "dlq.h"
47#include "ncxconst.h"
48#include "ncxtypes.h"
49#include "op.h"
50#include "plock_cb.h"
51#include "status.h"
52#include "typ.h"
53#include "xml_util.h"
54#include "xmlns.h"
55#include "log.h"
56
57#ifndef _H_ses
58#include "ses.h"
59#endif
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65/********************************************************************
66* *
67* C O N S T A N T S *
68* *
69*********************************************************************/
70
71
72// Header only
73
146#define VAL_MAX_PLOCKS 1 // was 4
147
149#define VAL_MAX_DATARULES 1 // was 4
150
152#define VAL_MAX_NUMLEN NCX_MAX_NUMLEN
153
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 '/'
168
169#define VAL_XPATH_INDEX_SEPSTR (const xmlChar *)"]["
170#define VAL_XPATH_INDEX_SEPLEN 2
171
173#define VAL_PASSWORD_STRING (const xmlChar *)"****"
174
178#define VAL_FL_DUPDONE bit0
179
181#define VAL_FL_DUPOK bit1
182
184#define VAL_FL_DEFSET bit2
185
187#define VAL_FL_META bit3
188
190#define VAL_FL_DIRTY bit4
191
193#define VAL_FL_UNIDONE bit5
194
196#define VAL_FL_DEFVALSET bit6
197
201#define VAL_FL_DEFVAL bit7
202
206#define VAL_FL_WITHDEF bit8
207
209#define VAL_FL_DELETED bit9
210
214#define VAL_FL_SUBTREE_DIRTY bit10
215
221#define VAL_FL_CHILD_DELETED bit11
222
229#define VAL_FL_IS_VAREXPR bit12
230
234#define VAL_FL_FIXED_VALUE bit13
235
239#define VAL_FL_EDIT2_MERGE bit14
240
242#define VAL_FL_EXTERNAL bit15
243
248#define VAL_FL_FORCE_CONFIG bit16
249
254#define VAL_FL_FORCE_CONFIG_VALUE bit17
255
260#define VAL_FL_VALUE_SET bit18
261
266#define VAL_FL_TEMP_XPATH bit19
267
271#define VAL_FL_UNCMTD_DELETE bit20
272
276#define VAL_FL_RECREATED bit21
277
283#define VAL_FL_SUBTREE_RECREATED bit22
284
289#define VAL_FL_FROM_TEMPLATE bit23
290
293#define VAL_FL_CANONICAL bit24
294
298#define VAL_FL_IS_INDEX bit25
299
304#define VAL_FL_WILDCARD bit26
305
309#define VAL_FL_ANYXML_KEY bit27
310
314#define VAL_FL_ANYXML_CONFIG bit28
315
321#define VAL_FL_ANYXML_UNKNOWN bit29
322
324#define VAL_FL_DEFCON_DELETED bit30
325
326
334#define VAL_FL_ADDEDIT_DELETED bit31
335
336
337/********* val_child_hdr->flags fields ***************/
338
339
347#define VAL_FL_GENERIC bit0
348
350#define VAL_FL_ROOT bit1
351
353#define VAL_FL_USE_QUE bit2
354
356#define VAL_FL_USE_TREE bit3
357
359#define VAL_FL_HDR_DIRTY bit4
360
362#define VAL_FL_HDR_SUBTREE_DIRTY bit5
363
367#define VAL_FL_HDR_RECREATED bit6
368
372#define VAL_FL_HDR_NOT_INSERTED bit7
373
374
376#define VAL_VIRTUAL_CACHE_TIME 3
377
378
380#define VAL_MIN_REGEX_LEN 5
381
383#define VAL_REGEX_END_CHAR ')'
384
386#define VAL_REGEX_R1 (const xmlChar *)"r1("
387
389#define VAL_REGEX_R2 (const xmlChar *)"r2("
390
392#define VAL_REGEX_R_LEN 3
393
394
395/* macros to access simple value types */
396
398#define VAL_OBJ(V) (V)->obj
399
401#define VAL_OBJTYPE(V) (V)->obj->objtype
402
404#define VAL_TYPE(V) (V)->btyp
405
407#define VAL_HDR(V) (V)->hdr
408
410#define VAL_TYPDEF(V) (V)->typdef
411
413#define VAL_NSID(V) (V)->nsid
414
416#define VAL_NAME(V) (V)->name
417
419#define VAL_RES(V) (V)->res
420
422#define VAL_BOOL(V) (V)->v.boo
423
425#define VAL_EMPTY(V) (V)->v.boo
426
428#define VAL_DOUBLE(V) (V)->v.num.d
429
431#define VAL_STRING(V) (V)->v.str
432
437#define VAL_BINARY(V) (V)->v.binary.ustr
438
440#define VAL_BINARY_LEN(V) (V)->v.binary.ustrlen
441
443#define VAL_EXTERN_BINARY(V) (V)->extern_binary
444
446#define VAL_ENU(V) (&(V)->v.enu)
447
449#define VAL_ENUM(V) (V)->v.enu.val
450
454#define VAL_ENUM_NAME(V) (V)->v.enu.name
455
457#define VAL_FLAG(V) (V)->v.boo
458
460#define VAL_NUMPTR(V) (&(V)->v.num)
461
463#define VAL_NUM(V) (V)->v.num
464
466#define VAL_LONG(V) (V)->v.num.l
467
469#define VAL_INT(V) (V)->v.num.i
470
472#define VAL_INT8(V) ((int8)((V)->v.num.i))
473
475#define VAL_L_INT8(V) (V)->v.num.i
476
478#define VAL_INT16(V) ((int16)((V)->v.num.i))
479
481#define VAL_L_INT16(V) (V)->v.num.i
482
484#define VAL_INT32(V) (V)->v.num.i
485
487#define VAL_INT64(V) (V)->v.num.l
488
490#define VAL_STR(V) (V)->v.str
491
493#define VAL_INSTANCE_ID(V) (V)->v.str
494
496#define VAL_IDREF(V) (&(V)->v.idref)
497
499#define VAL_IDREF_NSID(V) (V)->v.idref.nsid
500
502#define VAL_IDREF_NAME(V) (V)->v.idref.name
503
505#define VAL_IDREF_IDENTITY(V) (V)->v.idref.identity
506
508#define VAL_UINT(V) (V)->v.num.u
509
511#define VAL_UINT8(V) ((uint8)((V)->v.num.u))
512
514#define VAL_L_UINT8(V) (V)->v.num.u
515
517#define VAL_UINT16(V) ((uint16)((V)->v.num.u))
518
520#define VAL_L_UINT16(V) (V)->v.num.u
521
523#define VAL_UINT32(V) (V)->v.num.u
524
526#define VAL_L_UINT32(V) (V)->v.num.u
527
529#define VAL_UINT64(V) (V)->v.num.ul
530
532#define VAL_ULONG(V) (V)->v.num.ul
533
537#define VAL_DEC64(V) (V)->v.num.dec.val
538
542#define VAL_DEC64_DIGITS(V) (V)->v.num.dec.digits
543
547#define VAL_DEC64_ZEROES(V) (V)->v.num.dec.zeroes
548
550#define VAL_LIST(V) (V)->v.list
551
553#define VAL_BITS VAL_LIST
554
555
557#define VAL_INTERN(V) (V)->v.intbuff
558
559
561#define VAL_EXTERN(V) (V)->v.fname
562
563
565#define VAL_IS_DELETED(V) ((V)->flags & VAL_FL_DELETED)
566
568#define VAL_CLR_DELETED(V) (V)->flags &= ~VAL_FL_DELETED
569
571#define VAL_MARK_DELETED(V) val_mark_deleted(V)
572
574#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
575
577#define VAL_LAST_MODIFIED(V) (V)->last_modified
578
580#define VAL_ETAG(V) (V)->etag
581
583#define VAL_BTYPE(V) (V)->btyp
584
586#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
587
589#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
590
592#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
593
595#define VAL_VAREXPR(V) val_get_varexpr(V)
596
600#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
601
603#define VAL_REMOVE_META(M) dlq_remove(M)
604
608#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
609
613#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
614
618#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
619
621#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
622
624#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
625
627#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
628
632#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
633
635#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
636
638#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
639
641#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
642
644#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
645
647#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
648
650#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
651
653#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
654
656#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
657
659#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
660
662#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
663
665#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
666
668#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
669
671#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
672
674#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
675
677#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
678
680#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
681
683#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
684
686#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
687
689#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
690
692#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
693
695#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
696
698#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
699
701#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
702
704#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
705
707#define VAL_CHILD_HDR_OBJ(H) (H)->obj
708
710#define VAL_CHILD_HDR_COUNT(H) (H)->count
711
713#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
714
716#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
717
719#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
720
721
726#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
727
729#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
730
732#define VAL_CLR_ADDEDIT_DELETED(V) (V)->flags &= ~VAL_FL_ADDEDIT_DELETED
733
734
739#define VAL_EDITOP(V) (V)->editop
740
741#define VAL_EXTERN_VALONLY(V) (V)->extern_valonly
742
746#define VAL_SET_DEFSET(V) (V)->flags |= VAL_FL_DEFSET
747
748
752#define VAL_CLR_DEFSET(V) (V)->flags &= ~VAL_FL_DEFSET
753
754/* Value node is from anydata that was replaced by datapath */
755#define VAL_FROM_ANYDATA(V) (V)->from_anydata
756
758#define VAL_EXTRA(V) (V)->val_extra
759
760
762#define VAL_IS_FORCE_CONFIG(V) ((V)->flags & VAL_FL_FORCE_CONFIG)
763
764#define VAL_SET_FORCE_CONFIG(V) (V)->flags |= VAL_FL_FORCE_CONFIG
765
769#define VAL_SET_HDR_RECREATED(V) (V)->flags |= VAL_FL_HDR_RECREATED
770
772#define VAL_IS_HDR_RECREATED(V) ((V)->flags & VAL_FL_HDR_RECREATED)
773
774
777/********************************************************************
778* *
779* T Y P E S *
780* *
781*********************************************************************/
782
800typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
801
802
809typedef void (*errfn_t) (const char *fstr, ...);
810
811
818/* pick a log indent function for dump_value */
819typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
820
821
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 */
831} logfns_t;
832
833
835typedef struct val_idref_t_ {
836 xmlns_id_t nsid; /**< namespace ID */
838 xmlChar *name;
839 ncx_identity_t *identity; /**< ID back-ptr if found */
840} YPACK val_idref_t;
841
842
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;
850
851
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;
860
861
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;
882
883
885typedef struct val_extra_t_ {
886
892 xmlChar *dname; /**< malloced name if needed */
893
900 void *getcb;
901
906 struct val_value_t_ *virtualval;
907
909 time_t cachetime;
910
915 struct xpath_pcb_t_ *xpathpcb;
916
917
921 plock_cb_t *plock[VAL_MAX_PLOCKS];
922
923
927 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
928
934 xmlChar *varexpr;
935
940 struct xpath_aio_cb_t_ *aiocb;
941
943 ncx_sm_mpid_t *mpid;
944
947 struct val_value_t_ *leafrefval;
948
953 typ_pattern_t *regex_filter;
954
955} YPACK val_extra_t;
956
957
962typedef struct val_value_t_ {
964 dlq_hdr_t qhdr;
965
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
972 */
973
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 */
976
978 val_extra_t *val_extra;
979
980 uint32 flags; /**< internal status flags */
981
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 */
985
989 time_t last_modified;
990 ncx_etag_t etag; /**< ETag for RESTCONF */
991
1005 dlq_hdr_t *metaQ; /**< Q of val_value_t */
1006
1010 val_editvars_t *editvars; /**< edit-vars from attrs */
1011 op_editop_t editop; /**< needed for all edits */
1012 status_t res; /**< validation result */
1013
1014 /* GET1 getcb moved to val_extra */
1015 /* GET1 virtualval moved to val_extra */
1016 /* GET1 cachetime moved to val_extra */
1017
1019 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
1020
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
1026 *
1027 * replaced by val_get_casobj() function in val_util.h
1028 * struct obj_template_t_ *casobj;
1029 */
1030
1031 /* xpathpcb moved to val_extra_t */
1032
1033 /* back-ptr to the partial locks that are held
1034 * against this node
1035 * plock moved to val_extra
1036 */
1037
1038 /* back-ptr to the data access control rules that
1039 * reference this node
1040 * dataruleQ moved to val_extra
1041 */
1042
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
1048 */
1049
1053 ncx_owner_id_t owner_id;
1054
1056 ncx_nmda_origin_t nmda_origin;
1057
1059 boolean extern_valonly;
1060
1062 boolean extern_binary;
1063
1071 boolean from_anydata;
1072
1082 union v_ {
1092 dlq_hdr_t child_hdrQ;
1093
1103 ncx_num_t num;
1104
1111 ncx_str_t str;
1112
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 */
1120 } YPACK v;
1121} YPACK val_value_t;
1122
1123
1127typedef struct val_child_hdr_t_ {
1128 dlq_hdr_t qhdr; /**< queue header */
1129
1135 struct obj_template_t_ *obj;
1136
1140 struct val_tree_t_ *tree;
1141
1146 dlq_hdr_t que;
1147
1149 uint32 count;
1150
1152 uint8 flags;
1153} YPACK val_child_hdr_t;
1154
1155
1166typedef struct val_index_t_ {
1167 dlq_hdr_t qhdr; /**< queue header */
1168 val_value_t *val; /**< points to a child node */
1169} YPACK val_index_t;
1170
1171
1180typedef boolean
1181 (*val_test_fn_t) (const val_value_t *val);
1182
1183
1193typedef boolean
1194 (*val_walker_fn_t) (val_value_t *val,
1195 void *cookie1,
1196 void *cookie2);
1197
1198
1199
1209typedef boolean
1210 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1211 void *cookie1,
1212 void *cookie2);
1213
1214
1215
1225typedef boolean
1226 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1227 void *cookie);
1228
1229
1239typedef boolean
1240 (*val_test2_fn_t) (val_value_t *val,
1241 void *cookie);
1242
1243
1247/********************************************************************
1248* *
1249* F U N C T I O N S *
1250* *
1251*********************************************************************/
1252
1270extern val_value_t *
1271 val_new_value (void);
1272
1273
1282extern void
1283 val_init_value (val_value_t *val);
1284
1285
1296extern void
1297 val_init_complex (val_value_t *val,
1298 ncx_btype_t btyp);
1299
1300
1310extern void
1311 val_init_virtual (val_value_t *val,
1312 void *cbfn,
1313 struct obj_template_t_ *obj);
1314
1315
1325extern void
1326 val_init_from_template (val_value_t *val,
1327 struct obj_template_t_ *obj);
1328
1329
1339extern void
1340 val_reinit_from_template (val_value_t *val,
1341 struct obj_template_t_ *obj);
1342
1343
1353extern void
1354 val_free_value (val_value_t *val);
1355
1356
1364extern void
1365 val_set_name (val_value_t *val,
1366 const xmlChar *name,
1367 uint32 namelen);
1368
1369
1379extern status_t
1380 val_force_dname (val_value_t *val);
1381
1382
1391extern void
1392 val_set_qname (val_value_t *val,
1393 xmlns_id_t nsid,
1394 const xmlChar *name,
1395 uint32 namelen);
1396
1397
1407extern status_t
1408 val_string_ok (typ_def_t *typdef,
1409 ncx_btype_t btyp,
1410 const xmlChar *strval);
1411
1412
1427extern status_t
1428 val_string_ok_errinfo (typ_def_t *typdef,
1429 ncx_btype_t btyp,
1430 const xmlChar *strval,
1431 ncx_errinfo_t **errinfo);
1432
1433
1449status_t
1450 val_binary_ok_errinfo (typ_def_t *typdef,
1451 const xmlChar *strval,
1452 val_value_t *val,
1453 ncx_errinfo_t **errinfo);
1454
1455
1473extern status_t
1474 val_string_ok_ex (ses_cb_t *scb,
1475 typ_def_t *typdef,
1476 ncx_btype_t btyp,
1477 const xmlChar *strval,
1478 ncx_errinfo_t **errinfo,
1479 boolean logerrors);
1480
1481
1500extern status_t
1501 val_string_ok_ex2 (ses_cb_t *scb,
1502 typ_def_t *typdef,
1503 ncx_btype_t btyp,
1504 const xmlChar *strval,
1505 ncx_errinfo_t **errinfo,
1506 boolean logerrors,
1507 boolean is_defval);
1508
1509
1530extern status_t
1531 val_list_ok (typ_def_t *typdef,
1532 ncx_btype_t btyp,
1533 ncx_list_t *list);
1534
1535
1553extern status_t
1554 val_list_ok_errinfo (typ_def_t *typdef,
1555 ncx_btype_t btyp,
1556 ncx_list_t *list,
1557 ncx_errinfo_t **errinfo);
1558
1559
1572extern status_t
1573 val_enum_ok (typ_def_t *typdef,
1574 const xmlChar *enumval,
1575 int32 *retval,
1576 const xmlChar **retstr);
1577
1578
1588extern status_t
1589 val_bit_ok (typ_def_t *typdef,
1590 const xmlChar *bitname,
1591 uint32 *position);
1592
1593
1594
1595
1605extern status_t
1606 val_bitpos_ok (typ_def_t *typdef,
1607 uint32 position,
1608 const xmlChar **name);
1609
1610
1629extern status_t
1630 val_idref_ok (typ_def_t *typdef,
1631 const xmlChar *qname,
1632 xmlns_id_t nsid,
1633 const xmlChar **name,
1634 ncx_identity_t **id);
1635
1636
1661extern status_t
1662 val_idref_ok_ex (typ_def_t *typdef,
1663 const xmlChar *qname,
1664 xmlns_id_t nsid,
1665 boolean is_json,
1666 ncx_module_t *impmod,
1667 boolean or_self,
1668 const xmlChar **name,
1669 ncx_identity_t **id);
1670
1671
1688extern status_t
1689 val_parse_idref (ncx_module_t *mod,
1690 const xmlChar *qname,
1691 xmlns_id_t *nsid,
1692 const xmlChar **name,
1693 ncx_identity_t **id);
1694
1695
1713extern status_t
1714 val_parse_idref_rootcb (ncx_module_t *mod,
1715 const xmlChar *qname,
1716 xmlns_id_t *nsid,
1717 const xmlChar **name,
1718 ncx_identity_t **id,
1719 ncx_sm_rootcb_t *rootcb);
1720
1721
1731extern status_t
1732 val_range_ok (typ_def_t *typdef,
1733 ncx_btype_t btyp,
1734 const ncx_num_t *num);
1735
1736
1748extern status_t
1749 val_range_ok_errinfo (typ_def_t *typdef,
1750 ncx_btype_t btyp,
1751 const ncx_num_t *num,
1752 ncx_errinfo_t **errinfo);
1753
1754
1762extern status_t
1763 val_pattern_ok (typ_def_t *typdef,
1764 const xmlChar *strval);
1765
1766
1779extern status_t
1780 val_pattern_ok_errinfo (typ_def_t *typdef,
1781 const xmlChar *strval,
1782 ncx_errinfo_t **errinfo);
1783
1784
1794extern status_t
1795 val_simval_ok (typ_def_t *typdef,
1796 const xmlChar *simval);
1797
1798
1799
1811extern status_t
1812 val_simval_ok_errinfo (typ_def_t *typdef,
1813 const xmlChar *simval,
1814 ncx_errinfo_t **errinfo);
1815
1816
1830extern status_t
1831 val_simval_ok_ex (typ_def_t *typdef,
1832 const xmlChar *simval,
1833 ncx_errinfo_t **errinfo,
1834 ncx_module_t *mod);
1835
1836
1852extern status_t
1853 val_simval_ok_max (typ_def_t *typdef,
1854 const xmlChar *simval,
1855 ncx_errinfo_t **errinfo,
1856 ncx_module_t *mod,
1857 boolean logerrors);
1858
1877extern status_t
1878 val_simval_ok_max2 (typ_def_t *typdef,
1879 const xmlChar *simval,
1880 ncx_errinfo_t **errinfo,
1881 ncx_module_t *mod,
1882 boolean logerrors,
1883 boolean nocond);
1884
1885
1905status_t
1906 val_simval_ok_max3 (typ_def_t *typdef,
1907 const xmlChar *simval,
1908 ncx_errinfo_t **errinfo,
1909 ncx_module_t *mod,
1910 boolean logerrors,
1911 boolean nocond,
1912 boolean is_defval);
1913
1914
1926extern status_t
1927 val_union_ok (typ_def_t *typdef,
1928 const xmlChar *strval,
1929 val_value_t *retval);
1930
1931
1945extern status_t
1946 val_union_ok_errinfo (typ_def_t *typdef,
1947 const xmlChar *strval,
1948 val_value_t *retval,
1949 ncx_errinfo_t **errinfo);
1950
1951
1969extern status_t
1970 val_union_ok_ex (typ_def_t *typdef,
1971 const xmlChar *strval,
1972 val_value_t *retval,
1973 ncx_errinfo_t **errinfo,
1974 ncx_module_t *mod,
1975 typ_def_t **match_typdef);
1976
1977
1998extern status_t
1999 val_union_ok_binary (typ_def_t *typdef,
2000 const xmlChar *binstr,
2001 uint32 binstrlen,
2002 val_value_t *retval,
2003 ncx_errinfo_t **errinfo,
2004 typ_def_t **match_typdef);
2005
2006
2026extern status_t
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);
2033
2034
2041extern dlq_hdr_t *
2042 val_get_metaQ (val_value_t *val);
2043
2044
2052extern val_value_t *
2053 val_get_first_meta (dlq_hdr_t *queue);
2054
2055
2063extern val_value_t *
2064 val_get_first_meta_val (val_value_t *val);
2065
2066
2074extern val_value_t *
2075 val_get_next_meta (val_value_t *curnode);
2076
2077
2085extern boolean
2086 val_meta_empty (val_value_t *val);
2087
2088
2097extern val_value_t *
2098 val_find_meta (val_value_t *val,
2099 xmlns_id_t nsid,
2100 const xmlChar *name);
2101
2102
2112extern boolean
2113 val_meta_match (val_value_t *val,
2114 val_value_t *metaval);
2115
2116
2125extern uint32
2126 val_metadata_inst_count (val_value_t *val,
2127 xmlns_id_t nsid,
2128 const xmlChar *name);
2129
2130
2141extern void
2142 val_dump_value (val_value_t *val,
2143 int32 startindent,
2144 log_debug_t lvl);
2145
2146
2147
2158extern void
2159 val_dump_value_config (val_value_t *val,
2160 int32 startindent,
2161 log_debug_t lvl);
2162
2163
2175extern void
2176 val_dump_value_ex (val_value_t *val,
2177 int32 startindent,
2178 ncx_display_mode_t display_mode,
2179 log_debug_t lvl);
2180
2181
2192extern void
2193 val_dump_alt_value (val_value_t *val,
2194 int32 startindent,
2195 log_debug_t lvl);
2196
2197
2207extern void
2208 val_stdout_value (val_value_t *val,
2209 int32 startindent,
2210 log_debug_t lvl);
2211
2212
2223extern void
2224 val_stdout_value_ex (val_value_t *val,
2225 int32 startindent,
2226 ncx_display_mode_t display_mode,
2227 log_debug_t lvl);
2228
2229
2247extern void
2248 val_dump_value_max (val_value_t *val,
2249 int32 startindent,
2250 int32 indent_amount,
2251 val_dumpvalue_mode_t dumpmode,
2252 ncx_display_mode_t display_mode,
2253 boolean with_meta,
2254 boolean configonly,
2255 log_debug_t lvl);
2256
2257
2275extern void
2276 val_dump_value_nonconfig (val_value_t *val,
2277 int32 startindent,
2278 int32 indent_amount,
2279 val_dumpvalue_mode_t dumpmode,
2280 ncx_display_mode_t display_mode,
2281 boolean with_meta,
2282 log_debug_t lvl);
2283
2284
2306extern void
2307 val_dump_value_full (val_value_t *val,
2308 int32 startindent,
2309 int32 indent_amount,
2310 val_dumpvalue_mode_t dumpmode,
2311 ncx_display_mode_t display_mode,
2312 boolean with_meta,
2313 boolean configonly,
2314 boolean conf_mode,
2315 boolean expand_varexpr,
2316 log_debug_t lvl,
2317 logfns_t *overrideOutput);
2318
2319
2342extern void
2343 val_dump_value_full2 (val_value_t *val,
2344 int32 startindent,
2345 int32 indent_amount,
2346 val_dumpvalue_mode_t dumpmode,
2347 ncx_display_mode_t display_mode,
2348 boolean with_meta,
2349 boolean configonly,
2350 boolean conf_mode,
2351 boolean expand_varexpr,
2352 boolean withdef,
2353 log_debug_t lvl,
2354 logfns_t *overrideOutput);
2355
2356
2369extern status_t
2370 val_set_string (val_value_t *val,
2371 const xmlChar *valname,
2372 const xmlChar *valstr);
2373
2374
2390extern status_t
2391 val_set_string2 (val_value_t *val,
2392 const xmlChar *valname,
2393 typ_def_t *typdef,
2394 const xmlChar *valstr,
2395 uint32 valstrlen);
2396
2397
2418extern status_t
2419 val_set_string3 (val_value_t *val,
2420 const xmlChar *valname,
2421 typ_def_t *typdef,
2422 const xmlChar *valstr,
2423 uint32 valstrlen,
2424 boolean is_dblquote);
2425
2426
2442extern status_t
2443 val_set_binary (const xmlChar *valstr,
2444 uint32 valstrlen,
2445 val_value_t *val);
2446
2447
2448
2458extern status_t
2459 val_reset_empty (val_value_t *val);
2460
2461
2474extern status_t
2475 val_set_simval (val_value_t *val,
2476 typ_def_t *typdef,
2477 xmlns_id_t nsid,
2478 const xmlChar *valname,
2479 const xmlChar *valstr);
2480
2481
2524extern status_t
2525 val_set_simval_str (val_value_t *val,
2526 typ_def_t *typdef,
2527 xmlns_id_t nsid,
2528 const xmlChar *valname,
2529 uint32 valnamelen,
2530 const xmlChar *valstr);
2531
2532
2553extern status_t
2554 val_set_simval_binary (val_value_t *val,
2555 const xmlChar *binstr,
2556 uint32 binstrlen);
2557
2558
2602extern status_t
2603 val_set_simval_max (val_value_t *val,
2604 typ_def_t *typdef,
2605 xmlns_id_t nsid,
2606 const xmlChar *valname,
2607 uint32 valnamelen,
2608 const xmlChar *valstr,
2609 uint32 valstrlen);
2610
2611
2625extern val_value_t *
2626 val_make_simval (typ_def_t *typdef,
2627 xmlns_id_t nsid,
2628 const xmlChar *valname,
2629 const xmlChar *valstr,
2630 status_t *res);
2631
2632
2646extern val_value_t *
2647 val_make_string (xmlns_id_t nsid,
2648 const xmlChar *valname,
2649 const xmlChar *valstr);
2650
2651
2662extern val_value_t *
2663 val_make_binary (xmlns_id_t nsid,
2664 const xmlChar *valname,
2665 const xmlChar *valstr,
2666 uint32 valstrlen);
2667
2668
2680extern status_t
2681 val_merge (const val_value_t *src,
2682 val_value_t *dest);
2683
2684
2691extern val_value_t *
2692 val_clone (const val_value_t *val);
2693
2694
2702extern val_value_t *
2703 val_clone2 (const val_value_t *val);
2704
2705
2719extern val_value_t *
2720 val_clone_config_data (const val_value_t *val,
2721 status_t *res);
2722
2723
2724
2741extern val_value_t *
2742 val_clone_config_newval (const val_value_t *val,
2743 status_t *res);
2744
2765extern val_value_t *
2766 val_clone_config_newval_keys_only (const val_value_t *val,
2767 status_t *res);
2768
2769
2789extern val_value_t *
2790 val_clone_config_save (const val_value_t *val,
2791 status_t *res);
2792
2793
2815extern val_value_t *
2816 val_clone_config_false (const val_value_t *val,
2817 status_t *res);
2818
2819
2830extern status_t
2831 val_replace (val_value_t *val,
2832 val_value_t *copy);
2833
2834
2844extern status_t
2845 val_replace_str (const xmlChar *str,
2846 uint32 stringlen,
2847 val_value_t *copy);
2848
2849
2860extern status_t
2861 val_fast_replace_string (const xmlChar *str,
2862 uint32 stringlen,
2863 val_value_t *copy);
2864
2865
2872extern void
2873 val_replace_stringval (val_value_t *val,
2874 const xmlChar *str);
2875
2876
2893extern void
2894 val_add_child (val_value_t *child,
2895 val_value_t *parent);
2896
2897
2909extern void
2910 val_add_child_sorted (val_value_t *child,
2911 val_value_t *parent);
2912
2913
2925extern void
2926 val_insert_child (val_value_t *child,
2927 val_value_t *current,
2928 val_value_t *parent);
2929
2930
2939extern void
2940 val_remove_child (val_value_t *child);
2941
2942
2952extern void
2953 val_swap_child (val_value_t *newchild,
2954 val_value_t *curchild);
2955
2956
2964extern val_value_t *
2965 val_first_child_match (const val_value_t *parent,
2966 const val_value_t *child);
2967
2968
2979extern val_value_t *
2980 val_first_child_match_fast (const val_value_t *parent,
2981 const val_value_t *child,
2982 val_value_t *lastmatch);
2983
2984
2996extern val_value_t *
2997 val_next_child_match (val_value_t *parent,
2998 val_value_t *child,
2999 val_value_t *curmatch);
3000
3001
3008extern val_value_t *
3009 val_next_child_same (val_value_t *curchild);
3010
3011
3018extern val_value_t *
3019 val_get_first_child (const val_value_t *parent);
3020
3021
3028extern val_value_t *
3029 val_get_next_child (const val_value_t *curchild);
3030
3031
3038extern val_value_t *
3039 val_get_first_terminal_child (const val_value_t *parent);
3040
3041
3048extern val_value_t *
3049 val_get_next_terminal_child (const val_value_t *curchild);
3050
3051
3065extern val_value_t *
3066 val_find_child (const val_value_t *parent,
3067 const xmlChar *modname,
3068 const xmlChar *childname);
3069
3070
3084extern val_value_t *
3085 val_find_child_fast (const val_value_t *parent,
3086 xmlns_id_t nsid,
3087 const xmlChar *childname);
3088
3089
3098extern val_value_t *
3099 val_find_child_obj (const val_value_t *parent,
3100 const struct obj_template_t_ *chobj);
3101
3102
3117extern val_value_t *
3118 val_find_child_que (const dlq_hdr_t *childQ,
3119 xmlns_id_t nsid,
3120 const xmlChar *childname);
3121
3122
3136extern val_value_t *
3137 val_match_child (const val_value_t *parent,
3138 const xmlChar *modname,
3139 const xmlChar *childname);
3140
3141
3158extern val_value_t *
3159 val_match_child_count (const val_value_t *parent,
3160 const xmlChar *modname,
3161 const xmlChar *childname,
3162 uint32 *matchcount);
3163
3164
3181extern val_value_t *
3182 val_find_next_child (const val_value_t *parent,
3183 const xmlChar *modname,
3184 const xmlChar *childname,
3185 const val_value_t *curchild);
3186
3187
3201extern val_value_t *
3202 val_find_next_child_fast (const val_value_t *parent,
3203 const val_value_t *curchild);
3204
3205
3214extern val_value_t *
3215 val_first_child_name (val_value_t *parent,
3216 const xmlChar *name);
3217
3218
3227extern val_value_t *
3228 val_first_child_qname (val_value_t *parent,
3229 xmlns_id_t nsid,
3230 const xmlChar *name);
3231
3232
3242extern val_value_t *
3243 val_next_child_qname (val_value_t *parent,
3244 xmlns_id_t nsid,
3245 const xmlChar *name,
3246 val_value_t *curchild);
3247
3248
3266extern val_value_t *
3267 val_first_child_string (val_value_t *parent,
3268 const xmlChar *name,
3269 const xmlChar *strval);
3270
3271
3280extern uint32
3281 val_child_cnt (val_value_t *parent);
3282
3283
3293extern uint32
3294 val_child_inst_cnt (const val_value_t *parent,
3295 const xmlChar *modname,
3296 const xmlChar *name);
3297
3298
3306extern uint32
3307 val_get_child_inst_id (const val_value_t *parent,
3308 const val_value_t *child);
3309
3310
3317extern uint32
3318 val_liststr_count (const val_value_t *val);
3319
3320
3333extern boolean
3334 val_index_match (const val_value_t *val1,
3335 const val_value_t *val2);
3336
3337
3348extern int
3349 val_index_compare (const val_value_t *val1,
3350 const val_value_t *val2);
3351
3352
3384extern int32
3385 val_compare_max (const val_value_t *val1,
3386 const val_value_t *val2,
3387 boolean configonly,
3388 boolean childonly,
3389 boolean editing);
3390
3391
3428extern int32
3429 val_compare_max_def (const val_value_t *val1,
3430 const val_value_t *val2,
3431 boolean configonly,
3432 boolean childonly,
3433 boolean editing,
3434 boolean ignore_defaults);
3435
3436
3460extern int32
3461 val_compare_ex (const val_value_t *val1,
3462 const val_value_t *val2,
3463 boolean configonly);
3464
3465
3486extern int32
3487 val_compare (const val_value_t *val1,
3488 const val_value_t *val2);
3489
3490
3510extern int32
3511 val_compare_to_string (const val_value_t *val1,
3512 const xmlChar *strval2,
3513 status_t *res);
3514
3515
3537extern int32
3538 val_compare_to_string_len (const val_value_t *val1,
3539 const xmlChar *strval2,
3540 uint32 strval2len,
3541 status_t *res);
3542
3543
3550// extern int32
3551// val_compare_for_replace (const val_value_t *val1,
3552// const val_value_t *val2);
3553
3554
3573extern int32
3574 val_compare_for_edit (const val_value_t *val1,
3575 const val_value_t *val2,
3576 boolean ismerge);
3577
3578
3597extern int32
3598 val_compare_as_string (const val_value_t *val1,
3599 const val_value_t *val2,
3600 status_t *res);
3601
3602
3621extern status_t
3622 val_sprintf_simval_nc (xmlChar *buff,
3623 const val_value_t *val,
3624 uint32 *len);
3625
3626
3646extern status_t
3647 val_sprintf_simval_nc_ex (xmlChar *buff,
3648 const val_value_t *val,
3649 boolean url_encode,
3650 uint32 *len);
3651
3652
3653
3654
3677extern status_t
3678 val_sprintf_simval_xpath (xmlChar *buff,
3679 const val_value_t *val,
3680 boolean url_encode,
3681 xmlChar quot_char,
3682 uint32 *len);
3683
3684
3685
3710extern status_t
3711 val_sprintf_binary (xmlChar *buff,
3712 const val_value_t *val,
3713 uint32 maxlen,
3714 uint32 *len);
3715
3716
3729extern xmlChar *
3730 val_make_sprintf_string (const val_value_t *val);
3731
3732
3745extern status_t
3746 val_resolve_scoped_name (val_value_t *val,
3747 const xmlChar *name,
3748 val_value_t **chval);
3749
3750
3757extern ncx_iqual_t
3758 val_get_iqualval (const val_value_t *val);
3759
3760
3779extern boolean
3780 val_duplicates_allowed (val_value_t *val);
3781
3782
3790extern boolean
3791 val_has_content (const val_value_t *val);
3792
3793
3802extern boolean
3803 val_has_content_ex (const val_value_t *val);
3804
3805
3813extern boolean
3814 val_has_index (const val_value_t *val);
3815
3816
3823extern val_index_t *
3824 val_get_first_index (const val_value_t *val);
3825
3826
3833extern val_index_t *
3834 val_get_next_index (const val_index_t *valindex);
3835
3836
3843extern uint32
3844 val_get_index_count (const val_value_t *val);
3845
3846
3858extern status_t
3859 val_parse_meta (ses_cb_t *scb,
3860 typ_def_t *typdef,
3861 xml_attr_t *attr,
3862 val_value_t *retval);
3863
3864
3871extern void
3872 val_set_extern (val_value_t *val,
3873 xmlChar *fname);
3874
3875
3883extern void
3884 val_set_intern (val_value_t *val,
3885 xmlChar *intbuff);
3886
3887
3906extern boolean
3907 val_fit_oneline (const val_value_t *val,
3908 uint32 linesize,
3909 boolean isxml);
3910
3911
3920extern boolean
3921 val_create_allowed (const val_value_t *val);
3922
3923
3932extern boolean
3933 val_delete_allowed (const val_value_t *val);
3934
3935
3943extern boolean
3944 val_is_config_data (const val_value_t *val);
3945
3946
3955extern boolean
3956 val_is_config_save (const val_value_t *val);
3957
3958
3975extern boolean
3976 val_is_config_false (const val_value_t *val);
3977
3978
3988extern boolean
3989 val_is_virtual (const val_value_t *val);
3990
3991
4021extern val_value_t *
4022 val_get_virtual_value (ses_cb_t *scb,
4023 val_value_t *val,
4024 status_t *res);
4025
4026
4046extern boolean
4047 val_is_default (val_value_t *val);
4048
4049
4059extern boolean
4060 val_is_real (const val_value_t *val);
4061
4062
4069extern xmlns_id_t
4070 val_get_parent_nsid (const val_value_t *val);
4071
4072
4084extern uint32
4085 val_instance_count (val_value_t *val,
4086 const xmlChar *modname,
4087 const xmlChar *objname);
4088
4089
4104extern uint32
4105 val_instance_count_fast (val_value_t *val,
4106 xmlns_id_t nsid,
4107 const xmlChar *objname,
4108 val_value_t **firstval);
4109
4110
4123extern uint32
4124 val_instance_count_fast2 (val_value_t *val,
4125 val_value_t *startval);
4126
4127
4143extern void
4144 val_set_extra_instance_errors (val_value_t *val,
4145 const xmlChar *modname,
4146 const xmlChar *objname,
4147 uint32 maxelems);
4148
4149
4158extern boolean
4159 val_need_quotes (const xmlChar *str);
4160
4161
4171extern boolean
4172 val_has_dquotes (const xmlChar *str);
4173
4182extern boolean
4183 val_need_dquotes (const xmlChar *str);
4184
4185
4193extern boolean
4194 val_all_whitespace (const xmlChar *str);
4195
4196
4205extern boolean
4206 val_any_whitespace (const xmlChar *str,
4207 uint32 len);
4208
4209
4218extern boolean
4219 val_match_metaval (const xml_attr_t *attr,
4220 xmlns_id_t nsid,
4221 const xmlChar *name);
4222
4223
4230extern boolean
4231 val_get_dirty_flag (const val_value_t *val);
4232
4233
4240extern boolean
4241 val_get_subtree_dirty_flag (const val_value_t *val);
4242
4243
4249extern void
4250 val_set_subtree_dirty_up (val_value_t *val);
4251
4252
4260extern void
4261 val_set_dirty_flag (val_value_t *val,
4262 boolean clear_def);
4263
4264
4270extern void
4271 val_set_child_deleted_flag (val_value_t *val);
4272
4273
4280extern boolean
4281 val_get_child_deleted_flag (val_value_t *val);
4282
4283
4296extern void
4297 val_clear_dirty_flag (val_value_t *val,
4298 time_t *timestamp,
4299 ncx_transaction_id_t txid,
4300 boolean is_delete,
4301 boolean do_clear_default);
4302
4303
4309extern void
4310 val_clear_child_dirty_flag (val_value_t *val);
4311
4312
4319extern boolean
4320 val_dirty_subtree (const val_value_t *val);
4321
4322
4335extern void
4336 val_clean_tree (val_value_t *val);
4337
4338
4345extern uint32
4346 val_get_nest_level (val_value_t *val);
4347
4348
4357extern val_value_t *
4358 val_get_first_leaf (val_value_t *val);
4359
4360
4368extern const xmlChar *
4369 val_get_mod_name (const val_value_t *val);
4370
4371
4379extern const xmlChar *
4380 val_get_mod_prefix (const val_value_t *val);
4381
4382
4389extern xmlns_id_t
4390 val_get_nsid (const val_value_t *val);
4391
4392
4399extern ncx_sid_t
4400 val_get_yang_sid (const val_value_t *val);
4401
4402
4409extern void
4410 val_change_nsid (val_value_t *val,
4411 xmlns_id_t nsid);
4412
4413
4420extern void
4421 val_change_nsid2 (val_value_t *val,
4422 xmlns_id_t nsid);
4423
4424
4431extern void
4432 val_change_nsid3 (val_value_t *val,
4433 xmlns_id_t nsid);
4434
4435
4447extern val_value_t *
4448 val_make_from_insertxpcb (val_value_t *sourceval,
4449 status_t *res);
4450
4451
4458extern const typ_def_t *
4459 val_get_typdef (const val_value_t *val);
4460
4461
4469extern boolean
4470 val_set_by_default (const val_value_t *val);
4471
4472
4480extern boolean
4481 val_has_withdef_default (const val_value_t *val);
4482
4483
4489extern void
4490 val_set_withdef_default (val_value_t *val);
4491
4492
4500extern boolean
4501 val_is_metaval (const val_value_t *val);
4502
4503
4511extern void
4512 val_move_children (val_value_t *srcval,
4513 val_value_t *destval);
4514
4515
4523extern void
4524 val_move_nonconfig_children (val_value_t *srcval,
4525 val_value_t *destval);
4526
4546extern status_t
4547 val_cvt_generic (val_value_t *val);
4548
4549
4558extern status_t
4559 val_set_pcookie (val_value_t *val,
4560 void *pcookie);
4561
4562
4571extern status_t
4572 val_set_icookie (val_value_t *val,
4573 int icookie);
4574
4575
4583extern void *
4584 val_get_pcookie (val_value_t *val);
4585
4586
4594extern int
4595 val_get_icookie (val_value_t *val);
4596
4597
4605extern status_t
4606 val_delete_default_leaf (val_value_t *val);
4607
4608
4618extern status_t
4619 val_delete_default_leaf_list (val_value_t *val);
4620
4621
4627extern void
4628 val_force_empty (val_value_t *val);
4629
4630
4638extern status_t
4639 val_delete_default_npcon (val_value_t *val);
4640
4641
4650extern void
4651 val_move_fields_for_xml (val_value_t *srcval,
4652 val_value_t *destval,
4653 boolean movemeta);
4654
4655
4663extern void
4664 val_move_metadata (val_value_t *srcval,
4665 val_value_t *destval);
4666
4667
4674extern val_index_t *
4675 val_get_first_key (val_value_t *val);
4676
4677
4684extern val_index_t *
4685 val_get_last_key (val_value_t *val);
4686
4687
4694extern val_index_t *
4695 val_get_next_key (val_index_t *curkey);
4696
4697
4704extern val_index_t *
4705 val_get_prev_key (val_index_t *curkey);
4706
4707
4714extern void
4715 val_remove_key (val_value_t *keyval);
4716
4717
4724extern val_value_t *
4725 val_new_deleted_value (void);
4726
4727
4735extern status_t
4736 val_new_editvars (val_value_t *val);
4737
4738
4746extern void
4747 val_free_editvars (val_value_t *val);
4748
4749
4755extern void
4756 val_free_solo_editvars (val_editvars_t *editvars);
4757
4758
4769extern boolean
4770 val_all_np_containers (val_value_t *val);
4771
4772
4782extern status_t
4783 val_sprintf_etag (val_value_t *val,
4784 xmlChar *buff,
4785 int32 buffsize);
4786
4787
4794extern time_t *
4795 val_get_last_modified (val_value_t *val);
4796
4797
4803extern void
4804 val_force_default (val_value_t *val);
4805
4814extern void
4815 val_set_all_tags (val_value_t *val,
4816 time_t *timestamp,
4817 ncx_transaction_id_t txid);
4818
4819
4826extern const xmlChar *
4827 val_get_owner (val_value_t *val);
4828
4829
4836extern ncx_owner_id_t
4837 val_get_owner_id (val_value_t *val);
4838
4839
4846extern boolean
4847 val_need_owner_string (val_value_t *val);
4848
4849
4856extern void
4857 val_delete_children (val_value_t *val);
4858
4859
4865extern void
4866 val_clean_value (val_value_t *val);
4867
4868
4877extern boolean
4878 val_find_bit (val_value_t *val,
4879 const xmlChar *bitname);
4880
4881
4889extern boolean
4890 val_has_children (const val_value_t *val);
4891
4892
4900extern status_t
4901 val_add_test_valindex (val_value_t *parentval,
4902 val_value_t *keyval);
4903
4904
4911extern const xmlChar *
4912 val_get_yang_typename (val_value_t *val);
4913
4914
4921extern void
4922 val_set_force_config (val_value_t *val,
4923 boolean is_config);
4924
4925
4932extern void
4933 val_clear_defvalset_flag (val_value_t *val);
4934
4935
4944extern status_t
4945 val_clone_valQ (dlq_hdr_t *valQ,
4946 dlq_hdr_t *return_valQ);
4947
4948
4956extern void
4957 val_clean_valQ (dlq_hdr_t *valQ);
4958
4959
4969extern boolean
4970 val_is_value_set (val_value_t *val);
4971
4972
4980extern uint32
4981 val_url_encode_string (const xmlChar *str,
4982 xmlChar *buff);
4983
4984
4985
4997extern status_t
4998 val_quote_encode_string (const xmlChar *str,
4999 xmlChar quot_char,
5000 xmlChar *buff,
5001 uint32 *retlen);
5002
5003
5012extern void
5013 val_convert_any_to_container (val_value_t *val);
5014
5015
5022extern void
5023 val_clean_index_chain (val_value_t *val);
5024
5025
5033extern boolean
5034 val_pattern_match (const xmlRegexpPtr pattern,
5035 const xmlChar *strval);
5036
5037
5046extern boolean
5047 val_ocpattern_match (const regex_t *ocpattern,
5048 const xmlChar *strval);
5049
5050
5060extern boolean
5061 val_idref_derived_from (ncx_module_t *impmod,
5062 val_value_t *testval,
5063 const xmlChar *qname,
5064 boolean or_self);
5065
5066
5077extern status_t
5078 val_set_sil_priority (val_value_t *val,
5079 uint8 silprio);
5080
5081
5088extern uint8
5089 val_get_sil_priority (val_value_t *val);
5090
5091
5100extern const xmlChar *
5101 val_find_bit_name (val_value_t *val,
5102 uint32 bitpos);
5103
5104
5114extern const xmlChar *
5115 val_find_enum_name (val_value_t *val,
5116 int32 enunum);
5117
5118
5130extern const xmlChar *
5131 val_find_enum_name2 (ncx_btype_t btyp,
5132 typ_def_t *typdef,
5133 int32 enunum);
5134
5135
5145extern void
5146 val_mark_deleted (val_value_t *val);
5147
5148
5156extern void
5157 val_mark_undeleted (val_value_t *val);
5158
5159
5170extern boolean
5171 val_has_conditional_value (val_value_t *val);
5172
5173
5184extern val_value_t *
5185 val_convert_leafref (const val_value_t *val);
5186
5187
5198extern val_value_t *
5199 val_convert_leafref_ext (val_value_t *val);
5200
5201
5224extern int32
5225 val_compare_for_topreplace (const val_value_t *val1,
5226 const val_value_t *val2);
5227
5228
5256extern int32
5257 val_compare_for_topreplace_simple (const val_value_t *val1,
5258 const val_value_t *val2);
5259
5260
5268extern boolean
5269 val_has_complex_child (const val_value_t *val);
5270
5271
5279extern status_t
5280 val_add_meta (val_value_t *metaval,
5281 val_value_t *val);
5282
5283
5290extern val_value_t *
5291 val_find_root (val_value_t *val);
5292
5293
5300extern status_t
5301 val_set_canonical (val_value_t *val);
5302
5303
5311extern typ_def_t *
5312 val_get_leafref_typdef (val_value_t *val);
5313
5314
5334extern boolean
5335 val_ascendant_compare (val_value_t *val1,
5336 val_value_t *val2);
5337
5338
5345extern const xmlChar *
5346 val_get_dname (const val_value_t *val);
5347
5348
5358extern status_t
5359 val_set_dname (val_value_t *val,
5360 const xmlChar *dname);
5361
5362
5373extern status_t
5374 val_set_dname2 (val_value_t *val,
5375 const xmlChar *dname,
5376 uint32 dnamelen);
5377
5378
5386extern status_t
5387 val_new_extra (val_value_t *val);
5388
5389
5396extern const xmlChar *
5397 val_get_varexpr (const val_value_t *val);
5398
5399
5407extern status_t
5408 val_set_varexpr (val_value_t *val,
5409 const xmlChar *varexpr);
5410
5411
5417extern void
5418 val_clear_varexpr (val_value_t *val);
5419
5420
5426extern void
5427 val_set_wildcard_string (val_value_t *val);
5428
5429
5436#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5437
5438
5446extern status_t
5447 val_copy_editvars (const val_value_t *val,
5448 val_value_t *copy);
5449
5450
5460extern status_t
5461 val_set_skip_sil_partial (val_value_t *val);
5462
5463
5470extern boolean
5471 val_get_skip_sil_partial (const val_value_t *val);
5472
5473
5484extern typ_def_t *
5485 val_get_leafref_typdef_ex (val_value_t *val,
5486 boolean union_check);
5487
5488
5489
5501extern boolean
5502 val_is_default_npcon (val_value_t *val);
5503
5504
5512extern status_t
5513 val_identity_ok (typ_def_t *typdef,
5514 ncx_identity_t *ident);
5515
5516
5531extern status_t
5532 val_highest_bit_set (const val_value_t *val,
5533 uint32 *count,
5534 uint32 *pos);
5535
5536
5550extern status_t
5551 val_first_bit_set (const val_value_t *val,
5552 const ncx_lmem_t **lmem,
5553 uint32 *pos);
5554
5555
5570extern status_t
5571 val_next_bit_set (const val_value_t *val,
5572 const ncx_lmem_t *lmem,
5573 const ncx_lmem_t **nextlmem,
5574 uint32 *pos);
5575
5582extern struct xpath_aio_cb_t_ *
5583 val_get_aiocb (const val_value_t *val);
5584
5585
5593extern status_t
5594 val_set_aiocb (val_value_t *val,
5595 struct xpath_aio_cb_t_ *aiocb);
5596
5597
5607extern ncx_sm_mpid_t *
5608 val_get_mpid (const val_value_t *val);
5609
5610
5619extern status_t
5620 val_set_mpid (val_value_t *val,
5621 struct ncx_sm_mpid_t_ *mpid);
5622
5623
5638extern status_t
5639 val_set_deleted_from_commit_deletes (val_value_t *val,
5640 boolean deleted);
5641
5642
5656extern boolean
5657 val_get_deleted_from_commit_deletes (const val_value_t *val);
5658
5659
5670extern void
5671 val_clean_leafref_cache (val_value_t *val);
5672
5673
5702extern status_t
5703 val_set_child_leaf (val_value_t *parent,
5704 const xmlChar *modname,
5705 const xmlChar *childname,
5706 const xmlChar *valstr);
5707
5708
5744extern status_t
5745 val_delete_child_leaf (val_value_t *parent,
5746 val_value_t *curparent,
5747 const xmlChar *modname,
5748 const xmlChar *childname);
5749
5760extern boolean
5761 val_is_all_digits (const xmlChar *str);
5762
5763
5778extern status_t
5779 val_cvt_instanceid_filter (val_value_t *val);
5780
5781
5790extern typ_pattern_t *
5791 val_get_regex_filter (val_value_t *val);
5792
5793
5805extern status_t
5806 val_set_regex_filter (val_value_t *val,
5807 typ_pattern_t *regex_filter);
5808
5809
5821extern status_t
5822 val_test_regex_filter (typ_pattern_t *pat,
5823 const xmlChar *strval,
5824 boolean *testres);
5825
5826
5838extern boolean
5839 val_is_regex_filter (const xmlChar *testval,
5840 boolean *is_posix);
5841
5845#ifdef __cplusplus
5846} /* end extern 'C' */
5847#endif
5848
5849#endif /* _H_val */
dlq provides general double-linked list and queue support:
NCX System Logging Manager.
Contains NCX constants.
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.
Parameter Type Handler.
XML Utilities.
XML namespace support.