yumapro  24.10-10
YumaPro SDK
Loading...
Searching...
No Matches
getcb.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2023, 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_getcb
13#define _H_getcb
14
15/* FILE: getcb.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----------------------------------------------------------------------
3516-apr-07 abb Begun; split out from agt_ps.h
36
37*/
38
39#ifndef _H_ncxconst
40#include "ncxconst.h"
41#endif
42
43#ifndef _H_obj
44#include "obj.h"
45#endif
46
47#ifndef _H_rpc
48#include "rpc.h"
49#endif
50
51#ifndef _H_ses
52#include "ses.h"
53#endif
54
55#ifndef _H_status_enum
56#include "status_enum.h"
57#endif
58
59#ifndef _H_val
60#include "val.h"
61#endif
62
63#ifndef _H_val_util
64#include "val_util.h"
65#endif
66
67#ifdef __cplusplus
68extern "C" {
69#endif
70
71
103/********************************************************************
104* *
105* C O N S T A N T S *
106* *
107*********************************************************************/
108
109/* input parameter macros */
110#define GETCB_GET2_TXID_STR(G) (G)->txid_str
111#define GETCB_GET2_OBJ(G) (G)->obj
112#define GETCB_GET2_TESTFN(G) (G)->testfn
113#define GETCB_GET2_KEYQ(G) &(G)->keyQ
114#define GETCB_GET2_MATCHQ(G) &(G)->matchQ
115#define GETCB_GET2_SELECTQ(G) &(G)->selectQ
116#define GETCB_GET2_RETURN_KEYQ(G) &(G)->return_keyQ
117#define GETCB_GET2_RETURN_VALQ(G) &(G)->return_valQ
118#define GETCB_GET2_GETBULKQ(G) &(G)->getbulkQ
119#define GETCB_GET2_CBMODE(G) (G)->cbmode
120#define GETCB_GET2_MAX_ENTRIES(G) (G)->max_entries
121#define GETCB_GET2_MAX_LEVELS(G) (G)->max_levels
122#define GETCB_GET2_OPER_DATA(G) (G)->oper_data
123#define GETCB_GET2_CONFIG_DATA(G) (G)->config_data
124#define GETCB_GET2_PRE_PROCESS(G) (G)->pre_process
125#define GETCB_GET2_EXPAND_VAREXPR(G) (G)->expand_varexpr
126#define GETCB_GET2_KEYS_ONLY(G) (G)->keys_only
127#define GETCB_GET2_WITH_DEFAULTS(G) (G)->with_defaults
128#define GETCB_GET2_SELECT(G) (G)->select_only
129#define GETCB_GET2_API_MODE(G) (G)->api_mode
130#define GETCB_GET2_WITH_ORIGIN(G) (G)->with_origin
131#define GET2CB_GET2_SCB(G) (G)->scb
132#define GETCB_GET2_SCB(G) (G)->scb
133#define GETCB_GET2_MSGHDR(G) (G)->msghdr
134
135/* internal state data macros */
136#define GETCB_GET2_START_ADD_KEY(G) (G)->start_add_key
137#define GETCB_GET2_ACMTEST_RESULT(G) (G)->acmtest_result
138#define GETCB_GET2_FIRST_SIBLING(G) (G)->first_sibling
139#define GETCB_GET2_FIRST_LL_SIBLING(G) (G)->first_llsibling
140#define GETCB_GET2_LAST_LL_SIBLING(G) (G)->last_llsibling
141#define GETCB_GET2_LAST_SIBLING(G) (G)->last_sibling
142#define GETCB_GET2_FIRST_CHILD(G) (G)->first_child
143#define GETCB_GET2_FIRST_NOKEY_CHILD(G) (G)->isfirst_nokey
144#define GETCB_GET2_FIRST(G) (G)->isfirst
145#define GETCB_GET2_LAST(G) (G)->islast
146#define GETCB_GET2_WROTE_LIST(G) (G)->wrote_some_lists
147#define GETCB_GET2_FINISH_LIST(G) (G)->finish_list
148
149/* return data macros */
150#define GETCB_GET2_MORE_DATA(G) (G)->more_data
151#define GETCB_GET2_ACTIVE_CASE_MODNAME(G) (G)->active_case_modname
152#define GETCB_GET2_ACTIVE_CASE(G) (G)->active_case
153#define GETCB_GET2_PARENT_VAL(G) (G)->parent_val
154#define GETCB_GET2_PARENT_CB(G) (G)->parent_cb
155#define GETCB_GET2_REMOVE_KEY(G,C) dlq_remove(C)
156#define GETCB_GET2_REMOVE_MATCH(G,C) dlq_remove(C)
157#define GETCB_GET2_REMOVE_VAL(G,C) dlq_remove(C)
158
159
160#define GETCB_GET2_FIRST_KEY(G) \
161 (val_value_t *)dlq_firstEntry(&(G)->keyQ)
162
163#define GETCB_GET2_NEXT_KEY(G,C) \
164 (val_value_t *)dlq_nextEntry(C)
165
166#define GETCB_GET2_FIRST_MATCH(G) \
167 (val_value_t *)dlq_firstEntry(&(G)->matchQ)
168
169#define GETCB_GET2_NEXT_MATCH(G,C) \
170 (val_value_t *)dlq_nextEntry(C)
171
172#define GETCB_GET2_FIRST_SELECT(G) \
173 (getcb_get2_select_t *)dlq_firstEntry(&(G)->selectQ)
174
175#define GETCB_GET2_NEXT_SELECT(G,C) \
176 (getcb_get2_select_t *)dlq_nextEntry(C)
177
178#define GETCB_GET2_MATCH_TEST_DONE(G) (G)->match_test_done
179
180#define GETCB_GET2_RETURN_VAL(G) &(G)->return_val
181
182#define GETCB_GET2_RETURN_VAL_SET(G) \
183 ((G)->return_val.btyp != NCX_BT_NONE)
184
185#define GETCB_GET2_FIRST_RETURN_KEY(G) \
186 (val_value_t *)dlq_firstEntry(&(G)->return_keyQ)
187
188#define GETCB_GET2_NEXT_RETURN_KEY(G,C) \
189 (val_value_t *)dlq_nextEntry(C)
190
191#define GETCB_GET2_FIRST_RETURN_VAL(G) \
192 (val_value_t *)dlq_firstEntry(&(G)->return_valQ)
193
194#define GETCB_GET2_NEXT_RETURN_VAL(G,C) \
195 (val_value_t *)dlq_nextEntry(C)
196
197#define GETCB_GET2_RESPONSEQ(G) &(G)->responseQ
198
199#define GETCB_GET2_FIRST_RESPONSE(G) \
200 (getcb_get2_t *)dlq_firstEntry(&(G)->responseQ)
201
202#define GETCB_GET2_NEXT_RESPONSE(G,C) \
203 (getcb_get2_t *)dlq_nextEntry(C)
204
205#define GETCB_GET2_REMOVE_RESPONSE(G,C) dlq_remove(C)
206
207
208#define GETCB_GET2_FIRST_GETBULK(G) \
209 (getcb_get2_getbulk_t *)dlq_firstEntry(&(G)->getbulkQ)
210
211#define GETCB_GET2_NEXT_GETBULK(G,C) \
212 (getcb_get2_getbulk_t *)dlq_nextEntry(C)
213
214#define GETCB_GET2_DATASTORE(G) (G)->nmda_ds
215
216#define GETCB_GET2_ORIGIN(G) (G)->nmda_origin
217
218
219/* All in One Queue Macros */
220#define GETCB_GET2_RETURN_AIOQ(G) &(G)->return_aioQ
221#define GETCB_AIO_ENCODING(G) (G)->aio_encoding
222#define GETCB_AIO_BUFFER(G) (G)->aio_return_buff
223
224#define GETCB_GET2_FIRST_RETURN_AIO_VAL(G) \
225 (val_value_t *)dlq_firstEntry(&(G)->return_aioQ)
226
227#define GETCB_GET2_NEXT_RETURN_AIO_VAL(C) \
228 (val_value_t *)dlq_nextEntry(C)
229
230#define GETCB_GET2_USER_DATA_REF(G) (G)->user_data_ref
231
232#define GETCB_GET2_USER_DATA_INDEX(G) (G)->user_data_index
233
234/* Schema mount MPID field
235 * The parameter G is a getcb_get2_t *
236 */
237#define GETCB_GET2_SM_MPID(G) (G)->sm_mpid
238
243#define GETCB_GET2_SM_MPID_MALLOCED(G) (G)->sm_mpid_malloced
244
245#define GETCB_FLAG_KEYS (const xmlChar *)"keys"
246#define GETCB_FLAG_CONFIG (const xmlChar *)"config"
247#define GETCB_FLAG_OPER (const xmlChar *)"oper"
248#define GETCB_FLAG_GETNEXT (const xmlChar *)"getnext"
249#define GETCB_FLAG_WITHDEF (const xmlChar *)"withdef"
250#define GETCB_FLAG_SELECT (const xmlChar *)"select"
251#define GETCB_FLAG_WITH_ORIGIN (const xmlChar *)"with-origin"
252#define GETCB_FLAG_PRE_PROCESS (const xmlChar *)"pre-process"
253
254
255/********************************************************************
256* *
257* T Y P E S *
258* *
259*********************************************************************/
260
262typedef enum getcb_mode_t_ {
267
268
269/* get2 walker callback modes for the 'normal' API mode */
270typedef enum getcb_api_mode_t_ {
271 GETCB_API_MODE_NONE,
272 GETCB_API_MODE_NORMAL,
273 GETCB_API_MODE_1SHOT,
274 GETCB_API_MODE_CHOICE,
275 GETCB_API_MODE_CONFIG_NODE, // config=true node
276 GETCB_API_MODE_ALL_IN_ONE, // All in One retrieval
277 GETCB_API_MODE_ALL_IN_ONE_1SHOT
278} getcb_api_mode_t;
279
280
282typedef enum getcb_walker_mode_t_ {
283 GETCB_WALK_MODE_NONE,
284
285 /* get2 walker callback modes for the 'normal' API mode */
286 GETCB_WALK_MODE_START,
287 GETCB_WALK_MODE_TERM,
288 GETCB_WALK_MODE_END,
289
290 /* get2 walker callback mode for the '1shot' API mode */
291 GETCB_WALK_MODE_1SHOT,
292
293 /* get2 walker callback mode for pre-get choices API mode */
294 GETCB_WALK_MODE_CHOICE
296
297
299typedef enum getcb_walker_status_t_ {
300 GETCB_WALK_STAT_NONE,
301 GETCB_WALK_STAT_CONTINUE,
302 GETCB_WALK_STAT_STOP_INSTANCE,
303 GETCB_WALK_STAT_STOP_OBJECT,
304 GETCB_WALK_STAT_STOP_WALK
306
307
312typedef struct getcb_keyval_t_ {
313 dlq_hdr_t qhdr;
314 xmlChar *value;
317 boolean fixed_value;
319
320
322typedef struct getcb_get2_lookup_t_ {
323 dlq_hdr_t qhdr;
325 dlq_hdr_t keyvalQ;
326 boolean full_lookup;
328
329
331typedef struct getcb_get2_select_t_ {
332 dlq_hdr_t qhdr;
333 const xmlChar *modname;
334 const xmlChar *objname;
336
337
348typedef struct getcb_get2_getbulk_t_ {
349 dlq_hdr_t qhdr;
352 dlq_hdr_t return_keyQ;
353
355 dlq_hdr_t return_valQ;
357
358
360typedef struct getcb_get2_t_ {
361 dlq_hdr_t qhdr;
363 /********** I N P U T P A R A M E T E R S *******/
364
366 xmlChar *txid_str;
367
370
373
380 dlq_hdr_t keyQ;
381
386 dlq_hdr_t matchQ;
387
401 dlq_hdr_t selectQ;
405
410
415
417 boolean oper_data;
418
423 boolean config_data;
424
429
433 boolean keys_only;
434
438 boolean select_only;
439
446
463 getcb_api_mode_t api_mode;
464
466 boolean with_origin;
467
468 /********** I N T E R N A L S T A T E D A T A *******/
469
475
478
481
486
488 boolean islast;
489 boolean isfirst;
490 boolean aio_done;
493 boolean first_child;
498
502 boolean finish_list;
503
504 /********** C A L L B A C K R E T U R N D A T A *******/
505
510 boolean more_data;
511
516 dlq_hdr_t getbulkQ;
523 xmlChar *active_case;
524
526 dlq_hdr_t return_keyQ;
527
529 dlq_hdr_t return_valQ;
530
540
544 dlq_hdr_t responseQ; // Q of getcb_get2_t structs
545
553
559
562
563 struct getcb_get2_t_ *parent_cb;
564
572 dlq_hdr_t return_aioQ;
573
576
579
584
589
590
596
601
602
603 /******** C A L L B A C K S T A T E D A T A *******/
604
618
630
636 boolean pre_process;
637
643
649
651
652
665typedef status_t
666 (*getcb_fn_t) (ses_cb_t *scb,
667 getcb_mode_t cbmode,
668 const val_value_t *virval,
669 val_value_t *dstval);
670
671
672
691typedef status_t
692 (*getcb_fn2_t) (ses_cb_t *scb,
693 xml_msg_hdr_t *msg,
694 getcb_get2_t *get2cb);
695
696
735 getcb_get2_t *get2cb,
736 obj_template_t *obj,
737 val_value_t *val,
738 void *cookie);
739
740
748extern void
750
751
758extern getcb_get2_t *
759 getcb_new_get2cb (void);
760
761
767extern void
769
770
777extern void
779 boolean reuse);
780
781
791extern void
793 val_value_t *val);
794
795
802extern val_value_t *
804 obj_template_t *obj);
805
806
816extern val_value_t *
818 xmlns_id_t obj_nsid,
819 const xmlChar *obj_name);
820
821
834extern val_value_t *
836 xmlns_id_t obj_nsid,
837 const xmlChar *obj_name,
838 const xmlChar *valstr);
839
840
848extern val_value_t *
850 val_value_t *curval);
851
852
862extern val_value_t *
864 obj_template_t *obj);
865
866
877extern val_value_t *
879 const xmlChar *modname,
880 const xmlChar *objname);
881
882
895extern val_value_t *
897 const xmlChar *modname,
898 const xmlChar *objname,
899 uint32 keynum);
900
901
913extern val_value_t *
915 const xmlChar *modname,
916 const xmlChar *objname,
917 uint32 objlvl);
918
919
927extern val_value_t *
929 obj_template_t *obj);
930
931
941extern void
943 val_value_t *val);
944
945
954extern void
956 val_value_t *val);
957
958
969extern status_t
971 const xmlChar *modname,
972 const xmlChar *objname);
973
974
985extern void
987 val_value_t *val);
988
989
997extern val_value_t *
999 obj_template_t *obj);
1000
1001
1011extern val_value_t *
1013 xmlns_id_t obj_nsid,
1014 const xmlChar *obj_name);
1015
1016
1023extern void
1025
1026
1032extern void
1034
1035
1041extern void
1043
1044
1058extern val_value_t *
1060 obj_template_t *get_request_obj,
1061 boolean preserve_data,
1062 xml_msg_hdr_t *msg,
1063 status_t *res);
1064
1065
1077extern getcb_get2_t *
1078 getcb_request_val_to_get2cb (val_value_t *get_request_val,
1079 boolean preserve_data,
1080 status_t *res);
1081
1082
1095extern val_value_t *
1097 obj_template_t *response_obj,
1098 boolean preserve_data,
1099 status_t *res);
1100
1101
1113extern getcb_get2_t *
1115 boolean preserve_data,
1116 status_t *res);
1117
1118
1126extern void
1128 getcb_get2_t *return_get2cb);
1129
1130
1138extern status_t
1139 getcb_move_response_get2cb (getcb_get2_t *response_get2cb,
1140 getcb_get2_t *get2cb);
1141
1142
1153extern status_t
1155 getcb_get2_t *get2cb,
1156 boolean replace_mode);
1157
1158
1180extern status_t
1182 xml_msg_hdr_t *msg,
1183 val_value_t *parentval,
1184 getcb_get2_t *parent_get2cb,
1185 obj_template_t *obj,
1186 boolean with_defaults,
1187 getcb_get2_walker_fn_t walkerfn,
1188 void *cookie);
1189
1190
1219extern status_t
1221 xml_msg_hdr_t *msg,
1222 val_value_t *parentval,
1223 getcb_get2_t *parent_get2cb,
1224 obj_template_t *obj,
1225 boolean with_defaults,
1226 getcb_get2_walker_fn_t walkerfn,
1227 void *cookie,
1228 getcb_get2_t *force_get2cb,
1229 getcb_api_mode_t api_mode);
1230
1231
1243extern status_t
1245 xml_msg_hdr_t *msg,
1246 val_nodetest_fn_t testfn,
1247 getcb_get2_t *get2cb);
1248
1249
1256extern getcb_keyval_t *
1257 getcb_new_keyval (const xmlChar *keyval);
1258
1259
1268extern getcb_keyval_t *
1270 obj_template_t *keyobj,
1271 boolean fixed_value);
1272
1273
1282extern getcb_keyval_t *
1283 getcb_new_keyval3 (const xmlChar *keyval,
1284 obj_template_t *keyobj,
1285 boolean fixed_value);
1286
1287
1288
1294extern void
1296
1297
1298
1304extern void
1305 getcb_clean_keyvalQ (dlq_hdr_t *que);
1306
1307
1315extern getcb_get2_lookup_t *
1317 dlq_hdr_t *keyvalQ);
1318
1319
1325extern void
1327
1328
1334extern void
1335 getcb_clean_get2_lookupQ (dlq_hdr_t *lookupQ);
1336
1337
1345extern getcb_get2_lookup_t *
1347 dlq_hdr_t *lookupQ);
1348
1349
1357extern getcb_get2_select_t *
1358 getcb_new_get2_select (const xmlChar *modname,
1359 const xmlChar *objname);
1360
1361
1367extern void
1369
1370
1379extern boolean
1381 const xmlChar *modname,
1382 const xmlChar *objname);
1383
1384
1390extern void
1392
1393
1403extern boolean
1405 obj_template_t *reqobj);
1406
1407
1421extern boolean
1423 obj_template_t *reqobj,
1424 uint32 *choicecnt,
1425 obj_template_t **top_choice);
1426
1427
1449extern obj_template_t *
1451 obj_template_t *parent_obj);
1452
1453
1474extern obj_template_t *
1476 obj_template_t *curchild);
1477
1478
1487extern status_t
1489 const xmlChar *active_case_modname,
1490 const xmlChar *active_case);
1491
1492
1498extern getcb_get2_getbulk_t *
1500
1501
1507extern void
1509
1510
1521extern status_t
1523
1524
1554extern status_t
1556 ses_cb_t *scb,
1557 getcb_get2_t *parent_get2cb,
1558 obj_template_t *targobj,
1559 val_value_t *curval,
1560 uint32 choice_cnt,
1561 obj_template_t *top_choice,
1562 boolean *force_remove,
1563 getcb_get2_t **ret_get2cb);
1564
1565
1566
1575extern void
1576 getcb_log_walker (const xmlChar *caller,
1577 getcb_walker_mode_t walker_mode,
1578 const xmlChar *objname,
1579 const xmlChar *valname);
1580
1581
1589extern status_t
1590 getcb_clone_keyQ (dlq_hdr_t *srcQ,
1591 dlq_hdr_t *destQ);
1592
1593
1601extern boolean
1603
1604
1610extern void
1612
1613
1620extern void
1622 val_value_t *val);
1623
1624
1630extern void
1632
1633
1643extern boolean
1645 obj_template_t *chobj);
1646
1647
1656extern getcb_get2_t *
1658 dlq_hdr_t *keyQ);
1659
1660
1671extern boolean
1673 val_value_t *useval,
1674 getcb_get2_lookup_t *lookup);
1675
1676
1687extern boolean
1689 val_value_t *useval,
1690 getcb_get2_t *get2cb);
1691
1692
1703extern boolean
1705 val_value_t *useval,
1706 dlq_hdr_t *srcQ);
1707
1708
1716extern status_t
1718 const xmlChar *buffer);
1719
1720
1726extern void
1728
1729
1739extern val_value_t *
1741 status_t *retres);
1742
1746#ifdef __cplusplus
1747} /* end extern 'C' */
1748#endif
1749
1750#endif /* _H_getcb */
status_t getcb_pre_get2_choices(xml_msg_hdr_t *msg, ses_cb_t *scb, getcb_get2_t *parent_get2cb, obj_template_t *targobj, val_value_t *curval, uint32 choice_cnt, obj_template_t *top_choice, boolean *force_remove, getcb_get2_t **ret_get2cb)
Invoke the get2 callbacks for each of the implied choice-stmt nodes in a subtree or REST resource req...
Definition: getcb.c:9192
void getcb_clean_return_data(getcb_get2_t *get2cb)
Clean the return data in the return_val and return_valQ.
Definition: getcb.c:6865
val_value_t * getcb_find_key(getcb_get2_t *get2cb, obj_template_t *obj)
Find an input keyval in the get2cb keyQ.
Definition: getcb.c:6467
getcb_get2_t * getcb_response_val_to_get2cb(val_value_t *response_val, boolean preserve_data, status_t *res)
Convert a <get-response> value to a get2cb struct.
Definition: getcb.c:7779
void getcb_add_return_key(getcb_get2_t *get2cb, val_value_t *val)
Add a return keyval to a get2cb return_keyQ.
Definition: getcb.c:6442
getcb_get2_getbulk_t * getcb_new_get2_getbulk(void)
Create a new getcb_get2_getbulk struct.
Definition: getcb.c:9068
void getcb_free_get2_getbulk(getcb_get2_getbulk_t *getbulk)
Free a getcb_get2_getbulk struct.
Definition: getcb.c:9092
val_value_t * getcb_get2cb_to_request_val(getcb_get2_t *get2cb, obj_template_t *get_request_obj, boolean preserve_data, xml_msg_hdr_t *msg, status_t *res)
Convert a get2cb struct to a <get-request> value tree.
Definition: getcb.c:6901
void getcb_free_get2cb(getcb_get2_t *get2cb)
Clean and free a malloced GET2 control block.
Definition: getcb.c:6158
val_value_t * getcb_find_return_val2(getcb_get2_t *get2cb, xmlns_id_t obj_nsid, const xmlChar *obj_name)
Find a return val in the get2cb return_valQ use { NSID, NAME } instead of object pointer.
Definition: getcb.c:6342
getcb_walker_status_t(* getcb_get2_walker_fn_t)(getcb_walker_mode_t walker_mode, getcb_get2_t *get2cb, obj_template_t *obj, val_value_t *val, void *cookie)
GET2 CONSUMER FUNCTION.
Definition: getcb.h:734
getcb_get2_select_t * getcb_new_get2_select(const xmlChar *modname, const xmlChar *objname)
Create a new getcb_select_t struct.
Definition: getcb.c:8568
status_t(* getcb_fn2_t)(ses_cb_t *scb, xml_msg_hdr_t *msg, getcb_get2_t *get2cb)
GET2 PRODUCER FUNCTION.
Definition: getcb.h:692
void getcb_add_key(getcb_get2_t *get2cb, val_value_t *val)
Add a keyval to a get2cb keyQ.
Definition: getcb.c:6640
val_value_t * getcb_find_next_return_val(getcb_get2_t *get2cb, val_value_t *curval)
Find the next matching return val in the get2cb return_valQ.
Definition: getcb.c:6405
getcb_get2_lookup_t * getcb_new_get2_lookup(obj_template_t *obj, dlq_hdr_t *keyvalQ)
Create a new getcb_get2_lookup struct.
Definition: getcb.c:8411
void getcb_free_get2_select(getcb_get2_select_t *select_node)
Free a getcb_get2_select struct.
Definition: getcb.c:8598
getcb_keyval_t * getcb_new_keyval(const xmlChar *keyval)
Create a new GET2 keyval holder.
Definition: getcb.c:8274
getcb_get2_t * getcb_request_val_to_get2cb(val_value_t *get_request_val, boolean preserve_data, status_t *res)
Convert a <get-request> value tree into a get2cb struct.
Definition: getcb.c:7316
status_t getcb_add_select(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname)
Add a select node to a get2cb matchQ.
Definition: getcb.c:6693
boolean getcb_need_get2(obj_template_t *curobj, obj_template_t *reqobj)
check if the node has a get2 callback or in a choice/case subtree that has get2 callback
Definition: getcb.c:8802
val_value_t * getcb_find_key_lvl(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname, uint32 objlvl)
Find an input keyval in the get2cb keyQ.
Definition: getcb.c:6571
void getcb_clean_get2cb(getcb_get2_t *get2cb, boolean reuse)
Clean a get2 control block.
Definition: getcb.c:6180
getcb_walker_mode_t
get2 walker callback modes
Definition: getcb.h:282
void getcb_clean_return_aioQ(getcb_get2_t *get2cb)
Clean the return data return_aioQ.
Definition: getcb.c:9491
boolean getcb_match_keys_keyQ(obj_template_t *useobj, val_value_t *useval, dlq_hdr_t *srcQ)
Match the requested list entry.
Definition: getcb.c:9751
void getcb_log_walker(const xmlChar *caller, getcb_walker_mode_t walker_mode, const xmlChar *objname, const xmlChar *valname)
Print some logging info for a GET2 walker consumer callback.
Definition: getcb.c:9306
boolean getcb_match_keys_lookup(obj_template_t *useobj, val_value_t *useval, getcb_get2_lookup_t *lookup)
Match the requested list entry.
Definition: getcb.c:9600
void getcb_clean_get2_lookupQ(dlq_hdr_t *lookupQ)
Clean a queue of getcb_get2_lookup_t.
Definition: getcb.c:8482
void getcb_clean_keyvalQ(dlq_hdr_t *que)
Free all the Get2 keyvals from a dlq_hdr.
Definition: getcb.c:8389
status_t getcb_move_response_get2cb(getcb_get2_t *response_get2cb, getcb_get2_t *get2cb)
Move the return fields from the return get2cb to the target get2cb.
Definition: getcb.c:7940
getcb_get2_t * getcb_new_parent_get2cb(obj_template_t *obj, dlq_hdr_t *keyQ)
Create a new get2 control block for the parent Used for XGET operation to fill the list's parent get2...
Definition: getcb.c:9559
void getcb_add_return_get2cb(getcb_get2_t *get2cb, getcb_get2_t *return_get2cb)
Add a return get2cb to a get2cb responseQ Used for get-bulk support.
Definition: getcb.c:7916
getcb_keyval_t * getcb_new_keyval3(const xmlChar *keyval, obj_template_t *keyobj, boolean fixed_value)
Create a new Get2 keyval holder using value string.
Definition: getcb.c:8332
status_t getcb_get2_child_obj_ex(ses_cb_t *scb, xml_msg_hdr_t *msg, val_value_t *parentval, getcb_get2_t *parent_get2cb, obj_template_t *obj, boolean with_defaults, getcb_get2_walker_fn_t walkerfn, void *cookie, getcb_get2_t *force_get2cb, getcb_api_mode_t api_mode)
Process the instances of an object for the object itself and 0 or more nest levels of descendant node...
Definition: getcb.c:8148
void getcb_move_return_keys(getcb_get2_t *get2cb)
Move the return keys to the keyQ replacing the nodes in the keyQ if already there.
Definition: getcb.c:6780
getcb_get2_t * getcb_new_get2cb(void)
Malloc and init a new get2 control block.
Definition: getcb.c:6136
status_t getcb_finish_getbulk_entry(getcb_get2_t *get2cb)
Gather the current response in a getbulk entry and save it in the getcb->getbulkQ; The getcb is ready...
Definition: getcb.c:9131
void getcb_init_get2cb(getcb_get2_t *get2cb)
Init a GET2 control block.
Definition: getcb.c:6108
boolean getcb_match_keys_getcb(obj_template_t *useobj, val_value_t *useval, getcb_get2_t *get2cb)
Match the requested list entry.
Definition: getcb.c:9688
status_t getcb_set_active_case(getcb_get2_t *get2cb, const xmlChar *active_case_modname, const xmlChar *active_case)
Set the active case to the specified object.
Definition: getcb.c:9032
void getcb_clean_return_aio_buff(getcb_get2_t *get2cb)
Clean the return AIO buffer, XML or JSON buffer.
Definition: getcb.c:9850
status_t getcb_add_return_aio_buff(getcb_get2_t *get2cb, const xmlChar *buffer)
Add a return buffer to a get2cb control block and set encoding type.
Definition: getcb.c:9808
status_t getcb_get2_child_obj(ses_cb_t *scb, xml_msg_hdr_t *msg, val_value_t *parentval, getcb_get2_t *parent_get2cb, obj_template_t *obj, boolean with_defaults, getcb_get2_walker_fn_t walkerfn, void *cookie)
Process the instances of an object for the object itself and 0 or more nest levels of descendant node...
Definition: getcb.c:8087
boolean getcb_is_get_exact(getcb_get2_t *get2cb)
Check if the getcb represents a response that is for a get-exact or a getnext.
Definition: getcb.c:9394
val_value_t * getcb_get2cb_to_val(getcb_get2_t *get2cb, status_t *retres)
Convert a GET2 CB to the equivalent val_value_t tree only container and list are supported.
Definition: getcb.c:9884
val_value_t * getcb_find_return_key2(getcb_get2_t *get2cb, xmlns_id_t obj_nsid, const xmlChar *obj_name)
Find a return keyval in the get2cb return_keyQ Use { NSID, NAME } instead of object pointer.
Definition: getcb.c:6753
boolean getcb_get2_allowed(xml_msg_hdr_t *msg, obj_template_t *chobj)
Check if the current node and operation are allowed to use the GET2 callback if there is one; Used to...
Definition: getcb.c:9517
status_t getcb_replace_response_get2cb(getcb_get2_t *response_get2cb, getcb_get2_t *get2cb, boolean replace_mode)
Move the return fields from the return get2cb to the target get2cb Can clean out old data first.
Definition: getcb.c:7963
val_value_t * getcb_find_key_num(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname, uint32 keynum)
Find an input keyval in the get2cb keyQ.
Definition: getcb.c:6522
void getcb_add_return_val(getcb_get2_t *get2cb, val_value_t *val)
Add a return val to a get2cb return_valQ.
Definition: getcb.c:6282
val_value_t * getcb_find_match(getcb_get2_t *get2cb, obj_template_t *obj)
Find an input keyval in the get2cb matchQ.
Definition: getcb.c:6615
val_value_t * getcb_get2cb_to_response_val(getcb_get2_t *get2cb, obj_template_t *response_obj, boolean preserve_data, status_t *res)
Convert a get2cb struct to a <get-response> value tree.
Definition: getcb.c:7552
getcb_mode_t
get callback retrieval types; only get2 supports getnext
Definition: getcb.h:262
void getcb_add_match(getcb_get2_t *get2cb, val_value_t *val)
Add a match node to a get2cb matchQ.
Definition: getcb.c:6665
void getcb_dump_get2cb(getcb_get2_t *get2cb)
Print the interesting fields in a get2cb.
Definition: getcb.c:8675
boolean getcb_need_get2_ex(obj_template_t *curobj, obj_template_t *reqobj, uint32 *choicecnt, obj_template_t **top_choice)
check if the node has a get2 callback or in a choice/case subtree that has get2 callback
Definition: getcb.c:8835
obj_template_t * getcb_next_requested_child(getcb_get2_t *get2cb, obj_template_t *curchild)
Check if the specified object has any more terminal nodes that need to be returned for a get2 request...
Definition: getcb.c:8985
getcb_walker_status_t
get2 walker callback return status values
Definition: getcb.h:299
status_t(* getcb_fn_t)(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
GET1 Callback function for agent node get handler.
Definition: getcb.h:666
void getcb_clean_responseQ(getcb_get2_t *get2cb)
Clean the response Q within a get2cb.
Definition: getcb.c:9438
void getcb_undo_move_return_keys(getcb_get2_t *get2cb)
Move back the return keys from the keyQ.
Definition: getcb.c:6837
status_t getcb_handle_acmtest(ses_cb_t *scb, xml_msg_hdr_t *msg, val_nodetest_fn_t testfn, getcb_get2_t *get2cb)
check the access control and testfn callback for a node that would have it skipped because the write_...
Definition: getcb.c:8207
val_value_t * getcb_find_return_val_str(getcb_get2_t *get2cb, xmlns_id_t obj_nsid, const xmlChar *obj_name, const xmlChar *valstr)
Find a return val in the get2cb return_valQ use { NSID, NAME } instead of object pointer.
Definition: getcb.c:6377
val_value_t * getcb_find_return_val(getcb_get2_t *get2cb, obj_template_t *obj)
Find a return val in the get2cb return_valQ.
Definition: getcb.c:6311
void getcb_free_keyval(getcb_keyval_t *keyval)
Free a GET2 keyval.
Definition: getcb.c:8364
val_value_t * getcb_find_key_str(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname)
Find an input keyval in the get2cb keyQ with a string.
Definition: getcb.c:6493
obj_template_t * getcb_first_requested_child(getcb_get2_t *get2cb, obj_template_t *parent_obj)
Check if the specified object has any terminal nodes that need to be returned for a get2 request.
Definition: getcb.c:8922
status_t getcb_clone_keyQ(dlq_hdr_t *srcQ, dlq_hdr_t *destQ)
Copy all the key val_value_t structs to the other queue.
Definition: getcb.c:9360
getcb_keyval_t * getcb_new_keyval2(val_value_t *keynode, obj_template_t *keyobj, boolean fixed_value)
Create a new Get2 keyval holder using val backptr.
Definition: getcb.c:8303
val_value_t * getcb_find_return_key(getcb_get2_t *get2cb, obj_template_t *obj)
Find a return keyval in the get2cb return_keyQ.
Definition: getcb.c:6727
void getcb_free_get2_lookup(getcb_get2_lookup_t *lookup)
Free a getcb_get2_lookup struct.
Definition: getcb.c:8456
boolean getcb_find_get2_select(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname)
Find a getcb_get2_select struct.
Definition: getcb.c:8622
void getcb_add_return_aioQ(getcb_get2_t *get2cb, val_value_t *val)
Add a return val to a get2cb return_aioQ.
Definition: getcb.c:9464
getcb_get2_lookup_t * getcb_find_get2_lookup(obj_template_t *obj, dlq_hdr_t *lookupQ)
Find a getcb_get2_lookup struct.
Definition: getcb.c:8516
@ GETCB_NONE
not set
Definition: getcb.h:263
@ GETCB_GETNEXT_VALUE
GETNEXT request.
Definition: getcb.h:265
@ GETCB_GET_VALUE
GET request.
Definition: getcb.h:264
boolean(* val_nodetest_fn_t)(xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node)
user function callback template to test output of a specified node.
Definition: val_util.h:132
status_t
global error return code
Definition: status_enum.h:210
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
ncx_msg_encoding_t
enumeration for message encoding formats
Definition: ncxtypes.h:647
ncx_nmda_ds_t
internal enumerations for standard NMDA datastores
Definition: ncxtypes.h:1631
ncx_nmda_origin_t
internal enumerations for standard NMDA origins
Definition: ncxtypes.h:1642
Contains NCX constants.
Data Object Support.
NETCONF protocol remote procedure call common definitions.
NETCONF Session Common definitions module.
global error status code enumerations
GET2 getbulk struct This is only used for YANG list objects to produce N getnext entries at a time.
Definition: getcb.h:348
dlq_hdr_t return_keyQ
Q of malloced val_value_t.
Definition: getcb.h:352
dlq_hdr_t return_valQ
Q of malloced val_value_t.
Definition: getcb.h:355
dlq_hdr_t qhdr
will be added to a queue
Definition: getcb.h:349
GET2 lookup struct.
Definition: getcb.h:322
obj_template_t * obj
request_target_obj to get
Definition: getcb.h:324
boolean full_lookup
T: all keys present;.
Definition: getcb.h:326
dlq_hdr_t qhdr
in case added to a queue
Definition: getcb.h:323
dlq_hdr_t keyvalQ
Q of getcb_keyval_t.
Definition: getcb.h:325
GET2 select struct.
Definition: getcb.h:331
dlq_hdr_t qhdr
will be added to a queue
Definition: getcb.h:332
const xmlChar * objname
object name to select
Definition: getcb.h:334
const xmlChar * modname
module name to select
Definition: getcb.h:333
GET2 control block.
Definition: getcb.h:360
xmlChar * txid_str
transaction ID string
Definition: getcb.h:366
boolean keys_only
keys-only: TRUE if only the key leafs are desired from list objects; FALSE if normal retrieval
Definition: getcb.h:433
obj_template_t * obj
object template containing this callback
Definition: getcb.h:369
getcb_mode_t cbmode
reason for the callback (get or getnext)
Definition: getcb.h:404
xml_msg_hdr_t * msghdr
save xml_msg_hdr from response in progress This can be used with scb to record errors with error-info...
Definition: getcb.h:648
dlq_hdr_t responseQ
if this is a request that causes multiple responses then the responseQ will have each response get2cb
Definition: getcb.h:544
dlq_hdr_t return_keyQ
Q of malloced val_value_t.
Definition: getcb.h:526
boolean oper_data
TRUE to get operational data.
Definition: getcb.h:417
xmlChar * active_case_modname
set by a choice test_mode callback to return the name of the active case; If the active_case_modname ...
Definition: getcb.h:522
boolean wrote_some_lists
If TRUE then Last list failed BUT some of the entries were written successfully.
Definition: getcb.h:558
dlq_hdr_t return_valQ
Q of malloced val_value_t.
Definition: getcb.h:529
ncx_nmda_ds_t nmda_ds
save NMDA datastore for GET operational
Definition: getcb.h:575
boolean force_array_obj
force JSON array output
Definition: getcb.h:497
void * user_data_ref
User Data Reference Can be used by GET2 callbacks to store and reference a pointer during the GET2 ca...
Definition: getcb.h:617
boolean isfirst_nokey
flag to track JSON state
Definition: getcb.h:483
boolean pre_process
YPW-2273: pre_process_mode is TRUE if Subtree filter is doing Pre process Selection nodes to see if t...
Definition: getcb.h:636
boolean with_defaults
with_defaults: TRUE if default nodes should be returned this is needed for operational data because t...
Definition: getcb.h:445
boolean last_sibling
flag to track JSON state
Definition: getcb.h:480
boolean first_llsibling
leaf-list siblings
Definition: getcb.h:484
boolean isfirst
also used for JSON subtree proc
Definition: getcb.h:489
xmlChar * aio_return_buff
AIO XML or JSON malloced buffer from callback to use.
Definition: getcb.h:588
boolean sm_mpid_malloced
The MPID will be malloced on the SIL-SA side (TRUE) otherwise set to FALSE if the sm_mpid is a backpt...
Definition: getcb.h:600
uint32 max_entries
max instances to get 0 for all entries, 1 .
Definition: getcb.h:409
val_nodetest_fn_t testfn
value node test function (may be obsolete for get2)
Definition: getcb.h:372
dlq_hdr_t qhdr
queue header
Definition: getcb.h:361
val_value_t * parent_val
save parent backtrs for when-stmt processing of GET2 data
Definition: getcb.h:561
struct getcb_get2_t_ * parent_cb
backptr to parent CB
Definition: getcb.h:563
ncx_msg_encoding_t aio_encoding
In AIO GET2 callback is used with JSON/XML buffers the encoding will represent corresponding encoding...
Definition: getcb.h:583
boolean aio_done
AIO processing is completed.
Definition: getcb.h:490
uint32 user_data_index
User Data Index Can be used by GET2 callbacks to store and reference an index during the GET2 callbac...
Definition: getcb.h:629
boolean match_test_done
content-match done flag ignored unless the matchQ is non-empty If TRUE.
Definition: getcb.h:552
xmlChar * active_case
name of the active case
Definition: getcb.h:523
ses_cb_t * scb
YPW-2375: session control block for SIL access (available since 23.10-19), used by SIL GET2 callbacks...
Definition: getcb.h:642
uint32 max_levels
0 for all levels, 1 .
Definition: getcb.h:414
boolean islast
Used only for AIO RESTCONF processing.
Definition: getcb.h:488
dlq_hdr_t return_aioQ
Q of malloced val_value_t.
Definition: getcb.h:572
dlq_hdr_t selectQ
Q of malloced getcb_get2_select_t; 1 entry for each child select node of the object in this get2cb th...
Definition: getcb.h:401
boolean expand_varexpr
variable expressions: TRUE if a varexpr node should be expanded; FALSE if printed as an expression
Definition: getcb.h:428
dlq_hdr_t matchQ
Q of malloced val_value_t; 1 entry for each content-match leaf in the subtree or XPath filter; these ...
Definition: getcb.h:386
boolean more_data
set by the callback function if there are more instances that follow the specified instance; this is ...
Definition: getcb.h:510
dlq_hdr_t keyQ
Q of malloced val_value_t; 1 entry for each key leaf includes the ancestor keys and keys for the curr...
Definition: getcb.h:380
boolean force_lastsib_value
force JSON state
Definition: getcb.h:496
boolean select_only
select: TRUE if only the selectQ child nodes are desired from the parent for this callback; FALSE if ...
Definition: getcb.h:438
boolean finish_list
Used for CBOR processing to know if the special finish-list callback mode is needed.
Definition: getcb.h:502
ncx_sm_mpid_t * sm_mpid
If schema-mount is in use then the MPID is set for GET2 callbacks that have a ancestor that is a root...
Definition: getcb.h:595
boolean last_llsibling
leaf-list siblings
Definition: getcb.h:485
val_value_t return_val
if just 1 instance is returned, then the return_val will be used; if the btyp is set to something oth...
Definition: getcb.h:539
boolean first_sibling
first sibling done
Definition: getcb.h:494
getcb_api_mode_t api_mode
api_mode: consumer API callback mode
Definition: getcb.h:463
boolean acmtest_result
acmtest result used for NACM check
Definition: getcb.h:477
boolean force_lastsibling
force JSON state
Definition: getcb.h:495
boolean with_origin
get-request with-origin flag
Definition: getcb.h:466
val_value_t * start_add_key
first key val node that was moved from the return_keyQ to the keyQ for nested nodes to process; needs...
Definition: getcb.h:474
dlq_hdr_t getbulkQ
set by the callback function if this is a list callback and multiple entries are returned; this is a ...
Definition: getcb.h:516
ncx_nmda_origin_t nmda_origin
caller will set the return nmda_origin
Definition: getcb.h:578
boolean first_child
Used for JSON subtree proccessing.
Definition: getcb.h:493
boolean config_data
TBD: TRUE to get configuration data not supported yet! All config must be in the cfg->root val_value_...
Definition: getcb.h:423
Key value holder, temp Q of ordered key leaf values used while parsing a path to store the keys until...
Definition: getcb.h:312
xmlChar * value
malloced, if set by agt_yangapi
Definition: getcb.h:314
obj_template_t * objnode
if set by agt_tree
Definition: getcb.h:316
val_value_t * valnode
if set by agt_tree
Definition: getcb.h:315
dlq_hdr_t qhdr
queue header
Definition: getcb.h:313
boolean fixed_value
if partial keys
Definition: getcb.h:317
Moint Point Instance This struct lives in a val_value_t.val_extra struct.
Definition: ncxtypes.h:1815
One YANG data-def-stmt.
Definition: obj.h:1231
Session Control Block.
Definition: ses.h:573
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:404
Value Node Basic Support.
Value Node Utilities.