yumapro  24.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 - 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
385#define XML_MSG_PRE_PROCESS_MODE(M) (M)->pre_process_mode
386
387/********************************************************************
388* *
389* T Y P E S *
390* *
391*********************************************************************/
392
393
404typedef struct xml_msg_hdr_t_ {
405
407 uint16 flags;
408
417 dlq_hdr_t prefixQ;
422 dlq_hdr_t errQ;
425 dlq_hdr_t filptr_cleanupQ;
447 dlq_hdr_t error_dataQ;
450 dlq_hdr_t *lookupQ;
453 dlq_hdr_t *matchQ;
456 dlq_hdr_t *selectQ;
462 struct agt_acm_cache_t_ *acm_cache;
463
469 uint32 msgid;
470
475
477 boolean cfgid_valid;
478
482 void *acm_cbfn;
483
484 uint32 max_depth;
485 uint32 start_depth;
486 uint32 cur_depth;
490
493
496
499
501 struct tk_chain_t_ *tkc;
502
505
508
511
514
517
520
524 val_value_t *actionval; /* backptr into rpc_input tree */
525
527 struct getbulk_cb_t_ *getbulk_cb;
528
532 struct obj_template_t_ *get2_target;
533
537 struct getcb_get2_t_ *get2cb;
538
540 dlq_hdr_t modtagQ;
541
543 struct ypgnmi_get_cb_t_ *gnmi_getcb;
544
546 struct ypgnmi_edit_cb_t_ *gnmi_editcb;
547
552
557
560
564 struct ncx_filptr_t_ *get2_filptr;
565
568
570 dlq_hdr_t *aiocbQ; // Q of xpath_aio_cb_t
571
576 struct obj_template_t_ *anyxml_obj;
577
584
588 struct obj_template_t_ *depth_target;
589
599
606
613
615 boolean sid_skip;
616
617
623
624 /* YPW-2006: need to GET the parent of an action invocation
625 * This is used for NMDA to verify the action can be called
626 * It is required for YANG 1.1 XPath in case a must or when
627 * statement in the input parameters reaches up into the
628 * config or state data above the action node
629 */
630 struct xpath_pcb_t_ *action_parent;
631
632 /* YPW-2060: need to flag the special get action parent mode
633 * so validation properly handled for AIO and missing NP containers
634 */
635 boolean action_parent_mode;
636
643
647 dlq_hdr_t revcount_revQ;
649 /* YPW-2273: need to flag the special subtree pre-process mode so the
650 * callback has that information and can act accordingly.
651 */
652 boolean pre_process_mode;
653
655
656
666typedef void
668 xml_msg_hdr_t *mhdr,
669 status_t res,
670 val_value_t *errnode,
671 const xmlChar *badval);
672
673
674
687typedef void
689 xml_msg_hdr_t *mhdr,
690 status_t res,
691 val_value_t *errnode,
692 const xmlChar *badval,
693 const ncx_errinfo_t *errinfo);
694
695
696
707typedef void
709 xml_msg_hdr_t *mhdr,
710 status_t res,
711 struct obj_template_t_ *errobj,
712 const xmlChar *badval);
713
714
723typedef boolean (*xml_msg_authfn_t) (xml_msg_hdr_t *msg,
724 const xmlChar *username,
725 const val_value_t *val);
726
727
746typedef void
748 xml_msg_hdr_t *mhdr,
749 ncx_layer_t layer,
750 status_t res,
751 const xml_node_t *xmlnode,
752 ncx_node_t parmtyp,
753 const void *error_info,
754 ncx_node_t nodetyp,
755 void *error_path);
756
757
778typedef void
780 xml_msg_hdr_t *msghdr,
781 ncx_layer_t layer,
782 status_t res,
783 const xml_node_t *xmlnode,
784 ncx_node_t parmtyp,
785 const void *error_info,
786 ncx_node_t nodetyp,
787 void *error_path,
788 const ncx_errinfo_t *errinfo);
789
790
809typedef void
811 xml_msg_hdr_t *msghdr,
812 ncx_layer_t layer,
813 status_t res,
814 const xml_attr_t *xmlattr,
815 const xml_node_t *xmlnode,
816 const xmlChar *badns,
817 ncx_node_t nodetyp,
818 void *errnode);
819
820
821/********************************************************************
822* *
823* F U N C T I O N S *
824* *
825*********************************************************************/
826
827
833extern void
835
836
848extern void
850
851
865extern const xmlChar *
867 xmlns_id_t parent_nsid,
868 xmlns_id_t nsid,
869 val_value_t *curelem,
870 boolean *xneeded);
871
872
892extern const xmlChar *
894 xmlns_id_t nsid);
895
896
907extern const xmlChar *
909 xmlns_id_t nsid);
910
911
923extern status_t
925 xmlns_id_t nsid,
926 xmlChar **retbuff,
927 uint32 buffsize);
928
929
948extern status_t
950 xml_attrs_t *attrs,
951 boolean addncid,
952 boolean addncxid);
953
954
964extern status_t
966 xml_attrs_t *attrs);
967
968
983extern status_t
985 xmlns_id_t nsid,
986 const xmlChar *badns,
987 xml_attrs_t *attrs);
988
989
1002extern status_t
1004 xml_attrs_t *attrs,
1005 boolean addncx);
1006
1007
1015extern status_t
1017
1018
1027extern status_t
1029 xml_attrs_t* attrs,
1030 xmlns_id_t ncid);
1031
1032
1033
1038extern void xml_msg_init (void);
1039
1040
1045extern void xml_msg_cleanup (void);
1046
1047
1054extern void xml_msg_set_cfgid (xml_msg_hdr_t *msg,
1055 ncx_cfg_t cfgid);
1056
1057
1066extern ncx_cfg_t
1068 boolean *isvalid);
1069
1070
1077extern uint32
1079
1080
1087extern ncx_withdefaults_t
1089
1090
1091
1098extern void
1100 ncx_withdefaults_t withdef);
1101
1102
1109extern uint32
1111
1112
1119extern void
1121 uint32 max_depth);
1122
1123
1130extern uint32
1132
1133
1140extern void
1142 uint32 start_depth);
1143
1144
1151extern uint32
1153
1154
1161extern void
1163 uint32 cur_depth);
1164
1165
1174extern ncx_display_mode_t
1176 boolean is_output);
1177
1178
1188extern void
1190 boolean is_output,
1191 ncx_display_mode_t encoding);
1192
1193
1202extern ncx_etag_t
1204 boolean *test);
1205
1206
1214extern void
1216 ncx_etag_t etag,
1217 boolean test_sense);
1218
1219
1229extern time_t
1231 boolean *test);
1232
1233
1241extern void
1243 time_t tstamp,
1244 boolean test_sense);
1245
1246
1253extern dlq_hdr_t *
1255
1256
1263extern dlq_hdr_t *
1265
1266
1273extern dlq_hdr_t *
1275
1276
1282extern void
1284
1285
1291extern void
1293
1294
1313extern boolean
1315 const struct obj_template_t_ *obj);
1316
1317
1329extern void
1331 ncx_filptr_t *filptr);
1332
1333
1340extern status_t
1342
1343
1344/*
1345* @brief Check the revisions
1346*
1347* Check if the revisions are the same in the queue. If they all the same
1348* return 1, that means that get-schema can be used with out revision
1349* specified. Otherwise, use the original count value which will produce
1350* an "duplicate" error reply.
1351*
1352* @param msg xml_msg_hdr_t to use
1353* @param orig_count count of duplicates
1354*
1355* @return count of duplicate revisions
1356*/
1357extern uint32
1358 xml_msg_check_dup_revs (xml_msg_hdr_t *msg,
1359 uint32 orig_count);
1360
1364#ifdef __cplusplus
1365} /* end extern 'C' */
1366#endif
1367
1368#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:810
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:723
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:708
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:667
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:779
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:688
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:747
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:771
uint32 ncx_sid_t
Standard YANG SID is a 63-bit integer defined as uint64.
Definition: ncxtypes.h:756
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:1278
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:1366
struct for holding r/o pointer to generic internal node for filtering purposes
Definition: ncxtypes.h:1061
internal NMDA get-data state parameters; rest of parameter are stored directly in the xml_msg_hdr_t u...
Definition: ncxtypes.h:1663
Moint Point Instance This struct lives in a val_value_t.val_extra struct.
Definition: ncxtypes.h:1815
Session Control Block.
Definition: ses.h:573
one value to match one type
Definition: val.h:912
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:404
dlq_hdr_t filptr_cleanupQ
internal processing of filter parameters
Definition: xml_msg.h:425
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:447
time_t match_tstamp
match timestamp used for RESTCONF conditionals
Definition: xml_msg.h:489
void * val_errinfo_fn
xml_msg_val_error_errinfo_fn_t val_error_fn
Definition: xml_msg.h:507
void * obj_error_fn
xml_msg_obj_error_fn_t obj_error_fn
Definition: xml_msg.h:510
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:622
dlq_hdr_t * aiocbQ
BACK POINTER TO Q of backptr AIO control blocks.
Definition: xml_msg.h:570
uint32 max_depth
max-depth value, 0=ignore
Definition: xml_msg.h:484
boolean all_in_one_mode
TRUE if this is All in One mode.
Definition: xml_msg.h:559
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:583
void * record_error
xml_msg_record_error_fn_t record_error
Definition: xml_msg.h:513
dlq_hdr_t * matchQ
GET2 matchQ used to select only specific nodes.
Definition: xml_msg.h:453
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:417
ncx_display_mode_t output_encoding
RESTCONF output encoding.
Definition: xml_msg.h:498
dlq_hdr_t * lookupQ
GET2 lookup parameters provide ancestor keys.
Definition: xml_msg.h:450
uint32 cur_depth
current depth value
Definition: xml_msg.h:486
ncx_sid_t sid_upper
YANG SID upper bound filter.
Definition: xml_msg.h:612
ncx_etag_t match_etag
match ETag used for RESTCONF conditionals
Definition: xml_msg.h:492
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:462
dlq_hdr_t revcount_revQ
internal processing of revision count backptr to found modules->rev in revision count search processi...
Definition: xml_msg.h:647
ncx_withdefaults_t withdef
with-defaults value
Definition: xml_msg.h:409
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:537
void * record_attr_error
xml_msg_record_attr_error_fn_t record_attr_error
Definition: xml_msg.h:519
struct tk_chain_t_ * tkc
used for RESTCONF JSON parsing
Definition: xml_msg.h:501
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:524
dlq_hdr_t modtagQ
Q of backptr to module-tag filter control block.
Definition: xml_msg.h:540
uint32 start_depth
for nested GET2, 0=ignore
Definition: xml_msg.h:485
uint32 msgid
incremented on every initialized message header rolls over at MAX_UINT32 back to zero used by agt_acm...
Definition: xml_msg.h:469
void * acm_cbfn
agent access control read authorization callback function: xml_msg_authfn_t
Definition: xml_msg.h:482
struct getbulk_cb_t_ * getbulk_cb
getbulk control block to save parameters and state for <getbulk>
Definition: xml_msg.h:527
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:532
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:588
boolean prune_bad_data
flag set if parsing a config file prune bad data for startup-error=continue
Definition: xml_msg.h:551
dlq_hdr_t errQ
errors are collected in this queue when agt_record_error is invoked
Definition: xml_msg.h:422
dlq_hdr_t * selectQ
GET2 selectQ used in alternate way to select only specific nodes.
Definition: xml_msg.h:456
struct ypgnmi_get_cb_t_ * gnmi_getcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:543
struct ypgnmi_edit_cb_t_ * gnmi_editcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:546
ncx_sid_t sid_lower
YANG SID lower bound filter.
Definition: xml_msg.h:605
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:576
ncx_nmda_params_t * nmda_params
NMDA suport for get-data.
Definition: xml_msg.h:567
ncx_sm_mpid_t * sm_mpid
Mount Point Instance used in an RPC or ACTION.
Definition: xml_msg.h:598
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:642
void * record_error_errinfo
xml_msg_record_error_errinfo_fn_t record_error_errinfo
Definition: xml_msg.h:516
boolean sid_skip
Flag to indicate YANG SID SKIP DATA Mode is active.
Definition: xml_msg.h:615
ncx_display_mode_t input_encoding
RESTCONF input encoding.
Definition: xml_msg.h:495
boolean cfgid_valid
flag needed since ncx_cfg_t uses value zero for running config
Definition: xml_msg.h:477
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:474
void * val_error_fn
xml_msg_val_error_fn_t val_error_fn
Definition: xml_msg.h:504
uint16 flags
internal message flags
Definition: xml_msg.h:407
boolean xget_request
flag set if <get> request is for XPath filtering.
Definition: xml_msg.h:556
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:564
gather node data into a simple struct.
Definition: xml_util.h:207
Value Node Basic Support.
XML Utilities.
XML namespace support.