yumapro  25.10-1
YumaPro SDK
Loading...
Searching...
No Matches
xml_msg.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_xml_msg
13#define _H_xml_msg
14/* FILE: xml_msg.h
15*********************************************************************
16* *
17* P U R P O S E *
18* *
19*********************************************************************/
20
29/*********************************************************************
30* *
31* C H A N G E H I S T O R Y *
32* *
33*********************************************************************
34
35date init comment
36----------------------------------------------------------------------
3714-jan-07 abb Begun; split from agt_rpc.h
3828-feb-13 abb Add JSON, <get2>, and YANG-API support
39*/
40
41#ifndef _H_ncxtypes
42#include "ncxtypes.h"
43#endif
44
45#ifndef _H_status
46#include "status.h"
47#endif
48
49#ifndef _H_val
50#include "val.h"
51#endif
52
53#ifndef _H_xmlns
54#include "xmlns.h"
55#endif
56
57#ifndef _H_xml_util
58#include "xml_util.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
101#define XML_MSG_FL_PREFIX bit0
102
104#define XML_MSG_FL_ETAGS bit1
105
107#define XML_MSG_FL_ETAGS_TEST bit2
108
112#define XML_MSG_FL_TSTAMPS bit3
113
115#define XML_MSG_FL_TSTAMPS_TEST bit4
116
118#define XML_MSG_FL_KEYS bit5
119
121#define XML_MSG_FL_PASSED bit6
122
130#define XML_MSG_FL_DELTA bit7
131
135#define XML_MSG_FL_OWNERS bit8
136
140#define XML_MSG_FL_GET2 bit9
141
143#define XML_MSG_FL_MODTAGS bit10
144
146#define XML_MSG_FL_MODTAGS_EMPTY bit11
147
149#define XML_MSG_FL_ANYXML_TRACK bit12
150
151
153#define XML_MSG_USE_PREFIX(M) ((M)->flags & XML_MSG_FL_PREFIX)
154
156#define XML_MSG_NO_PREFIX(M) ((M)->flags &= ~XML_MSG_FL_PREFIX)
157
158
159/* ETAGS */
160
162#define XML_MSG_WITH_ETAGS(M) ((M)->flags & XML_MSG_FL_ETAGS)
163
165#define XML_MSG_WITH_ETAGS_TEST(M) ((M)->flags & XML_MSG_FL_ETAGS_TEST)
166
168#define XML_MSG_SET_WITH_ETAGS(M) (M)->flags |= XML_MSG_FL_ETAGS
169
171#define XML_MSG_SET_WITH_ETAGS_TEST(M) (M)->flags |= XML_MSG_FL_ETAGS_TEST
172
174#define XML_MSG_CLR_WITH_ETAGS_TEST(M) (M)->flags &= ~XML_MSG_FL_ETAGS_TEST
175
176
177/* TIMESTAMPS */
178
180#define XML_MSG_WITH_TSTAMPS(M) ((M)->flags & XML_MSG_FL_TSTAMPS)
181
183#define XML_MSG_WITH_TSTAMPS_TEST(M) ((M)->flags & XML_MSG_FL_TSTAMPS_TEST)
184
186#define XML_MSG_SET_WITH_TSTAMPS(M) (M)->flags |= XML_MSG_FL_TSTAMPS
187
189#define XML_MSG_SET_WITH_TSTAMPS_TEST(M) (M)->flags |= XML_MSG_FL_TSTAMPS_TEST
190
192#define XML_MSG_CLR_WITH_TSTAMPS_TEST(M) (M)->flags &= ~XML_MSG_FL_TSTAMPS_TEST
193
195#define XML_MSG_TSTAMPS_PASSED(M) ((M)->flags & XML_MSG_FL_PASSED)
196
198#define XML_MSG_SET_TSTAMPS_PASSED(M) (M)->flags |= XML_MSG_FL_PASSED
199
201#define XML_MSG_DELTA(M) ((M)->flags & XML_MSG_FL_DELTA)
202
204#define XML_MSG_SET_DELTA(M) (M)->flags |= XML_MSG_FL_DELTA
205
206
208#define XML_MSG_KEYS_ONLY(M) ((M)->flags & XML_MSG_FL_KEYS)
209
211#define XML_MSG_SET_KEYS_ONLY(M) (M)->flags |= XML_MSG_FL_KEYS
212
213/* WITH-OWNERS */
214
216#define XML_MSG_WITH_OWNERS(M) ((M)->flags & XML_MSG_FL_OWNERS)
217
219#define XML_MSG_SET_WITH_OWNERS(M) (M)->flags |= XML_MSG_FL_OWNERS
220
222#define XML_MSG_CLR_WITH_OWNERS(M) (M)->flags &= ~XML_MSG_FL_OWNERS
223
224
225/* GET2 */
226
228#define XML_MSG_WITH_GET2(M) ((M)->flags & XML_MSG_FL_GET2) ? TRUE : FALSE
229
231#define XML_MSG_SET_WITH_GET2(M) (M)->flags |= XML_MSG_FL_GET2
232
234#define XML_MSG_CLR_WITH_GET2(M) (M)->flags &= ~XML_MSG_FL_GET2
235
237#define XML_MSG_SET_LOOKUPQ(M,Q) (M)->lookupQ = Q
238
240#define XML_MSG_SET_MATCHQ(M,Q) (M)->matchQ = Q
241
243#define XML_MSG_SET_SELECTQ(M,Q) (M)->selectQ = Q
244
245
246/* ANYXML-TRACKING */
247
249#define XML_MSG_ANYXML_TRACK(M) ((M)->flags & XML_MSG_FL_ANYXML_TRACK)
250
252#define XML_MSG_SET_ANYXML_TRACK(M) (M)->flags |= XML_MSG_FL_ANYXML_TRACK
253
255#define XML_MSG_CLR_ANYXML_TRACK(M) (M)->flags &= ~XML_MSG_FL_ANYXML_TRACK
256
258#define XML_MSG_ANYXML_OBJ(M) (M)->anyxml_obj
259
261#define XML_MSG_GET_ERROR_DATAQ(M) &(M)->error_dataQ
262
264#define XML_MSG_ACTIONVAL(M) (M)->actionval
265
267#define XML_MSG_GETBULK(M) (M)->getbulk_cb
268
270#define XML_MSG_GET2_TARGET(M) (M)->get2_target
271
273#define XML_MSG_GET2CB(M) (M)->get2cb
274
275/* MODTAGS */
276
278#define XML_MSG_WITH_MODTAGS(M) ((M)->flags & XML_MSG_FL_MODTAGS)
279
281#define XML_MSG_SET_WITH_MODTAGS(M) (M)->flags |= XML_MSG_FL_MODTAGS
282
284#define XML_MSG_WITH_MODTAGS_EMPTY(M) \
285 ((M)->flags & XML_MSG_FL_MODTAGS_EMPTY)
286
288#define XML_MSG_SET_WITH_MODTAGS_EMPTY(M) \
289 (M)->flags |= XML_MSG_FL_MODTAGS_EMPTY
290
292#define XML_MSG_YPGNMI_GETCB(M) (M)->gnmi_getcb
293
295#define XML_MSG_YPGNMI_EDITCB(M) (M)->gnmi_editcb
296
298#define XML_MSG_PRUNE_BAD_DATA(M) (M)->prune_bad_data
299
301#define XML_MSG_XGET_REQ(M) (M)->xget_request
302
304#define XML_MSG_ALLINONE_MODE(M) (M)->all_in_one_mode
305
309#define XML_MSG_LAST_GET2_FILPTR(M) (M)->get2_filptr
310
312#define XML_MSG_GET2CB_ALLINONE(M) (M)->get2cb
313
314
316#define XML_MSG_NMDA_PARAMS(M) (M)->nmda_params
317
319#define XML_MSG_WITH_ORIGIN(M) \
320 ((M)->nmda_params && (M)->nmda_params->with_origin)
321
323#define XML_MSG_EDIT_CONFIG_ROOT(M) (M)->edit_config_root
324
326#define XML_MSG_DEPTH_TARGET(M) (M)->depth_target
327
328
330#define XML_MSG_NMDA_OPERATIONAL(M) \
331 ((M)->nmda_params && \
332 ((M)->nmda_params->nmda_ds == NCX_NMDA_DS_OPERATIONAL))
333
339#define XML_MSG_SM_MPID(M) (M)->sm_mpid
340
342#define XML_MSG_SID_LOWER(M) (M)->sid_lower
343
344
346#define XML_MSG_SID_UPPER(M) (M)->sid_upper
347
349#define XML_MSG_SID_SKIP(M) (M)->sid_skip
350
352#define XML_MSG_PARENT_SID(M) (M)->parent_sid
353
354
360#define XML_MSG_ACTION_PARENT(M) (M)->action_parent
361
362
370#define XML_MSG_ACTION_PARENT_MODE(M) (M)->action_parent_mode
371
377#define XML_MSG_SKIP_EMPTY_NPCON(M) (M)->skip_empty_npcon
378
379
385#define XML_MSG_PRE_PROCESS_MODE(M) (M)->pre_process_mode
386
387
389#define XML_MSG_JSON_PARSE_NOTIF(M) (M)->json_parse_notif
390
391
397#define XML_MSG_JSON_WR_FIXTOP(M) (M)->json_wr_fixtop
398
399
400/********************************************************************
401* *
402* T Y P E S *
403* *
404*********************************************************************/
405
406
417typedef struct xml_msg_hdr_t_ {
418
420 uint16 flags;
421
430 dlq_hdr_t prefixQ;
435 dlq_hdr_t errQ;
438 dlq_hdr_t filptr_cleanupQ;
460 dlq_hdr_t error_dataQ;
463 dlq_hdr_t *lookupQ;
466 dlq_hdr_t *matchQ;
469 dlq_hdr_t *selectQ;
475 struct agt_acm_cache_t_ *acm_cache;
476
482 uint32 msgid;
483
488
490 boolean cfgid_valid;
491
495 void *acm_cbfn;
496
497 uint32 max_depth;
498 uint32 start_depth;
499 uint32 cur_depth;
503
506
509
512
514 struct tk_chain_t_ *tkc;
515
518
521
524
527
530
533
537 val_value_t *actionval; /* backptr into rpc_input tree */
538
540 struct getbulk_cb_t_ *getbulk_cb;
541
545 struct obj_template_t_ *get2_target;
546
550 struct getcb_get2_t_ *get2cb;
551
553 dlq_hdr_t modtagQ;
554
556 struct ypgnmi_get_cb_t_ *gnmi_getcb;
557
559 struct ypgnmi_edit_cb_t_ *gnmi_editcb;
560
565
570
573
577 struct ncx_filptr_t_ *get2_filptr;
578
581
583 dlq_hdr_t *aiocbQ; // Q of xpath_aio_cb_t
584
589 struct obj_template_t_ *anyxml_obj;
590
597
601 struct obj_template_t_ *depth_target;
602
612
618 ncx_sid_t sid_lower;
619
625 ncx_sid_t sid_upper;
626
628 boolean sid_skip;
629
630
635 ncx_sid_t parent_sid;
636
637 /* YPW-2006: need to GET the parent of an action invocation
638 * This is used for NMDA to verify the action can be called
639 * It is required for YANG 1.1 XPath in case a must or when
640 * statement in the input parameters reaches up into the
641 * config or state data above the action node
642 */
643 struct xpath_pcb_t_ *action_parent;
644
645 /* YPW-2060: need to flag the special get action parent mode
646 * so validation properly handled for AIO and missing NP containers
647 */
648 boolean action_parent_mode;
649
656
660 dlq_hdr_t revcount_revQ;
662 /* YPW-2273: need to flag the special subtree pre-process mode so the
663 * callback has that information and can act accordingly.
664 */
665 boolean pre_process_mode;
666
673
678
680
681
691typedef void
693 xml_msg_hdr_t *mhdr,
694 status_t res,
695 val_value_t *errnode,
696 const xmlChar *badval);
697
698
699
712typedef void
714 xml_msg_hdr_t *mhdr,
715 status_t res,
716 val_value_t *errnode,
717 const xmlChar *badval,
718 const ncx_errinfo_t *errinfo);
719
720
721
732typedef void
734 xml_msg_hdr_t *mhdr,
735 status_t res,
736 struct obj_template_t_ *errobj,
737 const xmlChar *badval);
738
739
748typedef boolean (*xml_msg_authfn_t) (xml_msg_hdr_t *msg,
749 const xmlChar *username,
750 const val_value_t *val);
751
752
771typedef void
773 xml_msg_hdr_t *mhdr,
774 ncx_layer_t layer,
775 status_t res,
776 const xml_node_t *xmlnode,
777 ncx_node_t parmtyp,
778 const void *error_info,
779 ncx_node_t nodetyp,
780 void *error_path);
781
782
803typedef void
805 xml_msg_hdr_t *msghdr,
806 ncx_layer_t layer,
807 status_t res,
808 const xml_node_t *xmlnode,
809 ncx_node_t parmtyp,
810 const void *error_info,
811 ncx_node_t nodetyp,
812 void *error_path,
813 const ncx_errinfo_t *errinfo);
814
815
834typedef void
836 xml_msg_hdr_t *msghdr,
837 ncx_layer_t layer,
838 status_t res,
839 const xml_attr_t *xmlattr,
840 const xml_node_t *xmlnode,
841 const xmlChar *badns,
842 ncx_node_t nodetyp,
843 void *errnode);
844
845
846/********************************************************************
847* *
848* F U N C T I O N S *
849* *
850*********************************************************************/
851
852
861extern void
862 xml_msg_init_hdr (xml_msg_hdr_t *msg);
863
864
876extern void
878
879
893extern const xmlChar *
895 xmlns_id_t parent_nsid,
896 xmlns_id_t nsid,
897 val_value_t *curelem,
898 boolean *xneeded);
899
900
920extern const xmlChar *
922 xmlns_id_t nsid);
923
924
935extern const xmlChar *
937 xmlns_id_t nsid);
938
939
951extern status_t
953 xmlns_id_t nsid,
954 xmlChar **retbuff,
955 uint32 buffsize);
956
957
976extern status_t
978 xml_attrs_t *attrs,
979 boolean addncid,
980 boolean addncxid);
981
982
992extern status_t
994 xml_attrs_t *attrs);
995
996
1011extern status_t
1013 xmlns_id_t nsid,
1014 const xmlChar *badns,
1015 xml_attrs_t *attrs);
1016
1017
1030extern status_t
1032 xml_attrs_t *attrs,
1033 boolean addncx);
1034
1035
1043extern status_t
1045
1046
1055extern status_t
1057 xml_attrs_t* attrs,
1058 xmlns_id_t ncid);
1059
1060
1061
1066extern void xml_msg_init (void);
1067
1068
1073extern void xml_msg_cleanup (void);
1074
1075
1082extern void xml_msg_set_cfgid (xml_msg_hdr_t *msg,
1083 ncx_cfg_t cfgid);
1084
1085
1097extern ncx_cfg_t
1098 xml_msg_get_cfgid (xml_msg_hdr_t *msg,
1099 boolean *isvalid);
1100
1101
1108extern uint32
1110
1111
1118extern ncx_withdefaults_t
1120
1121
1122
1129extern void
1131 ncx_withdefaults_t withdef);
1132
1133
1140extern uint32
1142
1143
1150extern void
1152 uint32 max_depth);
1153
1154
1161extern uint32
1163
1164
1171extern void
1173 uint32 start_depth);
1174
1175
1182extern uint32
1184
1185
1192extern void
1194 uint32 cur_depth);
1195
1196
1205extern ncx_display_mode_t
1207 boolean is_output);
1208
1209
1219extern void
1221 boolean is_output,
1222 ncx_display_mode_t encoding);
1223
1224
1233extern ncx_etag_t
1235 boolean *test);
1236
1237
1245extern void
1247 ncx_etag_t etag,
1248 boolean test_sense);
1249
1250
1260extern time_t
1262 boolean *test);
1263
1264
1272extern void
1274 time_t tstamp,
1275 boolean test_sense);
1276
1277
1284extern dlq_hdr_t *
1286
1287
1294extern dlq_hdr_t *
1296
1297
1304extern dlq_hdr_t *
1306
1307
1313extern void
1315
1316
1322extern void
1324
1325
1344extern boolean
1346 const struct obj_template_t_ *obj);
1347
1348
1360extern void
1362 ncx_filptr_t *filptr);
1363
1364
1371extern status_t
1373
1374
1375/*
1376* @brief Check the revisions
1377*
1378* Check if the revisions are the same in the queue. If they all the same
1379* return 1, that means that get-schema can be used with out revision
1380* specified. Otherwise, use the original count value which will produce
1381* an "duplicate" error reply.
1382*
1383* @param msg xml_msg_hdr_t to use
1384* @param orig_count count of duplicates
1385*
1386* @return count of duplicate revisions
1387*/
1388extern uint32
1389 xml_msg_check_dup_revs (xml_msg_hdr_t *msg,
1390 uint32 orig_count);
1391
1395#ifdef __cplusplus
1396} /* end extern 'C' */
1397#endif
1398
1399#endif /* _H_xml_msg */
uint32 xml_msg_get_max_depth(xml_msg_hdr_t *msg)
Get the message max_depth value.
Definition: xml_msg.c:1366
void xml_msg_save_filptr(xml_msg_hdr_t *msg, ncx_filptr_t *filptr)
Store current message subtree filter in the Queue for later cleanup.
Definition: xml_msg.c:1869
const xmlChar * xml_msg_get_prefix_xpath(xml_msg_hdr_t *msg, xmlns_id_t nsid)
Get the module prefix for XPath.
Definition: xml_msg.c:652
void(* xml_msg_record_attr_error_fn_t)(ses_cb_t *scb, xml_msg_hdr_t *msghdr, ncx_layer_t layer, status_t res, const xml_attr_t *xmlattr, const xml_node_t *xmlnode, const xmlChar *badns, ncx_node_t nodetyp, void *errnode)
Generate an rpc_err_rec_t and save it in the msg.
Definition: xml_msg.h:835
status_t xml_msg_set_with_origin(xml_msg_hdr_t *mhdr)
Set the with-origin parameter to true.
Definition: xml_msg.c:1892
boolean xml_msg_test_max_depth(xml_msg_hdr_t *mhdr, const struct obj_template_t_ *obj)
Test the max_depth parameter if needed.
Definition: xml_msg.c:1779
void xml_msg_set_encoding(xml_msg_hdr_t *msg, boolean is_output, ncx_display_mode_t encoding)
Set the message encoding value.
Definition: xml_msg.c:1525
void xml_msg_set_start_depth(xml_msg_hdr_t *msg, uint32 start_depth)
Set the message start_depth value.
Definition: xml_msg.c:1425
status_t xml_msg_gen_xmlns_attrs(xml_msg_hdr_t *msg, xml_attrs_t *attrs, boolean addncx)
Generate any xmlns directives in the top-level attribute Q.
Definition: xml_msg.c:1048
uint32 xml_msg_get_msgid(xml_msg_hdr_t *msg)
Get the message sequence ID in the message.
Definition: xml_msg.c:1308
status_t xml_msg_finish_prefix_map(xml_msg_hdr_t *msg, xml_attrs_t *attrs)
Finish the queue of xmlns_pmap_t records for the current message.
Definition: xml_msg.c:900
ncx_etag_t xml_msg_get_etag(xml_msg_hdr_t *msg, boolean *test)
Get the message etag match value and test sense.
Definition: xml_msg.c:1554
uint32 xml_msg_get_cur_depth(xml_msg_hdr_t *msg)
Get the message cur_depth value.
Definition: xml_msg.c:1446
void xml_msg_dec_cur_depth(xml_msg_hdr_t *mhdr)
Decrement the cur_depth parameter if needed.
Definition: xml_msg.c:1739
boolean(* xml_msg_authfn_t)(xml_msg_hdr_t *msg, const xmlChar *username, const val_value_t *val)
read authorization callback template
Definition: xml_msg.h:748
void(* xml_msg_obj_error_fn_t)(ses_cb_t *scb, xml_msg_hdr_t *mhdr, status_t res, struct obj_template_t_ *errobj, const xmlChar *badval)
Record an rpc-error for YANG-API/RESTCONF response translation.
Definition: xml_msg.h:733
dlq_hdr_t * xml_msg_get_lookupQ(xml_msg_hdr_t *msg)
Get the GET2 lookup Queue.
Definition: xml_msg.c:1659
const xmlChar * xml_msg_get_prefix_start_tag(xml_msg_hdr_t *msg, xmlns_id_t nsid)
Find the namespace prefix for the specified namespace ID.
Definition: xml_msg.c:705
void xml_msg_set_cur_depth(xml_msg_hdr_t *msg, uint32 cur_depth)
Set the message cur_depth value.
Definition: xml_msg.c:1465
uint32 xml_msg_get_start_depth(xml_msg_hdr_t *msg)
Get the message start_depth value.
Definition: xml_msg.c:1406
const xmlChar * xml_msg_get_prefix(xml_msg_hdr_t *msg, xmlns_id_t parent_nsid, xmlns_id_t nsid, val_value_t *curelem, boolean *xneeded)
Find the namespace prefix for the specified namespace ID If it is not there then create one.
Definition: xml_msg.c:534
void(* xml_msg_val_error_fn_t)(ses_cb_t *scb, xml_msg_hdr_t *mhdr, status_t res, val_value_t *errnode, const xmlChar *badval)
Record an rpc-error for YANG-API/RESTCONF response translation.
Definition: xml_msg.h:692
status_t xml_msg_clean_defns_attr(xml_attrs_t *attrs)
Get rid of an xmlns=foo default attribute.
Definition: xml_msg.c:1145
void xml_msg_init(void)
Init this module.
Definition: xml_msg.c:1235
void(* xml_msg_record_error_errinfo_fn_t)(ses_cb_t *scb, xml_msg_hdr_t *msghdr, ncx_layer_t layer, status_t res, const xml_node_t *xmlnode, ncx_node_t parmtyp, const void *error_info, ncx_node_t nodetyp, void *error_path, const ncx_errinfo_t *errinfo)
Generate an rpc_err_rec_t and save it in the msg Use the provided error info record for <rpc-error> f...
Definition: xml_msg.h:804
ncx_withdefaults_t xml_msg_get_withdef(xml_msg_hdr_t *msg)
Get the message withdef enum.
Definition: xml_msg.c:1326
status_t xml_msg_build_prefix_map(xml_msg_hdr_t *msg, xml_attrs_t *attrs, boolean addncid, boolean addncxid)
Build a queue of xmlns_pmap_t records for the current message.
Definition: xml_msg.c:854
status_t xml_msg_check_xmlns_attr(xml_msg_hdr_t *msg, xmlns_id_t nsid, const xmlChar *badns, xml_attrs_t *attrs)
Check the default NS and the prefix map in the msg;.
Definition: xml_msg.c:970
void xml_msg_inc_cur_depth(xml_msg_hdr_t *mhdr)
Increment the cur_depth parameter if needed.
Definition: xml_msg.c:1714
void xml_msg_cleanup(void)
Cleanup this module.
Definition: xml_msg.c:1245
dlq_hdr_t * xml_msg_get_selectQ(xml_msg_hdr_t *msg)
Get the GET2 select Queue.
Definition: xml_msg.c:1695
time_t xml_msg_get_tstamp(xml_msg_hdr_t *msg, boolean *test)
Get the message timestamp match value and test sense.
Definition: xml_msg.c:1609
void(* xml_msg_val_errinfo_fn_t)(ses_cb_t *scb, xml_msg_hdr_t *mhdr, status_t res, val_value_t *errnode, const xmlChar *badval, const ncx_errinfo_t *errinfo)
Record an rpc-error for YANG-API/RESTCONF response translation Add errinfo struct if present.
Definition: xml_msg.h:713
void xml_msg_set_tstamp(xml_msg_hdr_t *msg, time_t tstamp, boolean test_sense)
Set the timestamp match parameters.
Definition: xml_msg.c:1632
ncx_display_mode_t xml_msg_get_encoding(xml_msg_hdr_t *msg, boolean is_output)
Get the message encoding value.
Definition: xml_msg.c:1497
void xml_msg_clean_hdr(xml_msg_hdr_t *msg)
Clean all the memory used by the specified xml_msg_hdr_t but do not free the struct itself.
Definition: xml_msg.c:440
dlq_hdr_t * xml_msg_get_matchQ(xml_msg_hdr_t *msg)
Get the GET2 match Queue.
Definition: xml_msg.c:1677
status_t xml_msg_add_ncid_to_prefix_map(xml_msg_hdr_t *msg, xml_attrs_t *attrs, xmlns_id_t ncid)
Add an ncid or ncxid to a prefix map.
Definition: xml_msg.c:1192
void xml_msg_set_withdef(xml_msg_hdr_t *msg, ncx_withdefaults_t withdef)
Set the message withdef enum.
Definition: xml_msg.c:1345
status_t xml_msg_gen_new_prefix(xml_msg_hdr_t *msg, xmlns_id_t nsid, xmlChar **retbuff, uint32 buffsize)
Generate a new namespace prefix.
Definition: xml_msg.c:742
void xml_msg_set_etag(xml_msg_hdr_t *msg, ncx_etag_t etag, boolean test_sense)
Set the etag match parameters.
Definition: xml_msg.c:1577
void xml_msg_set_cfgid(xml_msg_hdr_t *msg, ncx_cfg_t cfgid)
Set the config ID in the message.
Definition: xml_msg.c:1258
void xml_msg_set_max_depth(xml_msg_hdr_t *msg, uint32 max_depth)
Set the message max_depth value.
Definition: xml_msg.c:1385
void(* xml_msg_record_error_fn_t)(ses_cb_t *scb, xml_msg_hdr_t *mhdr, ncx_layer_t layer, status_t res, const xml_node_t *xmlnode, ncx_node_t parmtyp, const void *error_info, ncx_node_t nodetyp, void *error_path)
Generate an rpc_err_rec_t and save it in the msg.
Definition: xml_msg.h:772
status_t
global error return code
Definition: status_enum.h:219
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
dlq_hdr_t xml_attrs_t
queue of xml_attr_t
Definition: xml_util.h:155
ncx_node_t
NCX Internal Node Types.
Definition: ncxtypes.h:437
uint32 ncx_etag_t
The ETag used in RESTCONF messages is the lower 32 bits of a ncx_transaction_id_t.
Definition: ncxtypes.h:750
ncx_cfg_t
hardwire the 3 standard configs
Definition: ncxtypes.h:548
ncx_layer_t
Enumeration of NETCONF protocol layers.
Definition: ncxtypes.h:507
ncx_display_mode_t
enumeration of val_dump_value display modes Some RESTCONF code uses this field incorrectly for messag...
Definition: ncxtypes.h:618
ncx_withdefaults_t
enum for with-defaults enum values
Definition: ncxtypes.h:1259
YANG module data structures Many internal representations of YANG module constructs.
Global error messages for status code enumerations.
YANG error info statement struct used to override default error handling in the server.
Definition: ncxtypes.h:1347
struct for holding r/o pointer to generic internal node for filtering purposes
Definition: ncxtypes.h:1041
internal NMDA get-data state parameters; rest of parameter are stored directly in the xml_msg_hdr_t u...
Definition: ncxtypes.h:1644
Moint Point Instance This struct lives in a val_value_t.val_extra struct.
Definition: ncxtypes.h:1796
Session Control Block.
Definition: ses.h:759
one value to match one type
Definition: val.h:939
represents one attribute
Definition: xml_util.h:159
Common Encoding Message Header No longer XML specific!! Used by JSON and CBOR parsing as well!...
Definition: xml_msg.h:417
dlq_hdr_t filptr_cleanupQ
internal processing of filter parameters
Definition: xml_msg.h:438
dlq_hdr_t error_dataQ
Q of nodes to add to the <error-info> element each node must be a proper val_value_t; A valid module ...
Definition: xml_msg.h:460
time_t match_tstamp
match timestamp used for RESTCONF conditionals
Definition: xml_msg.h:502
void * val_errinfo_fn
xml_msg_val_error_errinfo_fn_t val_error_fn
Definition: xml_msg.h:520
void * obj_error_fn
xml_msg_obj_error_fn_t obj_error_fn
Definition: xml_msg.h:523
ncx_sid_t parent_sid
YANG Parent SID to use when outputing data in pieces and callbacks instead of from a val_value_t or o...
Definition: xml_msg.h:635
dlq_hdr_t * aiocbQ
BACK POINTER TO Q of backptr AIO control blocks.
Definition: xml_msg.h:583
uint32 max_depth
max-depth value, 0=ignore
Definition: xml_msg.h:497
boolean all_in_one_mode
TRUE if this is All in One mode.
Definition: xml_msg.h:572
val_value_t * edit_config_root
if this is an edit request then the <config> root needs to be saved in the message header to allow NA...
Definition: xml_msg.h:596
void * record_error
xml_msg_record_error_fn_t record_error
Definition: xml_msg.h:526
dlq_hdr_t * matchQ
GET2 matchQ used to select only specific nodes.
Definition: xml_msg.h:466
dlq_hdr_t prefixQ
prefixQ: (incoming) All the namespace decls that were in the <rpc> request are used in the <rpc-reply...
Definition: xml_msg.h:430
ncx_display_mode_t output_encoding
RESTCONF output encoding.
Definition: xml_msg.h:511
dlq_hdr_t * lookupQ
GET2 lookup parameters provide ancestor keys.
Definition: xml_msg.h:463
uint32 cur_depth
current depth value
Definition: xml_msg.h:499
ncx_sid_t sid_upper
YANG SID upper bound filter.
Definition: xml_msg.h:625
ncx_etag_t match_etag
match ETag used for RESTCONF conditionals
Definition: xml_msg.h:505
struct agt_acm_cache_t_ * acm_cache
server access control for database reads and writes; !!! shadow pointer to per-session cache,...
Definition: xml_msg.h:475
dlq_hdr_t revcount_revQ
internal processing of revision count backptr to found modules->rev in revision count search processi...
Definition: xml_msg.h:660
ncx_withdefaults_t withdef
with-defaults value
Definition: xml_msg.h:422
struct getcb_get2_t_ * get2cb
GET2 control block needed in NACM data rule processing set and cleared for each ACM check needed; bac...
Definition: xml_msg.h:550
void * record_attr_error
xml_msg_record_attr_error_fn_t record_attr_error
Definition: xml_msg.h:532
struct tk_chain_t_ * tkc
used for RESTCONF JSON parsing
Definition: xml_msg.h:514
val_value_t * actionval
support for the YANG 1.1 <action> data tree that is used to derive keys during invocation of the call...
Definition: xml_msg.h:537
dlq_hdr_t modtagQ
Q of backptr to module-tag filter control block.
Definition: xml_msg.h:553
uint32 start_depth
for nested GET2, 0=ignore
Definition: xml_msg.h:498
uint32 msgid
incremented on every initialized message header rolls over at MAX_UINT32 back to zero used by agt_acm...
Definition: xml_msg.h:482
void * acm_cbfn
agent access control read authorization callback function: xml_msg_authfn_t
Definition: xml_msg.h:495
struct getbulk_cb_t_ * getbulk_cb
getbulk control block to save parameters and state for <getbulk>
Definition: xml_msg.h:540
struct obj_template_t_ * get2_target
GET2 nested target needs to be saved so callback code can filter out nodes that are not being request...
Definition: xml_msg.h:545
struct obj_template_t_ * depth_target
GET2 nested depth target needs to be saved so xml_msg_test_max_depth can produce a correct response a...
Definition: xml_msg.h:601
boolean json_parse_notif
JSON Parse of a notification requires some help The mgr_top_dispatch_json_msg function will set this ...
Definition: xml_msg.h:672
boolean prune_bad_data
flag set if parsing a config file prune bad data for startup-error=continue
Definition: xml_msg.h:564
dlq_hdr_t errQ
errors are collected in this queue when agt_record_error is invoked
Definition: xml_msg.h:435
dlq_hdr_t * selectQ
GET2 selectQ used in alternate way to select only specific nodes.
Definition: xml_msg.h:469
struct ypgnmi_get_cb_t_ * gnmi_getcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:556
struct ypgnmi_edit_cb_t_ * gnmi_editcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:559
ncx_sid_t sid_lower
YANG SID lower bound filter.
Definition: xml_msg.h:618
struct obj_template_t_ * anyxml_obj
object pointer used by server to track real object properties for certain anyxml or anydata nodes suc...
Definition: xml_msg.h:589
ncx_nmda_params_t * nmda_params
NMDA suport for get-data.
Definition: xml_msg.h:580
boolean json_wr_fixtop
JSON Write fixup the first start object to align with GET2 callback start_complex_node.
Definition: xml_msg.h:677
ncx_sm_mpid_t * sm_mpid
Mount Point Instance used in an RPC or ACTION.
Definition: xml_msg.h:611
boolean skip_empty_npcon
support return-empty-npcontainers=false only set in rpc-reply if OK to skip empty NP containers.
Definition: xml_msg.h:655
void * record_error_errinfo
xml_msg_record_error_errinfo_fn_t record_error_errinfo
Definition: xml_msg.h:529
boolean sid_skip
Flag to indicate YANG SID SKIP DATA Mode is active.
Definition: xml_msg.h:628
ncx_display_mode_t input_encoding
RESTCONF input encoding.
Definition: xml_msg.h:508
boolean cfgid_valid
flag needed since ncx_cfg_t uses value zero for running config
Definition: xml_msg.h:490
ncx_cfg_t cfgid
the xml_msg_set_cfgid function is used by the retrieval operation (e.g., <get>, <get-config> to set t...
Definition: xml_msg.h:487
void * val_error_fn
xml_msg_val_error_fn_t val_error_fn
Definition: xml_msg.h:517
uint16 flags
internal message flags
Definition: xml_msg.h:420
boolean xget_request
flag set if <get> request is for XPath filtering.
Definition: xml_msg.h:569
struct ncx_filptr_t_ * get2_filptr
The last GET2 Filter Pointer; may be used in case there are some All in One nodes still left.
Definition: xml_msg.h:577
gather node data into a simple struct.
Definition: xml_util.h:207
Value Node Basic Support.
XML Utilities.
XML namespace support.