yumapro  23.10T-8
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 - 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_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
380/********************************************************************
381* *
382* T Y P E S *
383* *
384*********************************************************************/
385
386
397typedef struct xml_msg_hdr_t_ {
398
400 uint16 flags;
401
410 dlq_hdr_t prefixQ;
415 dlq_hdr_t errQ;
418 dlq_hdr_t filptr_cleanupQ;
440 dlq_hdr_t error_dataQ;
443 dlq_hdr_t *lookupQ;
446 dlq_hdr_t *matchQ;
449 dlq_hdr_t *selectQ;
455 struct agt_acm_cache_t_ *acm_cache;
456
462 uint32 msgid;
463
468
470 boolean cfgid_valid;
471
475 void *acm_cbfn;
476
477 uint32 max_depth;
478 uint32 start_depth;
479 uint32 cur_depth;
483
486
489
492
494 struct tk_chain_t_ *tkc;
495
498
501
504
507
510
513
517 val_value_t *actionval; /* backptr into rpc_input tree */
518
520 struct getbulk_cb_t_ *getbulk_cb;
521
525 struct obj_template_t_ *get2_target;
526
530 struct getcb_get2_t_ *get2cb;
531
533 dlq_hdr_t modtagQ;
534
536 struct ypgnmi_get_cb_t_ *gnmi_getcb;
537
539 struct ypgnmi_edit_cb_t_ *gnmi_editcb;
540
545
550
553
557 struct ncx_filptr_t_ *get2_filptr;
558
561
563 dlq_hdr_t *aiocbQ; // Q of xpath_aio_cb_t
564
569 struct obj_template_t_ *anyxml_obj;
570
577
581 struct obj_template_t_ *depth_target;
582
592
599
606
608 boolean sid_skip;
609
610
616
617 /* YPW-2006: need to GET the parent of an action invocation
618 * This is used for NMDA to verify the action can be called
619 * It is required for YANG 1.1 XPath in case a must or when
620 * statement in the input parameters reaches up into the
621 * config or state data above the action node
622 */
623 struct xpath_pcb_t_ *action_parent;
624
625 /* YPW-2060: need to flag the special get action parent mode
626 * so validation properly handled for AIO and missing NP containers
627 */
628 boolean action_parent_mode;
629
636
640 dlq_hdr_t revcount_revQ;
643
644
654typedef void
656 xml_msg_hdr_t *mhdr,
657 status_t res,
658 val_value_t *errnode,
659 const xmlChar *badval);
660
661
662
675typedef void
677 xml_msg_hdr_t *mhdr,
678 status_t res,
679 val_value_t *errnode,
680 const xmlChar *badval,
681 const ncx_errinfo_t *errinfo);
682
683
684
695typedef void
697 xml_msg_hdr_t *mhdr,
698 status_t res,
699 struct obj_template_t_ *errobj,
700 const xmlChar *badval);
701
702
711typedef boolean (*xml_msg_authfn_t) (xml_msg_hdr_t *msg,
712 const xmlChar *username,
713 const val_value_t *val);
714
715
734typedef void
736 xml_msg_hdr_t *mhdr,
737 ncx_layer_t layer,
738 status_t res,
739 const xml_node_t *xmlnode,
740 ncx_node_t parmtyp,
741 const void *error_info,
742 ncx_node_t nodetyp,
743 void *error_path);
744
745
766typedef void
768 xml_msg_hdr_t *msghdr,
769 ncx_layer_t layer,
770 status_t res,
771 const xml_node_t *xmlnode,
772 ncx_node_t parmtyp,
773 const void *error_info,
774 ncx_node_t nodetyp,
775 void *error_path,
776 const ncx_errinfo_t *errinfo);
777
778
797typedef void
799 xml_msg_hdr_t *msghdr,
800 ncx_layer_t layer,
801 status_t res,
802 const xml_attr_t *xmlattr,
803 const xml_node_t *xmlnode,
804 const xmlChar *badns,
805 ncx_node_t nodetyp,
806 void *errnode);
807
808
809/********************************************************************
810* *
811* F U N C T I O N S *
812* *
813*********************************************************************/
814
815
821extern void
823
824
836extern void
838
839
853extern const xmlChar *
855 xmlns_id_t parent_nsid,
856 xmlns_id_t nsid,
857 val_value_t *curelem,
858 boolean *xneeded);
859
860
880extern const xmlChar *
882 xmlns_id_t nsid);
883
884
895extern const xmlChar *
897 xmlns_id_t nsid);
898
899
911extern status_t
913 xmlns_id_t nsid,
914 xmlChar **retbuff,
915 uint32 buffsize);
916
917
936extern status_t
938 xml_attrs_t *attrs,
939 boolean addncid,
940 boolean addncxid);
941
942
952extern status_t
954 xml_attrs_t *attrs);
955
956
971extern status_t
973 xmlns_id_t nsid,
974 const xmlChar *badns,
975 xml_attrs_t *attrs);
976
977
990extern status_t
992 xml_attrs_t *attrs,
993 boolean addncx);
994
995
1003extern status_t
1005
1006
1015extern status_t
1017 xml_attrs_t* attrs,
1018 xmlns_id_t ncid);
1019
1020
1021
1026extern void xml_msg_init (void);
1027
1028
1033extern void xml_msg_cleanup (void);
1034
1035
1042extern void xml_msg_set_cfgid (xml_msg_hdr_t *msg,
1043 ncx_cfg_t cfgid);
1044
1045
1054extern ncx_cfg_t
1056 boolean *isvalid);
1057
1058
1065extern uint32
1067
1068
1075extern ncx_withdefaults_t
1077
1078
1079
1086extern void
1088 ncx_withdefaults_t withdef);
1089
1090
1097extern uint32
1099
1100
1107extern void
1109 uint32 max_depth);
1110
1111
1118extern uint32
1120
1121
1128extern void
1130 uint32 start_depth);
1131
1132
1139extern uint32
1141
1142
1149extern void
1151 uint32 cur_depth);
1152
1153
1162extern ncx_display_mode_t
1164 boolean is_output);
1165
1166
1176extern void
1178 boolean is_output,
1179 ncx_display_mode_t encoding);
1180
1181
1190extern ncx_etag_t
1192 boolean *test);
1193
1194
1202extern void
1204 ncx_etag_t etag,
1205 boolean test_sense);
1206
1207
1217extern time_t
1219 boolean *test);
1220
1221
1229extern void
1231 time_t tstamp,
1232 boolean test_sense);
1233
1234
1241extern dlq_hdr_t *
1243
1244
1251extern dlq_hdr_t *
1253
1254
1261extern dlq_hdr_t *
1263
1264
1270extern void
1272
1273
1279extern void
1281
1282
1301extern boolean
1303 const struct obj_template_t_ *obj);
1304
1305
1317extern void
1319 ncx_filptr_t *filptr);
1320
1321
1328extern status_t
1330
1331
1332/*
1333* @brief Check the revisions
1334*
1335* Check if the revisions are the same in the queue. If they all the same
1336* return 1, that means that get-schema can be used with out revision
1337* specified. Otherwise, use the original count value which will produce
1338* an "duplicate" error reply.
1339*
1340* @param msg xml_msg_hdr_t to use
1341* @param orig_count count of duplicates
1342*
1343* @return count of duplicate revisions
1344*/
1345extern uint32
1346 xml_msg_check_dup_revs (xml_msg_hdr_t *msg,
1347 uint32 orig_count);
1348
1352#ifdef __cplusplus
1353} /* end extern 'C' */
1354#endif
1355
1356#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:798
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:711
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:696
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:655
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:767
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
ncx_cfg_t xml_msg_get_cfgid(xml_msg_hdr_t *msg, boolean *isvalid)
Set the config ID in the message.
Definition: xml_msg.c:1282
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:676
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_init_hdr(xml_msg_hdr_t *msg)
Initialize a new xml_msg_hdr_t struct.
Definition: xml_msg.c:392
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:735
status_t
global error return code
Definition: status_enum.h:210
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:767
uint32 ncx_sid_t
Standard YANG SID is a 63-bit integer defined as uint64.
Definition: ncxtypes.h:752
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:617
ncx_withdefaults_t
enum for with-defaults enum values
Definition: ncxtypes.h:1274
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:1362
struct for holding r/o pointer to generic internal node for filtering purposes
Definition: ncxtypes.h:1057
internal NMDA get-data state parameters; rest of parameter are stored directly in the xml_msg_hdr_t u...
Definition: ncxtypes.h:1658
Moint Point Instance This struct lives in a val_value_t.val_extra struct.
Definition: ncxtypes.h:1810
Session Control Block.
Definition: ses.h:573
one value to match one type
Definition: val.h:911
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:397
dlq_hdr_t filptr_cleanupQ
internal processing of filter parameters
Definition: xml_msg.h:418
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:440
time_t match_tstamp
match timestamp used for RESTCONF conditionals
Definition: xml_msg.h:482
void * val_errinfo_fn
xml_msg_val_error_errinfo_fn_t val_error_fn
Definition: xml_msg.h:500
void * obj_error_fn
xml_msg_obj_error_fn_t obj_error_fn
Definition: xml_msg.h:503
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:615
dlq_hdr_t * aiocbQ
BACK POINTER TO Q of backptr AIO control blocks.
Definition: xml_msg.h:563
uint32 max_depth
max-depth value, 0=ignore
Definition: xml_msg.h:477
boolean all_in_one_mode
TRUE if this is All in One mode.
Definition: xml_msg.h:552
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:576
void * record_error
xml_msg_record_error_fn_t record_error
Definition: xml_msg.h:506
dlq_hdr_t * matchQ
GET2 matchQ used to select only specific nodes.
Definition: xml_msg.h:446
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:410
ncx_display_mode_t output_encoding
RESTCONF output encoding.
Definition: xml_msg.h:491
dlq_hdr_t * lookupQ
GET2 lookup parameters provide ancestor keys.
Definition: xml_msg.h:443
uint32 cur_depth
current depth value
Definition: xml_msg.h:479
ncx_sid_t sid_upper
YANG SID upper bound filter.
Definition: xml_msg.h:605
ncx_etag_t match_etag
match ETag used for RESTCONF conditionals
Definition: xml_msg.h:485
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:455
dlq_hdr_t revcount_revQ
internal processing of revision count backptr to found modules->rev in revision count search processi...
Definition: xml_msg.h:640
ncx_withdefaults_t withdef
with-defaults value
Definition: xml_msg.h:402
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:530
void * record_attr_error
xml_msg_record_attr_error_fn_t record_attr_error
Definition: xml_msg.h:512
struct tk_chain_t_ * tkc
used for RESTCONF JSON parsing
Definition: xml_msg.h:494
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:517
dlq_hdr_t modtagQ
Q of backptr to module-tag filter control block.
Definition: xml_msg.h:533
uint32 start_depth
for nested GET2, 0=ignore
Definition: xml_msg.h:478
uint32 msgid
incremented on every initialized message header rolls over at MAX_UINT32 back to zero used by agt_acm...
Definition: xml_msg.h:462
void * acm_cbfn
agent access control read authorization callback function: xml_msg_authfn_t
Definition: xml_msg.h:475
struct getbulk_cb_t_ * getbulk_cb
getbulk control block to save parameters and state for <getbulk>
Definition: xml_msg.h:520
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:525
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:581
boolean prune_bad_data
flag set if parsing a config file prune bad data for startup-error=continue
Definition: xml_msg.h:544
dlq_hdr_t errQ
errors are collected in this queue when agt_record_error is invoked
Definition: xml_msg.h:415
dlq_hdr_t * selectQ
GET2 selectQ used in alternate way to select only specific nodes.
Definition: xml_msg.h:449
struct ypgnmi_get_cb_t_ * gnmi_getcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:536
struct ypgnmi_edit_cb_t_ * gnmi_editcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:539
ncx_sid_t sid_lower
YANG SID lower bound filter.
Definition: xml_msg.h:598
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:569
ncx_nmda_params_t * nmda_params
NMDA suport for get-data.
Definition: xml_msg.h:560
ncx_sm_mpid_t * sm_mpid
Mount Point Instance used in an RPC or ACTION.
Definition: xml_msg.h:591
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:635
void * record_error_errinfo
xml_msg_record_error_errinfo_fn_t record_error_errinfo
Definition: xml_msg.h:509
boolean sid_skip
Flag to indicate YANG SID SKIP DATA Mode is active.
Definition: xml_msg.h:608
ncx_display_mode_t input_encoding
RESTCONF input encoding.
Definition: xml_msg.h:488
boolean cfgid_valid
flag needed since ncx_cfg_t uses value zero for running config
Definition: xml_msg.h:470
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:467
void * val_error_fn
xml_msg_val_error_fn_t val_error_fn
Definition: xml_msg.h:497
uint16 flags
internal message flags
Definition: xml_msg.h:400
boolean xget_request
flag set if <get> request is for XPath filtering.
Definition: xml_msg.h:549
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:557
gather node data into a simple struct.
Definition: xml_util.h:207
Value Node Basic Support.
XML Utilities.
XML namespace support.