yumapro  25.10-1
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/* macros to access simple value types */
379
381#define VAL_OBJ(V) (V)->obj
382
384#define VAL_OBJTYPE(V) (V)->obj->objtype
385
387#define VAL_TYPE(V) (V)->btyp
388
390#define VAL_HDR(V) (V)->hdr
391
393#define VAL_TYPDEF(V) (V)->typdef
394
396#define VAL_NSID(V) (V)->nsid
397
399#define VAL_NAME(V) (V)->name
400
402#define VAL_RES(V) (V)->res
403
405#define VAL_BOOL(V) (V)->v.boo
406
408#define VAL_EMPTY(V) (V)->v.boo
409
411#define VAL_DOUBLE(V) (V)->v.num.d
412
414#define VAL_STRING(V) (V)->v.str
415
420#define VAL_BINARY(V) (V)->v.binary.ustr
421
423#define VAL_BINARY_LEN(V) (V)->v.binary.ustrlen
424
426#define VAL_EXTERN_BINARY(V) (V)->extern_binary
427
429#define VAL_ENU(V) (&(V)->v.enu)
430
432#define VAL_ENUM(V) (V)->v.enu.val
433
437#define VAL_ENUM_NAME(V) (V)->v.enu.name
438
440#define VAL_FLAG(V) (V)->v.boo
441
443#define VAL_NUMPTR(V) (&(V)->v.num)
444
446#define VAL_NUM(V) (V)->v.num
447
449#define VAL_LONG(V) (V)->v.num.l
450
452#define VAL_INT(V) (V)->v.num.i
453
455#define VAL_INT8(V) ((int8)((V)->v.num.i))
456
458#define VAL_L_INT8(V) (V)->v.num.i
459
461#define VAL_INT16(V) ((int16)((V)->v.num.i))
462
464#define VAL_L_INT16(V) (V)->v.num.i
465
467#define VAL_INT32(V) (V)->v.num.i
468
470#define VAL_INT64(V) (V)->v.num.l
471
473#define VAL_STR(V) (V)->v.str
474
476#define VAL_INSTANCE_ID(V) (V)->v.str
477
479#define VAL_IDREF(V) (&(V)->v.idref)
480
482#define VAL_IDREF_NSID(V) (V)->v.idref.nsid
483
485#define VAL_IDREF_NAME(V) (V)->v.idref.name
486
488#define VAL_IDREF_IDENTITY(V) (V)->v.idref.identity
489
491#define VAL_UINT(V) (V)->v.num.u
492
494#define VAL_UINT8(V) ((uint8)((V)->v.num.u))
495
497#define VAL_L_UINT8(V) (V)->v.num.u
498
500#define VAL_UINT16(V) ((uint16)((V)->v.num.u))
501
503#define VAL_L_UINT16(V) (V)->v.num.u
504
506#define VAL_UINT32(V) (V)->v.num.u
507
509#define VAL_L_UINT32(V) (V)->v.num.u
510
512#define VAL_UINT64(V) (V)->v.num.ul
513
515#define VAL_ULONG(V) (V)->v.num.ul
516
520#define VAL_DEC64(V) (V)->v.num.dec.val
521
525#define VAL_DEC64_DIGITS(V) (V)->v.num.dec.digits
526
530#define VAL_DEC64_ZEROES(V) (V)->v.num.dec.zeroes
531
533#define VAL_LIST(V) (V)->v.list
534
536#define VAL_BITS VAL_LIST
537
538
540#define VAL_INTERN(V) (V)->v.intbuff
541
542
544#define VAL_EXTERN(V) (V)->v.fname
545
546
548#define VAL_IS_DELETED(V) ((V)->flags & VAL_FL_DELETED)
549
551#define VAL_CLR_DELETED(V) (V)->flags &= ~VAL_FL_DELETED
552
554#define VAL_MARK_DELETED(V) val_mark_deleted(V)
555
557#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
558
560#define VAL_LAST_MODIFIED(V) (V)->last_modified
561
563#define VAL_ETAG(V) (V)->etag
564
566#define VAL_BTYPE(V) (V)->btyp
567
569#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
570
572#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
573
575#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
576
578#define VAL_VAREXPR(V) val_get_varexpr(V)
579
583#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
584
586#define VAL_REMOVE_META(M) dlq_remove(M)
587
591#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
592
596#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
597
601#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
602
604#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
605
607#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
608
610#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
611
615#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
616
618#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
619
621#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
622
624#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
625
627#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
628
630#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
631
633#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
634
636#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
637
639#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
640
642#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
643
645#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
646
648#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
649
651#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
652
654#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
655
657#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
658
660#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
661
663#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
664
666#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
667
669#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
670
672#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
673
675#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
676
678#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
679
681#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
682
684#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
685
687#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
688
690#define VAL_CHILD_HDR_OBJ(H) (H)->obj
691
693#define VAL_CHILD_HDR_COUNT(H) (H)->count
694
696#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
697
699#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
700
702#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
703
704
709#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
710
712#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
713
715#define VAL_CLR_ADDEDIT_DELETED(V) (V)->flags &= ~VAL_FL_ADDEDIT_DELETED
716
717
722#define VAL_EDITOP(V) (V)->editop
723
724#define VAL_EXTERN_VALONLY(V) (V)->extern_valonly
725
729#define VAL_SET_DEFSET(V) (V)->flags |= VAL_FL_DEFSET
730
731
735#define VAL_CLR_DEFSET(V) (V)->flags &= ~VAL_FL_DEFSET
736
737/* Value node is from anydata that was replaced by datapath */
738#define VAL_FROM_ANYDATA(V) (V)->from_anydata
739
741#define VAL_EXTRA(V) (V)->val_extra
742
743
745#define VAL_IS_FORCE_CONFIG(V) ((V)->flags & VAL_FL_FORCE_CONFIG)
746
747#define VAL_SET_FORCE_CONFIG(V) (V)->flags |= VAL_FL_FORCE_CONFIG
748
752#define VAL_SET_HDR_RECREATED(V) (V)->flags |= VAL_FL_HDR_RECREATED
753
755#define VAL_IS_HDR_RECREATED(V) ((V)->flags & VAL_FL_HDR_RECREATED)
756
757
760/********************************************************************
761* *
762* T Y P E S *
763* *
764*********************************************************************/
765
783typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
784
785
792typedef void (*errfn_t) (const char *fstr, ...);
793
794
801/* pick a log indent function for dump_value */
802typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
803
804
808typedef struct logfns_t_ {
809 dumpfn_t dumpfn; /**< log dump callback */
810 errfn_t errorfn; /**< log error callback */
811 indentfn_t indentfn; /**< log indent callback */
812 boolean suppressVariableNames; /**< suppress variable names in output */
813 FILE *outputFile; /**< manager redirect to file output */
814} logfns_t;
815
816
818typedef struct val_idref_t_ {
819 xmlns_id_t nsid; /**< namespace ID */
821 xmlChar *name;
822 ncx_identity_t *identity; /**< ID back-ptr if found */
823} YPACK val_idref_t;
824
825
827typedef enum val_insert_mode_t_ {
828 VAL_INS_MODE_NONE, /**< not set */
829 VAL_INS_MODE_KEY, /**< YANG key attribute */
830 VAL_INS_MODE_VALUE, /**< YANG value attribute */
831 VAL_INS_MODE_POINT /**< YANG-API point param */
832} YPACK val_insert_mode_t;
833
834
836typedef enum val_dumpvalue_mode_t_ {
837 DUMP_VAL_NONE, /**< not set */
838 DUMP_VAL_STDOUT, /**< dump val to STDOUT */
839 DUMP_VAL_LOG, /**< dump val to main log */
840 DUMP_VAL_ALT_LOG, /**< dump val to alternate log */
841 DUMP_VAL_AUDIT_LOG, /**< dump val to audit log */
842} val_dumpvalue_mode_t;
843
844
846typedef struct val_editvars_t_ {
851 struct val_value_t_ *curparent; /**< track the real parent */
852 op_insertop_t insertop; /**< YANG insert operation */
853 xmlChar *insertstr; /**< saved value or key attr */
854 struct xpath_pcb_t_ *insertxpcb; /**< key attr for insert */
855 struct val_value_t_ *insertval; /**< back-ptr if before or after */
856 val_insert_mode_t insert_mode; /**< insert mode requested */
857 uint8 silprio; /**< 2nd SIL priority for server */
858 boolean operset; /**< nc:operation here */
859 void *pcookie; /**< user pointer cookie */
860 int icookie; /**< user integer cookie */
861 boolean is_move; /**< TRUE if YPATCH MOVE operation */
862 boolean skip_sil_partial; /**< TRUE if skip_sil_partial needed */
863 boolean deleted; /**< TRUE if deleted from commit_deletes */
864} YPACK val_editvars_t;
865
866
868typedef struct val_extra_t_ {
869
875 xmlChar *dname; /**< malloced name if needed */
876
883 void *getcb;
884
889 struct val_value_t_ *virtualval;
890
892 time_t cachetime;
893
898 struct xpath_pcb_t_ *xpathpcb;
899
900
904 plock_cb_t *plock[VAL_MAX_PLOCKS];
905
906
910 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
911
917 xmlChar *varexpr;
918
923 struct xpath_aio_cb_t_ *aiocb;
924
926 ncx_sm_mpid_t *mpid;
927
930 struct val_value_t_ *leafrefval;
931
932} YPACK val_extra_t;
933
934
939typedef struct val_value_t_ {
941 dlq_hdr_t qhdr;
942
944 struct obj_template_t_ *obj; /**< bptr to object def */
945 typ_def_t *typdef; /**< bptr to typdef if leaf */
946 const xmlChar *name; /**< back pointer to elname\n
947 * the dname field is moved to val_extra_t and only used when
948 * the value is constructed from dummy objects or no objects at all
949 */
950
951 struct val_value_t_ *parent; /**< back-ptr to parent if any */
952 struct val_child_hdr_t_ *hdr; /**< back-ptr to own child_hdr */
953
955 val_extra_t *val_extra;
956
957 uint32 flags; /**< internal status flags */
958
959 xmlns_id_t nsid; /**< namespace ID for this node */
960 ncx_btype_t btyp; /**< base type of this value */
961 ncx_data_class_t dataclass; /**< config or state data */
962
966 time_t last_modified;
967 ncx_etag_t etag; /**< ETag for RESTCONF */
968
982 dlq_hdr_t *metaQ; /**< Q of val_value_t */
983
987 val_editvars_t *editvars; /**< edit-vars from attrs */
988 op_editop_t editop; /**< needed for all edits */
989 status_t res; /**< validation result */
990
991 /* GET1 getcb moved to val_extra */
992 /* GET1 virtualval moved to val_extra */
993 /* GET1 cachetime moved to val_extra */
994
996 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
997
998 /* this field is used for NCX_BT_CHOICE
999 * If set, the object path for this node is really:
1000 * $this --> casobj --> casobj.parent --> $this.parent
1001 * the OBJ_TYP_CASE and OBJ_TYP_CHOICE nodes are skipped
1002 * inside an XML instance document
1003 *
1004 * replaced by val_get_casobj() function in val_util.h
1005 * struct obj_template_t_ *casobj;
1006 */
1007
1008 /* xpathpcb moved to val_extra_t */
1009
1010 /* back-ptr to the partial locks that are held
1011 * against this node
1012 * plock moved to val_extra
1013 */
1014
1015 /* back-ptr to the data access control rules that
1016 * reference this node
1017 * dataruleQ moved to val_extra
1018 */
1019
1020 /* malloced pointer to the variable expression found
1021 * if this val node is part of a data template.
1022 * The actual value in union v_ MUST be ignored if
1023 * varexpr string is non-NULL!!
1024 * varexpr moved to val_extra
1025 */
1026
1030 ncx_owner_id_t owner_id;
1031
1033 ncx_nmda_origin_t nmda_origin;
1034
1036 boolean extern_valonly;
1037
1039 boolean extern_binary;
1040
1048 boolean from_anydata;
1049
1059 union v_ {
1069 dlq_hdr_t child_hdrQ;
1070
1080 ncx_num_t num;
1081
1088 ncx_str_t str;
1089
1090 val_idref_t idref; /**< NCX_BT_IDREF */
1091 ncx_binary_t binary; /**< NCX_BT_BINARY */
1092 ncx_list_t list; /**< NCX_BT_BITS, NCX_BT_SLIST */
1093 boolean boo; /**< NCX_BT_EMPTY, NCX_BT_BOOLEAN */
1094 ncx_enum_t enu; /**< NCX_BT_UNION, NCX_BT_ENUM */
1095 xmlChar *fname; /**< NCX_BT_EXTERN */
1096 xmlChar *intbuff; /**< NCX_BT_INTERN */
1097 } YPACK v;
1098} YPACK val_value_t;
1099
1100
1104typedef struct val_child_hdr_t_ {
1105 dlq_hdr_t qhdr; /**< queue header */
1106
1112 struct obj_template_t_ *obj;
1113
1117 struct val_tree_t_ *tree;
1118
1123 dlq_hdr_t que;
1124
1126 uint32 count;
1127
1129 uint8 flags;
1130} YPACK val_child_hdr_t;
1131
1132
1143typedef struct val_index_t_ {
1144 dlq_hdr_t qhdr; /**< queue header */
1145 val_value_t *val; /**< points to a child node */
1146} YPACK val_index_t;
1147
1148
1157typedef boolean
1158 (*val_test_fn_t) (const val_value_t *val);
1159
1160
1170typedef boolean
1171 (*val_walker_fn_t) (val_value_t *val,
1172 void *cookie1,
1173 void *cookie2);
1174
1175
1176
1186typedef boolean
1187 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1188 void *cookie1,
1189 void *cookie2);
1190
1191
1192
1202typedef boolean
1203 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1204 void *cookie);
1205
1206
1216typedef boolean
1217 (*val_test2_fn_t) (val_value_t *val,
1218 void *cookie);
1219
1220
1224/********************************************************************
1225* *
1226* F U N C T I O N S *
1227* *
1228*********************************************************************/
1229
1247extern val_value_t *
1248 val_new_value (void);
1249
1250
1259extern void
1260 val_init_value (val_value_t *val);
1261
1262
1273extern void
1274 val_init_complex (val_value_t *val,
1275 ncx_btype_t btyp);
1276
1277
1287extern void
1288 val_init_virtual (val_value_t *val,
1289 void *cbfn,
1290 struct obj_template_t_ *obj);
1291
1292
1302extern void
1303 val_init_from_template (val_value_t *val,
1304 struct obj_template_t_ *obj);
1305
1306
1316extern void
1317 val_reinit_from_template (val_value_t *val,
1318 struct obj_template_t_ *obj);
1319
1320
1330extern void
1331 val_free_value (val_value_t *val);
1332
1333
1341extern void
1342 val_set_name (val_value_t *val,
1343 const xmlChar *name,
1344 uint32 namelen);
1345
1346
1356extern status_t
1357 val_force_dname (val_value_t *val);
1358
1359
1368extern void
1369 val_set_qname (val_value_t *val,
1370 xmlns_id_t nsid,
1371 const xmlChar *name,
1372 uint32 namelen);
1373
1374
1384extern status_t
1385 val_string_ok (typ_def_t *typdef,
1386 ncx_btype_t btyp,
1387 const xmlChar *strval);
1388
1389
1404extern status_t
1405 val_string_ok_errinfo (typ_def_t *typdef,
1406 ncx_btype_t btyp,
1407 const xmlChar *strval,
1408 ncx_errinfo_t **errinfo);
1409
1410
1426status_t
1427 val_binary_ok_errinfo (typ_def_t *typdef,
1428 const xmlChar *strval,
1429 val_value_t *val,
1430 ncx_errinfo_t **errinfo);
1431
1432
1450extern status_t
1451 val_string_ok_ex (ses_cb_t *scb,
1452 typ_def_t *typdef,
1453 ncx_btype_t btyp,
1454 const xmlChar *strval,
1455 ncx_errinfo_t **errinfo,
1456 boolean logerrors);
1457
1458
1477extern status_t
1478 val_string_ok_ex2 (ses_cb_t *scb,
1479 typ_def_t *typdef,
1480 ncx_btype_t btyp,
1481 const xmlChar *strval,
1482 ncx_errinfo_t **errinfo,
1483 boolean logerrors,
1484 boolean is_defval);
1485
1486
1507extern status_t
1508 val_list_ok (typ_def_t *typdef,
1509 ncx_btype_t btyp,
1510 ncx_list_t *list);
1511
1512
1530extern status_t
1531 val_list_ok_errinfo (typ_def_t *typdef,
1532 ncx_btype_t btyp,
1533 ncx_list_t *list,
1534 ncx_errinfo_t **errinfo);
1535
1536
1549extern status_t
1550 val_enum_ok (typ_def_t *typdef,
1551 const xmlChar *enumval,
1552 int32 *retval,
1553 const xmlChar **retstr);
1554
1555
1565extern status_t
1566 val_bit_ok (typ_def_t *typdef,
1567 const xmlChar *bitname,
1568 uint32 *position);
1569
1570
1571
1572
1582extern status_t
1583 val_bitpos_ok (typ_def_t *typdef,
1584 uint32 position,
1585 const xmlChar **name);
1586
1587
1606extern status_t
1607 val_idref_ok (typ_def_t *typdef,
1608 const xmlChar *qname,
1609 xmlns_id_t nsid,
1610 const xmlChar **name,
1611 ncx_identity_t **id);
1612
1613
1638extern status_t
1639 val_idref_ok_ex (typ_def_t *typdef,
1640 const xmlChar *qname,
1641 xmlns_id_t nsid,
1642 boolean is_json,
1643 ncx_module_t *impmod,
1644 boolean or_self,
1645 const xmlChar **name,
1646 ncx_identity_t **id);
1647
1648
1665extern status_t
1666 val_parse_idref (ncx_module_t *mod,
1667 const xmlChar *qname,
1668 xmlns_id_t *nsid,
1669 const xmlChar **name,
1670 ncx_identity_t **id);
1671
1672
1690extern status_t
1691 val_parse_idref_rootcb (ncx_module_t *mod,
1692 const xmlChar *qname,
1693 xmlns_id_t *nsid,
1694 const xmlChar **name,
1695 ncx_identity_t **id,
1696 ncx_sm_rootcb_t *rootcb);
1697
1698
1708extern status_t
1709 val_range_ok (typ_def_t *typdef,
1710 ncx_btype_t btyp,
1711 const ncx_num_t *num);
1712
1713
1725extern status_t
1726 val_range_ok_errinfo (typ_def_t *typdef,
1727 ncx_btype_t btyp,
1728 const ncx_num_t *num,
1729 ncx_errinfo_t **errinfo);
1730
1731
1739extern status_t
1740 val_pattern_ok (typ_def_t *typdef,
1741 const xmlChar *strval);
1742
1743
1756extern status_t
1757 val_pattern_ok_errinfo (typ_def_t *typdef,
1758 const xmlChar *strval,
1759 ncx_errinfo_t **errinfo);
1760
1761
1771extern status_t
1772 val_simval_ok (typ_def_t *typdef,
1773 const xmlChar *simval);
1774
1775
1776
1788extern status_t
1789 val_simval_ok_errinfo (typ_def_t *typdef,
1790 const xmlChar *simval,
1791 ncx_errinfo_t **errinfo);
1792
1793
1807extern status_t
1808 val_simval_ok_ex (typ_def_t *typdef,
1809 const xmlChar *simval,
1810 ncx_errinfo_t **errinfo,
1811 ncx_module_t *mod);
1812
1813
1829extern status_t
1830 val_simval_ok_max (typ_def_t *typdef,
1831 const xmlChar *simval,
1832 ncx_errinfo_t **errinfo,
1833 ncx_module_t *mod,
1834 boolean logerrors);
1835
1854extern status_t
1855 val_simval_ok_max2 (typ_def_t *typdef,
1856 const xmlChar *simval,
1857 ncx_errinfo_t **errinfo,
1858 ncx_module_t *mod,
1859 boolean logerrors,
1860 boolean nocond);
1861
1862
1882status_t
1883 val_simval_ok_max3 (typ_def_t *typdef,
1884 const xmlChar *simval,
1885 ncx_errinfo_t **errinfo,
1886 ncx_module_t *mod,
1887 boolean logerrors,
1888 boolean nocond,
1889 boolean is_defval);
1890
1891
1903extern status_t
1904 val_union_ok (typ_def_t *typdef,
1905 const xmlChar *strval,
1906 val_value_t *retval);
1907
1908
1922extern status_t
1923 val_union_ok_errinfo (typ_def_t *typdef,
1924 const xmlChar *strval,
1925 val_value_t *retval,
1926 ncx_errinfo_t **errinfo);
1927
1928
1946extern status_t
1947 val_union_ok_ex (typ_def_t *typdef,
1948 const xmlChar *strval,
1949 val_value_t *retval,
1950 ncx_errinfo_t **errinfo,
1951 ncx_module_t *mod,
1952 typ_def_t **match_typdef);
1953
1954
1975extern status_t
1976 val_union_ok_binary (typ_def_t *typdef,
1977 const xmlChar *binstr,
1978 uint32 binstrlen,
1979 val_value_t *retval,
1980 ncx_errinfo_t **errinfo,
1981 typ_def_t **match_typdef);
1982
1983
2003extern status_t
2004 val_union_ok_full (typ_def_t *typdef,
2005 const xmlChar *strval,
2006 val_value_t *contextval,
2007 val_value_t *rootval,
2008 val_value_t *retval,
2009 ncx_errinfo_t **errinfo);
2010
2011
2018extern dlq_hdr_t *
2019 val_get_metaQ (val_value_t *val);
2020
2021
2029extern val_value_t *
2030 val_get_first_meta (dlq_hdr_t *queue);
2031
2032
2040extern val_value_t *
2041 val_get_first_meta_val (val_value_t *val);
2042
2043
2051extern val_value_t *
2052 val_get_next_meta (val_value_t *curnode);
2053
2054
2062extern boolean
2063 val_meta_empty (val_value_t *val);
2064
2065
2074extern val_value_t *
2075 val_find_meta (val_value_t *val,
2076 xmlns_id_t nsid,
2077 const xmlChar *name);
2078
2079
2089extern boolean
2090 val_meta_match (val_value_t *val,
2091 val_value_t *metaval);
2092
2093
2102extern uint32
2103 val_metadata_inst_count (val_value_t *val,
2104 xmlns_id_t nsid,
2105 const xmlChar *name);
2106
2107
2118extern void
2119 val_dump_value (val_value_t *val,
2120 int32 startindent,
2121 log_debug_t lvl);
2122
2123
2124
2135extern void
2136 val_dump_value_config (val_value_t *val,
2137 int32 startindent,
2138 log_debug_t lvl);
2139
2140
2152extern void
2153 val_dump_value_ex (val_value_t *val,
2154 int32 startindent,
2155 ncx_display_mode_t display_mode,
2156 log_debug_t lvl);
2157
2158
2169extern void
2170 val_dump_alt_value (val_value_t *val,
2171 int32 startindent,
2172 log_debug_t lvl);
2173
2174
2184extern void
2185 val_stdout_value (val_value_t *val,
2186 int32 startindent,
2187 log_debug_t lvl);
2188
2189
2200extern void
2201 val_stdout_value_ex (val_value_t *val,
2202 int32 startindent,
2203 ncx_display_mode_t display_mode,
2204 log_debug_t lvl);
2205
2206
2224extern void
2225 val_dump_value_max (val_value_t *val,
2226 int32 startindent,
2227 int32 indent_amount,
2228 val_dumpvalue_mode_t dumpmode,
2229 ncx_display_mode_t display_mode,
2230 boolean with_meta,
2231 boolean configonly,
2232 log_debug_t lvl);
2233
2234
2252extern void
2253 val_dump_value_nonconfig (val_value_t *val,
2254 int32 startindent,
2255 int32 indent_amount,
2256 val_dumpvalue_mode_t dumpmode,
2257 ncx_display_mode_t display_mode,
2258 boolean with_meta,
2259 log_debug_t lvl);
2260
2261
2283extern void
2284 val_dump_value_full (val_value_t *val,
2285 int32 startindent,
2286 int32 indent_amount,
2287 val_dumpvalue_mode_t dumpmode,
2288 ncx_display_mode_t display_mode,
2289 boolean with_meta,
2290 boolean configonly,
2291 boolean conf_mode,
2292 boolean expand_varexpr,
2293 log_debug_t lvl,
2294 logfns_t *overrideOutput);
2295
2296
2319extern void
2320 val_dump_value_full2 (val_value_t *val,
2321 int32 startindent,
2322 int32 indent_amount,
2323 val_dumpvalue_mode_t dumpmode,
2324 ncx_display_mode_t display_mode,
2325 boolean with_meta,
2326 boolean configonly,
2327 boolean conf_mode,
2328 boolean expand_varexpr,
2329 boolean withdef,
2330 log_debug_t lvl,
2331 logfns_t *overrideOutput);
2332
2333
2346extern status_t
2347 val_set_string (val_value_t *val,
2348 const xmlChar *valname,
2349 const xmlChar *valstr);
2350
2351
2367extern status_t
2368 val_set_string2 (val_value_t *val,
2369 const xmlChar *valname,
2370 typ_def_t *typdef,
2371 const xmlChar *valstr,
2372 uint32 valstrlen);
2373
2374
2395extern status_t
2396 val_set_string3 (val_value_t *val,
2397 const xmlChar *valname,
2398 typ_def_t *typdef,
2399 const xmlChar *valstr,
2400 uint32 valstrlen,
2401 boolean is_dblquote);
2402
2403
2419extern status_t
2420 val_set_binary (const xmlChar *valstr,
2421 uint32 valstrlen,
2422 val_value_t *val);
2423
2424
2425
2435extern status_t
2436 val_reset_empty (val_value_t *val);
2437
2438
2451extern status_t
2452 val_set_simval (val_value_t *val,
2453 typ_def_t *typdef,
2454 xmlns_id_t nsid,
2455 const xmlChar *valname,
2456 const xmlChar *valstr);
2457
2458
2501extern status_t
2502 val_set_simval_str (val_value_t *val,
2503 typ_def_t *typdef,
2504 xmlns_id_t nsid,
2505 const xmlChar *valname,
2506 uint32 valnamelen,
2507 const xmlChar *valstr);
2508
2509
2530extern status_t
2531 val_set_simval_binary (val_value_t *val,
2532 const xmlChar *binstr,
2533 uint32 binstrlen);
2534
2535
2579extern status_t
2580 val_set_simval_max (val_value_t *val,
2581 typ_def_t *typdef,
2582 xmlns_id_t nsid,
2583 const xmlChar *valname,
2584 uint32 valnamelen,
2585 const xmlChar *valstr,
2586 uint32 valstrlen);
2587
2588
2602extern val_value_t *
2603 val_make_simval (typ_def_t *typdef,
2604 xmlns_id_t nsid,
2605 const xmlChar *valname,
2606 const xmlChar *valstr,
2607 status_t *res);
2608
2609
2623extern val_value_t *
2624 val_make_string (xmlns_id_t nsid,
2625 const xmlChar *valname,
2626 const xmlChar *valstr);
2627
2628
2639extern val_value_t *
2640 val_make_binary (xmlns_id_t nsid,
2641 const xmlChar *valname,
2642 const xmlChar *valstr,
2643 uint32 valstrlen);
2644
2645
2657extern status_t
2658 val_merge (const val_value_t *src,
2659 val_value_t *dest);
2660
2661
2668extern val_value_t *
2669 val_clone (const val_value_t *val);
2670
2671
2679extern val_value_t *
2680 val_clone2 (const val_value_t *val);
2681
2682
2696extern val_value_t *
2697 val_clone_config_data (const val_value_t *val,
2698 status_t *res);
2699
2700
2701
2718extern val_value_t *
2719 val_clone_config_newval (const val_value_t *val,
2720 status_t *res);
2721
2742extern val_value_t *
2743 val_clone_config_newval_keys_only (const val_value_t *val,
2744 status_t *res);
2745
2746
2766extern val_value_t *
2767 val_clone_config_save (const val_value_t *val,
2768 status_t *res);
2769
2770
2791extern val_value_t *
2792 val_clone_config_false (const val_value_t *val,
2793 status_t *res);
2794
2795
2806extern status_t
2807 val_replace (val_value_t *val,
2808 val_value_t *copy);
2809
2810
2820extern status_t
2821 val_replace_str (const xmlChar *str,
2822 uint32 stringlen,
2823 val_value_t *copy);
2824
2825
2836extern status_t
2837 val_fast_replace_string (const xmlChar *str,
2838 uint32 stringlen,
2839 val_value_t *copy);
2840
2841
2848extern void
2849 val_replace_stringval (val_value_t *val,
2850 const xmlChar *str);
2851
2852
2869extern void
2870 val_add_child (val_value_t *child,
2871 val_value_t *parent);
2872
2873
2885extern void
2886 val_add_child_sorted (val_value_t *child,
2887 val_value_t *parent);
2888
2889
2901extern void
2902 val_insert_child (val_value_t *child,
2903 val_value_t *current,
2904 val_value_t *parent);
2905
2906
2915extern void
2916 val_remove_child (val_value_t *child);
2917
2918
2928extern void
2929 val_swap_child (val_value_t *newchild,
2930 val_value_t *curchild);
2931
2932
2940extern val_value_t *
2941 val_first_child_match (const val_value_t *parent,
2942 const val_value_t *child);
2943
2944
2955extern val_value_t *
2956 val_first_child_match_fast (const val_value_t *parent,
2957 const val_value_t *child,
2958 val_value_t *lastmatch);
2959
2960
2972extern val_value_t *
2973 val_next_child_match (val_value_t *parent,
2974 val_value_t *child,
2975 val_value_t *curmatch);
2976
2977
2984extern val_value_t *
2985 val_next_child_same (val_value_t *curchild);
2986
2987
2994extern val_value_t *
2995 val_get_first_child (const val_value_t *parent);
2996
2997
3004extern val_value_t *
3005 val_get_next_child (const val_value_t *curchild);
3006
3007
3014extern val_value_t *
3015 val_get_first_terminal_child (const val_value_t *parent);
3016
3017
3024extern val_value_t *
3025 val_get_next_terminal_child (const val_value_t *curchild);
3026
3027
3041extern val_value_t *
3042 val_find_child (const val_value_t *parent,
3043 const xmlChar *modname,
3044 const xmlChar *childname);
3045
3046
3060extern val_value_t *
3061 val_find_child_fast (const val_value_t *parent,
3062 xmlns_id_t nsid,
3063 const xmlChar *childname);
3064
3065
3074extern val_value_t *
3075 val_find_child_obj (const val_value_t *parent,
3076 const struct obj_template_t_ *chobj);
3077
3078
3093extern val_value_t *
3094 val_find_child_que (const dlq_hdr_t *childQ,
3095 xmlns_id_t nsid,
3096 const xmlChar *childname);
3097
3098
3112extern val_value_t *
3113 val_match_child (const val_value_t *parent,
3114 const xmlChar *modname,
3115 const xmlChar *childname);
3116
3117
3134extern val_value_t *
3135 val_match_child_count (const val_value_t *parent,
3136 const xmlChar *modname,
3137 const xmlChar *childname,
3138 uint32 *matchcount);
3139
3140
3157extern val_value_t *
3158 val_find_next_child (const val_value_t *parent,
3159 const xmlChar *modname,
3160 const xmlChar *childname,
3161 const val_value_t *curchild);
3162
3163
3177extern val_value_t *
3178 val_find_next_child_fast (const val_value_t *parent,
3179 const val_value_t *curchild);
3180
3181
3190extern val_value_t *
3191 val_first_child_name (val_value_t *parent,
3192 const xmlChar *name);
3193
3194
3203extern val_value_t *
3204 val_first_child_qname (val_value_t *parent,
3205 xmlns_id_t nsid,
3206 const xmlChar *name);
3207
3208
3218extern val_value_t *
3219 val_next_child_qname (val_value_t *parent,
3220 xmlns_id_t nsid,
3221 const xmlChar *name,
3222 val_value_t *curchild);
3223
3224
3242extern val_value_t *
3243 val_first_child_string (val_value_t *parent,
3244 const xmlChar *name,
3245 const xmlChar *strval);
3246
3247
3256extern uint32
3257 val_child_cnt (val_value_t *parent);
3258
3259
3269extern uint32
3270 val_child_inst_cnt (const val_value_t *parent,
3271 const xmlChar *modname,
3272 const xmlChar *name);
3273
3274
3282extern uint32
3283 val_get_child_inst_id (const val_value_t *parent,
3284 const val_value_t *child);
3285
3286
3293extern uint32
3294 val_liststr_count (const val_value_t *val);
3295
3296
3309extern boolean
3310 val_index_match (const val_value_t *val1,
3311 const val_value_t *val2);
3312
3313
3324extern int
3325 val_index_compare (const val_value_t *val1,
3326 const val_value_t *val2);
3327
3328
3360extern int32
3361 val_compare_max (const val_value_t *val1,
3362 const val_value_t *val2,
3363 boolean configonly,
3364 boolean childonly,
3365 boolean editing);
3366
3367
3404extern int32
3405 val_compare_max_def (const val_value_t *val1,
3406 const val_value_t *val2,
3407 boolean configonly,
3408 boolean childonly,
3409 boolean editing,
3410 boolean ignore_defaults);
3411
3412
3436extern int32
3437 val_compare_ex (const val_value_t *val1,
3438 const val_value_t *val2,
3439 boolean configonly);
3440
3441
3462extern int32
3463 val_compare (const val_value_t *val1,
3464 const val_value_t *val2);
3465
3466
3486extern int32
3487 val_compare_to_string (const val_value_t *val1,
3488 const xmlChar *strval2,
3489 status_t *res);
3490
3491
3513extern int32
3514 val_compare_to_string_len (const val_value_t *val1,
3515 const xmlChar *strval2,
3516 uint32 strval2len,
3517 status_t *res);
3518
3519
3526// extern int32
3527// val_compare_for_replace (const val_value_t *val1,
3528// const val_value_t *val2);
3529
3530
3549extern int32
3550 val_compare_for_edit (const val_value_t *val1,
3551 const val_value_t *val2,
3552 boolean ismerge);
3553
3554
3573extern int32
3574 val_compare_as_string (const val_value_t *val1,
3575 const val_value_t *val2,
3576 status_t *res);
3577
3578
3597extern status_t
3598 val_sprintf_simval_nc (xmlChar *buff,
3599 const val_value_t *val,
3600 uint32 *len);
3601
3602
3622extern status_t
3623 val_sprintf_simval_nc_ex (xmlChar *buff,
3624 const val_value_t *val,
3625 boolean url_encode,
3626 uint32 *len);
3627
3628
3629
3630
3653extern status_t
3654 val_sprintf_simval_xpath (xmlChar *buff,
3655 const val_value_t *val,
3656 boolean url_encode,
3657 xmlChar quot_char,
3658 uint32 *len);
3659
3660
3661
3686extern status_t
3687 val_sprintf_binary (xmlChar *buff,
3688 const val_value_t *val,
3689 uint32 maxlen,
3690 uint32 *len);
3691
3692
3705extern xmlChar *
3706 val_make_sprintf_string (const val_value_t *val);
3707
3708
3721extern status_t
3722 val_resolve_scoped_name (val_value_t *val,
3723 const xmlChar *name,
3724 val_value_t **chval);
3725
3726
3733extern ncx_iqual_t
3734 val_get_iqualval (const val_value_t *val);
3735
3736
3755extern boolean
3756 val_duplicates_allowed (val_value_t *val);
3757
3758
3766extern boolean
3767 val_has_content (const val_value_t *val);
3768
3769
3778extern boolean
3779 val_has_content_ex (const val_value_t *val);
3780
3781
3789extern boolean
3790 val_has_index (const val_value_t *val);
3791
3792
3799extern val_index_t *
3800 val_get_first_index (const val_value_t *val);
3801
3802
3809extern val_index_t *
3810 val_get_next_index (const val_index_t *valindex);
3811
3812
3819extern uint32
3820 val_get_index_count (const val_value_t *val);
3821
3822
3834extern status_t
3835 val_parse_meta (ses_cb_t *scb,
3836 typ_def_t *typdef,
3837 xml_attr_t *attr,
3838 val_value_t *retval);
3839
3840
3847extern void
3848 val_set_extern (val_value_t *val,
3849 xmlChar *fname);
3850
3851
3859extern void
3860 val_set_intern (val_value_t *val,
3861 xmlChar *intbuff);
3862
3863
3882extern boolean
3883 val_fit_oneline (const val_value_t *val,
3884 uint32 linesize,
3885 boolean isxml);
3886
3887
3896extern boolean
3897 val_create_allowed (const val_value_t *val);
3898
3899
3908extern boolean
3909 val_delete_allowed (const val_value_t *val);
3910
3911
3919extern boolean
3920 val_is_config_data (const val_value_t *val);
3921
3922
3931extern boolean
3932 val_is_config_save (const val_value_t *val);
3933
3934
3950extern boolean
3951 val_is_config_false (const val_value_t *val);
3952
3953
3963extern boolean
3964 val_is_virtual (const val_value_t *val);
3965
3966
3996extern val_value_t *
3997 val_get_virtual_value (ses_cb_t *scb,
3998 val_value_t *val,
3999 status_t *res);
4000
4001
4021extern boolean
4022 val_is_default (val_value_t *val);
4023
4024
4034extern boolean
4035 val_is_real (const val_value_t *val);
4036
4037
4044extern xmlns_id_t
4045 val_get_parent_nsid (const val_value_t *val);
4046
4047
4059extern uint32
4060 val_instance_count (val_value_t *val,
4061 const xmlChar *modname,
4062 const xmlChar *objname);
4063
4064
4079extern uint32
4080 val_instance_count_fast (val_value_t *val,
4081 xmlns_id_t nsid,
4082 const xmlChar *objname,
4083 val_value_t **firstval);
4084
4085
4098extern uint32
4099 val_instance_count_fast2 (val_value_t *val,
4100 val_value_t *startval);
4101
4102
4118extern void
4119 val_set_extra_instance_errors (val_value_t *val,
4120 const xmlChar *modname,
4121 const xmlChar *objname,
4122 uint32 maxelems);
4123
4124
4133extern boolean
4134 val_need_quotes (const xmlChar *str);
4135
4136
4146extern boolean
4147 val_has_dquotes (const xmlChar *str);
4148
4157extern boolean
4158 val_need_dquotes (const xmlChar *str);
4159
4160
4168extern boolean
4169 val_all_whitespace (const xmlChar *str);
4170
4171
4180extern boolean
4181 val_any_whitespace (const xmlChar *str,
4182 uint32 len);
4183
4184
4193extern boolean
4194 val_match_metaval (const xml_attr_t *attr,
4195 xmlns_id_t nsid,
4196 const xmlChar *name);
4197
4198
4205extern boolean
4206 val_get_dirty_flag (const val_value_t *val);
4207
4208
4215extern boolean
4216 val_get_subtree_dirty_flag (const val_value_t *val);
4217
4218
4224extern void
4225 val_set_subtree_dirty_up (val_value_t *val);
4226
4227
4235extern void
4236 val_set_dirty_flag (val_value_t *val,
4237 boolean clear_def);
4238
4239
4245extern void
4246 val_set_child_deleted_flag (val_value_t *val);
4247
4248
4255extern boolean
4256 val_get_child_deleted_flag (val_value_t *val);
4257
4258
4271extern void
4272 val_clear_dirty_flag (val_value_t *val,
4273 time_t *timestamp,
4274 ncx_transaction_id_t txid,
4275 boolean is_delete,
4276 boolean do_clear_default);
4277
4278
4284extern void
4285 val_clear_child_dirty_flag (val_value_t *val);
4286
4287
4294extern boolean
4295 val_dirty_subtree (const val_value_t *val);
4296
4297
4310extern void
4311 val_clean_tree (val_value_t *val);
4312
4313
4320extern uint32
4321 val_get_nest_level (val_value_t *val);
4322
4323
4332extern val_value_t *
4333 val_get_first_leaf (val_value_t *val);
4334
4335
4343extern const xmlChar *
4344 val_get_mod_name (const val_value_t *val);
4345
4346
4354extern const xmlChar *
4355 val_get_mod_prefix (const val_value_t *val);
4356
4357
4364extern xmlns_id_t
4365 val_get_nsid (const val_value_t *val);
4366
4367
4374extern ncx_sid_t
4375 val_get_yang_sid (const val_value_t *val);
4376
4377
4384extern void
4385 val_change_nsid (val_value_t *val,
4386 xmlns_id_t nsid);
4387
4388
4395extern void
4396 val_change_nsid2 (val_value_t *val,
4397 xmlns_id_t nsid);
4398
4399
4406extern void
4407 val_change_nsid3 (val_value_t *val,
4408 xmlns_id_t nsid);
4409
4410
4422extern val_value_t *
4423 val_make_from_insertxpcb (val_value_t *sourceval,
4424 status_t *res);
4425
4426
4433extern const typ_def_t *
4434 val_get_typdef (const val_value_t *val);
4435
4436
4444extern boolean
4445 val_set_by_default (const val_value_t *val);
4446
4447
4455extern boolean
4456 val_has_withdef_default (const val_value_t *val);
4457
4458
4464extern void
4465 val_set_withdef_default (val_value_t *val);
4466
4467
4475extern boolean
4476 val_is_metaval (const val_value_t *val);
4477
4478
4486extern void
4487 val_move_children (val_value_t *srcval,
4488 val_value_t *destval);
4489
4490
4498extern void
4499 val_move_nonconfig_children (val_value_t *srcval,
4500 val_value_t *destval);
4501
4521extern status_t
4522 val_cvt_generic (val_value_t *val);
4523
4524
4533extern status_t
4534 val_set_pcookie (val_value_t *val,
4535 void *pcookie);
4536
4537
4546extern status_t
4547 val_set_icookie (val_value_t *val,
4548 int icookie);
4549
4550
4558extern void *
4559 val_get_pcookie (val_value_t *val);
4560
4561
4569extern int
4570 val_get_icookie (val_value_t *val);
4571
4572
4580extern status_t
4581 val_delete_default_leaf (val_value_t *val);
4582
4583
4593extern status_t
4594 val_delete_default_leaf_list (val_value_t *val);
4595
4596
4602extern void
4603 val_force_empty (val_value_t *val);
4604
4605
4613extern status_t
4614 val_delete_default_npcon (val_value_t *val);
4615
4616
4625extern void
4626 val_move_fields_for_xml (val_value_t *srcval,
4627 val_value_t *destval,
4628 boolean movemeta);
4629
4630
4638extern void
4639 val_move_metadata (val_value_t *srcval,
4640 val_value_t *destval);
4641
4642
4649extern val_index_t *
4650 val_get_first_key (val_value_t *val);
4651
4652
4659extern val_index_t *
4660 val_get_last_key (val_value_t *val);
4661
4662
4669extern val_index_t *
4670 val_get_next_key (val_index_t *curkey);
4671
4672
4679extern val_index_t *
4680 val_get_prev_key (val_index_t *curkey);
4681
4682
4689extern void
4690 val_remove_key (val_value_t *keyval);
4691
4692
4699extern val_value_t *
4700 val_new_deleted_value (void);
4701
4702
4710extern status_t
4711 val_new_editvars (val_value_t *val);
4712
4713
4721extern void
4722 val_free_editvars (val_value_t *val);
4723
4724
4730extern void
4731 val_free_solo_editvars (val_editvars_t *editvars);
4732
4733
4744extern boolean
4745 val_all_np_containers (val_value_t *val);
4746
4747
4757extern status_t
4758 val_sprintf_etag (val_value_t *val,
4759 xmlChar *buff,
4760 int32 buffsize);
4761
4762
4769extern time_t *
4770 val_get_last_modified (val_value_t *val);
4771
4772
4778extern void
4779 val_force_default (val_value_t *val);
4780
4789extern void
4790 val_set_all_tags (val_value_t *val,
4791 time_t *timestamp,
4792 ncx_transaction_id_t txid);
4793
4794
4801extern const xmlChar *
4802 val_get_owner (val_value_t *val);
4803
4804
4811extern ncx_owner_id_t
4812 val_get_owner_id (val_value_t *val);
4813
4814
4821extern boolean
4822 val_need_owner_string (val_value_t *val);
4823
4824
4831extern void
4832 val_delete_children (val_value_t *val);
4833
4834
4840extern void
4841 val_clean_value (val_value_t *val);
4842
4843
4852extern boolean
4853 val_find_bit (val_value_t *val,
4854 const xmlChar *bitname);
4855
4856
4864extern boolean
4865 val_has_children (const val_value_t *val);
4866
4867
4875extern status_t
4876 val_add_test_valindex (val_value_t *parentval,
4877 val_value_t *keyval);
4878
4879
4886extern const xmlChar *
4887 val_get_yang_typename (val_value_t *val);
4888
4889
4896extern void
4897 val_set_force_config (val_value_t *val,
4898 boolean is_config);
4899
4900
4907extern void
4908 val_clear_defvalset_flag (val_value_t *val);
4909
4910
4919extern status_t
4920 val_clone_valQ (dlq_hdr_t *valQ,
4921 dlq_hdr_t *return_valQ);
4922
4923
4931extern void
4932 val_clean_valQ (dlq_hdr_t *valQ);
4933
4934
4944extern boolean
4945 val_is_value_set (val_value_t *val);
4946
4947
4955extern uint32
4956 val_url_encode_string (const xmlChar *str,
4957 xmlChar *buff);
4958
4959
4960
4972extern status_t
4973 val_quote_encode_string (const xmlChar *str,
4974 xmlChar quot_char,
4975 xmlChar *buff,
4976 uint32 *retlen);
4977
4978
4987extern void
4988 val_convert_any_to_container (val_value_t *val);
4989
4990
4997extern void
4998 val_clean_index_chain (val_value_t *val);
4999
5000
5008extern boolean
5009 val_pattern_match (const xmlRegexpPtr pattern,
5010 const xmlChar *strval);
5011
5012
5021extern boolean
5022 val_ocpattern_match (const regex_t *ocpattern,
5023 const xmlChar *strval);
5024
5025
5035extern boolean
5036 val_idref_derived_from (ncx_module_t *impmod,
5037 val_value_t *testval,
5038 const xmlChar *qname,
5039 boolean or_self);
5040
5041
5052extern status_t
5053 val_set_sil_priority (val_value_t *val,
5054 uint8 silprio);
5055
5056
5063extern uint8
5064 val_get_sil_priority (val_value_t *val);
5065
5066
5075extern const xmlChar *
5076 val_find_bit_name (val_value_t *val,
5077 uint32 bitpos);
5078
5079
5089extern const xmlChar *
5090 val_find_enum_name (val_value_t *val,
5091 int32 enunum);
5092
5093
5105extern const xmlChar *
5106 val_find_enum_name2 (ncx_btype_t btyp,
5107 typ_def_t *typdef,
5108 int32 enunum);
5109
5110
5120extern void
5121 val_mark_deleted (val_value_t *val);
5122
5123
5131extern void
5132 val_mark_undeleted (val_value_t *val);
5133
5134
5145extern boolean
5146 val_has_conditional_value (val_value_t *val);
5147
5148
5159extern val_value_t *
5160 val_convert_leafref (const val_value_t *val);
5161
5162
5173extern val_value_t *
5174 val_convert_leafref_ext (val_value_t *val);
5175
5176
5199extern int32
5200 val_compare_for_topreplace (const val_value_t *val1,
5201 const val_value_t *val2);
5202
5203
5231extern int32
5232 val_compare_for_topreplace_simple (const val_value_t *val1,
5233 const val_value_t *val2);
5234
5235
5243extern boolean
5244 val_has_complex_child (const val_value_t *val);
5245
5246
5254extern status_t
5255 val_add_meta (val_value_t *metaval,
5256 val_value_t *val);
5257
5258
5265extern val_value_t *
5266 val_find_root (val_value_t *val);
5267
5268
5275extern status_t
5276 val_set_canonical (val_value_t *val);
5277
5278
5286extern typ_def_t *
5287 val_get_leafref_typdef (val_value_t *val);
5288
5289
5309extern boolean
5310 val_ascendant_compare (val_value_t *val1,
5311 val_value_t *val2);
5312
5313
5320extern const xmlChar *
5321 val_get_dname (const val_value_t *val);
5322
5323
5333extern status_t
5334 val_set_dname (val_value_t *val,
5335 const xmlChar *dname);
5336
5337
5348extern status_t
5349 val_set_dname2 (val_value_t *val,
5350 const xmlChar *dname,
5351 uint32 dnamelen);
5352
5353
5361extern status_t
5362 val_new_extra (val_value_t *val);
5363
5364
5371extern const xmlChar *
5372 val_get_varexpr (const val_value_t *val);
5373
5374
5382extern status_t
5383 val_set_varexpr (val_value_t *val,
5384 const xmlChar *varexpr);
5385
5386
5392extern void
5393 val_clear_varexpr (val_value_t *val);
5394
5395
5401extern void
5402 val_set_wildcard_string (val_value_t *val);
5403
5404
5411#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5412
5413
5421extern status_t
5422 val_copy_editvars (const val_value_t *val,
5423 val_value_t *copy);
5424
5425
5434extern status_t
5435 val_set_skip_sil_partial (val_value_t *val);
5436
5437
5444extern boolean
5445 val_get_skip_sil_partial (const val_value_t *val);
5446
5447
5458extern typ_def_t *
5459 val_get_leafref_typdef_ex (val_value_t *val,
5460 boolean union_check);
5461
5462
5463
5475extern boolean
5476 val_is_default_npcon (val_value_t *val);
5477
5478
5486extern status_t
5487 val_identity_ok (typ_def_t *typdef,
5488 ncx_identity_t *ident);
5489
5490
5505extern status_t
5506 val_highest_bit_set (const val_value_t *val,
5507 uint32 *count,
5508 uint32 *pos);
5509
5510
5524extern status_t
5525 val_first_bit_set (const val_value_t *val,
5526 const ncx_lmem_t **lmem,
5527 uint32 *pos);
5528
5529
5544extern status_t
5545 val_next_bit_set (const val_value_t *val,
5546 const ncx_lmem_t *lmem,
5547 const ncx_lmem_t **nextlmem,
5548 uint32 *pos);
5549
5556extern struct xpath_aio_cb_t_ *
5557 val_get_aiocb (const val_value_t *val);
5558
5559
5567extern status_t
5568 val_set_aiocb (val_value_t *val,
5569 struct xpath_aio_cb_t_ *aiocb);
5570
5571
5581extern ncx_sm_mpid_t *
5582 val_get_mpid (const val_value_t *val);
5583
5584
5593extern status_t
5594 val_set_mpid (val_value_t *val,
5595 struct ncx_sm_mpid_t_ *mpid);
5596
5597
5612extern status_t
5613 val_set_deleted_from_commit_deletes (val_value_t *val,
5614 boolean deleted);
5615
5616
5630extern boolean
5631 val_get_deleted_from_commit_deletes (const val_value_t *val);
5632
5633
5643extern void
5644 val_clean_leafref_cache (val_value_t *val);
5645
5646
5675extern status_t
5676 val_set_child_leaf (val_value_t *parent,
5677 const xmlChar *modname,
5678 const xmlChar *childname,
5679 const xmlChar *valstr);
5680
5681
5717extern status_t
5718 val_delete_child_leaf (val_value_t *parent,
5719 val_value_t *curparent,
5720 const xmlChar *modname,
5721 const xmlChar *childname);
5722
5726#ifdef __cplusplus
5727} /* end extern 'C' */
5728#endif
5729
5730#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.