yumapro  24.10-12
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_ENU(V) (&(V)->v.enu)
427
429#define VAL_ENUM(V) (V)->v.enu.val
430
434#define VAL_ENUM_NAME(V) (V)->v.enu.name
435
437#define VAL_FLAG(V) (V)->v.boo
438
440#define VAL_NUMPTR(V) (&(V)->v.num)
441
443#define VAL_NUM(V) (V)->v.num
444
446#define VAL_LONG(V) (V)->v.num.l
447
449#define VAL_INT(V) (V)->v.num.i
450
452#define VAL_INT8(V) ((int8)((V)->v.num.i))
453
455#define VAL_L_INT8(V) (V)->v.num.i
456
458#define VAL_INT16(V) ((int16)((V)->v.num.i))
459
461#define VAL_L_INT16(V) (V)->v.num.i
462
464#define VAL_INT32(V) (V)->v.num.i
465
467#define VAL_INT64(V) (V)->v.num.l
468
470#define VAL_STR(V) (V)->v.str
471
473#define VAL_INSTANCE_ID(V) (V)->v.str
474
476#define VAL_IDREF(V) (&(V)->v.idref)
477
479#define VAL_IDREF_NSID(V) (V)->v.idref.nsid
480
482#define VAL_IDREF_NAME(V) (V)->v.idref.name
483
485#define VAL_IDREF_IDENTITY(V) (V)->v.idref.identity
486
488#define VAL_UINT(V) (V)->v.num.u
489
491#define VAL_UINT8(V) ((uint8)((V)->v.num.u))
492
494#define VAL_L_UINT8(V) (V)->v.num.u
495
497#define VAL_UINT16(V) ((uint16)((V)->v.num.u))
498
500#define VAL_L_UINT16(V) (V)->v.num.u
501
503#define VAL_UINT32(V) (V)->v.num.u
504
506#define VAL_L_UINT32(V) (V)->v.num.u
507
509#define VAL_UINT64(V) (V)->v.num.ul
510
512#define VAL_ULONG(V) (V)->v.num.ul
513
517#define VAL_DEC64(V) (V)->v.num.dec.val
518
522#define VAL_DEC64_DIGITS(V) (V)->v.num.dec.digits
523
527#define VAL_DEC64_ZEROES(V) (V)->v.num.dec.zeroes
528
530#define VAL_LIST(V) (V)->v.list
531
533#define VAL_BITS VAL_LIST
534
535
537#define VAL_INTERN(V) (V)->v.intbuff
538
539
541#define VAL_EXTERN(V) (V)->v.fname
542
543
545#define VAL_IS_DELETED(V) ((V)->flags & VAL_FL_DELETED)
546
548#define VAL_CLR_DELETED(V) (V)->flags &= ~VAL_FL_DELETED
549
551#define VAL_MARK_DELETED(V) val_mark_deleted(V)
552
554#define VAL_UNMARK_DELETED(V) val_mark_undeleted(V)
555
557#define VAL_LAST_MODIFIED(V) (V)->last_modified
558
560#define VAL_ETAG(V) (V)->etag
561
563#define VAL_BTYPE(V) (V)->btyp
564
566#define VAL_SET_VAREXPR(V) (V)->flags |= VAL_FL_IS_VAREXPR
567
569#define VAL_CLR_VAREXPR(V) (V)->flags &= ~VAL_FL_IS_VAREXPR
570
572#define VAL_IS_VAREXPR(V) ((V)->flags & VAL_FL_IS_VAREXPR)
573
575#define VAL_VAREXPR(V) val_get_varexpr(V)
576
580#define VAL_SET_META(V) (V)->flags |= VAL_FL_META
581
583#define VAL_REMOVE_META(M) dlq_remove(M)
584
588#define VAL_SET_FIXED_VALUE(V) (V)->flags |= VAL_FL_FIXED_VALUE
589
593#define VAL_CLR_FIXED_VALUE(V) (V)->flags &= ~VAL_FL_FIXED_VALUE
594
598#define VAL_IS_FIXED_VALUE(V) ((V)->flags & VAL_FL_FIXED_VALUE)
599
601#define VAL_SET_EDIT2_MERGE(V) (V)->flags |= VAL_FL_EDIT2_MERGE
602
604#define VAL_CLR_EDIT2_MERGE(V) (V)->flags &= ~VAL_FL_EDIT2_MERGE
605
607#define VAL_IS_EDIT2_MERGE(V) ((V)->flags & VAL_FL_EDIT2_MERGE)
608
612#define VAL_SET_EXTERNAL(V) (V)->flags |= VAL_FL_EXTERNAL
613
615#define VAL_CLR_EXTERNAL(V) (V)->flags &= ~VAL_FL_EXTERNAL
616
618#define VAL_IS_EXTERNAL(V) ((V)->flags & VAL_FL_EXTERNAL)
619
621#define VAL_SET_VALUE_SET(V) (V)->flags |= VAL_FL_VALUE_SET
622
624#define VAL_CLR_VALUE_SET(V) (V)->flags &= ~VAL_FL_VALUE_SET
625
627#define VAL_IS_VALUE_SET(V) ((V)->flags & VAL_FL_VALUE_SET)
628
630#define VAL_SET_TEMP_XPATH(V) (V)->flags |= VAL_FL_TEMP_XPATH
631
633#define VAL_CLR_TEMP_XPATH(V) (V)->flags &= ~VAL_FL_TEMP_XPATH
634
636#define VAL_IS_TEMP_XPATH(V) ((V)->flags & VAL_FL_TEMP_XPATH)
637
639#define VAL_SET_UNCOMMITTED_DELETE(V) (V)->flags |= VAL_FL_UNCMTD_DELETE
640
642#define VAL_CLR_UNCOMMITTED_DELETE(V) (V)->flags &= ~VAL_FL_UNCMTD_DELETE
643
645#define VAL_IS_UNCOMMITTED_DELETE(V) ((V)->flags & VAL_FL_UNCMTD_DELETE)
646
648#define VAL_SET_RECREATED(V) (V)->flags |= VAL_FL_RECREATED
649
651#define VAL_CLR_RECREATED(V) (V)->flags &= ~VAL_FL_RECREATED
652
654#define VAL_IS_RECREATED(V) ((V)->flags & VAL_FL_RECREATED)
655
657#define VAL_SET_FROM_TEMPLATE(V) (V)->flags |= VAL_FL_FROM_TEMPLATE
658
660#define VAL_CLR_FROM_TEMPLATE(V) (V)->flags &= ~VAL_FL_FROM_TEMPLATE
661
663#define VAL_IS_FROM_TEMPLATE(V) ((V)->flags & VAL_FL_FROM_TEMPLATE)
664
666#define VAL_XPATHPCB(V) val_get_xpathpcb(V)
667
669#define VAL_SET_CANONICAL(V) (V)->flags |= VAL_FL_CANONICAL
670
672#define VAL_CLR_CANONICAL(V) (V)->flags &= ~VAL_FL_CANONICAL
673
675#define VAL_IS_CANONICAL(V) ((V)->flags & VAL_FL_CANONICAL)
676
678#define VAL_NMDA_ORIGIN(V) (V)->nmda_origin
679
681#define VAL_IS_INDEX(V) ((V)->flags & VAL_FL_IS_INDEX)
682
684#define VAL_SET_IS_INDEX(V) (V)->flags |= VAL_FL_IS_INDEX
685
687#define VAL_CHILD_HDR_OBJ(H) (H)->obj
688
690#define VAL_CHILD_HDR_COUNT(H) (H)->count
691
693#define VAL_SET_DEFCON_DELETED(V) (V)->flags |= VAL_FL_DEFCON_DELETED
694
696#define VAL_CLR_DEFCON_DELETED(V) (V)->flags &= ~VAL_FL_DEFCON_DELETED
697
699#define VAL_IS_DEFCON_DELETED(V) ((V)->flags & VAL_FL_DEFCON_DELETED)
700
701
706#define VAL_SET_ADDEDIT_DELETED(V) (V)->flags |= VAL_FL_ADDEDIT_DELETED
707
709#define VAL_IS_ADDEDIT_DELETED(V) ((V)->flags & VAL_FL_ADDEDIT_DELETED)
710
711
716#define VAL_EDITOP(V) (V)->editop
717
718#define VAL_EXTERN_VALONLY(V) (V)->extern_valonly
719
723#define VAL_SET_DEFSET(V) (V)->flags |= VAL_FL_DEFSET
724
725
729#define VAL_CLR_DEFSET(V) (V)->flags &= ~VAL_FL_DEFSET
730
731/* Value node is from anydata that was replaced by datapath */
732#define VAL_FROM_ANYDATA(V) (V)->from_anydata
733
734
738#define VAL_SET_HDR_RECREATED(V) (V)->flags |= VAL_FL_HDR_RECREATED
739
741#define VAL_IS_HDR_RECREATED(V) ((V)->flags & VAL_FL_HDR_RECREATED)
742
743
746/********************************************************************
747* *
748* T Y P E S *
749* *
750*********************************************************************/
751
769typedef void (*dumpfn_t) (log_debug_t level, const char *fstr, ...);
770
771
778typedef void (*errfn_t) (const char *fstr, ...);
779
780
787/* pick a log indent function for dump_value */
788typedef void (*indentfn_t) (log_debug_t level, int32 indentcnt);
789
790
794typedef struct logfns_t_ {
795 dumpfn_t dumpfn; /**< log dump callback */
796 errfn_t errorfn; /**< log error callback */
797 indentfn_t indentfn; /**< log indent callback */
798 boolean suppressVariableNames; /**< suppress variable names in output */
799 FILE *outputFile; /**< manager redirect to file output */
800} logfns_t;
801
802
804typedef struct val_idref_t_ {
805 xmlns_id_t nsid; /**< namespace ID */
807 xmlChar *name;
808 ncx_identity_t *identity; /**< ID back-ptr if found */
809} YPACK val_idref_t;
810
811
813typedef enum val_insert_mode_t_ {
814 VAL_INS_MODE_NONE, /**< not set */
815 VAL_INS_MODE_KEY, /**< YANG key attribute */
816 VAL_INS_MODE_VALUE, /**< YANG value attribute */
817 VAL_INS_MODE_POINT /**< YANG-API point param */
818} YPACK val_insert_mode_t;
819
820
822typedef enum val_dumpvalue_mode_t_ {
823 DUMP_VAL_NONE, /**< not set */
824 DUMP_VAL_STDOUT, /**< dump val to STDOUT */
825 DUMP_VAL_LOG, /**< dump val to main log */
826 DUMP_VAL_ALT_LOG, /**< dump val to alternate log */
827 DUMP_VAL_AUDIT_LOG, /**< dump val to audit log */
828} val_dumpvalue_mode_t;
829
830
832typedef struct val_editvars_t_ {
837 struct val_value_t_ *curparent; /**< track the real parent */
838 op_insertop_t insertop; /**< YANG insert operation */
839 xmlChar *insertstr; /**< saved value or key attr */
840 struct xpath_pcb_t_ *insertxpcb; /**< key attr for insert */
841 struct val_value_t_ *insertval; /**< back-ptr if before or after */
842 val_insert_mode_t insert_mode; /**< insert mode requested */
843 uint8 silprio; /**< 2nd SIL priority for server */
844 boolean operset; /**< nc:operation here */
845 void *pcookie; /**< user pointer cookie */
846 int icookie; /**< user integer cookie */
847 boolean is_move; /**< TRUE if YPATCH MOVE operation */
848 boolean skip_sil_partial; /**< TRUE if skip_sil_partial needed */
849 boolean deleted; /**< TRUE if deleted from commit_deletes */
850} YPACK val_editvars_t;
851
852
854typedef struct val_extra_t_ {
855
861 xmlChar *dname; /**< malloced name if needed */
862
869 void *getcb;
870
875 struct val_value_t_ *virtualval;
876
878 time_t cachetime;
879
884 struct xpath_pcb_t_ *xpathpcb;
885
886
890 plock_cb_t *plock[VAL_MAX_PLOCKS];
891
892
896 dlq_hdr_t *dataruleQ; /**< Q of obj_xpath_ptr_t */
897
903 xmlChar *varexpr;
904
909 struct xpath_aio_cb_t_ *aiocb;
910
912 ncx_sm_mpid_t *mpid;
913
914} YPACK val_extra_t;
915
916
921typedef struct val_value_t_ {
923 dlq_hdr_t qhdr;
924
926 struct obj_template_t_ *obj; /**< bptr to object def */
927 typ_def_t *typdef; /**< bptr to typdef if leaf */
928 const xmlChar *name; /**< back pointer to elname\n
929 * the dname field is moved to val_extra_t and only used when
930 * the value is constructed from dummy objects or no objects at all
931 */
932
933 struct val_value_t_ *parent; /**< back-ptr to parent if any */
934 struct val_child_hdr_t_ *hdr; /**< back-ptr to own child_hdr */
935
937 val_extra_t *val_extra;
938
939 uint32 flags; /**< internal status flags */
940
941 xmlns_id_t nsid; /**< namespace ID for this node */
942 ncx_btype_t btyp; /**< base type of this value */
943 ncx_data_class_t dataclass; /**< config or state data */
944
948 time_t last_modified;
949 ncx_etag_t etag; /**< ETag for RESTCONF */
950
964 dlq_hdr_t *metaQ; /**< Q of val_value_t */
965
969 val_editvars_t *editvars; /**< edit-vars from attrs */
970 op_editop_t editop; /**< needed for all edits */
971 status_t res; /**< validation result */
972
973 /* GET1 getcb moved to val_extra */
974 /* GET1 virtualval moved to val_extra */
975 /* GET1 cachetime moved to val_extra */
976
978 dlq_hdr_t *indexQ; /**< Q of val_index_t or ncx_filptr_t */
979
980 /* this field is used for NCX_BT_CHOICE
981 * If set, the object path for this node is really:
982 * $this --> casobj --> casobj.parent --> $this.parent
983 * the OBJ_TYP_CASE and OBJ_TYP_CHOICE nodes are skipped
984 * inside an XML instance document
985 *
986 * replaced by val_get_casobj() function in val_util.h
987 * struct obj_template_t_ *casobj;
988 */
989
990 /* xpathpcb moved to val_extra_t */
991
992 /* back-ptr to the partial locks that are held
993 * against this node
994 * plock moved to val_extra
995 */
996
997 /* back-ptr to the data access control rules that
998 * reference this node
999 * dataruleQ moved to val_extra
1000 */
1001
1002 /* malloced pointer to the variable expression found
1003 * if this val node is part of a data template.
1004 * The actual value in union v_ MUST be ignored if
1005 * varexpr string is non-NULL!!
1006 * varexpr moved to val_extra
1007 */
1008
1012 ncx_owner_id_t owner_id;
1013
1015 ncx_nmda_origin_t nmda_origin;
1016
1018 boolean extern_valonly;
1019
1027 boolean from_anydata;
1028
1038 union v_ {
1048 dlq_hdr_t child_hdrQ;
1049
1059 ncx_num_t num;
1060
1067 ncx_str_t str;
1068
1069 val_idref_t idref; /**< NCX_BT_IDREF */
1070 ncx_binary_t binary; /**< NCX_BT_BINARY */
1071 ncx_list_t list; /**< NCX_BT_BITS, NCX_BT_SLIST */
1072 boolean boo; /**< NCX_BT_EMPTY, NCX_BT_BOOLEAN */
1073 ncx_enum_t enu; /**< NCX_BT_UNION, NCX_BT_ENUM */
1074 xmlChar *fname; /**< NCX_BT_EXTERN */
1075 xmlChar *intbuff; /**< NCX_BT_INTERN */
1076 } YPACK v;
1077} YPACK val_value_t;
1078
1079
1083typedef struct val_child_hdr_t_ {
1084 dlq_hdr_t qhdr; /**< queue header */
1085
1091 struct obj_template_t_ *obj;
1092
1096 struct val_tree_t_ *tree;
1097
1102 dlq_hdr_t que;
1103
1105 uint32 count;
1106
1108 uint8 flags;
1109} YPACK val_child_hdr_t;
1110
1111
1122typedef struct val_index_t_ {
1123 dlq_hdr_t qhdr; /**< queue header */
1124 val_value_t *val; /**< points to a child node */
1125} YPACK val_index_t;
1126
1127
1136typedef boolean
1137 (*val_test_fn_t) (const val_value_t *val);
1138
1139
1149typedef boolean
1150 (*val_walker_fn_t) (val_value_t *val,
1151 void *cookie1,
1152 void *cookie2);
1153
1154
1155
1165typedef boolean
1166 (*val_walker2_fn_t) (val_child_hdr_t *valhdr,
1167 void *cookie1,
1168 void *cookie2);
1169
1170
1171
1181typedef boolean
1182 (*val_hdr_test_fn_t) (val_child_hdr_t *hdr,
1183 void *cookie);
1184
1185
1195typedef boolean
1196 (*val_test2_fn_t) (val_value_t *val,
1197 void *cookie);
1198
1199
1203/********************************************************************
1204* *
1205* F U N C T I O N S *
1206* *
1207*********************************************************************/
1208
1226extern val_value_t *
1227 val_new_value (void);
1228
1229
1238extern void
1239 val_init_value (val_value_t *val);
1240
1241
1252extern void
1253 val_init_complex (val_value_t *val,
1254 ncx_btype_t btyp);
1255
1256
1266extern void
1267 val_init_virtual (val_value_t *val,
1268 void *cbfn,
1269 struct obj_template_t_ *obj);
1270
1271
1281extern void
1282 val_init_from_template (val_value_t *val,
1283 struct obj_template_t_ *obj);
1284
1285
1295extern void
1296 val_reinit_from_template (val_value_t *val,
1297 struct obj_template_t_ *obj);
1298
1299
1309extern void
1310 val_free_value (val_value_t *val);
1311
1312
1320extern void
1321 val_set_name (val_value_t *val,
1322 const xmlChar *name,
1323 uint32 namelen);
1324
1325
1335extern status_t
1336 val_force_dname (val_value_t *val);
1337
1338
1347extern void
1348 val_set_qname (val_value_t *val,
1349 xmlns_id_t nsid,
1350 const xmlChar *name,
1351 uint32 namelen);
1352
1353
1363extern status_t
1364 val_string_ok (typ_def_t *typdef,
1365 ncx_btype_t btyp,
1366 const xmlChar *strval);
1367
1368
1383extern status_t
1384 val_string_ok_errinfo (typ_def_t *typdef,
1385 ncx_btype_t btyp,
1386 const xmlChar *strval,
1387 ncx_errinfo_t **errinfo);
1388
1389
1405status_t
1406 val_binary_ok_errinfo (typ_def_t *typdef,
1407 const xmlChar *strval,
1408 val_value_t *val,
1409 ncx_errinfo_t **errinfo);
1410
1411
1429extern status_t
1430 val_string_ok_ex (ses_cb_t *scb,
1431 typ_def_t *typdef,
1432 ncx_btype_t btyp,
1433 const xmlChar *strval,
1434 ncx_errinfo_t **errinfo,
1435 boolean logerrors);
1436
1437
1456extern status_t
1457 val_string_ok_ex2 (ses_cb_t *scb,
1458 typ_def_t *typdef,
1459 ncx_btype_t btyp,
1460 const xmlChar *strval,
1461 ncx_errinfo_t **errinfo,
1462 boolean logerrors,
1463 boolean is_defval);
1464
1465
1486extern status_t
1487 val_list_ok (typ_def_t *typdef,
1488 ncx_btype_t btyp,
1489 ncx_list_t *list);
1490
1491
1509extern status_t
1510 val_list_ok_errinfo (typ_def_t *typdef,
1511 ncx_btype_t btyp,
1512 ncx_list_t *list,
1513 ncx_errinfo_t **errinfo);
1514
1515
1528extern status_t
1529 val_enum_ok (typ_def_t *typdef,
1530 const xmlChar *enumval,
1531 int32 *retval,
1532 const xmlChar **retstr);
1533
1534
1544extern status_t
1545 val_bit_ok (typ_def_t *typdef,
1546 const xmlChar *bitname,
1547 uint32 *position);
1548
1549
1550
1551
1561extern status_t
1562 val_bitpos_ok (typ_def_t *typdef,
1563 uint32 position,
1564 const xmlChar **name);
1565
1566
1585extern status_t
1586 val_idref_ok (typ_def_t *typdef,
1587 const xmlChar *qname,
1588 xmlns_id_t nsid,
1589 const xmlChar **name,
1590 ncx_identity_t **id);
1591
1592
1617extern status_t
1618 val_idref_ok_ex (typ_def_t *typdef,
1619 const xmlChar *qname,
1620 xmlns_id_t nsid,
1621 boolean is_json,
1622 ncx_module_t *impmod,
1623 boolean or_self,
1624 const xmlChar **name,
1625 ncx_identity_t **id);
1626
1627
1644extern status_t
1645 val_parse_idref (ncx_module_t *mod,
1646 const xmlChar *qname,
1647 xmlns_id_t *nsid,
1648 const xmlChar **name,
1649 ncx_identity_t **id);
1650
1651
1669extern status_t
1670 val_parse_idref_rootcb (ncx_module_t *mod,
1671 const xmlChar *qname,
1672 xmlns_id_t *nsid,
1673 const xmlChar **name,
1674 ncx_identity_t **id,
1675 ncx_sm_rootcb_t *rootcb);
1676
1677
1687extern status_t
1688 val_range_ok (typ_def_t *typdef,
1689 ncx_btype_t btyp,
1690 const ncx_num_t *num);
1691
1692
1704extern status_t
1705 val_range_ok_errinfo (typ_def_t *typdef,
1706 ncx_btype_t btyp,
1707 const ncx_num_t *num,
1708 ncx_errinfo_t **errinfo);
1709
1710
1718extern status_t
1719 val_pattern_ok (typ_def_t *typdef,
1720 const xmlChar *strval);
1721
1722
1735extern status_t
1736 val_pattern_ok_errinfo (typ_def_t *typdef,
1737 const xmlChar *strval,
1738 ncx_errinfo_t **errinfo);
1739
1740
1750extern status_t
1751 val_simval_ok (typ_def_t *typdef,
1752 const xmlChar *simval);
1753
1754
1755
1767extern status_t
1768 val_simval_ok_errinfo (typ_def_t *typdef,
1769 const xmlChar *simval,
1770 ncx_errinfo_t **errinfo);
1771
1772
1786extern status_t
1787 val_simval_ok_ex (typ_def_t *typdef,
1788 const xmlChar *simval,
1789 ncx_errinfo_t **errinfo,
1790 ncx_module_t *mod);
1791
1792
1808extern status_t
1809 val_simval_ok_max (typ_def_t *typdef,
1810 const xmlChar *simval,
1811 ncx_errinfo_t **errinfo,
1812 ncx_module_t *mod,
1813 boolean logerrors);
1814
1833extern status_t
1834 val_simval_ok_max2 (typ_def_t *typdef,
1835 const xmlChar *simval,
1836 ncx_errinfo_t **errinfo,
1837 ncx_module_t *mod,
1838 boolean logerrors,
1839 boolean nocond);
1840
1841
1861status_t
1862 val_simval_ok_max3 (typ_def_t *typdef,
1863 const xmlChar *simval,
1864 ncx_errinfo_t **errinfo,
1865 ncx_module_t *mod,
1866 boolean logerrors,
1867 boolean nocond,
1868 boolean is_defval);
1869
1870
1882extern status_t
1883 val_union_ok (typ_def_t *typdef,
1884 const xmlChar *strval,
1885 val_value_t *retval);
1886
1887
1901extern status_t
1902 val_union_ok_errinfo (typ_def_t *typdef,
1903 const xmlChar *strval,
1904 val_value_t *retval,
1905 ncx_errinfo_t **errinfo);
1906
1907
1925extern status_t
1926 val_union_ok_ex (typ_def_t *typdef,
1927 const xmlChar *strval,
1928 val_value_t *retval,
1929 ncx_errinfo_t **errinfo,
1930 ncx_module_t *mod,
1931 typ_def_t **match_typdef);
1932
1933
1954extern status_t
1955 val_union_ok_binary (typ_def_t *typdef,
1956 const xmlChar *binstr,
1957 uint32 binstrlen,
1958 val_value_t *retval,
1959 ncx_errinfo_t **errinfo,
1960 typ_def_t **match_typdef);
1961
1962
1982extern status_t
1983 val_union_ok_full (typ_def_t *typdef,
1984 const xmlChar *strval,
1985 val_value_t *contextval,
1986 val_value_t *rootval,
1987 val_value_t *retval,
1988 ncx_errinfo_t **errinfo);
1989
1990
1997extern dlq_hdr_t *
1998 val_get_metaQ (val_value_t *val);
1999
2000
2008extern val_value_t *
2009 val_get_first_meta (dlq_hdr_t *queue);
2010
2011
2019extern val_value_t *
2020 val_get_first_meta_val (val_value_t *val);
2021
2022
2030extern val_value_t *
2031 val_get_next_meta (val_value_t *curnode);
2032
2033
2041extern boolean
2042 val_meta_empty (val_value_t *val);
2043
2044
2053extern val_value_t *
2054 val_find_meta (val_value_t *val,
2055 xmlns_id_t nsid,
2056 const xmlChar *name);
2057
2058
2068extern boolean
2069 val_meta_match (val_value_t *val,
2070 val_value_t *metaval);
2071
2072
2081extern uint32
2082 val_metadata_inst_count (val_value_t *val,
2083 xmlns_id_t nsid,
2084 const xmlChar *name);
2085
2086
2097extern void
2098 val_dump_value (val_value_t *val,
2099 int32 startindent,
2100 log_debug_t lvl);
2101
2102
2103
2114extern void
2115 val_dump_value_config (val_value_t *val,
2116 int32 startindent,
2117 log_debug_t lvl);
2118
2119
2131extern void
2132 val_dump_value_ex (val_value_t *val,
2133 int32 startindent,
2134 ncx_display_mode_t display_mode,
2135 log_debug_t lvl);
2136
2137
2148extern void
2149 val_dump_alt_value (val_value_t *val,
2150 int32 startindent,
2151 log_debug_t lvl);
2152
2153
2163extern void
2164 val_stdout_value (val_value_t *val,
2165 int32 startindent,
2166 log_debug_t lvl);
2167
2168
2179extern void
2180 val_stdout_value_ex (val_value_t *val,
2181 int32 startindent,
2182 ncx_display_mode_t display_mode,
2183 log_debug_t lvl);
2184
2185
2203extern void
2204 val_dump_value_max (val_value_t *val,
2205 int32 startindent,
2206 int32 indent_amount,
2207 val_dumpvalue_mode_t dumpmode,
2208 ncx_display_mode_t display_mode,
2209 boolean with_meta,
2210 boolean configonly,
2211 log_debug_t lvl);
2212
2213
2235extern void
2236 val_dump_value_full (val_value_t *val,
2237 int32 startindent,
2238 int32 indent_amount,
2239 val_dumpvalue_mode_t dumpmode,
2240 ncx_display_mode_t display_mode,
2241 boolean with_meta,
2242 boolean configonly,
2243 boolean conf_mode,
2244 boolean expand_varexpr,
2245 log_debug_t lvl,
2246 logfns_t *overrideOutput);
2247
2248
2271extern void
2272 val_dump_value_full2 (val_value_t *val,
2273 int32 startindent,
2274 int32 indent_amount,
2275 val_dumpvalue_mode_t dumpmode,
2276 ncx_display_mode_t display_mode,
2277 boolean with_meta,
2278 boolean configonly,
2279 boolean conf_mode,
2280 boolean expand_varexpr,
2281 boolean withdef,
2282 log_debug_t lvl,
2283 logfns_t *overrideOutput);
2284
2285
2298extern status_t
2299 val_set_string (val_value_t *val,
2300 const xmlChar *valname,
2301 const xmlChar *valstr);
2302
2303
2319extern status_t
2320 val_set_string2 (val_value_t *val,
2321 const xmlChar *valname,
2322 typ_def_t *typdef,
2323 const xmlChar *valstr,
2324 uint32 valstrlen);
2325
2326
2347extern status_t
2348 val_set_string3 (val_value_t *val,
2349 const xmlChar *valname,
2350 typ_def_t *typdef,
2351 const xmlChar *valstr,
2352 uint32 valstrlen,
2353 boolean is_dblquote);
2354
2355
2371extern status_t
2372 val_set_binary (const xmlChar *valstr,
2373 uint32 valstrlen,
2374 val_value_t *val);
2375
2376
2377
2387extern status_t
2388 val_reset_empty (val_value_t *val);
2389
2390
2403extern status_t
2404 val_set_simval (val_value_t *val,
2405 typ_def_t *typdef,
2406 xmlns_id_t nsid,
2407 const xmlChar *valname,
2408 const xmlChar *valstr);
2409
2410
2453extern status_t
2454 val_set_simval_str (val_value_t *val,
2455 typ_def_t *typdef,
2456 xmlns_id_t nsid,
2457 const xmlChar *valname,
2458 uint32 valnamelen,
2459 const xmlChar *valstr);
2460
2461
2482extern status_t
2483 val_set_simval_binary (val_value_t *val,
2484 const xmlChar *binstr,
2485 uint32 binstrlen);
2486
2487
2531extern status_t
2532 val_set_simval_max (val_value_t *val,
2533 typ_def_t *typdef,
2534 xmlns_id_t nsid,
2535 const xmlChar *valname,
2536 uint32 valnamelen,
2537 const xmlChar *valstr,
2538 uint32 valstrlen);
2539
2540
2554extern val_value_t *
2555 val_make_simval (typ_def_t *typdef,
2556 xmlns_id_t nsid,
2557 const xmlChar *valname,
2558 const xmlChar *valstr,
2559 status_t *res);
2560
2561
2575extern val_value_t *
2576 val_make_string (xmlns_id_t nsid,
2577 const xmlChar *valname,
2578 const xmlChar *valstr);
2579
2580
2591extern val_value_t *
2592 val_make_binary (xmlns_id_t nsid,
2593 const xmlChar *valname,
2594 const xmlChar *valstr,
2595 uint32 valstrlen);
2596
2597
2609extern status_t
2610 val_merge (const val_value_t *src,
2611 val_value_t *dest);
2612
2613
2620extern val_value_t *
2621 val_clone (const val_value_t *val);
2622
2623
2631extern val_value_t *
2632 val_clone2 (const val_value_t *val);
2633
2634
2648extern val_value_t *
2649 val_clone_config_data (const val_value_t *val,
2650 status_t *res);
2651
2652
2653
2670extern val_value_t *
2671 val_clone_config_newval (const val_value_t *val,
2672 status_t *res);
2673
2694extern val_value_t *
2695 val_clone_config_newval_keys_only (const val_value_t *val,
2696 status_t *res);
2697
2698
2718extern val_value_t *
2719 val_clone_config_save (const val_value_t *val,
2720 status_t *res);
2721
2722
2733extern status_t
2734 val_replace (val_value_t *val,
2735 val_value_t *copy);
2736
2737
2747extern status_t
2748 val_replace_str (const xmlChar *str,
2749 uint32 stringlen,
2750 val_value_t *copy);
2751
2752
2763extern status_t
2764 val_fast_replace_string (const xmlChar *str,
2765 uint32 stringlen,
2766 val_value_t *copy);
2767
2768
2775extern void
2776 val_replace_stringval (val_value_t *val,
2777 const xmlChar *str);
2778
2779
2796extern void
2797 val_add_child (val_value_t *child,
2798 val_value_t *parent);
2799
2800
2812extern void
2813 val_add_child_sorted (val_value_t *child,
2814 val_value_t *parent);
2815
2816
2828extern void
2829 val_insert_child (val_value_t *child,
2830 val_value_t *current,
2831 val_value_t *parent);
2832
2833
2842extern void
2843 val_remove_child (val_value_t *child);
2844
2845
2855extern void
2856 val_swap_child (val_value_t *newchild,
2857 val_value_t *curchild);
2858
2859
2867extern val_value_t *
2868 val_first_child_match (const val_value_t *parent,
2869 const val_value_t *child);
2870
2871
2882extern val_value_t *
2883 val_first_child_match_fast (const val_value_t *parent,
2884 const val_value_t *child,
2885 val_value_t *lastmatch);
2886
2887
2899extern val_value_t *
2900 val_next_child_match (val_value_t *parent,
2901 val_value_t *child,
2902 val_value_t *curmatch);
2903
2904
2911extern val_value_t *
2912 val_next_child_same (val_value_t *curchild);
2913
2914
2921extern val_value_t *
2922 val_get_first_child (const val_value_t *parent);
2923
2924
2931extern val_value_t *
2932 val_get_next_child (const val_value_t *curchild);
2933
2934
2941extern val_value_t *
2942 val_get_first_terminal_child (const val_value_t *parent);
2943
2944
2951extern val_value_t *
2952 val_get_next_terminal_child (const val_value_t *curchild);
2953
2954
2968extern val_value_t *
2969 val_find_child (const val_value_t *parent,
2970 const xmlChar *modname,
2971 const xmlChar *childname);
2972
2973
2987extern val_value_t *
2988 val_find_child_fast (const val_value_t *parent,
2989 xmlns_id_t nsid,
2990 const xmlChar *childname);
2991
2992
3001extern val_value_t *
3002 val_find_child_obj (const val_value_t *parent,
3003 const struct obj_template_t_ *chobj);
3004
3005
3020extern val_value_t *
3021 val_find_child_que (const dlq_hdr_t *childQ,
3022 xmlns_id_t nsid,
3023 const xmlChar *childname);
3024
3025
3039extern val_value_t *
3040 val_match_child (const val_value_t *parent,
3041 const xmlChar *modname,
3042 const xmlChar *childname);
3043
3044
3061extern val_value_t *
3062 val_match_child_count (const val_value_t *parent,
3063 const xmlChar *modname,
3064 const xmlChar *childname,
3065 uint32 *matchcount);
3066
3067
3084extern val_value_t *
3085 val_find_next_child (const val_value_t *parent,
3086 const xmlChar *modname,
3087 const xmlChar *childname,
3088 const val_value_t *curchild);
3089
3090
3104extern val_value_t *
3105 val_find_next_child_fast (const val_value_t *parent,
3106 const val_value_t *curchild);
3107
3108
3117extern val_value_t *
3118 val_first_child_name (val_value_t *parent,
3119 const xmlChar *name);
3120
3121
3130extern val_value_t *
3131 val_first_child_qname (val_value_t *parent,
3132 xmlns_id_t nsid,
3133 const xmlChar *name);
3134
3135
3145extern val_value_t *
3146 val_next_child_qname (val_value_t *parent,
3147 xmlns_id_t nsid,
3148 const xmlChar *name,
3149 val_value_t *curchild);
3150
3151
3169extern val_value_t *
3170 val_first_child_string (val_value_t *parent,
3171 const xmlChar *name,
3172 const xmlChar *strval);
3173
3174
3183extern uint32
3184 val_child_cnt (val_value_t *parent);
3185
3186
3196extern uint32
3197 val_child_inst_cnt (const val_value_t *parent,
3198 const xmlChar *modname,
3199 const xmlChar *name);
3200
3201
3209extern uint32
3210 val_get_child_inst_id (const val_value_t *parent,
3211 const val_value_t *child);
3212
3213
3220extern uint32
3221 val_liststr_count (const val_value_t *val);
3222
3223
3236extern boolean
3237 val_index_match (const val_value_t *val1,
3238 const val_value_t *val2);
3239
3240
3251extern int
3252 val_index_compare (const val_value_t *val1,
3253 const val_value_t *val2);
3254
3255
3287extern int32
3288 val_compare_max (const val_value_t *val1,
3289 const val_value_t *val2,
3290 boolean configonly,
3291 boolean childonly,
3292 boolean editing);
3293
3294
3331extern int32
3332 val_compare_max_def (const val_value_t *val1,
3333 const val_value_t *val2,
3334 boolean configonly,
3335 boolean childonly,
3336 boolean editing,
3337 boolean ignore_defaults);
3338
3339
3363extern int32
3364 val_compare_ex (const val_value_t *val1,
3365 const val_value_t *val2,
3366 boolean configonly);
3367
3368
3389extern int32
3390 val_compare (const val_value_t *val1,
3391 const val_value_t *val2);
3392
3393
3413extern int32
3414 val_compare_to_string (const val_value_t *val1,
3415 const xmlChar *strval2,
3416 status_t *res);
3417
3418
3440extern int32
3441 val_compare_to_string_len (const val_value_t *val1,
3442 const xmlChar *strval2,
3443 uint32 strval2len,
3444 status_t *res);
3445
3446
3453// extern int32
3454// val_compare_for_replace (const val_value_t *val1,
3455// const val_value_t *val2);
3456
3457
3476extern int32
3477 val_compare_for_edit (const val_value_t *val1,
3478 const val_value_t *val2,
3479 boolean ismerge);
3480
3481
3500extern int32
3501 val_compare_as_string (const val_value_t *val1,
3502 const val_value_t *val2,
3503 status_t *res);
3504
3505
3524extern status_t
3525 val_sprintf_simval_nc (xmlChar *buff,
3526 const val_value_t *val,
3527 uint32 *len);
3528
3529
3549extern status_t
3550 val_sprintf_simval_nc_ex (xmlChar *buff,
3551 const val_value_t *val,
3552 boolean url_encode,
3553 uint32 *len);
3554
3555
3556
3557
3580extern status_t
3581 val_sprintf_simval_xpath (xmlChar *buff,
3582 const val_value_t *val,
3583 boolean url_encode,
3584 xmlChar quot_char,
3585 uint32 *len);
3586
3587
3600extern xmlChar *
3601 val_make_sprintf_string (const val_value_t *val);
3602
3603
3616extern status_t
3617 val_resolve_scoped_name (val_value_t *val,
3618 const xmlChar *name,
3619 val_value_t **chval);
3620
3621
3628extern ncx_iqual_t
3629 val_get_iqualval (const val_value_t *val);
3630
3631
3650extern boolean
3651 val_duplicates_allowed (val_value_t *val);
3652
3653
3661extern boolean
3662 val_has_content (const val_value_t *val);
3663
3664
3673extern boolean
3674 val_has_content_ex (const val_value_t *val);
3675
3676
3684extern boolean
3685 val_has_index (const val_value_t *val);
3686
3687
3694extern val_index_t *
3695 val_get_first_index (const val_value_t *val);
3696
3697
3704extern val_index_t *
3705 val_get_next_index (const val_index_t *valindex);
3706
3707
3714extern uint32
3715 val_get_index_count (const val_value_t *val);
3716
3717
3729extern status_t
3730 val_parse_meta (ses_cb_t *scb,
3731 typ_def_t *typdef,
3732 xml_attr_t *attr,
3733 val_value_t *retval);
3734
3735
3742extern void
3743 val_set_extern (val_value_t *val,
3744 xmlChar *fname);
3745
3746
3754extern void
3755 val_set_intern (val_value_t *val,
3756 xmlChar *intbuff);
3757
3758
3777extern boolean
3778 val_fit_oneline (const val_value_t *val,
3779 uint32 linesize,
3780 boolean isxml);
3781
3782
3791extern boolean
3792 val_create_allowed (const val_value_t *val);
3793
3794
3803extern boolean
3804 val_delete_allowed (const val_value_t *val);
3805
3806
3814extern boolean
3815 val_is_config_data (const val_value_t *val);
3816
3817
3826extern boolean
3827 val_is_config_save (const val_value_t *val);
3828
3829
3839extern boolean
3840 val_is_virtual (const val_value_t *val);
3841
3842
3872extern val_value_t *
3873 val_get_virtual_value (ses_cb_t *scb,
3874 val_value_t *val,
3875 status_t *res);
3876
3877
3897extern boolean
3898 val_is_default (val_value_t *val);
3899
3900
3910extern boolean
3911 val_is_real (const val_value_t *val);
3912
3913
3920extern xmlns_id_t
3921 val_get_parent_nsid (const val_value_t *val);
3922
3923
3935extern uint32
3936 val_instance_count (val_value_t *val,
3937 const xmlChar *modname,
3938 const xmlChar *objname);
3939
3940
3955extern uint32
3956 val_instance_count_fast (val_value_t *val,
3957 xmlns_id_t nsid,
3958 const xmlChar *objname,
3959 val_value_t **firstval);
3960
3961
3974extern uint32
3975 val_instance_count_fast2 (val_value_t *val,
3976 val_value_t *startval);
3977
3978
3994extern void
3995 val_set_extra_instance_errors (val_value_t *val,
3996 const xmlChar *modname,
3997 const xmlChar *objname,
3998 uint32 maxelems);
3999
4000
4009extern boolean
4010 val_need_quotes (const xmlChar *str);
4011
4012
4022extern boolean
4023 val_has_dquotes (const xmlChar *str);
4024
4033extern boolean
4034 val_need_dquotes (const xmlChar *str);
4035
4036
4044extern boolean
4045 val_all_whitespace (const xmlChar *str);
4046
4047
4056extern boolean
4057 val_any_whitespace (const xmlChar *str,
4058 uint32 len);
4059
4060
4069extern boolean
4070 val_match_metaval (const xml_attr_t *attr,
4071 xmlns_id_t nsid,
4072 const xmlChar *name);
4073
4074
4081extern boolean
4082 val_get_dirty_flag (const val_value_t *val);
4083
4084
4091extern boolean
4092 val_get_subtree_dirty_flag (const val_value_t *val);
4093
4094
4100extern void
4101 val_set_subtree_dirty_up (val_value_t *val);
4102
4103
4111extern void
4112 val_set_dirty_flag (val_value_t *val,
4113 boolean clear_def);
4114
4115
4121extern void
4122 val_set_child_deleted_flag (val_value_t *val);
4123
4124
4131extern boolean
4132 val_get_child_deleted_flag (val_value_t *val);
4133
4134
4147extern void
4148 val_clear_dirty_flag (val_value_t *val,
4149 time_t *timestamp,
4150 ncx_transaction_id_t txid,
4151 boolean is_delete,
4152 boolean do_clear_default);
4153
4154
4160extern void
4161 val_clear_child_dirty_flag (val_value_t *val);
4162
4163
4170extern boolean
4171 val_dirty_subtree (const val_value_t *val);
4172
4173
4186extern void
4187 val_clean_tree (val_value_t *val);
4188
4189
4196extern uint32
4197 val_get_nest_level (val_value_t *val);
4198
4199
4208extern val_value_t *
4209 val_get_first_leaf (val_value_t *val);
4210
4211
4219extern const xmlChar *
4220 val_get_mod_name (const val_value_t *val);
4221
4222
4230extern const xmlChar *
4231 val_get_mod_prefix (const val_value_t *val);
4232
4233
4240extern xmlns_id_t
4241 val_get_nsid (const val_value_t *val);
4242
4243
4250extern ncx_sid_t
4251 val_get_yang_sid (const val_value_t *val);
4252
4253
4260extern void
4261 val_change_nsid (val_value_t *val,
4262 xmlns_id_t nsid);
4263
4264
4271extern void
4272 val_change_nsid2 (val_value_t *val,
4273 xmlns_id_t nsid);
4274
4275
4282extern void
4283 val_change_nsid3 (val_value_t *val,
4284 xmlns_id_t nsid);
4285
4286
4298extern val_value_t *
4299 val_make_from_insertxpcb (val_value_t *sourceval,
4300 status_t *res);
4301
4302
4309extern const typ_def_t *
4310 val_get_typdef (const val_value_t *val);
4311
4312
4320extern boolean
4321 val_set_by_default (const val_value_t *val);
4322
4323
4331extern boolean
4332 val_has_withdef_default (const val_value_t *val);
4333
4334
4340extern void
4341 val_set_withdef_default (val_value_t *val);
4342
4343
4351extern boolean
4352 val_is_metaval (const val_value_t *val);
4353
4354
4362extern void
4363 val_move_children (val_value_t *srcval,
4364 val_value_t *destval);
4365
4366
4374extern void
4375 val_move_nonconfig_children (val_value_t *srcval,
4376 val_value_t *destval);
4377
4397extern status_t
4398 val_cvt_generic (val_value_t *val);
4399
4400
4409extern status_t
4410 val_set_pcookie (val_value_t *val,
4411 void *pcookie);
4412
4413
4422extern status_t
4423 val_set_icookie (val_value_t *val,
4424 int icookie);
4425
4426
4434extern void *
4435 val_get_pcookie (val_value_t *val);
4436
4437
4445extern int
4446 val_get_icookie (val_value_t *val);
4447
4448
4456extern status_t
4457 val_delete_default_leaf (val_value_t *val);
4458
4459
4469extern status_t
4470 val_delete_default_leaf_list (val_value_t *val);
4471
4472
4478extern void
4479 val_force_empty (val_value_t *val);
4480
4481
4489extern status_t
4490 val_delete_default_npcon (val_value_t *val);
4491
4492
4501extern void
4502 val_move_fields_for_xml (val_value_t *srcval,
4503 val_value_t *destval,
4504 boolean movemeta);
4505
4506
4514extern void
4515 val_move_metadata (val_value_t *srcval,
4516 val_value_t *destval);
4517
4518
4525extern val_index_t *
4526 val_get_first_key (val_value_t *val);
4527
4528
4535extern val_index_t *
4536 val_get_last_key (val_value_t *val);
4537
4538
4545extern val_index_t *
4546 val_get_next_key (val_index_t *curkey);
4547
4548
4555extern val_index_t *
4556 val_get_prev_key (val_index_t *curkey);
4557
4558
4565extern void
4566 val_remove_key (val_value_t *keyval);
4567
4568
4575extern val_value_t *
4576 val_new_deleted_value (void);
4577
4578
4586extern status_t
4587 val_new_editvars (val_value_t *val);
4588
4589
4597extern void
4598 val_free_editvars (val_value_t *val);
4599
4600
4606extern void
4607 val_free_solo_editvars (val_editvars_t *editvars);
4608
4609
4620extern boolean
4621 val_all_np_containers (val_value_t *val);
4622
4623
4633extern status_t
4634 val_sprintf_etag (val_value_t *val,
4635 xmlChar *buff,
4636 int32 buffsize);
4637
4638
4645extern time_t *
4646 val_get_last_modified (val_value_t *val);
4647
4648
4654extern void
4655 val_force_default (val_value_t *val);
4656
4665extern void
4666 val_set_all_tags (val_value_t *val,
4667 time_t *timestamp,
4668 ncx_transaction_id_t txid);
4669
4670
4677extern const xmlChar *
4678 val_get_owner (val_value_t *val);
4679
4680
4687extern ncx_owner_id_t
4688 val_get_owner_id (val_value_t *val);
4689
4690
4697extern boolean
4698 val_need_owner_string (val_value_t *val);
4699
4700
4707extern void
4708 val_delete_children (val_value_t *val);
4709
4710
4716extern void
4717 val_clean_value (val_value_t *val);
4718
4719
4728extern boolean
4729 val_find_bit (val_value_t *val,
4730 const xmlChar *bitname);
4731
4732
4740extern boolean
4741 val_has_children (const val_value_t *val);
4742
4743
4751extern status_t
4752 val_add_test_valindex (val_value_t *parentval,
4753 val_value_t *keyval);
4754
4755
4762extern const xmlChar *
4763 val_get_yang_typename (val_value_t *val);
4764
4765
4772extern void
4773 val_set_force_config (val_value_t *val,
4774 boolean is_config);
4775
4776
4783extern void
4784 val_clear_defvalset_flag (val_value_t *val);
4785
4786
4795extern status_t
4796 val_clone_valQ (dlq_hdr_t *valQ,
4797 dlq_hdr_t *return_valQ);
4798
4799
4807extern void
4808 val_clean_valQ (dlq_hdr_t *valQ);
4809
4810
4820extern boolean
4821 val_is_value_set (val_value_t *val);
4822
4823
4831extern uint32
4832 val_url_encode_string (const xmlChar *str,
4833 xmlChar *buff);
4834
4835
4836
4848extern status_t
4849 val_quote_encode_string (const xmlChar *str,
4850 xmlChar quot_char,
4851 xmlChar *buff,
4852 uint32 *retlen);
4853
4854
4863extern void
4864 val_convert_any_to_container (val_value_t *val);
4865
4866
4873extern void
4874 val_clean_index_chain (val_value_t *val);
4875
4876
4884extern boolean
4885 val_pattern_match (const xmlRegexpPtr pattern,
4886 const xmlChar *strval);
4887
4888
4897extern boolean
4898 val_ocpattern_match (const regex_t *ocpattern,
4899 const xmlChar *strval);
4900
4901
4911extern boolean
4912 val_idref_derived_from (ncx_module_t *impmod,
4913 val_value_t *testval,
4914 const xmlChar *qname,
4915 boolean or_self);
4916
4917
4928extern status_t
4929 val_set_sil_priority (val_value_t *val,
4930 uint8 silprio);
4931
4932
4939extern uint8
4940 val_get_sil_priority (val_value_t *val);
4941
4942
4951extern const xmlChar *
4952 val_find_bit_name (val_value_t *val,
4953 uint32 bitpos);
4954
4955
4965extern const xmlChar *
4966 val_find_enum_name (val_value_t *val,
4967 int32 enunum);
4968
4969
4981extern const xmlChar *
4982 val_find_enum_name2 (ncx_btype_t btyp,
4983 typ_def_t *typdef,
4984 int32 enunum);
4985
4986
4996extern void
4997 val_mark_deleted (val_value_t *val);
4998
4999
5007extern void
5008 val_mark_undeleted (val_value_t *val);
5009
5010
5021extern boolean
5022 val_has_conditional_value (val_value_t *val);
5023
5024
5035extern val_value_t *
5036 val_convert_leafref (const val_value_t *val);
5037
5038
5061extern int32
5062 val_compare_for_topreplace (const val_value_t *val1,
5063 const val_value_t *val2);
5064
5065
5093extern int32
5094 val_compare_for_topreplace_simple (const val_value_t *val1,
5095 const val_value_t *val2);
5096
5097
5105extern boolean
5106 val_has_complex_child (const val_value_t *val);
5107
5108
5116extern status_t
5117 val_add_meta (val_value_t *metaval,
5118 val_value_t *val);
5119
5120
5127extern val_value_t *
5128 val_find_root (val_value_t *val);
5129
5130
5137extern status_t
5138 val_set_canonical (val_value_t *val);
5139
5140
5148extern typ_def_t *
5149 val_get_leafref_typdef (val_value_t *val);
5150
5151
5171extern boolean
5172 val_ascendant_compare (val_value_t *val1,
5173 val_value_t *val2);
5174
5175
5182extern const xmlChar *
5183 val_get_dname (const val_value_t *val);
5184
5185
5195extern status_t
5196 val_set_dname (val_value_t *val,
5197 const xmlChar *dname);
5198
5199
5210extern status_t
5211 val_set_dname2 (val_value_t *val,
5212 const xmlChar *dname,
5213 uint32 dnamelen);
5214
5215
5223extern status_t
5224 val_new_extra (val_value_t *val);
5225
5226
5233extern const xmlChar *
5234 val_get_varexpr (const val_value_t *val);
5235
5236
5244extern status_t
5245 val_set_varexpr (val_value_t *val,
5246 const xmlChar *varexpr);
5247
5248
5254extern void
5255 val_clear_varexpr (val_value_t *val);
5256
5257
5263extern void
5264 val_set_wildcard_string (val_value_t *val);
5265
5266
5273#define val_is_wildcard_string(V) (((V)->flags & VAL_FL_WILDCARD) ? TRUE : FALSE)
5274
5275
5283extern status_t
5284 val_copy_editvars (const val_value_t *val,
5285 val_value_t *copy);
5286
5287
5296extern status_t
5297 val_set_skip_sil_partial (val_value_t *val);
5298
5299
5306extern boolean
5307 val_get_skip_sil_partial (const val_value_t *val);
5308
5309
5320extern typ_def_t *
5321 val_get_leafref_typdef_ex (val_value_t *val,
5322 boolean union_check);
5323
5324
5325
5337extern boolean
5338 val_is_default_npcon (val_value_t *val);
5339
5340
5348extern status_t
5349 val_identity_ok (typ_def_t *typdef,
5350 ncx_identity_t *ident);
5351
5352
5367extern status_t
5368 val_highest_bit_set (const val_value_t *val,
5369 uint32 *count,
5370 uint32 *pos);
5371
5372
5386extern status_t
5387 val_first_bit_set (const val_value_t *val,
5388 const ncx_lmem_t **lmem,
5389 uint32 *pos);
5390
5391
5406extern status_t
5407 val_next_bit_set (const val_value_t *val,
5408 const ncx_lmem_t *lmem,
5409 const ncx_lmem_t **nextlmem,
5410 uint32 *pos);
5411
5418extern struct xpath_aio_cb_t_ *
5419 val_get_aiocb (const val_value_t *val);
5420
5421
5429extern status_t
5430 val_set_aiocb (val_value_t *val,
5431 struct xpath_aio_cb_t_ *aiocb);
5432
5433
5443extern ncx_sm_mpid_t *
5444 val_get_mpid (const val_value_t *val);
5445
5446
5455extern status_t
5456 val_set_mpid (val_value_t *val,
5457 struct ncx_sm_mpid_t_ *mpid);
5458
5459
5474extern status_t
5475 val_set_deleted_from_commit_deletes (val_value_t *val,
5476 boolean deleted);
5477
5478
5492extern boolean
5493 val_get_deleted_from_commit_deletes (const val_value_t *val);
5494
5495
5524extern status_t
5525 val_set_child_leaf (val_value_t *parent,
5526 const xmlChar *modname,
5527 const xmlChar *childname,
5528 const xmlChar *valstr);
5529
5530
5566extern status_t
5567 val_delete_child_leaf (val_value_t *parent,
5568 val_value_t *curparent,
5569 const xmlChar *modname,
5570 const xmlChar *childname);
5571
5575#ifdef __cplusplus
5576} /* end extern 'C' */
5577#endif
5578
5579#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.