yumapro  25.10-3
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
175/********* val_value->flags fields ***************/
176
180#define VAL_FL_DUPDONE bit0
181
183#define VAL_FL_DUPOK bit1
184
186#define VAL_FL_DEFSET bit2
187
189#define VAL_FL_META bit3
190
192#define VAL_FL_DIRTY bit4
193
195#define VAL_FL_UNIDONE bit5
196
198#define VAL_FL_DEFVALSET bit6
199
203#define VAL_FL_DEFVAL bit7
204
208#define VAL_FL_WITHDEF bit8
209
211#define VAL_FL_DELETED bit9
212
216#define VAL_FL_SUBTREE_DIRTY bit10
217
223#define VAL_FL_CHILD_DELETED bit11
224
231#define VAL_FL_IS_VAREXPR bit12
232
236#define VAL_FL_FIXED_VALUE bit13
237
241#define VAL_FL_EDIT2_MERGE bit14
242
244#define VAL_FL_EXTERNAL bit15
245
250#define VAL_FL_FORCE_CONFIG bit16
251
256#define VAL_FL_FORCE_CONFIG_VALUE bit17
257
262#define VAL_FL_VALUE_SET bit18
263
268#define VAL_FL_TEMP_XPATH bit19
269
273#define VAL_FL_UNCMTD_DELETE bit20
274
278#define VAL_FL_RECREATED bit21
279
285#define VAL_FL_SUBTREE_RECREATED bit22
286
291#define VAL_FL_FROM_TEMPLATE bit23
292
295#define VAL_FL_CANONICAL bit24
296
300#define VAL_FL_IS_INDEX bit25
301
306#define VAL_FL_WILDCARD bit26
307
311#define VAL_FL_ANYXML_KEY bit27
312
316#define VAL_FL_ANYXML_CONFIG bit28
317
323#define VAL_FL_ANYXML_UNKNOWN bit29
324
326#define VAL_FL_DEFCON_DELETED bit30
327
328
336#define VAL_FL_ADDEDIT_DELETED bit31
337
338/********* val_value->flags2 fields ***************/
339
344#define VAL_FL_EXTERN_VALONLY bit0
345
349#define VAL_FL_EXTERN_BINARY bit1
350
351
360#define VAL_FL_FROM_ANYDATA bit2
361
362
363
364/********* val_child_hdr->flags fields ***************/
365
366
374#define VAL_FL_GENERIC bit0
375
377#define VAL_FL_ROOT bit1
378
380#define VAL_FL_USE_QUE bit2
381
383#define VAL_FL_USE_TREE bit3
384
386#define VAL_FL_HDR_DIRTY bit4
387
389#define VAL_FL_HDR_SUBTREE_DIRTY bit5
390
394#define VAL_FL_HDR_RECREATED bit6
395
399#define VAL_FL_HDR_NOT_INSERTED bit7
400
401
403#define VAL_VIRTUAL_CACHE_TIME 3
404
405
407#define VAL_MIN_REGEX_LEN 5
408
410#define VAL_REGEX_END_CHAR ')'
411
413#define VAL_REGEX_R1 (const xmlChar *)"r1("
414
416#define VAL_REGEX_R2 (const xmlChar *)"r2("
417
419#define VAL_REGEX_R_LEN 3
420
421
422/* macros to access simple value types */
423
425#define VAL_OBJ(V) (V)->obj
426
428#define VAL_OBJTYPE(V) (V)->obj->objtype
429
431#define VAL_TYPE(V) (V)->btyp
432
434#define VAL_HDR(V) (V)->hdr
435
437#define VAL_TYPDEF(V) (V)->typdef
438
440#define VAL_NSID(V) (V)->nsid
441
443#define VAL_NAME(V) (V)->name
444
446#define VAL_RES(V) (V)->res
447
449#define VAL_BOOL(V) (V)->v.boo
450
452#define VAL_EMPTY(V) (V)->v.boo
453
455#define VAL_DOUBLE(V) (V)->v.num.d
456
458#define VAL_STRING(V) (V)->v.str
459
464#define VAL_BINARY(V) (V)->v.binary.ustr
465
467#define VAL_BINARY_LEN(V) (V)->v.binary.ustrlen
468
470//#define VAL_EXTERN_BINARY(V) (V)->extern_binary
471
473#define VAL_ENU(V) (&(V)->v.enu)
474
476#define VAL_ENUM(V) (V)->v.enu.val
477
481#define VAL_ENUM_NAME(V) (V)->v.enu.name
482
484#define VAL_FLAG(V) (V)->v.boo
485
487#define VAL_NUMPTR(V) (&(V)->v.num)
488
490#define VAL_NUM(V) (V)->v.num
491
493#define VAL_LONG(V) (V)->v.num.l
494
496#define VAL_INT(V) (V)->v.num.i
497
499#define VAL_INT8(V) ((int8)((V)->v.num.i))
500
502#define VAL_L_INT8(V) (V)->v.num.i
503
505#define VAL_INT16(V) ((int16)((V)->v.num.i))
506
508#define VAL_L_INT16(V) (V)->v.num.i
509
511#define VAL_INT32(V) (V)->v.num.i
512
514#define VAL_INT64(V) (V)->v.num.l
515
517#define VAL_STR(V) (V)->v.str
518
520#define VAL_INSTANCE_ID(V) (V)->v.str
521
523#define VAL_IDREF(V) (&(V)->v.idref)
524
526#define VAL_IDREF_NSID(V) (V)->v.idref.nsid
527
529#define VAL_IDREF_NAME(V) (V)->v.idref.name
530
532#define VAL_IDREF_IDENTITY(V) (V)->v.idref.identity
533
535#define VAL_UINT(V) (V)->v.num.u
536
538#define VAL_UINT8(V) ((uint8)((V)->v.num.u))
539
541#define VAL_L_UINT8(V) (V)->v.num.u
542
544#define VAL_UINT16(V) ((uint16)((V)->v.num.u))
545
547#define VAL_L_UINT16(V) (V)->v.num.u
548
550#define VAL_UINT32(V) (V)->v.num.u
551
553#define VAL_L_UINT32(V) (V)->v.num.u
554
556#define VAL_UINT64(V) (V)->v.num.ul
557
559#define VAL_ULONG(V) (V)->v.num.ul
560
564#define VAL_DEC64(V) (V)->v.num.dec.val
565
569#define VAL_DEC64_DIGITS(V) (V)->v.num.dec.digits
570
574#define VAL_DEC64_ZEROES(V) (V)->v.num.dec.zeroes
575
577#define VAL_LIST(V) (V)->v.list
578
580#define VAL_BITS VAL_LIST
581
582
584#define VAL_INTERN(V) (V)->v.intbuff
585
586
588#define VAL_EXTERN(V) (V)->v.fname
589
590
592#define VAL_IS_DELETED(V) ((V)->flags & VAL_FL_DELETED)
593
595#define VAL_CLR_DELETED(V) (V)->flags &= ~VAL_FL_DELETED
596
598#define VAL_MARK_DELETED(V) val_mark_deleted(V)
599
601#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
602
604#define VAL_LAST_MODIFIED(V) (V)->last_modified
605
607#define VAL_ETAG(V) (V)->etag
608
610#define VAL_BTYPE(V) (V)->btyp
611
613#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
614
616#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
617
619#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
620
622#define VAL_VAREXPR(V) val_get_varexpr(V)
623
627#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
628
630#define VAL_REMOVE_META(M) dlq_remove(M)
631
635#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
636
640#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
641
645#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
646
648#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
649
651#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
652
654#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
655
659#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
660
662#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
663
665#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
666
668#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
669
671#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
672
674#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
675
677#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
678
680#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
681
683#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
684
686#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
687
689#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
690
692#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
693
695#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
696
698#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
699
701#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
702
704#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
705
707#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
708
710#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
711
713#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
714
716#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
717
719#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
720
722#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
723
725#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
726
728#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
729
731#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
732
734#define VAL_CHILD_HDR_OBJ(H) (H)->obj
735
737#define VAL_CHILD_HDR_COUNT(H) (H)->count
738
740#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
741
743#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
744
746#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
747
748
753#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
754
756#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
757
759#define VAL_CLR_ADDEDIT_DELETED(V) (V)->flags &= ~VAL_FL_ADDEDIT_DELETED
760
761
766#define VAL_EDITOP(V) (V)->editop
767
768//#define VAL_EXTERN_VALONLY(V) (V)->extern_valonly
769
773#define VAL_SET_DEFSET(V) (V)->flags |= VAL_FL_DEFSET
774
775
779#define VAL_CLR_DEFSET(V) (V)->flags &= ~VAL_FL_DEFSET
780
781/* Value node is from anydata that was replaced by datapath */
782// #define VAL_FROM_ANYDATA(V) (V)->from_anydata
783
785#define VAL_EXTRA(V) (V)->val_extra
786
787
789#define VAL_IS_FORCE_CONFIG(V) ((V)->flags & VAL_FL_FORCE_CONFIG)
790
791#define VAL_SET_FORCE_CONFIG(V) (V)->flags |= VAL_FL_FORCE_CONFIG
792
796#define VAL_SET_HDR_RECREATED(V) (V)->flags |= VAL_FL_HDR_RECREATED
797
799#define VAL_IS_HDR_RECREATED(V) ((V)->flags & VAL_FL_HDR_RECREATED)
800
801
802
803/**************** val_value_t flags2 macros ********************/
804
805
807#define VAL_SET_EXTERN_VALONLY(V) (V)->flags2 |= VAL_FL_EXTERN_VALONLY
808
810#define VAL_CLR_EXTERN_VALONLY(V) (V)->flags2 &= ~VAL_FL_EXTERN_VALONLY
811
813#define VAL_EXTERN_VALONLY(V) ((V)->flags2 & VAL_FL_EXTERN_VALONLY)
814
815
817#define VAL_SET_EXTERN_BINARY(V) (V)->flags2 |= VAL_FL_EXTERN_BINARY
818
820#define VAL_CLR_EXTERN_BINARY(V) (V)->flags2 &= ~VAL_FL_EXTERN_BINARY
821
823#define VAL_EXTERN_BINARY(V) ((V)->flags2 & VAL_FL_EXTERN_BINARY)
824
825
827#define VAL_SET_FROM_ANYDATA(V) (V)->flags2 |= VAL_FL_FROM_ANYDATA
828
830#define VAL_CLR_FROM_ANYDATA(V) (V)->flags2 &= ~VAL_FL_FROM_ANYDATA
831
833#define VAL_FROM_ANYDATA(V) ((V)->flags2 & VAL_FL_FROM_ANYDATA)
834
835
836
839/********************************************************************
840* *
841* T Y P E S *
842* *
843*********************************************************************/
844
862typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
863
864
871typedef void (*errfn_t) (const char *fstr, ...);
872
873
880/* pick a log indent function for dump_value */
881typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
882
883
887typedef struct logfns_t_ {
888 dumpfn_t dumpfn; /**< log dump callback */
889 errfn_t errorfn; /**< log error callback */
890 indentfn_t indentfn; /**< log indent callback */
891 boolean suppressVariableNames; /**< suppress variable names in output */
892 FILE *outputFile; /**< manager redirect to file output */
893} logfns_t;
894
895
897typedef struct val_idref_t_ {
898 xmlns_id_t nsid; /**< namespace ID */
900 xmlChar *name;
901 ncx_identity_t *identity; /**< ID back-ptr if found */
902} YPACK val_idref_t;
903
904
906typedef enum val_insert_mode_t_ {
907 VAL_INS_MODE_NONE, /**< not set */
908 VAL_INS_MODE_KEY, /**< YANG key attribute */
909 VAL_INS_MODE_VALUE, /**< YANG value attribute */
910 VAL_INS_MODE_POINT /**< YANG-API point param */
911} YPACK val_insert_mode_t;
912
913
915typedef enum val_dumpvalue_mode_t_ {
916 DUMP_VAL_NONE, /**< not set */
917 DUMP_VAL_STDOUT, /**< dump val to STDOUT */
918 DUMP_VAL_LOG, /**< dump val to main log */
919 DUMP_VAL_ALT_LOG, /**< dump val to alternate log */
920 DUMP_VAL_AUDIT_LOG, /**< dump val to audit log */
921} val_dumpvalue_mode_t;
922
923
925typedef struct val_editvars_t_ {
930 struct val_value_t_ *curparent; /**< track the real parent */
931 op_insertop_t insertop; /**< YANG insert operation */
932 xmlChar *insertstr; /**< saved value or key attr */
933 struct xpath_pcb_t_ *insertxpcb; /**< key attr for insert */
934 struct val_value_t_ *insertval; /**< back-ptr if before or after */
935 val_insert_mode_t insert_mode; /**< insert mode requested */
936 uint8 silprio; /**< 2nd SIL priority for server */
937 boolean operset; /**< nc:operation here */
938 void *pcookie; /**< user pointer cookie */
939 int icookie; /**< user integer cookie */
940 boolean is_move; /**< TRUE if YPATCH MOVE operation */
941 boolean skip_sil_partial; /**< TRUE if skip_sil_partial needed */
942 boolean deleted; /**< TRUE if deleted from commit_deletes */
943} YPACK val_editvars_t;
944
945
947typedef struct val_extra_t_ {
948
954 xmlChar *dname; /**< malloced name if needed */
955
962 void *getcb;
963
968 struct val_value_t_ *virtualval;
969
971 time_t cachetime;
972
977 struct xpath_pcb_t_ *xpathpcb;
978
979
983 plock_cb_t *plock[VAL_MAX_PLOCKS];
984
985
989 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
990
996 xmlChar *varexpr;
997
1002 struct xpath_aio_cb_t_ *aiocb;
1003
1005 ncx_sm_mpid_t *mpid;
1006
1009 struct val_value_t_ *leafrefval;
1010
1015 typ_pattern_t *regex_filter;
1016
1017} YPACK val_extra_t;
1018
1019
1024typedef struct val_value_t_ {
1026 dlq_hdr_t qhdr;
1027
1029 struct obj_template_t_ *obj; /**< bptr to object def */
1030 typ_def_t *typdef; /**< bptr to typdef if leaf */
1031 const xmlChar *name; /**< back pointer to elname\n
1032 * the dname field is moved to val_extra_t and only used when
1033 * the value is constructed from dummy objects or no objects at all
1034 */
1035
1036 struct val_value_t_ *parent; /**< back-ptr to parent if any */
1037 struct val_child_hdr_t_ *hdr; /**< back-ptr to own child_hdr */
1038
1040 val_extra_t *val_extra;
1041
1042 uint32 flags; /**< internal status flags */
1043
1044 xmlns_id_t nsid; /**< namespace ID for this node */
1045 ncx_btype_t btyp; /**< base type of this value */
1046 ncx_data_class_t dataclass; /**< config or state data */
1047
1051 time_t last_modified;
1052 ncx_etag_t etag; /**< ETag for RESTCONF */
1053
1067 dlq_hdr_t *metaQ; /**< Q of val_value_t */
1068
1072 val_editvars_t *editvars; /**< edit-vars from attrs */
1073 op_editop_t editop; /**< needed for all edits */
1074 status_t res; /**< validation result */
1075
1076 /* GET1 getcb moved to val_extra */
1077 /* GET1 virtualval moved to val_extra */
1078 /* GET1 cachetime moved to val_extra */
1079
1081 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
1082
1083 /* this field is used for NCX_BT_CHOICE
1084 * If set, the object path for this node is really:
1085 * $this --> casobj --> casobj.parent --> $this.parent
1086 * the OBJ_TYP_CASE and OBJ_TYP_CHOICE nodes are skipped
1087 * inside an XML instance document
1088 *
1089 * replaced by val_get_casobj() function in val_util.h
1090 * struct obj_template_t_ *casobj;
1091 */
1092
1093 /* xpathpcb moved to val_extra_t */
1094
1095 /* back-ptr to the partial locks that are held
1096 * against this node
1097 * plock moved to val_extra
1098 */
1099
1100 /* back-ptr to the data access control rules that
1101 * reference this node
1102 * dataruleQ moved to val_extra
1103 */
1104
1105 /* malloced pointer to the variable expression found
1106 * if this val node is part of a data template.
1107 * The actual value in union v_ MUST be ignored if
1108 * varexpr string is non-NULL!!
1109 * varexpr moved to val_extra
1110 */
1111
1115 ncx_owner_id_t owner_id;
1116
1118 ncx_nmda_origin_t nmda_origin;
1119
1123 uint32 flags2;
1124
1126 //boolean extern_valonly;
1127
1129 //boolean extern_binary;
1130
1138 //boolean from_anydata;
1139
1149 union v_ {
1159 dlq_hdr_t child_hdrQ;
1160
1170 ncx_num_t num;
1171
1178 ncx_str_t str;
1179
1180 val_idref_t idref; /**< NCX_BT_IDREF */
1181 ncx_binary_t binary; /**< NCX_BT_BINARY */
1182 ncx_list_t list; /**< NCX_BT_BITS, NCX_BT_SLIST */
1183 boolean boo; /**< NCX_BT_EMPTY, NCX_BT_BOOLEAN */
1184 ncx_enum_t enu; /**< NCX_BT_UNION, NCX_BT_ENUM */
1185 xmlChar *fname; /**< NCX_BT_EXTERN */
1186 xmlChar *intbuff; /**< NCX_BT_INTERN */
1187 } YPACK v;
1188} YPACK val_value_t;
1189
1190
1194typedef struct val_child_hdr_t_ {
1195 dlq_hdr_t qhdr; /**< queue header */
1196
1202 struct obj_template_t_ *obj;
1203
1207 struct val_tree_t_ *tree;
1208
1213 dlq_hdr_t que;
1214
1216 uint32 count;
1217
1219 uint8 flags;
1220} YPACK val_child_hdr_t;
1221
1222
1233typedef struct val_index_t_ {
1234 dlq_hdr_t qhdr; /**< queue header */
1235 val_value_t *val; /**< points to a child node */
1236} YPACK val_index_t;
1237
1238
1247typedef boolean
1248 (*val_test_fn_t) (const val_value_t *val);
1249
1250
1260typedef boolean
1261 (*val_walker_fn_t) (val_value_t *val,
1262 void *cookie1,
1263 void *cookie2);
1264
1265
1266
1276typedef boolean
1277 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1278 void *cookie1,
1279 void *cookie2);
1280
1281
1282
1292typedef boolean
1293 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1294 void *cookie);
1295
1296
1306typedef boolean
1307 (*val_test2_fn_t) (val_value_t *val,
1308 void *cookie);
1309
1310
1314/********************************************************************
1315* *
1316* F U N C T I O N S *
1317* *
1318*********************************************************************/
1319
1337extern val_value_t *
1338 val_new_value (void);
1339
1340
1349extern void
1350 val_init_value (val_value_t *val);
1351
1352
1363extern void
1364 val_init_complex (val_value_t *val,
1365 ncx_btype_t btyp);
1366
1367
1377extern void
1378 val_init_virtual (val_value_t *val,
1379 void *cbfn,
1380 struct obj_template_t_ *obj);
1381
1382
1392extern void
1393 val_init_from_template (val_value_t *val,
1394 struct obj_template_t_ *obj);
1395
1396
1406extern void
1407 val_reinit_from_template (val_value_t *val,
1408 struct obj_template_t_ *obj);
1409
1410
1420extern void
1421 val_free_value (val_value_t *val);
1422
1423
1431extern void
1432 val_set_name (val_value_t *val,
1433 const xmlChar *name,
1434 uint32 namelen);
1435
1436
1446extern status_t
1447 val_force_dname (val_value_t *val);
1448
1449
1458extern void
1459 val_set_qname (val_value_t *val,
1460 xmlns_id_t nsid,
1461 const xmlChar *name,
1462 uint32 namelen);
1463
1464
1474extern status_t
1475 val_string_ok (typ_def_t *typdef,
1476 ncx_btype_t btyp,
1477 const xmlChar *strval);
1478
1479
1494extern status_t
1495 val_string_ok_errinfo (typ_def_t *typdef,
1496 ncx_btype_t btyp,
1497 const xmlChar *strval,
1498 ncx_errinfo_t **errinfo);
1499
1500
1516status_t
1517 val_binary_ok_errinfo (typ_def_t *typdef,
1518 const xmlChar *strval,
1519 val_value_t *val,
1520 ncx_errinfo_t **errinfo);
1521
1522
1540extern status_t
1541 val_string_ok_ex (ses_cb_t *scb,
1542 typ_def_t *typdef,
1543 ncx_btype_t btyp,
1544 const xmlChar *strval,
1545 ncx_errinfo_t **errinfo,
1546 boolean logerrors);
1547
1548
1567extern status_t
1568 val_string_ok_ex2 (ses_cb_t *scb,
1569 typ_def_t *typdef,
1570 ncx_btype_t btyp,
1571 const xmlChar *strval,
1572 ncx_errinfo_t **errinfo,
1573 boolean logerrors,
1574 boolean is_defval);
1575
1576
1597extern status_t
1598 val_list_ok (typ_def_t *typdef,
1599 ncx_btype_t btyp,
1600 ncx_list_t *list);
1601
1602
1620extern status_t
1621 val_list_ok_errinfo (typ_def_t *typdef,
1622 ncx_btype_t btyp,
1623 ncx_list_t *list,
1624 ncx_errinfo_t **errinfo);
1625
1626
1639extern status_t
1640 val_enum_ok (typ_def_t *typdef,
1641 const xmlChar *enumval,
1642 int32 *retval,
1643 const xmlChar **retstr);
1644
1645
1655extern status_t
1656 val_bit_ok (typ_def_t *typdef,
1657 const xmlChar *bitname,
1658 uint32 *position);
1659
1660
1661
1662
1672extern status_t
1673 val_bitpos_ok (typ_def_t *typdef,
1674 uint32 position,
1675 const xmlChar **name);
1676
1677
1696extern status_t
1697 val_idref_ok (typ_def_t *typdef,
1698 const xmlChar *qname,
1699 xmlns_id_t nsid,
1700 const xmlChar **name,
1701 ncx_identity_t **id);
1702
1703
1728extern status_t
1729 val_idref_ok_ex (typ_def_t *typdef,
1730 const xmlChar *qname,
1731 xmlns_id_t nsid,
1732 boolean is_json,
1733 ncx_module_t *impmod,
1734 boolean or_self,
1735 const xmlChar **name,
1736 ncx_identity_t **id);
1737
1738
1755extern status_t
1756 val_parse_idref (ncx_module_t *mod,
1757 const xmlChar *qname,
1758 xmlns_id_t *nsid,
1759 const xmlChar **name,
1760 ncx_identity_t **id);
1761
1762
1780extern status_t
1781 val_parse_idref_rootcb (ncx_module_t *mod,
1782 const xmlChar *qname,
1783 xmlns_id_t *nsid,
1784 const xmlChar **name,
1785 ncx_identity_t **id,
1786 ncx_sm_rootcb_t *rootcb);
1787
1788
1798extern status_t
1799 val_range_ok (typ_def_t *typdef,
1800 ncx_btype_t btyp,
1801 const ncx_num_t *num);
1802
1803
1815extern status_t
1816 val_range_ok_errinfo (typ_def_t *typdef,
1817 ncx_btype_t btyp,
1818 const ncx_num_t *num,
1819 ncx_errinfo_t **errinfo);
1820
1821
1829extern status_t
1830 val_pattern_ok (typ_def_t *typdef,
1831 const xmlChar *strval);
1832
1833
1846extern status_t
1847 val_pattern_ok_errinfo (typ_def_t *typdef,
1848 const xmlChar *strval,
1849 ncx_errinfo_t **errinfo);
1850
1851
1861extern status_t
1862 val_simval_ok (typ_def_t *typdef,
1863 const xmlChar *simval);
1864
1865
1866
1878extern status_t
1879 val_simval_ok_errinfo (typ_def_t *typdef,
1880 const xmlChar *simval,
1881 ncx_errinfo_t **errinfo);
1882
1883
1897extern status_t
1898 val_simval_ok_ex (typ_def_t *typdef,
1899 const xmlChar *simval,
1900 ncx_errinfo_t **errinfo,
1901 ncx_module_t *mod);
1902
1903
1919extern status_t
1920 val_simval_ok_max (typ_def_t *typdef,
1921 const xmlChar *simval,
1922 ncx_errinfo_t **errinfo,
1923 ncx_module_t *mod,
1924 boolean logerrors);
1925
1944extern status_t
1945 val_simval_ok_max2 (typ_def_t *typdef,
1946 const xmlChar *simval,
1947 ncx_errinfo_t **errinfo,
1948 ncx_module_t *mod,
1949 boolean logerrors,
1950 boolean nocond);
1951
1952
1972status_t
1973 val_simval_ok_max3 (typ_def_t *typdef,
1974 const xmlChar *simval,
1975 ncx_errinfo_t **errinfo,
1976 ncx_module_t *mod,
1977 boolean logerrors,
1978 boolean nocond,
1979 boolean is_defval);
1980
1981
1993extern status_t
1994 val_union_ok (typ_def_t *typdef,
1995 const xmlChar *strval,
1996 val_value_t *retval);
1997
1998
2012extern status_t
2013 val_union_ok_errinfo (typ_def_t *typdef,
2014 const xmlChar *strval,
2015 val_value_t *retval,
2016 ncx_errinfo_t **errinfo);
2017
2018
2036extern status_t
2037 val_union_ok_ex (typ_def_t *typdef,
2038 const xmlChar *strval,
2039 val_value_t *retval,
2040 ncx_errinfo_t **errinfo,
2041 ncx_module_t *mod,
2042 typ_def_t **match_typdef);
2043
2044
2065extern status_t
2066 val_union_ok_binary (typ_def_t *typdef,
2067 const xmlChar *binstr,
2068 uint32 binstrlen,
2069 val_value_t *retval,
2070 ncx_errinfo_t **errinfo,
2071 typ_def_t **match_typdef);
2072
2073
2093extern status_t
2094 val_union_ok_full (typ_def_t *typdef,
2095 const xmlChar *strval,
2096 val_value_t *contextval,
2097 val_value_t *rootval,
2098 val_value_t *retval,
2099 ncx_errinfo_t **errinfo);
2100
2101
2108extern dlq_hdr_t *
2109 val_get_metaQ (val_value_t *val);
2110
2111
2119extern val_value_t *
2120 val_get_first_meta (dlq_hdr_t *queue);
2121
2122
2130extern val_value_t *
2131 val_get_first_meta_val (val_value_t *val);
2132
2133
2141extern val_value_t *
2142 val_get_next_meta (val_value_t *curnode);
2143
2144
2152extern boolean
2153 val_meta_empty (val_value_t *val);
2154
2155
2164extern val_value_t *
2165 val_find_meta (val_value_t *val,
2166 xmlns_id_t nsid,
2167 const xmlChar *name);
2168
2169
2179extern boolean
2180 val_meta_match (val_value_t *val,
2181 val_value_t *metaval);
2182
2183
2192extern uint32
2193 val_metadata_inst_count (val_value_t *val,
2194 xmlns_id_t nsid,
2195 const xmlChar *name);
2196
2197
2208extern void
2209 val_dump_value (val_value_t *val,
2210 int32 startindent,
2211 log_debug_t lvl);
2212
2213
2214
2225extern void
2226 val_dump_value_config (val_value_t *val,
2227 int32 startindent,
2228 log_debug_t lvl);
2229
2230
2242extern void
2243 val_dump_value_ex (val_value_t *val,
2244 int32 startindent,
2245 ncx_display_mode_t display_mode,
2246 log_debug_t lvl);
2247
2248
2259extern void
2260 val_dump_alt_value (val_value_t *val,
2261 int32 startindent,
2262 log_debug_t lvl);
2263
2264
2274extern void
2275 val_stdout_value (val_value_t *val,
2276 int32 startindent,
2277 log_debug_t lvl);
2278
2279
2290extern void
2291 val_stdout_value_ex (val_value_t *val,
2292 int32 startindent,
2293 ncx_display_mode_t display_mode,
2294 log_debug_t lvl);
2295
2296
2314extern void
2315 val_dump_value_max (val_value_t *val,
2316 int32 startindent,
2317 int32 indent_amount,
2318 val_dumpvalue_mode_t dumpmode,
2319 ncx_display_mode_t display_mode,
2320 boolean with_meta,
2321 boolean configonly,
2322 log_debug_t lvl);
2323
2324
2342extern void
2343 val_dump_value_nonconfig (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 log_debug_t lvl);
2350
2351
2373extern void
2374 val_dump_value_full (val_value_t *val,
2375 int32 startindent,
2376 int32 indent_amount,
2377 val_dumpvalue_mode_t dumpmode,
2378 ncx_display_mode_t display_mode,
2379 boolean with_meta,
2380 boolean configonly,
2381 boolean conf_mode,
2382 boolean expand_varexpr,
2383 log_debug_t lvl,
2384 logfns_t *overrideOutput);
2385
2386
2409extern void
2410 val_dump_value_full2 (val_value_t *val,
2411 int32 startindent,
2412 int32 indent_amount,
2413 val_dumpvalue_mode_t dumpmode,
2414 ncx_display_mode_t display_mode,
2415 boolean with_meta,
2416 boolean configonly,
2417 boolean conf_mode,
2418 boolean expand_varexpr,
2419 boolean withdef,
2420 log_debug_t lvl,
2421 logfns_t *overrideOutput);
2422
2423
2436extern status_t
2437 val_set_string (val_value_t *val,
2438 const xmlChar *valname,
2439 const xmlChar *valstr);
2440
2441
2457extern status_t
2458 val_set_string2 (val_value_t *val,
2459 const xmlChar *valname,
2460 typ_def_t *typdef,
2461 const xmlChar *valstr,
2462 uint32 valstrlen);
2463
2464
2485extern status_t
2486 val_set_string3 (val_value_t *val,
2487 const xmlChar *valname,
2488 typ_def_t *typdef,
2489 const xmlChar *valstr,
2490 uint32 valstrlen,
2491 boolean is_dblquote);
2492
2493
2509extern status_t
2510 val_set_binary (const xmlChar *valstr,
2511 uint32 valstrlen,
2512 val_value_t *val);
2513
2514
2515
2525extern status_t
2526 val_reset_empty (val_value_t *val);
2527
2528
2541extern status_t
2542 val_set_simval (val_value_t *val,
2543 typ_def_t *typdef,
2544 xmlns_id_t nsid,
2545 const xmlChar *valname,
2546 const xmlChar *valstr);
2547
2548
2591extern status_t
2592 val_set_simval_str (val_value_t *val,
2593 typ_def_t *typdef,
2594 xmlns_id_t nsid,
2595 const xmlChar *valname,
2596 uint32 valnamelen,
2597 const xmlChar *valstr);
2598
2599
2620extern status_t
2621 val_set_simval_binary (val_value_t *val,
2622 const xmlChar *binstr,
2623 uint32 binstrlen);
2624
2625
2669extern status_t
2670 val_set_simval_max (val_value_t *val,
2671 typ_def_t *typdef,
2672 xmlns_id_t nsid,
2673 const xmlChar *valname,
2674 uint32 valnamelen,
2675 const xmlChar *valstr,
2676 uint32 valstrlen);
2677
2678
2692extern val_value_t *
2693 val_make_simval (typ_def_t *typdef,
2694 xmlns_id_t nsid,
2695 const xmlChar *valname,
2696 const xmlChar *valstr,
2697 status_t *res);
2698
2699
2713extern val_value_t *
2714 val_make_string (xmlns_id_t nsid,
2715 const xmlChar *valname,
2716 const xmlChar *valstr);
2717
2718
2729extern val_value_t *
2730 val_make_binary (xmlns_id_t nsid,
2731 const xmlChar *valname,
2732 const xmlChar *valstr,
2733 uint32 valstrlen);
2734
2735
2747extern status_t
2748 val_merge (const val_value_t *src,
2749 val_value_t *dest);
2750
2751
2758extern val_value_t *
2759 val_clone (const val_value_t *val);
2760
2761
2769extern val_value_t *
2770 val_clone2 (const val_value_t *val);
2771
2772
2786extern val_value_t *
2787 val_clone_config_data (const val_value_t *val,
2788 status_t *res);
2789
2790
2791
2808extern val_value_t *
2809 val_clone_config_newval (const val_value_t *val,
2810 status_t *res);
2811
2832extern val_value_t *
2833 val_clone_config_newval_keys_only (const val_value_t *val,
2834 status_t *res);
2835
2836
2856extern val_value_t *
2857 val_clone_config_save (const val_value_t *val,
2858 status_t *res);
2859
2860
2882extern val_value_t *
2883 val_clone_config_false (const val_value_t *val,
2884 status_t *res);
2885
2886
2897extern status_t
2898 val_replace (val_value_t *val,
2899 val_value_t *copy);
2900
2901
2911extern status_t
2912 val_replace_str (const xmlChar *str,
2913 uint32 stringlen,
2914 val_value_t *copy);
2915
2916
2927extern status_t
2928 val_fast_replace_string (const xmlChar *str,
2929 uint32 stringlen,
2930 val_value_t *copy);
2931
2932
2939extern void
2940 val_replace_stringval (val_value_t *val,
2941 const xmlChar *str);
2942
2943
2960extern void
2961 val_add_child (val_value_t *child,
2962 val_value_t *parent);
2963
2964
2976extern void
2977 val_add_child_sorted (val_value_t *child,
2978 val_value_t *parent);
2979
2980
2992extern void
2993 val_insert_child (val_value_t *child,
2994 val_value_t *current,
2995 val_value_t *parent);
2996
2997
3006extern void
3007 val_remove_child (val_value_t *child);
3008
3009
3019extern void
3020 val_swap_child (val_value_t *newchild,
3021 val_value_t *curchild);
3022
3023
3031extern val_value_t *
3032 val_first_child_match (const val_value_t *parent,
3033 const val_value_t *child);
3034
3035
3046extern val_value_t *
3047 val_first_child_match_fast (const val_value_t *parent,
3048 const val_value_t *child,
3049 val_value_t *lastmatch);
3050
3051
3063extern val_value_t *
3064 val_next_child_match (val_value_t *parent,
3065 val_value_t *child,
3066 val_value_t *curmatch);
3067
3068
3075extern val_value_t *
3076 val_next_child_same (val_value_t *curchild);
3077
3078
3085extern val_value_t *
3086 val_get_first_child (const val_value_t *parent);
3087
3088
3095extern val_value_t *
3096 val_get_next_child (const val_value_t *curchild);
3097
3098
3105extern val_value_t *
3106 val_get_first_terminal_child (const val_value_t *parent);
3107
3108
3115extern val_value_t *
3116 val_get_next_terminal_child (const val_value_t *curchild);
3117
3118
3132extern val_value_t *
3133 val_find_child (const val_value_t *parent,
3134 const xmlChar *modname,
3135 const xmlChar *childname);
3136
3137
3151extern val_value_t *
3152 val_find_child_fast (const val_value_t *parent,
3153 xmlns_id_t nsid,
3154 const xmlChar *childname);
3155
3156
3165extern val_value_t *
3166 val_find_child_obj (const val_value_t *parent,
3167 const struct obj_template_t_ *chobj);
3168
3169
3184extern val_value_t *
3185 val_find_child_que (const dlq_hdr_t *childQ,
3186 xmlns_id_t nsid,
3187 const xmlChar *childname);
3188
3189
3203extern val_value_t *
3204 val_match_child (const val_value_t *parent,
3205 const xmlChar *modname,
3206 const xmlChar *childname);
3207
3208
3225extern val_value_t *
3226 val_match_child_count (const val_value_t *parent,
3227 const xmlChar *modname,
3228 const xmlChar *childname,
3229 uint32 *matchcount);
3230
3231
3248extern val_value_t *
3249 val_find_next_child (const val_value_t *parent,
3250 const xmlChar *modname,
3251 const xmlChar *childname,
3252 const val_value_t *curchild);
3253
3254
3268extern val_value_t *
3269 val_find_next_child_fast (const val_value_t *parent,
3270 const val_value_t *curchild);
3271
3272
3281extern val_value_t *
3282 val_first_child_name (val_value_t *parent,
3283 const xmlChar *name);
3284
3285
3294extern val_value_t *
3295 val_first_child_qname (val_value_t *parent,
3296 xmlns_id_t nsid,
3297 const xmlChar *name);
3298
3299
3309extern val_value_t *
3310 val_next_child_qname (val_value_t *parent,
3311 xmlns_id_t nsid,
3312 const xmlChar *name,
3313 val_value_t *curchild);
3314
3315
3333extern val_value_t *
3334 val_first_child_string (val_value_t *parent,
3335 const xmlChar *name,
3336 const xmlChar *strval);
3337
3338
3347extern uint32
3348 val_child_cnt (val_value_t *parent);
3349
3350
3360extern uint32
3361 val_child_inst_cnt (const val_value_t *parent,
3362 const xmlChar *modname,
3363 const xmlChar *name);
3364
3365
3373extern uint32
3374 val_get_child_inst_id (const val_value_t *parent,
3375 const val_value_t *child);
3376
3377
3384extern uint32
3385 val_liststr_count (const val_value_t *val);
3386
3387
3400extern boolean
3401 val_index_match (const val_value_t *val1,
3402 const val_value_t *val2);
3403
3404
3415extern int
3416 val_index_compare (const val_value_t *val1,
3417 const val_value_t *val2);
3418
3419
3451extern int32
3452 val_compare_max (const val_value_t *val1,
3453 const val_value_t *val2,
3454 boolean configonly,
3455 boolean childonly,
3456 boolean editing);
3457
3458
3495extern int32
3496 val_compare_max_def (const val_value_t *val1,
3497 const val_value_t *val2,
3498 boolean configonly,
3499 boolean childonly,
3500 boolean editing,
3501 boolean ignore_defaults);
3502
3503
3527extern int32
3528 val_compare_ex (const val_value_t *val1,
3529 const val_value_t *val2,
3530 boolean configonly);
3531
3532
3553extern int32
3554 val_compare (const val_value_t *val1,
3555 const val_value_t *val2);
3556
3557
3577extern int32
3578 val_compare_to_string (const val_value_t *val1,
3579 const xmlChar *strval2,
3580 status_t *res);
3581
3582
3604extern int32
3605 val_compare_to_string_len (const val_value_t *val1,
3606 const xmlChar *strval2,
3607 uint32 strval2len,
3608 status_t *res);
3609
3610
3617// extern int32
3618// val_compare_for_replace (const val_value_t *val1,
3619// const val_value_t *val2);
3620
3621
3640extern int32
3641 val_compare_for_edit (const val_value_t *val1,
3642 const val_value_t *val2,
3643 boolean ismerge);
3644
3645
3664extern int32
3665 val_compare_as_string (const val_value_t *val1,
3666 const val_value_t *val2,
3667 status_t *res);
3668
3669
3688extern status_t
3689 val_sprintf_simval_nc (xmlChar *buff,
3690 const val_value_t *val,
3691 uint32 *len);
3692
3693
3713extern status_t
3714 val_sprintf_simval_nc_ex (xmlChar *buff,
3715 const val_value_t *val,
3716 boolean url_encode,
3717 uint32 *len);
3718
3719
3720
3721
3744extern status_t
3745 val_sprintf_simval_xpath (xmlChar *buff,
3746 const val_value_t *val,
3747 boolean url_encode,
3748 xmlChar quot_char,
3749 uint32 *len);
3750
3751
3752
3777extern status_t
3778 val_sprintf_binary (xmlChar *buff,
3779 const val_value_t *val,
3780 uint32 maxlen,
3781 uint32 *len);
3782
3783
3796extern xmlChar *
3797 val_make_sprintf_string (const val_value_t *val);
3798
3799
3812extern status_t
3813 val_resolve_scoped_name (val_value_t *val,
3814 const xmlChar *name,
3815 val_value_t **chval);
3816
3817
3824extern ncx_iqual_t
3825 val_get_iqualval (const val_value_t *val);
3826
3827
3846extern boolean
3847 val_duplicates_allowed (val_value_t *val);
3848
3849
3857extern boolean
3858 val_has_content (const val_value_t *val);
3859
3860
3869extern boolean
3870 val_has_content_ex (const val_value_t *val);
3871
3872
3880extern boolean
3881 val_has_index (const val_value_t *val);
3882
3883
3890extern val_index_t *
3891 val_get_first_index (const val_value_t *val);
3892
3893
3900extern val_index_t *
3901 val_get_next_index (const val_index_t *valindex);
3902
3903
3910extern uint32
3911 val_get_index_count (const val_value_t *val);
3912
3913
3925extern status_t
3926 val_parse_meta (ses_cb_t *scb,
3927 typ_def_t *typdef,
3928 xml_attr_t *attr,
3929 val_value_t *retval);
3930
3931
3938extern void
3939 val_set_extern (val_value_t *val,
3940 xmlChar *fname);
3941
3942
3950extern void
3951 val_set_intern (val_value_t *val,
3952 xmlChar *intbuff);
3953
3954
3973extern boolean
3974 val_fit_oneline (const val_value_t *val,
3975 uint32 linesize,
3976 boolean isxml);
3977
3978
3987extern boolean
3988 val_create_allowed (const val_value_t *val);
3989
3990
3999extern boolean
4000 val_delete_allowed (const val_value_t *val);
4001
4002
4010extern boolean
4011 val_is_config_data (const val_value_t *val);
4012
4013
4022extern boolean
4023 val_is_config_save (const val_value_t *val);
4024
4025
4042extern boolean
4043 val_is_config_false (const val_value_t *val);
4044
4045
4055extern boolean
4056 val_is_virtual (const val_value_t *val);
4057
4058
4088extern val_value_t *
4089 val_get_virtual_value (ses_cb_t *scb,
4090 val_value_t *val,
4091 status_t *res);
4092
4093
4113extern boolean
4114 val_is_default (val_value_t *val);
4115
4116
4126extern boolean
4127 val_is_real (const val_value_t *val);
4128
4129
4136extern xmlns_id_t
4137 val_get_parent_nsid (const val_value_t *val);
4138
4139
4151extern uint32
4152 val_instance_count (val_value_t *val,
4153 const xmlChar *modname,
4154 const xmlChar *objname);
4155
4156
4171extern uint32
4172 val_instance_count_fast (val_value_t *val,
4173 xmlns_id_t nsid,
4174 const xmlChar *objname,
4175 val_value_t **firstval);
4176
4177
4190extern uint32
4191 val_instance_count_fast2 (val_value_t *val,
4192 val_value_t *startval);
4193
4194
4210extern void
4211 val_set_extra_instance_errors (val_value_t *val,
4212 const xmlChar *modname,
4213 const xmlChar *objname,
4214 uint32 maxelems);
4215
4216
4225extern boolean
4226 val_need_quotes (const xmlChar *str);
4227
4228
4238extern boolean
4239 val_has_dquotes (const xmlChar *str);
4240
4249extern boolean
4250 val_need_dquotes (const xmlChar *str);
4251
4252
4260extern boolean
4261 val_all_whitespace (const xmlChar *str);
4262
4263
4272extern boolean
4273 val_any_whitespace (const xmlChar *str,
4274 uint32 len);
4275
4276
4285extern boolean
4286 val_match_metaval (const xml_attr_t *attr,
4287 xmlns_id_t nsid,
4288 const xmlChar *name);
4289
4290
4297extern boolean
4298 val_get_dirty_flag (const val_value_t *val);
4299
4300
4307extern boolean
4308 val_get_subtree_dirty_flag (const val_value_t *val);
4309
4310
4316extern void
4317 val_set_subtree_dirty_up (val_value_t *val);
4318
4319
4327extern void
4328 val_set_dirty_flag (val_value_t *val,
4329 boolean clear_def);
4330
4331
4337extern void
4338 val_set_child_deleted_flag (val_value_t *val);
4339
4340
4347extern boolean
4348 val_get_child_deleted_flag (val_value_t *val);
4349
4350
4363extern void
4364 val_clear_dirty_flag (val_value_t *val,
4365 time_t *timestamp,
4366 ncx_transaction_id_t txid,
4367 boolean is_delete,
4368 boolean do_clear_default);
4369
4370
4376extern void
4377 val_clear_child_dirty_flag (val_value_t *val);
4378
4379
4386extern boolean
4387 val_dirty_subtree (const val_value_t *val);
4388
4389
4402extern void
4403 val_clean_tree (val_value_t *val);
4404
4405
4412extern uint32
4413 val_get_nest_level (val_value_t *val);
4414
4415
4424extern val_value_t *
4425 val_get_first_leaf (val_value_t *val);
4426
4427
4435extern const xmlChar *
4436 val_get_mod_name (const val_value_t *val);
4437
4438
4446extern const xmlChar *
4447 val_get_mod_prefix (const val_value_t *val);
4448
4449
4456extern xmlns_id_t
4457 val_get_nsid (const val_value_t *val);
4458
4459
4466extern ncx_sid_t
4467 val_get_yang_sid (const val_value_t *val);
4468
4469
4476extern void
4477 val_change_nsid (val_value_t *val,
4478 xmlns_id_t nsid);
4479
4480
4487extern void
4488 val_change_nsid2 (val_value_t *val,
4489 xmlns_id_t nsid);
4490
4491
4498extern void
4499 val_change_nsid3 (val_value_t *val,
4500 xmlns_id_t nsid);
4501
4502
4514extern val_value_t *
4515 val_make_from_insertxpcb (val_value_t *sourceval,
4516 status_t *res);
4517
4518
4525extern const typ_def_t *
4526 val_get_typdef (const val_value_t *val);
4527
4528
4536extern boolean
4537 val_set_by_default (const val_value_t *val);
4538
4539
4547extern boolean
4548 val_has_withdef_default (const val_value_t *val);
4549
4550
4556extern void
4557 val_set_withdef_default (val_value_t *val);
4558
4559
4567extern boolean
4568 val_is_metaval (const val_value_t *val);
4569
4570
4578extern void
4579 val_move_children (val_value_t *srcval,
4580 val_value_t *destval);
4581
4582
4590extern void
4591 val_move_nonconfig_children (val_value_t *srcval,
4592 val_value_t *destval);
4593
4613extern status_t
4614 val_cvt_generic (val_value_t *val);
4615
4616
4625extern status_t
4626 val_set_pcookie (val_value_t *val,
4627 void *pcookie);
4628
4629
4638extern status_t
4639 val_set_icookie (val_value_t *val,
4640 int icookie);
4641
4642
4650extern void *
4651 val_get_pcookie (val_value_t *val);
4652
4653
4661extern int
4662 val_get_icookie (val_value_t *val);
4663
4664
4672extern status_t
4673 val_delete_default_leaf (val_value_t *val);
4674
4675
4685extern status_t
4686 val_delete_default_leaf_list (val_value_t *val);
4687
4688
4694extern void
4695 val_force_empty (val_value_t *val);
4696
4697
4705extern status_t
4706 val_delete_default_npcon (val_value_t *val);
4707
4708
4717extern void
4718 val_move_fields_for_xml (val_value_t *srcval,
4719 val_value_t *destval,
4720 boolean movemeta);
4721
4722
4730extern void
4731 val_move_metadata (val_value_t *srcval,
4732 val_value_t *destval);
4733
4734
4741extern val_index_t *
4742 val_get_first_key (val_value_t *val);
4743
4744
4751extern val_index_t *
4752 val_get_last_key (val_value_t *val);
4753
4754
4761extern val_index_t *
4762 val_get_next_key (val_index_t *curkey);
4763
4764
4771extern val_index_t *
4772 val_get_prev_key (val_index_t *curkey);
4773
4774
4781extern void
4782 val_remove_key (val_value_t *keyval);
4783
4784
4791extern val_value_t *
4792 val_new_deleted_value (void);
4793
4794
4802extern status_t
4803 val_new_editvars (val_value_t *val);
4804
4805
4813extern void
4814 val_free_editvars (val_value_t *val);
4815
4816
4822extern void
4823 val_free_solo_editvars (val_editvars_t *editvars);
4824
4825
4836extern boolean
4837 val_all_np_containers (val_value_t *val);
4838
4839
4849extern status_t
4850 val_sprintf_etag (val_value_t *val,
4851 xmlChar *buff,
4852 int32 buffsize);
4853
4854
4861extern time_t *
4862 val_get_last_modified (val_value_t *val);
4863
4864
4870extern void
4871 val_force_default (val_value_t *val);
4872
4881extern void
4882 val_set_all_tags (val_value_t *val,
4883 time_t *timestamp,
4884 ncx_transaction_id_t txid);
4885
4886
4893extern const xmlChar *
4894 val_get_owner (val_value_t *val);
4895
4896
4903extern ncx_owner_id_t
4904 val_get_owner_id (val_value_t *val);
4905
4906
4913extern boolean
4914 val_need_owner_string (val_value_t *val);
4915
4916
4923extern void
4924 val_delete_children (val_value_t *val);
4925
4926
4932extern void
4933 val_clean_value (val_value_t *val);
4934
4935
4944extern boolean
4945 val_find_bit (val_value_t *val,
4946 const xmlChar *bitname);
4947
4948
4956extern boolean
4957 val_has_children (const val_value_t *val);
4958
4959
4967extern status_t
4968 val_add_test_valindex (val_value_t *parentval,
4969 val_value_t *keyval);
4970
4971
4978extern const xmlChar *
4979 val_get_yang_typename (val_value_t *val);
4980
4981
4988extern void
4989 val_set_force_config (val_value_t *val,
4990 boolean is_config);
4991
4992
4999extern void
5000 val_clear_defvalset_flag (val_value_t *val);
5001
5002
5011extern status_t
5012 val_clone_valQ (dlq_hdr_t *valQ,
5013 dlq_hdr_t *return_valQ);
5014
5015
5023extern void
5024 val_clean_valQ (dlq_hdr_t *valQ);
5025
5026
5036extern boolean
5037 val_is_value_set (val_value_t *val);
5038
5039
5047extern uint32
5048 val_url_encode_string (const xmlChar *str,
5049 xmlChar *buff);
5050
5051
5052
5064extern status_t
5065 val_quote_encode_string (const xmlChar *str,
5066 xmlChar quot_char,
5067 xmlChar *buff,
5068 uint32 *retlen);
5069
5070
5079extern void
5080 val_convert_any_to_container (val_value_t *val);
5081
5082
5089extern void
5090 val_clean_index_chain (val_value_t *val);
5091
5092
5100extern boolean
5101 val_pattern_match (const xmlRegexpPtr pattern,
5102 const xmlChar *strval);
5103
5104
5113extern boolean
5114 val_ocpattern_match (const regex_t *ocpattern,
5115 const xmlChar *strval);
5116
5117
5127extern boolean
5128 val_idref_derived_from (ncx_module_t *impmod,
5129 val_value_t *testval,
5130 const xmlChar *qname,
5131 boolean or_self);
5132
5133
5144extern status_t
5145 val_set_sil_priority (val_value_t *val,
5146 uint8 silprio);
5147
5148
5155extern uint8
5156 val_get_sil_priority (val_value_t *val);
5157
5158
5167extern const xmlChar *
5168 val_find_bit_name (val_value_t *val,
5169 uint32 bitpos);
5170
5171
5181extern const xmlChar *
5182 val_find_enum_name (val_value_t *val,
5183 int32 enunum);
5184
5185
5197extern const xmlChar *
5198 val_find_enum_name2 (ncx_btype_t btyp,
5199 typ_def_t *typdef,
5200 int32 enunum);
5201
5202
5212extern void
5213 val_mark_deleted (val_value_t *val);
5214
5215
5223extern void
5224 val_mark_undeleted (val_value_t *val);
5225
5226
5237extern boolean
5238 val_has_conditional_value (val_value_t *val);
5239
5240
5251extern val_value_t *
5252 val_convert_leafref (const val_value_t *val);
5253
5254
5265extern val_value_t *
5266 val_convert_leafref_ext (val_value_t *val);
5267
5268
5291extern int32
5292 val_compare_for_topreplace (const val_value_t *val1,
5293 const val_value_t *val2);
5294
5295
5323extern int32
5324 val_compare_for_topreplace_simple (const val_value_t *val1,
5325 const val_value_t *val2);
5326
5327
5335extern boolean
5336 val_has_complex_child (const val_value_t *val);
5337
5338
5346extern status_t
5347 val_add_meta (val_value_t *metaval,
5348 val_value_t *val);
5349
5350
5357extern val_value_t *
5358 val_find_root (val_value_t *val);
5359
5360
5367extern status_t
5368 val_set_canonical (val_value_t *val);
5369
5370
5378extern typ_def_t *
5379 val_get_leafref_typdef (val_value_t *val);
5380
5381
5401extern boolean
5402 val_ascendant_compare (val_value_t *val1,
5403 val_value_t *val2);
5404
5405
5412extern const xmlChar *
5413 val_get_dname (const val_value_t *val);
5414
5415
5425extern status_t
5426 val_set_dname (val_value_t *val,
5427 const xmlChar *dname);
5428
5429
5440extern status_t
5441 val_set_dname2 (val_value_t *val,
5442 const xmlChar *dname,
5443 uint32 dnamelen);
5444
5445
5453extern status_t
5454 val_new_extra (val_value_t *val);
5455
5456
5463extern const xmlChar *
5464 val_get_varexpr (const val_value_t *val);
5465
5466
5474extern status_t
5475 val_set_varexpr (val_value_t *val,
5476 const xmlChar *varexpr);
5477
5478
5484extern void
5485 val_clear_varexpr (val_value_t *val);
5486
5487
5493extern void
5494 val_set_wildcard_string (val_value_t *val);
5495
5496
5503#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5504
5505
5513extern status_t
5514 val_copy_editvars (const val_value_t *val,
5515 val_value_t *copy);
5516
5517
5527extern status_t
5528 val_set_skip_sil_partial (val_value_t *val);
5529
5530
5537extern boolean
5538 val_get_skip_sil_partial (const val_value_t *val);
5539
5540
5551extern typ_def_t *
5552 val_get_leafref_typdef_ex (val_value_t *val,
5553 boolean union_check);
5554
5555
5556
5568extern boolean
5569 val_is_default_npcon (val_value_t *val);
5570
5571
5579extern status_t
5580 val_identity_ok (typ_def_t *typdef,
5581 ncx_identity_t *ident);
5582
5583
5598extern status_t
5599 val_highest_bit_set (const val_value_t *val,
5600 uint32 *count,
5601 uint32 *pos);
5602
5603
5617extern status_t
5618 val_first_bit_set (const val_value_t *val,
5619 const ncx_lmem_t **lmem,
5620 uint32 *pos);
5621
5622
5637extern status_t
5638 val_next_bit_set (const val_value_t *val,
5639 const ncx_lmem_t *lmem,
5640 const ncx_lmem_t **nextlmem,
5641 uint32 *pos);
5642
5649extern struct xpath_aio_cb_t_ *
5650 val_get_aiocb (const val_value_t *val);
5651
5652
5660extern status_t
5661 val_set_aiocb (val_value_t *val,
5662 struct xpath_aio_cb_t_ *aiocb);
5663
5664
5674extern ncx_sm_mpid_t *
5675 val_get_mpid (const val_value_t *val);
5676
5677
5686extern status_t
5687 val_set_mpid (val_value_t *val,
5688 struct ncx_sm_mpid_t_ *mpid);
5689
5690
5705extern status_t
5706 val_set_deleted_from_commit_deletes (val_value_t *val,
5707 boolean deleted);
5708
5709
5723extern boolean
5724 val_get_deleted_from_commit_deletes (const val_value_t *val);
5725
5726
5737extern void
5738 val_clean_leafref_cache (val_value_t *val);
5739
5740
5769extern status_t
5770 val_set_child_leaf (val_value_t *parent,
5771 const xmlChar *modname,
5772 const xmlChar *childname,
5773 const xmlChar *valstr);
5774
5775
5811extern status_t
5812 val_delete_child_leaf (val_value_t *parent,
5813 val_value_t *curparent,
5814 const xmlChar *modname,
5815 const xmlChar *childname);
5816
5827extern boolean
5828 val_is_all_digits (const xmlChar *str);
5829
5830
5845extern status_t
5846 val_cvt_instanceid_filter (val_value_t *val);
5847
5848
5857extern typ_pattern_t *
5858 val_get_regex_filter (val_value_t *val);
5859
5860
5872extern status_t
5873 val_set_regex_filter (val_value_t *val,
5874 typ_pattern_t *regex_filter);
5875
5876
5888extern status_t
5889 val_test_regex_filter (typ_pattern_t *pat,
5890 const xmlChar *strval,
5891 boolean *testres);
5892
5893
5905extern boolean
5906 val_is_regex_filter (const xmlChar *testval,
5907 boolean *is_posix);
5908
5909
5915extern void
5916 val_clean_meta_all (val_value_t *val);
5917
5918
5925extern boolean
5926 val_from_annotation (const val_value_t *val);
5927
5928
5932#ifdef __cplusplus
5933} /* end extern 'C' */
5934#endif
5935
5936#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.