yumapro  23.10T-9
YumaPro SDK
Loading...
Searching...
No Matches
xpath.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2021, 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_xpath
13#define _H_xpath
14
15/* FILE: xpath.h
16*********************************************************************
17* *
18* P U R P O S E *
19* *
20*********************************************************************/
21
27/*********************************************************************
28* *
29* C H A N G E H I S T O R Y *
30* *
31*********************************************************************
32
33date init comment
34----------------------------------------------------------------------
3530-dec-07 abb Begun
3606-jul-11 abb add wildcard match support
3711-dec-16 abb add GET2 retrieval support
38*/
39
40#include <xmlstring.h>
41#include <xmlreader.h>
42#include <xmlregexp.h>
43
44#ifndef _H_dlq
45#include "dlq.h"
46#endif
47
48#ifndef _H_ncxtypes
49#include "ncxtypes.h"
50#endif
51
52#ifndef _H_status
53#include "status.h"
54#endif
55
56#ifndef _H_obj
57#include "obj.h"
58#endif
59
60#ifndef _H_tk
61#include "tk.h"
62#endif
63
64#ifndef _H_val
65#include "val.h"
66#endif
67
68#ifndef _H_var
69#include "var.h"
70#endif
71
72#ifndef _H_yang
73#include "yang.h"
74#endif
75
76#ifdef __cplusplus
77extern "C" {
78#endif
79
80/********************************************************************
81* *
82* C O N S T A N T S *
83* *
84*********************************************************************/
85
86/* max size of the pcb->result_cacheQ */
87#define XPATH_RESULT_CACHE_MAX 16
88
89/* max size of the pcb->resnode_cacheQ */
90#define XPATH_RESNODE_CACHE_MAX 64
91
92
93/* XPath 1.0 sec 2.2 AxisName */
94#define XP_AXIS_ANCESTOR (const xmlChar *)"ancestor"
95#define XP_AXIS_ANCESTOR_OR_SELF (const xmlChar *)"ancestor-or-self"
96#define XP_AXIS_ATTRIBUTE (const xmlChar *)"attribute"
97#define XP_AXIS_CHILD (const xmlChar *)"child"
98#define XP_AXIS_DESCENDANT (const xmlChar *)"descendant"
99#define XP_AXIS_DESCENDANT_OR_SELF (const xmlChar *)"descendant-or-self"
100#define XP_AXIS_FOLLOWING (const xmlChar *)"following"
101#define XP_AXIS_FOLLOWING_SIBLING (const xmlChar *)"following-sibling"
102#define XP_AXIS_NAMESPACE (const xmlChar *)"namespace"
103#define XP_AXIS_PARENT (const xmlChar *)"parent"
104#define XP_AXIS_PRECEDING (const xmlChar *)"preceding"
105#define XP_AXIS_PRECEDING_SIBLING (const xmlChar *)"preceding-sibling"
106#define XP_AXIS_SELF (const xmlChar *)"self"
107
108/* Xpath 1.0 Function library + current() from XPath 2.0 */
109#define XP_FN_BOOLEAN (const xmlChar *)"boolean"
110#define XP_FN_CEILING (const xmlChar *)"ceiling"
111#define XP_FN_CONCAT (const xmlChar *)"concat"
112#define XP_FN_CONTAINS (const xmlChar *)"contains"
113#define XP_FN_COUNT (const xmlChar *)"count"
114#define XP_FN_CURRENT (const xmlChar *)"current"
115#define XP_FN_FALSE (const xmlChar *)"false"
116#define XP_FN_FLOOR (const xmlChar *)"floor"
117#define XP_FN_ID (const xmlChar *)"id"
118#define XP_FN_LANG (const xmlChar *)"lang"
119#define XP_FN_LAST (const xmlChar *)"last"
120#define XP_FN_LOCAL_NAME (const xmlChar *)"local-name"
121#define XP_FN_NAME (const xmlChar *)"name"
122#define XP_FN_NAMESPACE_URI (const xmlChar *)"namespace-uri"
123#define XP_FN_NORMALIZE_SPACE (const xmlChar *)"normalize-space"
124#define XP_FN_NOT (const xmlChar *)"not"
125#define XP_FN_NUMBER (const xmlChar *)"number"
126#define XP_FN_POSITION (const xmlChar *)"position"
127#define XP_FN_ROUND (const xmlChar *)"round"
128#define XP_FN_STARTS_WITH (const xmlChar *)"starts-with"
129#define XP_FN_STRING (const xmlChar *)"string"
130#define XP_FN_STRING_LENGTH (const xmlChar *)"string-length"
131#define XP_FN_SUBSTRING (const xmlChar *)"substring"
132#define XP_FN_SUBSTRING_AFTER (const xmlChar *)"substring-after"
133#define XP_FN_SUBSTRING_BEFORE (const xmlChar *)"substring-before"
134#define XP_FN_SUM (const xmlChar *)"sum"
135#define XP_FN_TRANSLATE (const xmlChar *)"translate"
136#define XP_FN_TRUE (const xmlChar *)"true"
137
138
139/* yuma function extensions */
140#define XP_FN_MODULE_LOADED (const xmlChar *)"module-loaded"
141#define XP_FN_FEATURE_ENABLED (const xmlChar *)"feature-enabled"
142
143/* XPath functions added to YANG 1.1 */
144#define XP_FN_REMATCH (const xmlChar *)"re-match"
145#define XP_FN_DEREF (const xmlChar *)"deref"
146#define XP_FN_DERIVED_FROM (const xmlChar *)"derived-from"
147#define XP_FN_DERIVED_FROM_OR_SELF (const xmlChar *)"derived-from-or-self"
148#define XP_FN_ENUM_VALUE (const xmlChar *)"enum-value"
149#define XP_FN_BIT_IS_SET (const xmlChar *)"bit-is-set"
150
151/* XPath NodeType values */
152#define XP_NT_COMMENT (const xmlChar *)"comment"
153#define XP_NT_TEXT (const xmlChar *)"text"
154#define XP_NT_PROCESSING_INSTRUCTION \
155 (const xmlChar *)"processing-instruction"
156#define XP_NT_NODE (const xmlChar *)"node"
157
158/* XPath 1.0 operator names */
159#define XP_OP_AND (const xmlChar *)"and"
160#define XP_OP_OR (const xmlChar *)"or"
161#define XP_OP_DIV (const xmlChar *)"div"
162#define XP_OP_MOD (const xmlChar *)"mod"
163
164
165/* Header only */
166
185#define XP_URL_ESC_WILDCARD '-'
186
187/********* PCB flags field **********/
188
201#define XP_FL_DYNNODE bit0
202
203
207#define XP_FL_SKIP_MODE bit1
208
209
213#define XP_FL_LOAD_IMPORT bit2
214
215
217#define XP_FL_ABSPATH bit3
218
219
223#define XP_FL_CONFIGONLY bit4
224
229#define XP_FL_USEROOT bit5
230
234#define XP_FL_INSTANCEID bit6
235
236
240#define XP_FL_SCHEMA_INSTANCEID bit7
241
249#define XP_FL_TOP_RPC_INPUT bit8
250
258#define XP_FL_ACTION_INPUT bit9
259
264#define XP_FL_NACM_GET2 bit10
265
270#define XP_FL_KEEP_RESULT bit11
271
272
274#define XP_FL_FOUND_PRED bit12
275
279#define XP_FL_GET_WHEN bit13
280
285#define XP_FL_FROM_DBLSLASH bit14
286
291#define XP_FL_EMPTY_GET bit15
292
293
294
295
296
297/***** backptr_flags definitions *****/
298
300#define XP_FL_BACKPTR_CDIRTY bit0
301
303#define XP_FL_BACKPTR_RDIRTY bit1
304
306#define XP_FL_BACKPTR_SDIRTY bit2
307
308
309/********************************************************************
310* *
311* M A C R O S *
312* *
313*********************************************************************/
314
316#define XPATH_GET_TYPE(P) (P)->xpath_type
317
319#define XPATH_GET_RESTYPE(R) (R)->restype
320
322#define XPATH_NACM_GET2(P) ((P)->flags & XP_FL_NACM_GET2)
323
325#define XPATH_NONCONFIG_WARN(P) (P)->nonconfig_warn_obj
326
328#define XPATH_VAL_CXT(P) ((P)->val || (P)->val_get2)
329
331#define XPATH_ANY_CXT(P) ((P)->val || (P)->val_get2 || (P)->obj)
332
334#define XPATH_SCB(P) (P)->scb
335
337#define XPATH_GET2CB_OBJ(N) (N)->cb->obj
338
340#define XPATH_MHDR(P) (P)->mhdr
341
343#define XPATH_EXPRSTR(P) (P)->exprstr
344
346#define XPATH_SET_DISABLED_OBJ_OK(P) (P)->disabled_obj_ok = TRUE
347
349#define XPATH_CLR_DISABLED_OBJ_OK(P) (P)->disabled_obj_ok = FALSE
350
352#define XPATH_DISABLED_OBJ_OK(P) (P)->disabled_obj_ok
353
355#define XPATH_ROOTCB(P) (P)->rootcb
356
358#define XPATH_SET_FROM_DBLSLASH(P) (P)->flags |= XP_FL_FROM_DBLSLASH
359
361#define XPATH_IS_FROM_DBLSLASH(P) ((P)->flags & XP_FL_FROM_DBLSLASH)
362
364#define XPATH_SET_EMPTY_GET(P) (P)->flags |= XP_FL_EMPTY_GET
365
367#define XPATH_IS_EMPTY_GET(P) ((P)->flags & XP_FL_EMPTY_GET)
368
370#define XPATH_WHEN_OBJ(P) (P)->when_obj
371
372
373/********************************************************************
374* *
375* T Y P E S *
376* *
377*********************************************************************/
378
380typedef enum xpath_restype_t_ {
387
389typedef enum xpath_curmode_t_ {
395
396
400typedef enum xpath_document_t_ {
407
408
412typedef enum xpath_source_t_ {
420
421
423typedef enum xpath_exop_t_ {
443
444
448typedef enum xpath_nodetype_t_ {
455
456
460typedef enum xpath_rntype_t_ {
467
468
472typedef enum xpath_get2_state_t_ {
480
481
485typedef enum xpath_get2_form_t_ {
491
492
509typedef ncx_var_t *
510 (*xpath_getvar_fn_t) (struct xpath_pcb_t_ *pcb,
511 const xmlChar *varname,
512 status_t *res);
513
514
515
516
550typedef status_t
551 (*xpath_bool_eval_fn_t) (struct xpath_pcb_t_ *pcb,
552 val_value_t *context,
553 val_value_t *docroot,
554 boolean *result);
555
556
562typedef struct xpath_get2_cb_t_ {
563 dlq_hdr_t qhdr;
567
570
575
580
582 struct xpath_get2_cb_t_ *parent_cb;
583
587 struct getcb_get2_t_ *get2cb;
588
599 dlq_hdr_t return_keyQ;
600 dlq_hdr_t return_termQ;
602 dlq_hdr_t lookupQ;
605
606
610typedef struct xpath_get2_node_t_ {
617
623
656
658
659
666typedef struct xpath_resnode_t_ {
668 dlq_hdr_t qhdr;
669
673 boolean dblslash;
674
678 boolean aioval;
679
682
692 union node_ {
697 } node;
699
700
705typedef struct xpath_result_t_ {
707 dlq_hdr_t qhdr;
708
711
712 /* flag to identify node types in the nodeQ if XP_RT_NODESET */
713 boolean isval;
714
716 union r_ {
717 /* result node Q of xpath_resnode_t */
718 dlq_hdr_t nodeQ;
719
721 boolean boo;
722
725
727 xmlChar *str;
728 } r;
729
731
732
736typedef struct xpath_pred_ent_t_ {
737 dlq_hdr_t qhdr;
739 const xmlChar *keyval;
741
742
754typedef struct xpath_pcb_t_ {
756 dlq_hdr_t qhdr;
757
763
764 /* XPath expression to evaluate provided by the caller.
765 * This is a mandatory parameter.
766 */
767 xmlChar *exprstr;
768
769 /* XmlTextReader is needed when the evaluation is inside
770 * an XML instance document (rpc request)
771 */
772 xmlTextReaderPtr reader;
773
785
791
797 boolean logerrors;
798
806
809
815
818
821
824
829
835
838
846
849
852
855
858
867 struct xpath_get2_node_t_ *val_get2;
868
870 uint32 flags;
871
874
881 /* Need to save original context for current() fn */
882 xpath_resnode_t orig_context;
883
886
891
893 void *cookie;
894
899 dlq_hdr_t varbindQ;
900
905 const struct xpath_fncb_t_ *functions;
906
921 dlq_hdr_t result_cacheQ;
922
927 dlq_hdr_t resnode_cacheQ;
928
931
934
939
942
945
948
951
957
960
963
966
968 boolean seen;
969
974 void *yang_pcb;
975
981 dlq_hdr_t get2_cbQ; /* Q of xpath_get2_cb_t */
982
989
994
996 struct getcb_get2_t_ *get2cb;
997
999 dlq_hdr_t pred_entQ;
1000
1005
1013 dlq_hdr_t get2_aio_cbQ;
1022
1025
1032
1033} xpath_pcb_t;
1034
1035
1051 (*xpath_fn_t) (xpath_pcb_t *pcb,
1052 dlq_hdr_t *parmQ,
1053 status_t *res);
1054
1055
1061typedef struct xpath_fncb_t_ {
1063 const xmlChar *name;
1064
1067
1069 int32 parmcnt;
1070
1073} xpath_fncb_t;
1074
1075
1077typedef struct xpath_walkerparms_t_ {
1079 dlq_hdr_t *resnodeQ;
1080
1083
1086
1088
1089
1091typedef struct xpath_compwalkerparms_t_ {
1094
1096 xmlChar *cmpstring;
1097
1100
1102 xmlChar *buffer;
1103
1105 uint32 buffsize;
1106
1109
1111 boolean cmpresult;
1112
1116
1117
1119typedef struct xpath_stringwalkerparms_t_ {
1121 xmlChar *buffer;
1122
1124 uint32 buffsize;
1125
1127 uint32 buffpos;
1128
1132
1133
1135typedef struct xpath_aio_cb_t_ {
1137 dlq_hdr_t qhdr;
1138
1143
1144
1147
1154 dlq_hdr_t valQ;
1155
1157
1158
1162/********************************************************************
1163* *
1164* F U N C T I O N S *
1165* *
1166*********************************************************************/
1167
1204extern status_t
1206 tk_chain_t *tkc,
1207 ncx_module_t *mod,
1208 obj_template_t *obj,
1209 dlq_hdr_t *datadefQ,
1210 const xmlChar *target,
1211 obj_template_t **targobj,
1212 dlq_hdr_t **targQ);
1213
1214
1248extern status_t
1250 tk_chain_t *tkc,
1251 ncx_module_t *mod,
1252 ncx_module_t *force_mod,
1253 obj_template_t *obj,
1254 dlq_hdr_t *datadefQ,
1255 const xmlChar *target,
1256 obj_template_t **targobj,
1257 dlq_hdr_t **targQ);
1258
1259
1287extern status_t
1289 tk_chain_t *tkc,
1290 ncx_module_t *mod,
1291 obj_template_t *obj,
1292 dlq_hdr_t *datadefQ,
1293 const xmlChar *target,
1294 obj_template_t **targobj,
1295 dlq_hdr_t **targQ,
1296 ncx_error_t *tkerr);
1297
1298
1317extern status_t
1318 xpath_find_schema_target_int (const xmlChar *target,
1319 obj_template_t **targobj);
1320
1321
1350extern status_t
1352 ncx_module_t *mod,
1353 const xmlChar *target,
1354 val_value_t **targval);
1355
1356
1370extern status_t
1371 xpath_find_schema_target_restconf (const xmlChar *target,
1372 obj_template_t **targobj);
1373
1374
1375
1396extern status_t
1397 xpath_find_schema_target_load (const xmlChar *target,
1398 boolean for_mp,
1399 obj_template_t **targobj);
1400
1401
1402
1421extern status_t
1423 obj_template_t **targobj);
1424
1425
1453extern status_t
1455 ncx_module_t *mod,
1456 const xmlChar *target,
1457 val_value_t *root,
1458 boolean logerrors,
1459 boolean configonly,
1460 xpath_pcb_t **retpcb);
1461
1462
1478extern xpath_pcb_t *
1479 xpath_new_pcb (const xmlChar *xpathstr,
1480 xpath_getvar_fn_t getvar_fn);
1481
1482
1499extern xpath_pcb_t *
1500 xpath_new_pcb_ex (const xmlChar *xpathstr,
1501 xpath_getvar_fn_t getvar_fn,
1502 void *cookie);
1503
1504
1517extern xpath_pcb_t *
1518 xpath_clone_pcb (const xpath_pcb_t *srcpcb);
1519
1520
1530extern xpath_pcb_t *
1531 xpath_find_pcb (dlq_hdr_t *pcbQ,
1532 const xmlChar *exprstr);
1533
1534
1540extern void
1542
1543
1554extern xpath_result_t *
1556
1557
1564extern void
1566 xpath_restype_t restype);
1567
1568
1574extern void
1576
1577
1583extern void
1585
1586
1592extern xpath_resnode_t *
1593 xpath_new_resnode (void);
1594
1595
1601extern void
1603
1604
1610extern void
1612
1613
1619extern void
1621
1622
1628extern void
1630
1631
1648extern status_t
1650 const xmlChar *prefix,
1651 ncx_module_t *mod,
1652 ncx_module_t **targmod);
1653
1654
1674extern status_t
1676 const xmlChar *prefix,
1677 ncx_module_t *mod,
1678 ncx_module_t **targmod,
1679 const xmlChar **modname);
1680
1681
1699extern status_t
1700 xpath_get_modinfo_from_prefix (const xmlChar *prefix,
1701 ncx_module_t *mod,
1702 const xmlChar **modname,
1703 const xmlChar **modrev);
1704
1705
1724extern status_t
1726 const xmlChar *prefix,
1727 uint32 prefixlen,
1728 ncx_module_t *mod,
1729 ncx_module_t **targmod);
1730
1731
1744extern status_t
1746 tk_type_t tktype);
1747
1748
1755extern boolean
1756 xpath_cvt_boolean (const xpath_result_t *result);
1757
1758
1766extern void
1767 xpath_cvt_number (const xpath_result_t *result,
1768 ncx_num_t *num);
1769
1770
1780extern status_t
1782 const xpath_result_t *result,
1783 xmlChar **str);
1784
1785
1792extern dlq_hdr_t *
1794
1795
1802extern xpath_resnode_t *
1804
1805
1812extern xpath_resnode_t *
1814
1815
1822extern val_value_t *
1824
1825
1833extern val_value_t *
1835 val_value_t *valptr);
1836
1837
1844extern obj_template_t *
1846
1847
1854extern obj_template_t *
1856
1857
1864extern val_value_t *
1866
1867
1876extern obj_template_t *
1878
1879
1886extern dlq_hdr_t *
1888
1889
1902extern void
1904 xpath_result_t *destresult);
1905
1906
1907
1915extern boolean
1916 xpath_nodeset_empty (const xpath_result_t *result);
1917
1918
1927extern void
1929 val_value_t *oldval,
1930 val_value_t *newval);
1931
1932
1940extern void
1942 val_value_t *oldval);
1943
1944
1970extern xmlChar *
1971 xpath_convert_url_to_path (const xmlChar *urlpath,
1972 ncx_name_match_t match_names,
1973 boolean alt_naming,
1974 boolean wildcards,
1975 boolean withkeys,
1976 boolean fullkeys,
1977 boolean withmod,
1978 ncx_protocol_t proto,
1979 status_t *res);
1980
1981
1989extern void
1991 ncx_cfg_t cfg_id,
1992 boolean dirty);
1993
1994
2003extern boolean
2005 ncx_cfg_t cfg_id);
2006
2007
2016extern boolean
2018
2019
2025extern void
2027
2028
2038extern status_t
2040 xpath_result_t *target);
2041
2042
2049extern uint32
2051
2052
2058extern void
2060
2061
2067extern void
2069
2070
2082extern xpath_pcb_t *
2084 const xmlChar *expr,
2085 status_t *res);
2086
2087
2096extern void
2098 void *yang_pcb);
2099
2100
2108extern void
2110
2111
2120extern void *
2122
2123
2130extern boolean
2132
2133
2142extern const xmlChar *
2144
2145
2151extern void
2153
2154
2162extern boolean
2164 obj_template_t *obj);
2165
2166
2173extern boolean
2175
2176
2185extern boolean
2187
2188
2196extern xpath_pred_ent_t *
2198 const xmlChar *keyval);
2199
2200
2206extern void xpath_free_pred_ent (xpath_pred_ent_t *ent);
2207
2208
2219extern boolean xpath_expr_ok_for_nolock_get (xpath_pcb_t *pcb);
2220
2221
2231extern xpath_resnode_t *
2233
2234
2243extern boolean
2245
2246
2256extern status_t
2258 xpath_result_t *result);
2259
2260
2267extern xpath_result_t *
2269
2270
2289extern status_t
2290 xpath_make_load_path (const xmlChar *target,
2291 xmlChar **retbuff);
2292
2293
2297#ifdef __cplusplus
2298} /* end extern 'C' */
2299#endif
2300
2301#endif /* _H_xpath */
dlq provides general double-linked list and queue support:
status_t
global error return code
Definition: status_enum.h:210
void xpath_clear_load_import(xpath_pcb_t *pcb)
Clear the PCB out of load import mode.
Definition: xpath.c:4917
void xpath_nodeset_swap_valptr(xpath_result_t *result, val_value_t *oldval, val_value_t *newval)
Check if the result has the oldval ptr and if so, replace it with the newval ptr.
Definition: xpath.c:4416
val_value_t * xpath_get_resnode_val(xpath_resnode_t *resnode)
Get the resnode value pointer from a resnode, if any.
Definition: xpath.c:4268
void xpath_clear_nodeset_result(xpath_result_t *result)
Clear all the nodes from the node-set result.
Definition: xpath.c:4807
boolean xpath_check_backptrs_dirty(xpath_pcb_t *pcb, ncx_cfg_t cfg_id)
Check the backptrs_dirty flag in the PCB.
Definition: xpath.c:4642
status_t xpath_set_result(xpath_pcb_t *pcb, xpath_result_t *result)
Set the result field to save a result with the PCB.
Definition: xpath.c:5378
void xpath_init_result(xpath_result_t *result, xpath_restype_t restype)
Initialize an XPath result struct.
Definition: xpath.c:3168
uint32 xpath_resnode_count(xpath_result_t *result)
Get the number of resnodes in the node-set.
Definition: xpath.c:4761
xpath_pcb_t * xpath_new_session_pcb(ses_cb_t *scb, const xmlChar *expr, status_t *res)
Get a new XPath parser control block for a session.
Definition: xpath.c:4844
const xmlChar * xpath_get_restype_str(xpath_restype_t restype)
Get the string for the specific result type.
Definition: xpath.c:4999
boolean xpath_cvt_boolean(const xpath_result_t *result)
Convert an XPath result to a boolean answer.
Definition: xpath.c:3744
obj_template_t * xpath_get_resnode_obj(xpath_resnode_t *resnode)
Get the resnode object pointer from a value resnode.
Definition: xpath.c:4205
void xpath_init_resnode(xpath_resnode_t *resnode)
Initialize an XPath result node struct.
Definition: xpath.c:3314
status_t xpath_find_schema_target_int(const xmlChar *target, obj_template_t **targobj)
@
Definition: xpath.c:2548
status_t xpath_parse_token(xpath_pcb_t *pcb, tk_type_t tktype)
Parse the XPath token sequence for a specific token type.
Definition: xpath.c:3691
boolean xpath_result_is_get2(xpath_result_t *result)
Check if the result is a node-set for GET2 nodes.
Definition: xpath.c:5348
val_value_t * xpath_next_resnode_valptr(xpath_resnode_t *resnode, val_value_t *valptr)
Get the next node val pointer from a result node struct.
Definition: xpath.c:4152
xpath_resnode_t * xpath_get_first_resnode(xpath_result_t *result)
Get the first result in the renodeQ from a result struct.
Definition: xpath.c:4055
dlq_hdr_t * xpath_get_varbindQ(xpath_pcb_t *pcb)
Get the varbindQ from a parser control block struct.
Definition: xpath.c:4326
status_t xpath_find_schema_target_force_mod(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, ncx_module_t *force_mod, obj_template_t *obj, dlq_hdr_t *datadefQ, const xmlChar *target, obj_template_t **targobj, dlq_hdr_t **targQ)
find target, save in *targobj, force the module
Definition: xpath.c:2412
void xpath_free_pcb(xpath_pcb_t *pcb)
Free a malloced XPath parser control block.
Definition: xpath.c:3065
void xpath_move_nodeset(xpath_result_t *srcresult, xpath_result_t *destresult)
Move the nodes from a nodeset reult into the target nodeset result.
Definition: xpath.c:4355
void * xpath_get_load_import(xpath_pcb_t *pcb)
Get the PCB in load import mode.
Definition: xpath.c:4939
boolean xpath_check_manual_clear(xpath_pcb_t *pcb)
Check the backptrs_dirty flag in the PCB is clearly manually only.
Definition: xpath.c:4686
void xpath_set_load_import(xpath_pcb_t *pcb, void *yang_pcb)
Set the PCB in load import mode.
Definition: xpath.c:4895
xpath_pcb_t * xpath_new_pcb(const xmlChar *xpathstr, xpath_getvar_fn_t getvar_fn)
malloc a new XPath parser control block
Definition: xpath.c:2844
void xpath_discard_resnode(xpath_resnode_t *resnode)
Discard a result node.
Definition: xpath.c:4786
void xpath_free_result(xpath_result_t *result)
Free a malloced XPath result struct.
Definition: xpath.c:3207
void xpath_cvt_number(const xpath_result_t *result, ncx_num_t *num)
Convert an XPath result to a number answer.
Definition: xpath.c:3807
status_t xpath_find_schema_target_restconf(const xmlChar *target, obj_template_t **targobj)
Find a schema target for RESTCONF.
Definition: xpath.c:2586
status_t xpath_add_to_result(xpath_result_t *source, xpath_result_t *target)
Move the resnodes from 1 XPath result to another.
Definition: xpath.c:4731
boolean xpath_need_get2_processing(xpath_result_t *result)
Check if the result nodeset contains any XP_RNT_GET2 nodes.
Definition: xpath.c:4965
status_t xpath_find_data_target_pcb(xpath_pcb_t *pcb, obj_template_t **targobj)
Find schema target for a datastore node.
Definition: xpath.c:2669
xpath_resnode_t * xpath_get_next_resnode(xpath_resnode_t *resnode)
Get the next result in the renodeQ from a result struct.
Definition: xpath.c:4083
void xpath_set_manual_clear(xpath_pcb_t *pcb)
Set the manual clear mode flag in the PCB.
Definition: xpath.c:4706
xpath_resnode_t * xpath_get_first_real_resnode(xpath_result_t *result)
Get the first result in the renodeQ from a result struct.
Definition: xpath.c:5314
status_t xpath_find_val_unique(val_value_t *startval, ncx_module_t *mod, const xmlChar *target, val_value_t *root, boolean logerrors, boolean configonly, xpath_pcb_t **retpcb)
Find the data node for a unique-stmt target.
Definition: xpath.c:2766
void xpath_free_resnode(xpath_resnode_t *resnode)
Free a malloced XPath result node struct.
Definition: xpath.c:3335
status_t xpath_cvt_string(xpath_pcb_t *pcb, const xpath_result_t *result, xmlChar **str)
Convert an XPath result to a string answer.
Definition: xpath.c:3943
boolean xpath_find_obj_in_result(xpath_result_t *result, obj_template_t *obj)
Find the object pointer in the specified result.
Definition: xpath.c:5052
xpath_pcb_t * xpath_find_pcb(dlq_hdr_t *pcbQ, const xmlChar *exprstr)
Find an XPath PCB.
Definition: xpath.c:3036
void xpath_delete_resnode(xpath_resnode_t *resnode)
Delete and free a malloced XPath result node struct.
Definition: xpath.c:3362
void xpath_free_pred_ent(xpath_pred_ent_t *ent)
Free a malloced XPath predicate entry struct.
Definition: xpath.c:5174
xpath_result_t * xpath_new_result(xpath_restype_t restype)
malloc an XPath result
Definition: xpath.c:3135
status_t xpath_make_load_path(const xmlChar *target, xmlChar **retbuff)
Convert the schema path string to the internal canonical format.
Definition: xpath.c:5433
void xpath_set_backptrs_dirty(xpath_pcb_t *pcb, ncx_cfg_t cfg_id, boolean dirty)
Set the backptrs_dirty flag in the PCB.
Definition: xpath.c:4593
xmlChar * xpath_convert_url_to_path(const xmlChar *urlpath, ncx_name_match_t match_names, boolean alt_naming, boolean wildcards, boolean withkeys, boolean fullkeys, boolean withmod, ncx_protocol_t proto, status_t *res)
Convert a URL format path to XPath format path.
Definition: xpath.c:4526
boolean xpath_expr_ok_for_nolock_get(xpath_pcb_t *pcb)
Check an XPath expression to see if it contains any top-level config=true data nodes or not.
Definition: xpath.c:5198
xpath_resnode_t * xpath_new_resnode(void)
Create and initialize an XPath result node struct.
Definition: xpath.c:3286
status_t xpath_get_curmod_from_prefix_str(xpath_pcb_t *pcb, const xmlChar *prefix, uint32 prefixlen, ncx_module_t *mod, ncx_module_t **targmod)
Get the correct module to use for a given prefix Unended string version.
Definition: xpath.c:3638
xpath_pcb_t * xpath_new_pcb_ex(const xmlChar *xpathstr, xpath_getvar_fn_t getvar_fn, void *cookie)
malloc a new XPath parser control block Extended
Definition: xpath.c:2874
status_t xpath_get_modinfo_from_prefix(const xmlChar *prefix, ncx_module_t *mod, const xmlChar **modname, const xmlChar **modrev)
Get the correct module name/revision to use for a given prefix.
Definition: xpath.c:3558
status_t xpath_find_schema_target_load(const xmlChar *target, boolean for_mp, obj_template_t **targobj)
@
Definition: xpath.c:2624
void xpath_set_keep_result(xpath_pcb_t *pcb)
Set the keep-result flag in the PCB.
Definition: xpath.c:5028
boolean xpath_expr_has_predicates(xpath_pcb_t *pcb)
Check if any predicates parsed in the expression.
Definition: xpath.c:5091
xpath_result_t * xpath_get_result(xpath_pcb_t *pcb)
Get the result from a PCB.
Definition: xpath.c:5399
status_t xpath_find_schema_target_err(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, obj_template_t *obj, dlq_hdr_t *datadefQ, const xmlChar *target, obj_template_t **targobj, dlq_hdr_t **targQ, ncx_error_t *tkerr)
find target, save in *targobj, use the errtk if error
Definition: xpath.c:2481
status_t xpath_get_curmod_from_prefix(xpath_pcb_t *pcb, const xmlChar *prefix, ncx_module_t *mod, ncx_module_t **targmod)
Get the correct module to use for a given prefix.
Definition: xpath.c:3417
obj_template_t * xpath_get_cxt_obj(xpath_pcb_t *pcb)
Get the object pointer for the context node.
Definition: xpath.c:4251
void xpath_nodeset_delete_valptr(xpath_result_t *result, val_value_t *oldval)
Check if the result has the oldval ptr and if so, delete it.
Definition: xpath.c:4450
boolean xpath_nodeset_empty(const xpath_result_t *result)
Check if the result is an empty nodeset.
Definition: xpath.c:4387
dlq_hdr_t * xpath_get_resnodeQ(xpath_result_t *result)
Get the renodeQ from a result struct.
Definition: xpath.c:4029
boolean xpath_expr_scan_predicates(xpath_pcb_t *pcb)
Check if any predicates parsed in the expression.
Definition: xpath.c:5114
void xpath_clean_resnode(xpath_resnode_t *resnode)
Clean an XPath result node struct.
Definition: xpath.c:3384
status_t xpath_find_schema_target(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, obj_template_t *obj, dlq_hdr_t *datadefQ, const xmlChar *target, obj_template_t **targobj, dlq_hdr_t **targQ)
Find the schema target, save in *targobj.
Definition: xpath.c:2350
xpath_pred_ent_t * xpath_new_pred_ent(obj_template_t *keyobj, const xmlChar *keyval)
Malloc and init an XPath predicate entry struct.
Definition: xpath.c:5150
val_value_t * xpath_first_resnode_valptr(xpath_resnode_t *resnode)
Get the first result in the renodeQ from a result struct.
Definition: xpath.c:4106
xpath_pcb_t * xpath_clone_pcb(const xpath_pcb_t *srcpcb)
Clone an XPath PCB.
Definition: xpath.c:2927
status_t xpath_find_val_target(val_value_t *startval, ncx_module_t *mod, const xmlChar *target, val_value_t **targval)
Find the XPath value node target.
Definition: xpath.c:2718
void xpath_clean_result(xpath_result_t *result)
Clean an XPath result struct.
Definition: xpath.c:3235
status_t xpath_get_curmod_from_prefix2(xpath_pcb_t *pcb, const xmlChar *prefix, ncx_module_t *mod, ncx_module_t **targmod, const xmlChar **modname)
Get the correct module to use for a given prefix Return found module name if returning not-found erro...
Definition: xpath.c:3455
obj_template_t * xpath_get_resnode_objptr(xpath_resnode_t *resnode)
Get the result node object pointer (obsolete)
Definition: xpath.c:4303
xpath_source_t
XPath expression source type.
Definition: xpath.h:412
xpath_curmode_t
XPath dynamic parsing mode for leafref.
Definition: xpath.h:389
xpath_restype_t
XPath expression result type.
Definition: xpath.h:380
xpath_rntype_t
XPath resnode union types.
Definition: xpath.h:460
xpath_exop_t
XPath expression operation type.
Definition: xpath.h:423
xpath_nodetype_t
XPath expression node types.
Definition: xpath.h:448
xpath_get2_form_t
GET2 control block forms.
Definition: xpath.h:485
xpath_get2_state_t
GET2 retrieval states.
Definition: xpath.h:472
xpath_document_t
document root type.
Definition: xpath.h:400
ncx_var_t *(* xpath_getvar_fn_t)(struct xpath_pcb_t_ *pcb, const xmlChar *varname, status_t *res)
XPath GET variable callback function.
Definition: xpath.h:510
status_t(* xpath_bool_eval_fn_t)(struct xpath_pcb_t_ *pcb, val_value_t *context, val_value_t *docroot, boolean *result)
XPath Boolean EVAL Replacement Callback.
Definition: xpath.h:551
xpath_result_t *(* xpath_fn_t)(xpath_pcb_t *pcb, dlq_hdr_t *parmQ, status_t *res)
XPath function prototype.
Definition: xpath.h:1051
@ XP_SRC_NONE
not set
Definition: xpath.h:413
@ XP_SRC_SCHEMA_INSTANCEID
schema-instance-identifier
Definition: xpath.h:417
@ XP_SRC_INSTANCEID
instance-identifier
Definition: xpath.h:416
@ XP_SRC_LEAFREF
leafref path
Definition: xpath.h:414
@ XP_SRC_XML
NETCONF select filter.
Definition: xpath.h:418
@ XP_SRC_YANG
YANG must or when.
Definition: xpath.h:415
@ XP_CM_NONE
not set
Definition: xpath.h:390
@ XP_CM_TARGET
target mode (normal)
Definition: xpath.h:391
@ XP_CM_KEYVAR
key variable mode
Definition: xpath.h:393
@ XP_CM_ALT
alternate mode
Definition: xpath.h:392
@ XP_RT_NODESET
node-set result
Definition: xpath.h:382
@ XP_RT_STRING
string result
Definition: xpath.h:384
@ XP_RT_NONE
not set
Definition: xpath.h:381
@ XP_RT_NUMBER
number result
Definition: xpath.h:383
@ XP_RT_BOOLEAN
boolean result
Definition: xpath.h:385
@ XP_RNT_NONE
not set
Definition: xpath.h:461
@ XP_RNT_VAL
valptr
Definition: xpath.h:463
@ XP_RNT_GET2
get2ptr
Definition: xpath.h:465
@ XP_RNT_OBJ
objnode
Definition: xpath.h:462
@ XP_RNT_VALHDR
valhdr
Definition: xpath.h:464
@ XP_EXOP_NEGATE
unary '-'
Definition: xpath.h:438
@ XP_EXOP_SUBTRACT
minus '-'
Definition: xpath.h:434
@ XP_EXOP_DIV
keyword 'div'
Definition: xpath.h:436
@ XP_EXOP_GT
right angle bracket '>'
Definition: xpath.h:430
@ XP_EXOP_OR
keyword 'or'
Definition: xpath.h:426
@ XP_EXOP_AND
keyword 'and'
Definition: xpath.h:425
@ XP_EXOP_NONE
not set
Definition: xpath.h:424
@ XP_EXOP_LEQUAL
l.
Definition: xpath.h:431
@ XP_EXOP_NOTEQUAL
bang equals '!='
Definition: xpath.h:428
@ XP_EXOP_FILTER2
double fwd slash (C++ comment)
Definition: xpath.h:441
@ XP_EXOP_MULTIPLY
asterisk '*'
Definition: xpath.h:435
@ XP_EXOP_FILTER1
fwd slash '/'
Definition: xpath.h:440
@ XP_EXOP_UNION
vert.
Definition: xpath.h:439
@ XP_EXOP_GEQUAL
r.
Definition: xpath.h:432
@ XP_EXOP_MOD
keyword 'mod'
Definition: xpath.h:437
@ XP_EXOP_EQUAL
equals '='
Definition: xpath.h:427
@ XP_EXOP_LT
left angle bracket '<'
Definition: xpath.h:429
@ XP_EXOP_ADD
plus sign '+'
Definition: xpath.h:433
@ XP_EXNT_TEXT
text node
Definition: xpath.h:451
@ XP_EXNT_PROC_INST
processing instruction
Definition: xpath.h:452
@ XP_EXNT_COMMENT
comment node
Definition: xpath.h:450
@ XP_EXNT_NODE
XML start, empty, or end tag.
Definition: xpath.h:453
@ XP_EXNT_NONE
not set
Definition: xpath.h:449
@ XP_FORM_GETCB
normal GET2 CB
Definition: xpath.h:487
@ XP_FORM_GETCB_CHILD
child node CB
Definition: xpath.h:489
@ XP_FORM_GETCB_TERM
terminal node CB
Definition: xpath.h:488
@ XP_FORM_NONE
not set
Definition: xpath.h:486
@ XP_RST_GET2_DONE
GET2 callback done.
Definition: xpath.h:477
@ XP_RST_GET2_SKIPPED
GET2 callback skipped.
Definition: xpath.h:475
@ XP_RST_GET2_ERROR
GET2 callback error happened.
Definition: xpath.h:478
@ XP_RST_GET2_START
GET2 callback starting.
Definition: xpath.h:476
@ XP_RST_GET2_PENDING
GET2 callback pending.
Definition: xpath.h:474
@ XP_RST_NONE
not set
Definition: xpath.h:473
@ XP_DOC_DATABASE
datastore context
Definition: xpath.h:402
@ XP_DOC_NONE
not set
Definition: xpath.h:401
@ XP_DOC_RPC_REPLY
rpc-output context
Definition: xpath.h:404
@ XP_DOC_NOTIFICATION
notification context
Definition: xpath.h:405
@ XP_DOC_RPC
rpc-input context
Definition: xpath.h:403
ncx_cfg_t
hardwire the 3 standard configs
Definition: ncxtypes.h:548
ncx_protocol_t
NCX session protocol versions supported.
Definition: ncxtypes.h:997
ncx_name_match_t
Node name match modes.
Definition: ncxtypes.h:695
ncx_xpath_type_t
enumeration for different XPath back pointer types
Definition: ncxtypes.h:1283
ncx_xpath_axis_t
XPath expression axis types.
Definition: ncxtypes.h:662
tk_type_t
different types of tokens parsed during 1st pass
Definition: tk.h:279
YANG module data structures Many internal representations of YANG module constructs.
Data Object Support.
Global error messages for status code enumerations.
YANG error info statement struct used to override default error handling in the server.
Definition: ncxtypes.h:1362
struct to remember error info tkc->cur_err will be checked before tkc->cur for error information
Definition: ncxtypes.h:873
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1134
Schema Mount Root Control Block used in the object template.
Definition: ncxtypes.h:1889
struct of NCX user variable mapping for yangcli
Definition: var.h:131
One YANG data-def-stmt.
Definition: obj.h:1220
Session Control Block.
Definition: ses.h:573
token parsing chain (main parser control block)
Definition: tk.h:415
this struct is inserted in the val->v.child_hdrQ for container and list value nodes
Definition: val.h:1074
one value to match one type
Definition: val.h:912
Common Encoding Message Header No longer XML specific!! Used by JSON and CBOR parsing as well!...
Definition: xml_msg.h:397
AIO Subtree respresentation.
Definition: xpath.h:1135
obj_template_t * obj
backptr to object for this subtree
Definition: xpath.h:1146
dlq_hdr_t qhdr
queue header
Definition: xpath.h:1137
xpath_get2_cb_t * get2cb_cb
backptr to parent GET2CB XPath node control block for the top AIO object
Definition: xpath.h:1142
dlq_hdr_t valQ
Queue of val_value that represent the current complex level object.
Definition: xpath.h:1154
Value node compare walker fn callback parameters.
Definition: xpath.h:1091
ncx_num_t * cmpnum
compare number
Definition: xpath.h:1099
uint32 buffsize
size of internal buffer
Definition: xpath.h:1105
xmlChar * cmpstring
compare string
Definition: xpath.h:1096
xpath_exop_t exop
relational expression operation
Definition: xpath.h:1108
status_t res
status of walker operation
Definition: xpath.h:1114
boolean cmpresult
compare result
Definition: xpath.h:1111
xmlChar * buffer
buffer for internal use
Definition: xpath.h:1102
xpath_result_t * result2
internal result storage
Definition: xpath.h:1093
XPath function control block.
Definition: xpath.h:1061
xpath_fn_t fn
callback pointer for XPath function
Definition: xpath.h:1072
xpath_restype_t restype
expected result type
Definition: xpath.h:1066
int32 parmcnt
parameter count: -1 == N, 0..N == actual cnt
Definition: xpath.h:1069
const xmlChar * name
function name
Definition: xpath.h:1063
Special XPath GET2 state record to be used instead of val_value_t or val_child_hdr_t pointers.
Definition: xpath.h:562
obj_template_t * obj
the GET2 callback is expected to be in this object
Definition: xpath.h:569
dlq_hdr_t return_keyQ
If the get2cb is NULL then this is an expanded get2 CB for a YANG list.
Definition: xpath.h:599
xpath_get2_state_t get2_state
current state of this entry
Definition: xpath.h:566
dlq_hdr_t return_termQ
Q of val_value_t *.
Definition: xpath.h:600
struct xpath_get2_cb_t_ * parent_cb
parent control block used if parent_val not used
Definition: xpath.h:582
dlq_hdr_t qhdr
queue header
Definition: xpath.h:563
val_value_t * parent_val
only 1 of these 2 pointers should be set they are both back-pointers and not malloced here
Definition: xpath.h:579
struct getcb_get2_t_ * get2cb
the getcb for this retrieval, ancestor keys in parent_val or parent_cb
Definition: xpath.h:587
val_value_t * val
dummy value for container or list control block DO NOT USE DIRECTLY FOR CHILDREN OR PARENT
Definition: xpath.h:574
dlq_hdr_t lookupQ
Q of getcb_get2_lookup_t.
Definition: xpath.h:602
Special XPath GET2 resnode.
Definition: xpath.h:610
xpath_get2_form_t form
the form field determines the type of get2 node
Definition: xpath.h:655
val_value_t * val
if 'val' is not set then this resnode represents the object node for a container or list; if set then...
Definition: xpath.h:622
xpath_get2_cb_t * cb
the 'cb' is always set and is a back-pointer to the xpath_cb_t stored in the pcb get2_cbQ the 'val' p...
Definition: xpath.h:616
XPath parser control block.
Definition: xpath.h:754
ncx_error_t tkerr
saved error info for the agent to process
Definition: xpath.h:965
obj_template_t * obj
these parms are used by leafref and XPath1 parsing obj is a bptr to start object
Definition: xpath.h:828
obj_template_t * docroot
document root.
Definition: xpath.h:845
boolean missing_errors
T: missing node is error.
Definition: xpath.h:808
xpath_source_t source
the prefixes in the QNames in the exprstr MUST be resolved in different contexts.
Definition: xpath.h:784
void * yang_pcb
backptr to yang parser control block in progress used to force an inline import instead of returning ...
Definition: xpath.h:974
uint32 resnode_count
The count of entries in the resnode_cacheQ.
Definition: xpath.h:933
boolean backptrs_mode
must/when/data-rule obj_template_t backptr caching support backptrs in use
Definition: xpath.h:938
ncx_module_t * objmod
module containing obj.
Definition: xpath.h:834
obj_template_t * altobj
bptr to pred.
Definition: xpath.h:817
dlq_hdr_t resnode_cacheQ
Q of xpath_resnode_t.
Definition: xpath.h:927
dlq_hdr_t get2_aio_cbQ
if AIO GET2 callbacks needed to process the XPath expression then The Subtree returned from AIO GET2 ...
Definition: xpath.h:1013
uint8 backptrs_flags
internal state for backptr handling
Definition: xpath.h:944
ncx_xpath_type_t xpath_type
expression context
Definition: xpath.h:947
obj_template_t * nonconfig_warn_obj
backptr to object causing nonconfig warning if that is being checked in the obj_walker_fn callback in...
Definition: xpath.h:1004
ncx_errinfo_t errinfo
must-stmt error info.
Definition: xpath.h:790
boolean backptrs_manual_clear
manual clear of backptrs needed
Definition: xpath.h:941
obj_template_t * varobj
bptr to key-expr LHS object
Definition: xpath.h:820
xpath_curmode_t curmode
select targ/alt/var obj
Definition: xpath.h:823
boolean logerrors
T: use log_error F: suppress error messages.
Definition: xpath.h:797
dlq_hdr_t qhdr
queue header in case saved in a Q
Definition: xpath.h:756
const struct xpath_fncb_t_ * functions
The function Q is a copy of the global Q It is not hardwired in case app-specific extensions are adde...
Definition: xpath.h:905
struct getcb_get2_t_ * get2cb
the getcb for a NACM data rule test
Definition: xpath.h:996
void * cookie
The cookie registered with the getvar_fn.
Definition: xpath.h:893
obj_template_t * targobj
these parms are used to parse leafref path-arg limited object tree syntax allowed only targobj is bpt...
Definition: xpath.h:814
ncx_module_t * rootmod
YPW-1416: track module in progress during deviation validation of leafref type replacement.
Definition: xpath.h:842
dlq_hdr_t result_cacheQ
Performance Caches.
Definition: xpath.h:921
xpath_resnode_t context
additive XPath1 context back- pointer to current step results.
Definition: xpath.h:879
uint32 flags
internal processing flags for managing XPath state
Definition: xpath.h:870
obj_template_t * startobj
start object set for rpc,notif validation
Definition: xpath.h:848
ncx_sm_rootcb_t * rootcb
YPW-2079: backptr for current ROOTCB; used in leafref processing.
Definition: xpath.h:1024
ses_cb_t * scb
backptr to session control block in progress.
Definition: xpath.h:988
status_t validateres
validation stage result
Definition: xpath.h:959
xpath_getvar_fn_t getvar_fn
The getvar_fn callback function may be set to allow user variables to be supported in this XPath expr...
Definition: xpath.h:890
boolean disabled_obj_ok
YPW-1774: need to ignore if-feature=false while validating leafref path-stmt.
Definition: xpath.h:1021
obj_template_t * when_obj
check special context rules for when-stmt If the when_obj is set then the original context and this o...
Definition: xpath.h:1031
xpath_result_t * context_result
internal context result during processing
Definition: xpath.h:885
xml_msg_hdr_t * mhdr
backptr to the message header in progress if processing an XPath select filter for NETCONF
Definition: xpath.h:993
dlq_hdr_t pred_entQ
Internal state processing, Q of xpath_pred_ent_t.
Definition: xpath.h:999
tk_chain_t * tkc
token chain for exprstr, Often saved and reset each evaluation so the parse is done only once
Definition: xpath.h:762
val_value_t * val
saved state for the current() function result
Definition: xpath.h:851
struct xpath_get2_node_t_ * val_get2
YPW-1342 the context node can be one of the following nodes.
Definition: xpath.h:867
xpath_document_t doctype
document context for this evaluation
Definition: xpath.h:857
dlq_hdr_t get2_cbQ
if GET2 callbacks needed to process the XPath expression then they will be stored in this queue and x...
Definition: xpath.h:981
status_t valueres
evaluation stage result
Definition: xpath.h:962
status_t parseres
first and second pass parsing results.
Definition: xpath.h:956
val_value_t * val_docroot
cfg->root for db
Definition: xpath.h:854
boolean logwrongtype
T: log wrong-type warnings.
Definition: xpath.h:805
boolean seen
internal yangdiff support
Definition: xpath.h:968
ncx_module_t * impmod
[sub]module containing obj
Definition: xpath.h:837
xpath_result_t * result
The XPath result for this evaluation.
Definition: xpath.h:873
uint32 result_count
The count of entries in the result_cacheQ.
Definition: xpath.h:930
boolean xpath_predicate
true when processing a predicate
Definition: xpath.h:950
dlq_hdr_t varbindQ
The varbindQ may be used instead of the getvar_fn to store user variables to be supported in this XPa...
Definition: xpath.h:899
quick processing of NACM data rule predicates.
Definition: xpath.h:736
obj_template_t * keyobj
backptr to schema tree
Definition: xpath.h:738
dlq_hdr_t qhdr
queue header
Definition: xpath.h:737
const xmlChar * keyval
backptr to token value
Definition: xpath.h:739
XPath result node struct.
Definition: xpath.h:666
dlq_hdr_t qhdr
queue header
Definition: xpath.h:668
boolean aioval
flag indicating the XP_RNT_VAL node type came from a GET2 AIO value tree
Definition: xpath.h:678
boolean dblslash
double slash mode means the shorthand for the descendant-or-self axis was used
Definition: xpath.h:673
xpath_rntype_t rntype
The result node type is the union discriminator for node_.
Definition: xpath.h:681
XPath expression result.
Definition: xpath.h:705
dlq_hdr_t qhdr
queue header in case saved in a Q
Definition: xpath.h:707
xpath_restype_t restype
XPath result type.
Definition: xpath.h:710
Value node stringify walker fn callback parameters.
Definition: xpath.h:1119
uint32 buffsize
size of buffer
Definition: xpath.h:1124
status_t res
result of stringify operation
Definition: xpath.h:1130
xmlChar * buffer
buffer used for stringifying the node-set
Definition: xpath.h:1121
uint32 buffpos
current buffer position
Definition: xpath.h:1127
Value or object node walker fn callback parameters.
Definition: xpath.h:1077
status_t res
status field to continue or exit walk
Definition: xpath.h:1082
dlq_hdr_t * resnodeQ
Q of xpath_resnode_t being checked.
Definition: xpath.h:1079
ncx_xpath_axis_t axis
axis parameter in use
Definition: xpath.h:1085
YANG parser control block.
Definition: yang.h:204
NCX Syntax Token Handler.
union of all the basic number types if float not supported, then it is stored as an int64
Definition: ncxtypes.h:780
if the result->isval flag is false then the objptr is used in all resnodes in that result
Definition: xpath.h:692
val_child_hdr_t * valhdr
result is a value node header
Definition: xpath.h:695
obj_template_t * objptr
object for YANG validation mode
Definition: xpath.h:693
val_value_t * valptr
result is a plain value node
Definition: xpath.h:694
xpath_get2_node_t get2node
result is a GET2 state node
Definition: xpath.h:696
result r contains the appropiate data depending on restype
Definition: xpath.h:716
ncx_num_t num
numeric result
Definition: xpath.h:724
boolean boo
boolean result
Definition: xpath.h:721
xmlChar * str
string result
Definition: xpath.h:727
Value Node Basic Support.
NCX Variable Support.
YANG Module parser utilities.