yumapro  20.10-12
YumaPro SDK
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 - 2021, YumaWorks, Inc., All Rights Reserved.
4  *
5  * Unless required by applicable law or agreed to in writing,
6  * software distributed under the License is distributed on an
7  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8  * KIND, either express or implied. See the License for the
9  * specific language governing permissions and limitations
10  * under the License.
11  */
12 #ifndef _H_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 
35 date init comment
36 ----------------------------------------------------------------------
37 14-jan-07 abb Begun; split from agt_rpc.h
38 28-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
62 extern "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)
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 
329 /********************************************************************
330 * *
331 * T Y P E S *
332 * *
333 *********************************************************************/
334 
345 typedef struct xml_msg_hdr_t_ {
346 
348  uint16 flags;
349 
350  ncx_withdefaults_t withdef;
358  dlq_hdr_t prefixQ;
363  dlq_hdr_t errQ;
366  dlq_hdr_t filptr_cleanupQ;
388  dlq_hdr_t error_dataQ;
391  dlq_hdr_t *lookupQ;
394  dlq_hdr_t *matchQ;
397  dlq_hdr_t *selectQ;
403  struct agt_acm_cache_t_ *acm_cache;
404 
410  uint32 msgid;
411 
415  ncx_cfg_t cfgid;
416 
418  boolean cfgid_valid;
419 
423  void *acm_cbfn;
424 
425  uint32 max_depth;
426  uint32 start_depth;
427  uint32 cur_depth;
430  time_t match_tstamp;
431 
433  ncx_etag_t match_etag;
434 
436  ncx_display_mode_t input_encoding;
437 
439  ncx_display_mode_t output_encoding;
440 
442  struct tk_chain_t_ *tkc;
443 
445  void *val_error_fn;
446 
448  void *val_errinfo_fn;
449 
451  void *obj_error_fn;
452 
454  void *record_error;
455 
457  void *record_error_errinfo;
458 
460  void *record_attr_error;
461 
465  val_value_t *actionval; /* backptr into rpc_input tree */
466 
468  struct getbulk_cb_t_ *getbulk_cb;
469 
474 
478  struct getcb_get2_t_ *get2cb;
479 
481  dlq_hdr_t modtagQ;
482 
485 
488 
492  boolean prune_bad_data;
493 
497  boolean xget_request;
498 
500  boolean all_in_one_mode;
501 
505  struct ncx_filptr_t_ *get2_filptr;
506 
508  ncx_nmda_params_t *nmda_params;
509 
511  dlq_hdr_t aiocbQ;
512 
517  struct obj_template_t_ *anyxml_obj;
518 
524  val_value_t *edit_config_root;
525 
530 
531 } xml_msg_hdr_t;
532 
533 
543 typedef void
544  (*xml_msg_val_error_fn_t) (ses_cb_t *scb,
545  xml_msg_hdr_t *mhdr,
546  status_t res,
547  val_value_t *errnode,
548  const xmlChar *badval);
549 
550 
551 
564 typedef void
565  (*xml_msg_val_errinfo_fn_t) (ses_cb_t *scb,
566  xml_msg_hdr_t *mhdr,
567  status_t res,
568  val_value_t *errnode,
569  const xmlChar *badval,
570  const ncx_errinfo_t *errinfo);
571 
572 
573 
584 typedef void
585  (*xml_msg_obj_error_fn_t) (ses_cb_t *scb,
586  xml_msg_hdr_t *mhdr,
587  status_t res,
588  struct obj_template_t_ *errobj,
589  const xmlChar *badval);
590 
591 
600 typedef boolean (*xml_msg_authfn_t) (xml_msg_hdr_t *msg,
601  const xmlChar *username,
602  const val_value_t *val);
603 
604 
623 typedef void
624  (*xml_msg_record_error_fn_t) (ses_cb_t *scb,
625  xml_msg_hdr_t *mhdr,
626  ncx_layer_t layer,
627  status_t res,
628  const xml_node_t *xmlnode,
629  ncx_node_t parmtyp,
630  const void *error_info,
631  ncx_node_t nodetyp,
632  void *error_path);
633 
634 
655 typedef void
657  xml_msg_hdr_t *msghdr,
658  ncx_layer_t layer,
659  status_t res,
660  const xml_node_t *xmlnode,
661  ncx_node_t parmtyp,
662  const void *error_info,
663  ncx_node_t nodetyp,
664  void *error_path,
665  const ncx_errinfo_t *errinfo);
666 
667 
686 typedef void
688  xml_msg_hdr_t *msghdr,
689  ncx_layer_t layer,
690  status_t res,
691  const xml_attr_t *xmlattr,
692  const xml_node_t *xmlnode,
693  const xmlChar *badns,
694  ncx_node_t nodetyp,
695  void *errnode);
696 
697 
698 /********************************************************************
699 * *
700 * F U N C T I O N S *
701 * *
702 *********************************************************************/
703 
704 
710 extern void
711  xml_msg_init_hdr (xml_msg_hdr_t *msg);
712 
713 
725 extern void
726  xml_msg_clean_hdr (xml_msg_hdr_t *msg);
727 
728 
742 extern const xmlChar *
743  xml_msg_get_prefix (xml_msg_hdr_t *msg,
744  xmlns_id_t parent_nsid,
746  val_value_t *curelem,
747  boolean *xneeded);
748 
749 
769 extern const xmlChar *
770  xml_msg_get_prefix_xpath (xml_msg_hdr_t *msg,
771  xmlns_id_t nsid);
772 
773 
784 extern const xmlChar *
785  xml_msg_get_prefix_start_tag (xml_msg_hdr_t *msg,
786  xmlns_id_t nsid);
787 
788 
800 extern status_t
801  xml_msg_gen_new_prefix (xml_msg_hdr_t *msg,
803  xmlChar **retbuff,
804  uint32 buffsize);
805 
806 
825 extern status_t
826  xml_msg_build_prefix_map (xml_msg_hdr_t *msg,
827  xml_attrs_t *attrs,
828  boolean addncid,
829  boolean addncxid);
830 
831 
841 extern status_t
842  xml_msg_finish_prefix_map (xml_msg_hdr_t *msg,
843  xml_attrs_t *attrs);
844 
845 
860 extern status_t
861  xml_msg_check_xmlns_attr (xml_msg_hdr_t *msg,
863  const xmlChar *badns,
864  xml_attrs_t *attrs);
865 
866 
879 extern status_t
880  xml_msg_gen_xmlns_attrs (xml_msg_hdr_t *msg,
881  xml_attrs_t *attrs,
882  boolean addncx);
883 
884 
892 extern status_t
894 
895 
904 extern status_t
905  xml_msg_add_ncid_to_prefix_map (xml_msg_hdr_t* msg,
906  xml_attrs_t* attrs,
907  xmlns_id_t ncid);
908 
909 
910 
915 extern void xml_msg_init (void);
916 
917 
922 extern void xml_msg_cleanup (void);
923 
924 
931 extern void xml_msg_set_cfgid (xml_msg_hdr_t *msg,
932  ncx_cfg_t cfgid);
933 
934 
943 extern ncx_cfg_t
944  xml_msg_get_cfgid (xml_msg_hdr_t *msg,
945  boolean *isvalid);
946 
947 
954 extern uint32
955  xml_msg_get_msgid (xml_msg_hdr_t *msg);
956 
957 
964 extern ncx_withdefaults_t
965  xml_msg_get_withdef (xml_msg_hdr_t *msg);
966 
967 
968 
975 extern void
976  xml_msg_set_withdef (xml_msg_hdr_t *msg,
977  ncx_withdefaults_t withdef);
978 
979 
986 extern uint32
987  xml_msg_get_max_depth (xml_msg_hdr_t *msg);
988 
989 
996 extern void
997  xml_msg_set_max_depth (xml_msg_hdr_t *msg,
998  uint32 max_depth);
999 
1000 
1007 extern uint32
1008  xml_msg_get_start_depth (xml_msg_hdr_t *msg);
1009 
1010 
1017 extern void
1018  xml_msg_set_start_depth (xml_msg_hdr_t *msg,
1019  uint32 start_depth);
1020 
1021 
1028 extern uint32
1029  xml_msg_get_cur_depth (xml_msg_hdr_t *msg);
1030 
1031 
1038 extern void
1039  xml_msg_set_cur_depth (xml_msg_hdr_t *msg,
1040  uint32 cur_depth);
1041 
1042 
1051 extern ncx_display_mode_t
1052  xml_msg_get_encoding (xml_msg_hdr_t *msg,
1053  boolean is_output);
1054 
1055 
1065 extern void
1066  xml_msg_set_encoding (xml_msg_hdr_t *msg,
1067  boolean is_output,
1068  ncx_display_mode_t encoding);
1069 
1070 
1079 extern ncx_etag_t
1080  xml_msg_get_etag (xml_msg_hdr_t *msg,
1081  boolean *test);
1082 
1083 
1091 extern void
1092  xml_msg_set_etag (xml_msg_hdr_t *msg,
1093  ncx_etag_t etag,
1094  boolean test_sense);
1095 
1096 
1105 extern time_t
1106  xml_msg_get_tstamp (xml_msg_hdr_t *msg,
1107  boolean *test);
1108 
1109 
1117 extern void
1118  xml_msg_set_tstamp (xml_msg_hdr_t *msg,
1119  time_t tstamp,
1120  boolean test_sense);
1121 
1122 
1129 extern dlq_hdr_t *
1130  xml_msg_get_lookupQ (xml_msg_hdr_t *msg);
1131 
1132 
1139 extern dlq_hdr_t *
1140  xml_msg_get_matchQ (xml_msg_hdr_t *msg);
1141 
1142 
1149 extern dlq_hdr_t *
1150  xml_msg_get_selectQ (xml_msg_hdr_t *msg);
1151 
1152 
1158 extern void
1159  xml_msg_inc_cur_depth (xml_msg_hdr_t *mhdr);
1160 
1161 
1167 extern void
1168  xml_msg_dec_cur_depth (xml_msg_hdr_t *mhdr);
1169 
1170 
1189 extern boolean
1190  xml_msg_test_max_depth (xml_msg_hdr_t *mhdr,
1191  const struct obj_template_t_ *obj);
1192 
1193 
1205 extern void
1206  xml_msg_save_filptr (xml_msg_hdr_t *msg,
1207  ncx_filptr_t *filptr);
1208 
1209 
1216 extern status_t
1217  xml_msg_set_with_origin (xml_msg_hdr_t *mhdr);
1218 
1219 
1223 #ifdef __cplusplus
1224 } /* end extern 'C' */
1225 #endif
1226 
1227 #endif /* _H_xml_msg */
xml_msg_finish_prefix_map
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:884
xml_strlen
uint32 xml_strlen(const xmlChar *str)
Get the String len for xmlChar.
Definition: xml_util.c:1406
ncx_free_filptr
void ncx_free_filptr(ncx_filptr_t *filptr)
Free a new ncx_filptr_t struct or add to the cache if room.
Definition: ncx.c:6271
val_get_first_meta_val
val_value_t * val_get_first_meta_val(val_value_t *val)
Get the first metaQ entry from the specified Queue.
Definition: val.c:5447
xml_msg_set_cur_depth
void xml_msg_set_cur_depth(xml_msg_hdr_t *msg, uint32 cur_depth)
Set the message cur_depth value.
Definition: xml_msg.c:1427
xml_msg_hdr_t_::acm_cache
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:407
xml_strncpy
uint32 xml_strncpy(xmlChar *copyTo, const xmlChar *copyFrom, uint32 maxlen)
String copy for xmlChar – checks for buffer overflow.
Definition: xml_util.c:1518
xml_msg_clean_hdr
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:438
xml_msg_get_lookupQ
dlq_hdr_t * xml_msg_get_lookupQ(xml_msg_hdr_t *msg)
Get the GET2 lookup Queue.
Definition: xml_msg.c:1606
xml_msg_hdr_t_::output_encoding
ncx_display_mode_t output_encoding
RESTCONF output encoding.
Definition: xml_msg.h:443
XML_MSG_SET_WITH_ETAGS_TEST
#define XML_MSG_SET_WITH_ETAGS_TEST(M)
Set flag that ETags Test should be returned.
Definition: xml_msg.h:171
def_reg_find_ns
xmlns_t * def_reg_find_ns(const xmlChar *nsname)
find one xmlns_t in the registry find a xmlns_t by its value (name)
Definition: def_reg.c:397
xml_msg_save_filptr
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:1799
xml_msg_set_tstamp
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:1581
xml_msg_hdr_t_::max_depth
uint32 max_depth
max-depth value, 0=ignore
Definition: xml_msg.h:429
xml_msg_hdr_t_::record_error
void * record_error
xml_msg_record_error_fn_t record_error
Definition: xml_msg.h:458
xml_msg_add_ncid_to_prefix_map
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:1182
XML_MSG_WITH_TSTAMPS_TEST
#define XML_MSG_WITH_TSTAMPS_TEST(M)
Check if timestamps Test should be returned.
Definition: xml_msg.h:183
xml_msg_hdr_t_::cfgid
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:419
xml_msg_record_attr_error_fn_t
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:687
xml_msg_hdr_t_::matchQ
dlq_hdr_t * matchQ
GET2 matchQ used to select only specific nodes.
Definition: xml_msg.h:398
xml_msg_check_xmlns_attr
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:954
val.h
Value Node Basic Support.
xml_msg_set_with_origin
status_t xml_msg_set_with_origin(xml_msg_hdr_t *mhdr)
Set the with-origin parameter to true.
Definition: xml_msg.c:1819
xml_util.h
XML Utilities.
NCX_DEF_ENCODING
#define NCX_DEF_ENCODING
default encoding
Definition: ncxconst.h:319
xml_add_inv_xmlns_attr
status_t xml_add_inv_xmlns_attr(xml_attrs_t *attrs, xmlns_id_t ns_id, const xmlChar *pfix, const xmlChar *nsval)
add an xmlns decl to the attribute Queue for an INVALID namespace.
Definition: xml_util.c:1090
tk_free_chain
void tk_free_chain(tk_chain_t *tkc)
Cleanup and deallocate a tk_chain_t.
Definition: tk.c:3205
xml_msg_hdr_t_::gnmi_getcb
struct ypgnmi_get_cb_t_ * gnmi_getcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:488
XML_MSG_SET_WITH_TSTAMPS
#define XML_MSG_SET_WITH_TSTAMPS(M)
Set flag that timestamps should be returned.
Definition: xml_msg.h:186
ncx_clean_backptrQ
void ncx_clean_backptrQ(dlq_hdr_t *backptrQ)
Clean an entire Q of ncx_backptr_t structs.
Definition: ncx.c:11470
tk.h
NCX Syntax Token Handler.
log_debug3
void void void void void void void void void void void log_debug3(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG3 log entry.
ypgnmi_free_ecb
void ypgnmi_free_ecb(ypgnmi_edit_cb_t *cb)
Clean and free a ypgnmi_edit_cb_t control block.
Definition: ypgnmi.c:295
xml_msg_inc_cur_depth
void xml_msg_inc_cur_depth(xml_msg_hdr_t *mhdr)
Increment the cur_depth parameter if needed.
Definition: xml_msg.c:1652
xml_msg_hdr_t_::aiocbQ
dlq_hdr_t aiocbQ
Q of backptr AIO control blocks.
Definition: xml_msg.h:515
xml_msg_hdr_t_::lookupQ
dlq_hdr_t * lookupQ
GET2 lookup parameters provide ancestor keys.
Definition: xml_msg.h:395
xml_msg_cleanup
void xml_msg_cleanup(void)
Cleanup this module.
Definition: xml_msg.c:1235
xml_msg_hdr_t_::filptr_cleanupQ
dlq_hdr_t filptr_cleanupQ
internal processing of filter parameters
Definition: xml_msg.h:370
xml_msg_hdr_t_::match_etag
ncx_etag_t match_etag
match ETag used for RESTCONF conditionals
Definition: xml_msg.h:437
XML_MSG_WITH_OWNERS
#define XML_MSG_WITH_OWNERS(M)
Check if NDMA owner attributes requested.
Definition: xml_msg.h:216
xml_msg_dec_cur_depth
void xml_msg_dec_cur_depth(xml_msg_hdr_t *mhdr)
Decrement the cur_depth parameter if needed.
Definition: xml_msg.c:1674
xml_msg_hdr_t_::edit_config_root
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:528
ncxconst.h
Contains NCX constants.
xml_msg_get_withdef
ncx_withdefaults_t xml_msg_get_withdef(xml_msg_hdr_t *msg)
Get the message withdef enum.
Definition: xml_msg.c:1309
xml_msg_get_prefix_xpath
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:641
xml_msg_hdr_t_::match_tstamp
time_t match_tstamp
match timestamp used for RESTCONF conditionals
Definition: xml_msg.h:434
obj_template_t_::nsid
xmlns_id_t nsid
namespace ID assigned to the object at run-time
Definition: obj.h:1118
xml_msg_hdr_t_::errQ
dlq_hdr_t errQ
errors are collected in this queue when agt_record_error is invoked
Definition: xml_msg.h:367
xml_msg_hdr_t_::gnmi_editcb
struct ypgnmi_edit_cb_t_ * gnmi_editcb
gnmi control block to save parameters and state for gnmi <get>
Definition: xml_msg.h:491
xml_msg_get_prefix_start_tag
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:700
getbulk_cb_t_
Get Bulk Control BLock.
Definition: getbulk.h:59
xml_msg_get_msgid
uint32 xml_msg_get_msgid(xml_msg_hdr_t *msg)
Get the message sequence ID in the message.
Definition: xml_msg.c:1294
xml_msg_record_error_fn_t
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:624
xml_msg_hdr_t_::msgid
uint32 msgid
incremented on every initialized message header rolls over at MAX_UINT32 back to zero used by agt_acm...
Definition: xml_msg.h:414
dlq_insertAhead
void dlq_insertAhead(void *newP, void *nodeP)
insert the new queue entry before the current entry
Definition: dlq.c:447
xml_msg_hdr_t_::all_in_one_mode
boolean all_in_one_mode
TRUE if this is All in One mode.
Definition: xml_msg.h:504
ypgnmi_edit_cb_t_
gNMI Edit Control Block
Definition: ypgnmi.h:144
xmlns_id_t
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
xml_msg_hdr_t_::flags
uint16 flags
internal message flags
Definition: xml_msg.h:352
xml_msg_gen_xmlns_attrs
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:1034
def_reg.h
Definition Registry module.
xmlns_ywattrs_id
xmlns_id_t xmlns_ywattrs_id(void)
Get the ID for the YumaWorks attributes namespace or 0 if it doesn't exist.
Definition: xmlns.c:1090
NO_ERR
@ NO_ERR
000
Definition: status_enum.h:188
xml_first_attr
xml_attr_t * xml_first_attr(xml_attrs_t *attrs)
get the first attribute in the list
Definition: xml_util.c:1167
xml_msg_get_prefix
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:525
tk_chain_t_
token parsing chain (main parser control block)
Definition: tk.h:415
obj_get_name
const xmlChar * obj_get_name(const obj_template_t *obj)
Get the name field for this obj.
Definition: obj.c:10511
ERR_NCX_OPERATION_FAILED
@ ERR_NCX_OPERATION_FAILED
274
Definition: status_enum.h:315
xml_msg_get_matchQ
dlq_hdr_t * xml_msg_get_matchQ(xml_msg_hdr_t *msg)
Get the GET2 match Queue.
Definition: xml_msg.c:1621
xml_msg_hdr_t_::actionval
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:469
xml_msg_hdr_t_::get2cb
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:482
NCX_WITHDEF_REPORT_ALL_TAGGED
@ NCX_WITHDEF_REPORT_ALL_TAGGED
report-all-tagged
Definition: ncxtypes.h:1013
dlq_createSQue
void dlq_createSQue(dlq_hdrT *queAddr)
create a static queue header
Definition: dlq.c:177
xml_msg_hdr_t_::modtagQ
dlq_hdr_t modtagQ
Q of backptr to module-tag filter control block.
Definition: xml_msg.h:485
ERR_INTERNAL_VAL
@ ERR_INTERNAL_VAL
004
Definition: status_enum.h:194
xml_msg_hdr_t_::get2_filptr
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:509
ypgnmi_free_gcb
void ypgnmi_free_gcb(ypgnmi_get_cb_t *cb)
Clean and free a ypgnmi_get_cb_t control block.
Definition: ypgnmi.c:113
xmlns_wda_id
xmlns_id_t xmlns_wda_id(void)
Get the ID for the wd:default XML attribute namespace or 0 if it doesn't exist.
Definition: xmlns.c:1071
xml_msg_hdr_t_::prune_bad_data
boolean prune_bad_data
flag set if parsing a config file prune bad data for startup-error=continue
Definition: xml_msg.h:496
dlq_remove
void dlq_remove(void *nodeP)
remove the queue entry from its queue list entry MUST have been enqueued somehow before this function...
Definition: dlq.c:519
xml_msg_record_error_errinfo_fn_t
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:656
xml_msg_test_max_depth
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:1711
xmlns_new_pmap
xmlns_pmap_t * xmlns_new_pmap(uint32 buffsize)
malloc and initialize a new xmlns_pmap_t struct
Definition: xmlns.c:1249
xml_add_xmlns_attr
status_t xml_add_xmlns_attr(xml_attrs_t *attrs, xmlns_id_t ns_id, const xmlChar *pfix)
add an xmlns decl to the attribute Queue
Definition: xml_util.c:928
xml_msg_hdr_t_::tkc
struct tk_chain_t_ * tkc
used for RESTCONF JSON parsing
Definition: xml_msg.h:446
getbulk_free_cb
void getbulk_free_cb(getbulk_cb_t *cb)
Clean and free a getbulk control block.
Definition: getbulk.c:117
ERR_INTERNAL_MEM
@ ERR_INTERNAL_MEM
003
Definition: status_enum.h:193
xml_strncmp
int xml_strncmp(const xmlChar *s1, const xmlChar *s2, uint32 maxlen)
String compare for xmlChar for at most 'maxlen' xmlChars.
Definition: xml_util.c:1824
ERR_INTERNAL_PTR
@ ERR_INTERNAL_PTR
002
Definition: status_enum.h:192
XML_MSG_CLR_WITH_TSTAMPS_TEST
#define XML_MSG_CLR_WITH_TSTAMPS_TEST(M)
Clear flag that timestamps Test should be returned.
Definition: xml_msg.h:192
xml_next_attr
xml_attr_t * xml_next_attr(xml_attr_t *attr)
get the next attribute in the list
Definition: xml_util.c:1218
xmlns_get_ns_prefix
const xmlChar * xmlns_get_ns_prefix(xmlns_id_t ns_id)
Get the prefix for the specified namespace.
Definition: xmlns.c:669
NCX_CFGID_RUNNING
@ NCX_CFGID_RUNNING
running datastore (no value for not set!)
Definition: ncxtypes.h:384
xml_msg_get_cur_depth
uint32 xml_msg_get_cur_depth(xml_msg_hdr_t *msg)
Get the message cur_depth value.
Definition: xml_msg.c:1411
xml_msg_get_cfgid
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:1269
xml_msg_set_encoding
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:1481
xml_msg_hdr_t_::acm_cbfn
void * acm_cbfn
agent access control read authorization callback function: xml_msg_authfn_t
Definition: xml_msg.h:427
rpc_err_clean_errQ
void rpc_err_clean_errQ(dlq_hdr_t *errQ)
Clean all the entries from a Q of rpc_err_rec_t.
Definition: rpc_err.c:545
xml_msg_build_prefix_map
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:839
xml_free_attr
void xml_free_attr(xml_attr_t *attr)
free an attribute
Definition: xml_util.c:785
dlq_nextEntry
#define dlq_nextEntry(nodeP)
get the next queue entry after the current entry
Definition: dlq.h:265
XML_MSG_USE_PREFIX
#define XML_MSG_USE_PREFIX(M)
Set the message flag to use XML prefixes.
Definition: xml_msg.h:153
xml_msg_hdr_t_::nmda_params
ncx_nmda_params_t * nmda_params
NMDA suport for get-data.
Definition: xml_msg.h:512
xml_msg_hdr_t_::val_error_fn
void * val_error_fn
xml_msg_val_error_fn_t val_error_fn
Definition: xml_msg.h:449
xml_msg_gen_new_prefix
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:743
xml_msg_get_max_depth
uint32 xml_msg_get_max_depth(xml_msg_hdr_t *msg)
Get the message max_depth value.
Definition: xml_msg.c:1343
ncx_nmda_new_params
ncx_nmda_params_t * ncx_nmda_new_params(void)
Malloc a new ncx_nmda_params_t.
Definition: ncx_nmda.c:153
xml_msg_hdr_t_
Common Encoding Message Header No longer XML specific!! Used by JSON parsing as well!...
Definition: xml_msg.h:345
XML_MSG_SET_WITH_ETAGS
#define XML_MSG_SET_WITH_ETAGS(M)
Set flag that ETags should be returned.
Definition: xml_msg.h:168
xml_msg_val_errinfo_fn_t
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:565
NCX_MAX_NUMLEN
#define NCX_MAX_NUMLEN
max number len to use for static buffer allocation only
Definition: ncxconst.h:136
xml_msg_init_hdr
void xml_msg_init_hdr(xml_msg_hdr_t *msg)
Initialize a new xml_msg_hdr_t struct.
Definition: xml_msg.c:393
xml_msg.h
XML and JSON Message send and receive support.
XML_MSG_DEPTH_TARGET
#define XML_MSG_DEPTH_TARGET(M)
GET2 depth target for the level 1 node.
Definition: xml_msg.h:326
ncx_nmda.h
NMDA Data Support.
ERR_NCX_INVALID_NUM
@ ERR_NCX_INVALID_NUM
241
Definition: status_enum.h:280
xml_msg_hdr_t_::cur_depth
uint32 cur_depth
current depth value
Definition: xml_msg.h:431
ncx_nmda_free_params
void ncx_nmda_free_params(ncx_nmda_params_t *params)
Free a ncx_nmda_params_t struct.
Definition: ncx_nmda.c:175
xml_msg_hdr_t_::withdef
ncx_withdefaults_t withdef
with-defaults value
Definition: xml_msg.h:354
xml_strcmp
int xml_strcmp(const xmlChar *s1, const xmlChar *s2)
String compare for xmlChar.
Definition: xml_util.c:1746
xml_msg_hdr_t_::anyxml_obj
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:521
obj_is_ancestor
boolean obj_is_ancestor(const obj_template_t *ancestor, const obj_template_t *obj)
Check if an object is the ancestor of another.
Definition: obj.c:18606
xml_msg_val_error_fn_t
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:544
xml_msg_hdr_t_::val_errinfo_fn
void * val_errinfo_fn
xml_msg_val_error_errinfo_fn_t val_error_fn
Definition: xml_msg.h:452
XML_MSG_FL_PREFIX
#define XML_MSG_FL_PREFIX
xml_msg_hdr_t flags field bit definitions start here if PREFIX set then prefixes will be used for ele...
Definition: xml_msg.h:101
xml_msg_set_start_depth
void xml_msg_set_start_depth(xml_msg_hdr_t *msg, uint32 start_depth)
Set the message start_depth value.
Definition: xml_msg.c:1393
XML_MSG_WITH_ORIGIN
#define XML_MSG_WITH_ORIGIN(M)
NMDA with-origin requested.
Definition: xml_msg.h:319
ERR_BUFF_OVFL
@ ERR_BUFF_OVFL
106
Definition: status_enum.h:218
ncxtypes.h
YANG module data structures Many internal representations of YANG module constructs.
ypgnmi.h
YP-GNMI requests support module.
xmlns_nc_id
xmlns_id_t xmlns_nc_id(void)
Get the ID for the NETCONF namespace or 0 if it doesn't exist.
Definition: xmlns.c:880
xml_msg_hdr_t_::record_error_errinfo
void * record_error_errinfo
xml_msg_record_error_errinfo_fn_t record_error_errinfo
Definition: xml_msg.h:461
val_get_next_meta
val_value_t * val_get_next_meta(val_value_t *curnode)
Get the next metaQ entry from the specified entry.
Definition: val.c:5475
xml_msg_get_start_depth
uint32 xml_msg_get_start_depth(xml_msg_hdr_t *msg)
Get the message start_depth value.
Definition: xml_msg.c:1377
xml_msg_obj_error_fn_t
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:585
xml_msg_init
void xml_msg_init(void)
Init this module.
Definition: xml_msg.c:1225
rpc_err.h
NETCONF protocol standard error definitions.
xml_msg_hdr_t_::depth_target
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:533
xml_msg_hdr_t_::error_dataQ
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:392
dlq_deque
void * dlq_deque(dlq_hdrT *listP)
remove the first queue node from the queue list
Definition: dlq.c:286
dlq_empty
#define dlq_empty(listP)
check if queue list is empty
Definition: dlq.h:367
xml_strcpy
uint32 xml_strcpy(xmlChar *copyTo, const xmlChar *copyFrom)
String copy for xmlChar.
Definition: xml_util.c:1486
xml_msg_authfn_t
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:600
xml_msg_set_cfgid
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:1248
NCX_DEF_WITHDEF
#define NCX_DEF_WITHDEF
default value for the with-defaults option
Definition: ncxconst.h:487
xml_msg_hdr_t_::start_depth
uint32 start_depth
for nested GET2, 0=ignore
Definition: xml_msg.h:430
xml_msg_get_selectQ
dlq_hdr_t * xml_msg_get_selectQ(xml_msg_hdr_t *msg)
Get the GET2 select Queue.
Definition: xml_msg.c:1636
xml_msg_clean_defns_attr
status_t xml_msg_clean_defns_attr(xml_attrs_t *attrs)
Get rid of an xmlns=foo default attribute.
Definition: xml_msg.c:1133
dlq_firstEntry
#define dlq_firstEntry(listP)
get the first entry in the queue list
Definition: dlq.h:337
XML_MSG_WITH_ETAGS_TEST
#define XML_MSG_WITH_ETAGS_TEST(M)
Check if ETags Test should be returned.
Definition: xml_msg.h:165
ncx.h
YANG module utility functions.
xml_msg_hdr_t_::obj_error_fn
void * obj_error_fn
xml_msg_obj_error_fn_t obj_error_fn
Definition: xml_msg.h:455
xml_msg_hdr_t_::prefixQ
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:362
xml_attrs_t
dlq_hdr_t xml_attrs_t
queue of xml_attr_t
Definition: xml_util.h:151
xmlns_free_pmap
void xmlns_free_pmap(xmlns_pmap_t *pmap)
free a xmlns_pmap_t struct
Definition: xmlns.c:1284
obj.h
Data Object Support.
xml_msg_hdr_t_::xget_request
boolean xget_request
flag set if <get> request is for XPath filtering.
Definition: xml_msg.h:501
XML_MSG_CLR_WITH_ETAGS_TEST
#define XML_MSG_CLR_WITH_ETAGS_TEST(M)
Clear flag that ETags Test should be returned.
Definition: xml_msg.h:174
xml_msg_set_withdef
void xml_msg_set_withdef(xml_msg_hdr_t *msg, ncx_withdefaults_t withdef)
Set the message withdef enum.
Definition: xml_msg.c:1325
dlq_enque
void dlq_enque(REG void *newP, REG dlq_hdrT *listP)
add a queue node to the end of a queue list Add newP to listP
Definition: dlq.c:246
xml_msg_hdr_t_::record_attr_error
void * record_attr_error
xml_msg_record_attr_error_fn_t record_attr_error
Definition: xml_msg.h:464
xml_msg_set_etag
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:1529
xmlns_inv_id
xmlns_id_t xmlns_inv_id(void)
Get the INVALID namespace ID.
Definition: xmlns.c:931
SET_ERROR
#define SET_ERROR(E)
macro SET_ERROR
Definition: status_enum.h:103
XML_MSG_SET_WITH_TSTAMPS_TEST
#define XML_MSG_SET_WITH_TSTAMPS_TEST(M)
Set flag that timestamps Test should be returned.
Definition: xml_msg.h:189
xmlns_ncx_id
xmlns_id_t xmlns_ncx_id(void)
Get the ID for the NETCONF Extensions namespace or 0 if it doesn't exist.
Definition: xmlns.c:897
ypgnmi_get_cb_t_
gNMI GET control block
Definition: ypgnmi.h:88
xml_msg_get_etag
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:1507
xml_msg_get_encoding
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:1456
xml_msg_hdr_t_::cfgid_valid
boolean cfgid_valid
flag needed since ncx_cfg_t uses value zero for running config
Definition: xml_msg.h:422
xmlns.h
XML namespace support.
val_free_value
void val_free_value(val_value_t *val)
Scrub the memory in a val_value_t by freeing all the sub-fields and then freeing the entire struct it...
Definition: val.c:2842
xml_msg_hdr_t_::getbulk_cb
struct getbulk_cb_t_ * getbulk_cb
getbulk control block to save parameters and state for <getbulk>
Definition: xml_msg.h:472
xml_msg_hdr_t_::selectQ
dlq_hdr_t * selectQ
GET2 selectQ used in alternate way to select only specific nodes.
Definition: xml_msg.h:401
status.h
Global error messages for status code enumerations.
ncx_filptr_t_
struct for holding r/o pointer to generic internal node for filtering purposes
Definition: ncxtypes.h:830
xml_msg_hdr_t_::input_encoding
ncx_display_mode_t input_encoding
RESTCONF input encoding.
Definition: xml_msg.h:440
xml_msg_get_tstamp
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:1559
log_debug3_append
void void void void void void void void void void void void log_debug3_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG3 log entry.
dlq.h
dlq provides general double-linked list and queue support:
xml_msg_hdr_t_::get2_target
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:477
getcb_get2_t_
GET2 control block.
Definition: getcb.h:339
LOGDEBUG3
#define LOGDEBUG3
Check if at least log-level=debug3.
Definition: log.h:297
getbulk.h
yumaworks-getbulk.yang data structure support
xmlns_origin_id
xmlns_id_t xmlns_origin_id(void)
Get the ID for the ietf-origin namespace or 0 if it doesn't exist.
Definition: xmlns.c:1108
xml_msg_set_max_depth
void xml_msg_set_max_depth(xml_msg_hdr_t *msg, uint32 max_depth)
Set the message max_depth value.
Definition: xml_msg.c:1359
obj_template_t_
One YANG data-def-stmt.
Definition: obj.h:1056
ncx_get_useprefix
boolean ncx_get_useprefix(void)
Get the use_prefix value.
Definition: ncx.c:10087