yumapro  25.10-1
YumaPro SDK
Loading...
Searching...
No Matches
agt_util.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2025, YumaWorks, Inc., All Rights Reserved.
4 *
5 * Unless required by applicable law or agreed to in writing,
6 * software distributed under the License is distributed on an
7 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 * KIND, either express or implied. See the License for the
9 * specific language governing permissions and limitations
10 * under the License.
11 */
12#ifndef _H_agt_util
13#define _H_agt_util
14
15/* FILE: agt_util.h
16*********************************************************************
17* *
18* P U R P O S E *
19* *
20*********************************************************************/
21
32/*********************************************************************
33* *
34* C H A N G E H I S T O R Y *
35* *
36*********************************************************************
37
38date init comment
39----------------------------------------------------------------------
4024-may-06 abb Begun
41
42*/
43
44#ifndef _H_agt
45#include "agt.h"
46#endif
47
48#ifndef _H_agt_cfg
49#include "agt_cfg.h"
50#endif
51
52#ifndef _H_cfg
53#include "cfg.h"
54#endif
55
56#ifndef _H_dlq
57#include "dlq.h"
58#endif
59
60#ifndef _H_getcb
61#include "getcb.h"
62#endif
63
64#ifndef _H_ncxconst
65#include "ncxconst.h"
66#endif
67
68#ifndef _H_ncxtypes
69#include "ncxtypes.h"
70#endif
71
72#ifndef _H_obj
73#include "obj.h"
74#endif
75
76#ifndef _H_rpc
77#include "rpc.h"
78#endif
79
80#ifndef _H_ses
81#include "ses.h"
82#endif
83
84#ifndef _H_status
85#include "status.h"
86#endif
87
88#ifndef _H_val
89#include "val.h"
90#endif
91
92#ifndef _H_xml_msg
93#include "xml_msg.h"
94#endif
95
96#ifndef _H_xml_util
97#include "xml_util.h"
98#endif
99
100#ifndef _H_xpath
101#include "xpath.h"
102#endif
103
104#ifndef _H_yang_patch
105#include "yang_patch.h"
106#endif
107
108#ifdef __cplusplus
109extern "C" {
110#endif
111
112/********************************************************************
113* *
114* F U N C T I O N S *
115* *
116*********************************************************************/
117
143extern status_t
144 agt_get_cfg_from_parm (const xmlChar *parmname,
145 rpc_msg_t *msg,
146 xml_node_t *methnode,
147 cfg_template_t **retcfg);
148
149
161extern status_t
162 agt_get_inline_cfg_from_parm (const xmlChar *parmname,
163 rpc_msg_t *msg,
164 xml_node_t *methnode,
165 val_value_t **retval);
166
167
190extern status_t
191 agt_get_url_from_parm (const xmlChar *parmname,
192 rpc_msg_t *msg,
193 xml_node_t *methnode,
194 const xmlChar **returl,
195 val_value_t **retval);
196
197
207extern xmlChar *
208 agt_get_filespec_from_url (const xmlChar *urlstr,
209 status_t *res);
210
211
223extern const val_value_t *
224 agt_get_parmval (const xmlChar *parmname,
225 rpc_msg_t *msg);
226
227
259extern void
261 xml_msg_hdr_t *msghdr,
262 ncx_layer_t layer,
263 status_t res,
264 const xml_node_t *xmlnode,
265 ncx_node_t parmtyp,
266 const void *error_info,
267 ncx_node_t nodetyp,
268 void *error_path);
269
270
284extern void
286 xml_msg_hdr_t *msghdr,
287 status_t res,
288 obj_template_t *errobj,
289 const xmlChar *badval);
290
291
325extern void
327 xml_msg_hdr_t *msghdr,
328 ncx_layer_t layer,
329 status_t res,
330 const xml_node_t *xmlnode,
331 ncx_node_t parmtyp,
332 const void *error_info,
333 ncx_node_t nodetyp,
334 void *error_path,
335 const ncx_errinfo_t *errinfo);
336
337
374extern void
376 xml_msg_hdr_t *msghdr,
377 ncx_layer_t layer,
378 status_t res,
379 const xml_node_t *xmlnode,
380 ncx_node_t parmtyp,
381 const void *error_parm,
382 ncx_node_t nodetyp,
383 void *error_path,
384 const ncx_errinfo_t *errinfo);
385
386
410extern void
412 xml_msg_hdr_t *msghdr,
413 ncx_layer_t layer,
414 status_t res,
415 const xml_attr_t *xmlattr,
416 const xml_node_t *xmlnode,
417 const xmlChar *badns,
418 ncx_node_t nodetyp,
419 void *errnode);
420
421
440extern void
441 agt_record_insert_error (ses_cb_t *scb,
442 xml_msg_hdr_t *msghdr,
443 status_t res,
444 val_value_t *errval);
445
446
465extern void
466 agt_record_unique_error (ses_cb_t *scb,
467 xml_msg_hdr_t *msghdr,
468 val_value_t *errval,
469 dlq_hdr_t *valuniqueQ);
470
471
483extern status_t
484 agt_validate_filter (ses_cb_t *scb,
485 rpc_msg_t *msg);
486
487
500extern status_t
501 agt_validate_filter_ex (ses_cb_t *scb,
502 rpc_msg_t *msg,
503 val_value_t *filter);
504
505
518extern status_t
519 agt_validate_filter_nmda (rpc_msg_t *msg,
520 val_value_t *filter,
521 boolean is_subtree,
522 boolean is_operational);
523
524
539extern boolean
540 agt_check_config (xml_msg_hdr_t *mhdr,
541 ncx_withdefaults_t withdef,
542 boolean realtest,
543 val_value_t *node);
544
545
562extern boolean
563 agt_check_default (xml_msg_hdr_t *mhdr,
564 ncx_withdefaults_t withdef,
565 boolean realtest,
566 val_value_t *node);
567
568
585extern boolean
586 agt_check_config_false (xml_msg_hdr_t *mhdr,
587 ncx_withdefaults_t withdef,
588 boolean realtest,
589 val_value_t *node);
590
591
610extern boolean
611 agt_check_config_false_default (xml_msg_hdr_t *mhdr,
612 ncx_withdefaults_t withdef,
613 boolean realtest,
614 val_value_t *node);
615
616
633extern boolean
634 agt_check_save (xml_msg_hdr_t *mhdr,
635 ncx_withdefaults_t withdef,
636 boolean realtest,
637 val_value_t *node);
638
639
656extern boolean
657 agt_check_modtags (xml_msg_hdr_t *mhdr,
658 ncx_withdefaults_t withdef,
659 boolean realtest,
660 val_value_t *node);
661
662
679extern boolean agt_check_basic (xml_msg_hdr_t *mhdr,
680 ncx_withdefaults_t withdef,
681 boolean realtest,
682 val_value_t *node);
683
684
696extern status_t
697 agt_output_filter (ses_cb_t *scb,
698 rpc_msg_t *msg,
699 int32 indent);
700
701
712extern status_t
713 agt_output_schema (ses_cb_t *scb,
714 rpc_msg_t *msg,
715 int32 indent);
716
717
729extern status_t
730 agt_output_empty (ses_cb_t *scb,
731 rpc_msg_t *msg,
732 int32 indent);
733
734
744extern status_t
746 boolean cur_exists);
747
748
787extern status_t
788 agt_check_editop (op_editop_t pop,
789 op_editop_t *cop,
790 val_value_t *newnode,
791 val_value_t *curnode,
792 ncx_iqual_t iqual,
793 ncx_protocol_t proto,
794 boolean is_commit,
795 boolean *delete_default);
796
797
810extern status_t
811 agt_enable_feature (const xmlChar *modname,
812 const xmlChar *featurename);
813
814
827extern status_t
828 agt_disable_feature (const xmlChar *modname,
829 const xmlChar *featurename);
830
831
847extern val_value_t *
848 agt_make_leaf (obj_template_t *parentobj,
849 const xmlChar *leafname,
850 const xmlChar *leafstrval,
851 status_t *res);
852
853
869extern val_value_t *
871 const xmlChar *leafname,
872 uint32 leafval,
873 status_t *res);
874
890extern val_value_t *
892 const xmlChar *leafname,
893 int32 leafval,
894 status_t *res);
895
896
912extern val_value_t *
914 const xmlChar *leafname,
915 uint64 leafval,
916 status_t *res);
917
918
934extern val_value_t *
936 const xmlChar *leafname,
937 int64 leafval,
938 status_t *res);
939
940
957extern val_value_t *
959 const xmlChar *leafname,
960 const val_idref_t *leafval,
961 status_t *res);
962
963
978extern val_value_t *
979 agt_make_list (obj_template_t *parentobj,
980 const xmlChar *listname,
981 status_t *res);
982
983
994extern val_value_t *
996 const xmlChar *objname,
997 status_t *res);
998
999
1000#define agt_make_virtual_node agt_make_virtual_leaf
1001
1002
1021extern val_value_t *
1023 const xmlChar *leafname,
1024 getcb_fn_t callbackfn,
1025 status_t *res);
1026
1027
1041extern status_t
1042 agt_add_top_virtual (obj_template_t *obj,
1043 getcb_fn_t callbackfn);
1044
1045
1067extern status_t
1068 agt_add_top_container (obj_template_t *obj,
1069 val_value_t **val);
1070
1071
1095extern status_t
1096 agt_add_container (const xmlChar *modname,
1097 const xmlChar *objname,
1098 val_value_t *parentval,
1099 val_value_t **val);
1100
1101
1102
1119extern val_value_t *
1120 agt_init_cache (const xmlChar *modname,
1121 const xmlChar *objname,
1122 status_t *res);
1123
1124
1142extern status_t
1143 agt_check_cache (val_value_t **cacheptr,
1144 val_value_t *newval,
1145 val_value_t *curval,
1146 op_editop_t editop);
1147
1148
1162extern xpath_pcb_t *
1164 const xmlChar *expr,
1165 status_t *res);
1166
1167
1180extern xmlChar *
1181 agt_make_srid_filespec (const xmlChar *basestr,
1182 const xmlChar *patstr,
1183 const xmlChar *valstr);
1184
1194extern xmlChar *
1196
1197
1210extern xmlChar *
1211 agt_get_target_filespec (const xmlChar *target_url,
1212 status_t *res);
1213
1214
1236extern status_t
1237 agt_set_mod_defaults (ncx_module_t *mod,
1238 val_value_t *valroot,
1239 boolean set_candidate,
1240 boolean set_augment,
1241 boolean force);
1242
1243
1252extern status_t
1253 agt_set_val_defaults (val_value_t *val);
1254
1255
1277extern status_t
1278 agt_set_with_defaults (rpc_msg_t *msg,
1279 const xmlChar *modname,
1280 val_value_t **errval);
1281
1282
1292extern void
1293 agt_set_with_owners (rpc_msg_t *msg);
1294
1295
1304extern void
1305 agt_set_depth (rpc_msg_t *msg);
1306
1307
1316extern void
1317 agt_set_depth_nmda (rpc_msg_t *msg);
1318
1319
1336extern val_value_t *
1337 agt_get_key_value (val_value_t *startval,
1338 val_value_t **lastkey);
1339
1340
1361extern val_value_t *
1362 agt_add_top_node_if_missing (ncx_module_t *mod,
1363 const xmlChar *objname,
1364 boolean *added,
1365 status_t *res);
1366
1376extern boolean
1377 agt_any_operations_set (val_value_t *val);
1378
1379
1391extern boolean
1392 agt_apply_this_node (op_editop_t editop,
1393 const val_value_t *newnode,
1394 const val_value_t *curnode);
1395
1396
1417extern boolean
1418 agt_apply_this_node_ex (op_editop_t editop,
1419 const val_value_t *newnode,
1420 const val_value_t *curnode,
1421 boolean ignore_defaults,
1422 boolean childonly,
1423 boolean top_replace);
1424
1425
1433extern boolean
1434 agt_backups_enabled (void);
1435
1436
1446extern xpath_result_t *
1447 agt_get_result_from_xpath (xpath_pcb_t *pcb,
1448 val_value_t *rootval,
1449 status_t *retres);
1450
1451
1460extern val_value_t *
1461 agt_get_first_result_val (xpath_result_t *result);
1462
1463
1478extern void
1479 agt_output_start_container (ses_cb_t *scb,
1480 xml_msg_hdr_t *mhdr,
1481 xmlns_id_t parent_nsid,
1482 xmlns_id_t node_nsid,
1483 const xmlChar *node_name,
1484 int32 indent);
1485
1486
1502extern void
1503 agt_output_start_node (ses_cb_t *scb,
1504 xml_msg_hdr_t *mhdr,
1505 xmlns_id_t parent_nsid,
1506 xmlns_id_t node_nsid,
1507 const xmlChar *node_name,
1508 int32 indent,
1509 boolean try_modname);
1510
1511
1512
1532extern void
1533 agt_output_start_node2 (ses_cb_t *scb,
1534 xml_msg_hdr_t *mhdr,
1535 xmlns_id_t parent_nsid,
1536 xmlns_id_t node_nsid,
1537 const xmlChar *node_name,
1538 int32 indent,
1539 boolean try_modname,
1540 val_value_t *metaval);
1541
1542
1543
1565extern void
1566 agt_output_start_errors_container (ses_cb_t *scb,
1567 xml_msg_hdr_t *mhdr,
1568 xmlns_id_t parent_nsid,
1569 xmlns_id_t nsid,
1570 const xmlChar *elname,
1571 const dlq_hdr_t *attrQ,
1572 boolean isattrq,
1573 int32 indent,
1574 boolean empty);
1575
1576
1589extern void
1590 agt_output_end_container (ses_cb_t *scb,
1591 xml_msg_hdr_t *mhdr,
1592 xmlns_id_t node_nsid,
1593 const xmlChar *node_name,
1594 int32 indent);
1595
1596
1605extern boolean
1606 agt_match_etag (val_value_t *val,
1607 const xmlChar *etag);
1608
1609
1620extern boolean
1621 agt_match_etag_binary (val_value_t *val,
1622 ncx_etag_t etag);
1623
1624
1635extern boolean
1637 time_t *timerec);
1638
1639
1648extern boolean
1650
1651
1668extern val_value_t *
1669 agt_make_leaf2 (obj_template_t *parentobj,
1670 const xmlChar *modname,
1671 const xmlChar *leafname,
1672 const xmlChar *leafstrval,
1673 status_t *res);
1674
1675
1689extern val_value_t *
1691 const xmlChar *modname,
1692 const xmlChar *leafname,
1693 const val_value_t *leafval,
1694 status_t *res);
1695
1696
1713extern val_value_t *
1715 const xmlChar *modname,
1716 const xmlChar *leafname,
1717 uint32 leafval,
1718 status_t *res);
1719
1720
1737extern val_value_t *
1739 const xmlChar *modname,
1740 const xmlChar *leafname,
1741 int32 leafval,
1742 status_t *res);
1743
1744
1761extern val_value_t *
1763 const xmlChar *modname,
1764 const xmlChar *leafname,
1765 uint64 leafval,
1766 status_t *res);
1767
1768
1785extern val_value_t *
1787 const xmlChar *modname,
1788 const xmlChar *leafname,
1789 int64 leafval,
1790 status_t *res);
1791
1792
1813extern val_value_t *
1815 const xmlChar *modname,
1816 const xmlChar *leafname,
1817 const val_idref_t *leafval,
1818 status_t *res);
1819
1820
1834extern val_value_t *
1836 const xmlChar *modname,
1837 const xmlChar *leafname,
1838 const ncx_list_t *listval,
1839 status_t *res);
1840
1841
1855extern val_value_t *
1857 const xmlChar *modname,
1858 const xmlChar *leafname,
1859 boolean boolval,
1860 status_t *res);
1861
1862
1876extern val_value_t *
1878 const xmlChar *modname,
1879 const xmlChar *leafname,
1880 boolean boolval,
1881 status_t *res);
1882
1883
1899extern val_value_t *
1900 agt_make_object2 (obj_template_t *parentobj,
1901 const xmlChar *modname,
1902 const xmlChar *objname,
1903 status_t *res);
1904
1905
1927extern val_value_t *
1928 agt_make_virtual_leaf2 (obj_template_t *parentobj,
1929 const xmlChar *modname,
1930 const xmlChar *leafname,
1931 getcb_fn_t callbackfn,
1932 status_t *res);
1933
1934
1948extern ncx_cfg_t
1950
1951
1961extern boolean
1962 agt_module_in_cli_valset (const xmlChar *modname);
1963
1964
1972extern void
1973 agt_set_basic_withdef_enabled (void);
1974
1975
1976
1986extern boolean
1988
1989
2001extern op_editop_t
2002 agt_cvt_editop (op_editop_t editop,
2003 const val_value_t *newval,
2004 const val_value_t *curval);
2005
2006
2016extern op_editop_t
2017 agt_cvt_editop_acm (op_editop_t editop,
2018 const val_value_t *newval,
2019 const val_value_t *curval);
2020
2021
2032extern op_editop_t
2033 agt_cvt_editop_ex (op_editop_t editop,
2034 const val_value_t *newval,
2035 const val_value_t *curval);
2036
2037
2048extern int
2049 agt_connect_client (const xmlChar *hostname,
2050 uint16_t port);
2051
2052
2053
2064extern int
2065 agt_connect_udp_client (const xmlChar *hostname,
2066 uint16_t port,
2067 boolean *is_ipv6);
2068
2069
2086extern status_t
2088 val_value_t *err_value,
2089 val_value_t **retval);
2090
2091
2100extern uint32
2102
2103
2114extern val_value_t *
2116
2117
2126extern obj_template_t *
2128
2129
2130
2139extern obj_template_t *
2141
2142
2151extern const xmlChar*
2153
2154
2155#ifdef PTHREADS
2165extern boolean
2166 agt_get_ok_for_nolock (rpc_msg_t *msg);
2167
2168
2178extern boolean
2179 agt_getbulk_ok_for_nolock (const xmlChar *pathstr);
2180
2181#endif // PTHREADS
2182
2183
2194extern boolean
2196
2197
2206extern const xmlChar *
2208
2209
2218extern agt_crl_mode_t
2219 agt_crl_mode_enum (const xmlChar *crl_mode);
2220
2221
2233extern val_nodetest_fn_t
2234 agt_util_get_testfn (xml_msg_hdr_t *msg,
2235 boolean getop);
2236
2237
2238
2255extern status_t
2256 agt_fill_dummy_method (const xmlChar *modname,
2257 const xmlChar *rpcname,
2258 xml_node_t *node,
2259 obj_template_t **rpcobj);
2260
2261
2277extern yang_patch_cb_t *
2278 agt_make_yang_patch_cb (const xmlChar *patch_id,
2279 const xmlChar *the_comment,
2280 const xmlChar *patch_root,
2282 uint32 included_changes);
2283
2284
2301extern yang_patch_cb_t *
2302 agt_make_yang_patch_cb_targobj (const xmlChar *patch_id,
2303 const xmlChar *the_comment,
2304 const xmlChar *patch_root,
2306 uint32 included_changes,
2307 obj_template_t *targobj);
2308
2309
2324extern yang_patch_cb_t *
2325 agt_make_yang_patch_cb_file (const xmlChar *patch_id,
2326 const xmlChar *the_comment,
2327 const xmlChar *patch_root,
2328 const xmlChar *filespec,
2329 boolean is_binary);
2330
2331
2347extern boolean
2348 agt_check_included_changes (agt_cfg_transaction_t *txcb,
2349 uint32 included_changes,
2350 obj_template_t *targobj);
2351
2352
2353
2354
2355
2371extern status_t
2372 agt_add_leafy (val_value_t *parentval,
2373 const xmlChar *modname,
2374 const xmlChar *leafname,
2375 const xmlChar *leafstrval);
2376
2377
2393extern status_t
2394 agt_add_uint_leafy (val_value_t *parentval,
2395 const xmlChar *modname,
2396 const xmlChar *leafname,
2397 uint32 leafval);
2398
2399
2400
2416extern status_t
2417 agt_add_int_leafy (val_value_t *parentval,
2418 const xmlChar *modname,
2419 const xmlChar *leafname,
2420 int32 leafval);
2421
2422
2438extern status_t
2440 const xmlChar *modname,
2441 const xmlChar *leafname,
2442 uint64 leafval);
2443
2444
2460extern status_t
2461 agt_add_int64_leafy (val_value_t *parentval,
2462 const xmlChar *modname,
2463 const xmlChar *leafname,
2464 int64 leafval);
2465
2466
2467
2483extern status_t
2485 const xmlChar *modname,
2486 const xmlChar *leafname,
2487 boolean boolval);
2488
2489
2508extern status_t
2509 agt_add_idref_leafy (val_value_t *parentval,
2510 const xmlChar *modname,
2511 const xmlChar *leafname,
2512 const val_idref_t *leafval);
2513
2514
2533extern status_t
2534 agt_add_bits_leafy (val_value_t *parentval,
2535 const xmlChar *modname,
2536 const xmlChar *leafname,
2537 const ncx_list_t *leafval);
2538
2539
2540
2541
2542/***** APIS USED FOR NESTED NOTIFICATION GENERATION ****/
2543
2544
2555extern val_value_t *
2556 agt_make_string_key (const xmlChar *leafval);
2557
2558
2559
2570extern val_value_t *
2571 agt_make_uint_key (uint32 leafval);
2572
2573
2574
2585extern val_value_t *
2586 agt_make_int_key (int32 leafval);
2587
2588
2589
2600extern val_value_t *
2601 agt_make_uint64_key (uint64 leafval);
2602
2603
2604
2615extern val_value_t *
2616 agt_make_int64_key (int64 leafval);
2617
2618
2619
2630extern val_value_t *
2631 agt_make_boolean_key (boolean leafval);
2632
2633
2644extern val_value_t *
2645 agt_make_idref_key (const val_idref_t *leafval);
2646
2647
2658extern val_value_t *
2659 agt_make_bits_key (const ncx_list_t *leafval);
2660
2661
2662/*
2663* @brief make a generic key leaf node from a union
2664*
2665* - OK for SIL or SIL-SA
2666*
2667* @param leafval union version of value to set for key leaf
2668* @return malloced value node
2669*/
2670extern val_value_t *
2671 agt_make_union_key (const val_value_t *leafval);
2672
2673
2684extern status_t
2685 agt_get_sid_set_id (xmlChar *buff,
2686 uint32 bufflen);
2687
2688
2689
2690
2726extern status_t
2727 agt_xpath_force_true (struct xpath_pcb_t_ *pcb,
2728 val_value_t *context,
2729 val_value_t *docroot,
2730 boolean *result);
2731
2732
2769extern status_t
2770 agt_xpath_example (struct xpath_pcb_t_ *pcb,
2771 val_value_t *context,
2772 val_value_t *docroot,
2773 boolean *result);
2774
2775
2776
2793extern agt_edit_parms_cb_t *
2794 agt_new_edit_parms (const xmlChar *patch_id_str,
2795 boolean system_edit,
2796 boolean skip_sil,
2797 const xmlChar *comment);
2798
2799
2816extern status_t
2817 agt_init_edit_parms (agt_edit_parms_cb_t *parms,
2818 const xmlChar *patch_id_str,
2819 boolean system_edit,
2820 boolean skip_sil,
2821 const xmlChar *comment);
2822
2823
2824
2833extern void
2834 agt_clean_edit_parms (agt_edit_parms_cb_t *parms);
2835
2836
2845extern void
2846 agt_free_edit_parms (agt_edit_parms_cb_t *parms);
2847
2848
2872extern status_t
2874 const xmlChar *edit_id_str,
2875 const xmlChar *edit_target,
2876 const xmlChar *edit_operation,
2877 const xmlChar *edit_xml_value,
2878 const xmlChar *insert_point,
2879 const xmlChar *insert_where);
2880
2881
2901extern status_t
2903 agt_edit_parms_cb_t *parms);
2904
2905
2906/*
2907* @brief create malloced struct with SA Push parms
2908*
2909* @return malloced struct
2910* @see agt_free_sa_push_parms
2911*/
2912extern agt_sa_push_parms_t *
2913 agt_new_sa_push_parms (void);
2914
2915
2916/*
2917* @brief free malloced SA parms
2918*
2919* @param sa_parms malloced struct to free
2920* @see agt_new_sa_push_parms
2921*/
2922extern void
2923 agt_free_sa_push_parms (agt_sa_push_parms_t *sa_parms);
2924
2933extern agt_sa_push_parms_t *
2935 status_t *res);
2936
2937
2938
2939
2940
2960extern status_t
2961 agt_get_bulktest (const xml_msg_hdr_t *msg,
2962 const obj_template_t *obj,
2963 const xpath_pcb_t **retpcb,
2964 const xmlChar **retexpr);
2965
2966
2972extern void
2974
2975
2979#ifdef __cplusplus
2980} /* end extern 'C' */
2981#endif
2982
2983#endif /* _H_agt_util */
Multi-Protocol Network Management Server.
Manage Server configuration edit transactions.
NCX configuration database manager.
dlq provides general double-linked list and queue support:
GET1 and GET2 Callback Support.
agt_crl_mode_t
server TLS CRL mode
Definition: agt.h:842
val_value_t * agt_make_boolean_leaf(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, boolean boolval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_BOOL)
Definition: agt_util.c:6602
obj_template_t * agt_get_rpc_output_obj(rpc_msg_t *msg)
Get the rpc output object template.
Definition: agt_util.c:7338
boolean agt_modified_since(val_value_t *val, time_t *timerec)
Check if the timestamp for the object is later then the specified timestamp.
Definition: agt_util.c:6196
boolean agt_notifications_enabled(void)
Check if notifications are enabled.
Definition: agt_util.c:6219
val_value_t * agt_make_leaf2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const xmlChar *leafstrval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:6241
status_t agt_add_int64_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, int64 leafval)
make a child node from a int64 and add to parent.
Definition: agt_util.c:8438
status_t agt_check_max_access(val_value_t *newval, boolean cur_exists)
Check if the max-access for a parameter is exceeded.
Definition: agt_util.c:3517
status_t agt_add_uint64_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, uint64 leafval)
make a child node from a uint64 and add to parent.
Definition: agt_util.c:8384
boolean agt_backups_enabled(void)
Check if the backup commands are enabled.
Definition: agt_util.c:5776
val_value_t * agt_make_idref_leaf2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const val_idref_t *leafval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:6486
val_value_t * agt_make_uint_key(uint32 leafval)
make a generic key leaf node from a uint
Definition: agt_util.c:8688
val_value_t * agt_make_int_leaf(obj_template_t *parentobj, const xmlChar *leafname, int32 leafval, status_t *res)
make an int32 val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:4194
void agt_record_error_errinfo(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 provided error fields.
Definition: agt_util.c:2444
status_t agt_xpath_force_true(struct xpath_pcb_t_ *pcb, val_value_t *context, val_value_t *docroot, boolean *result)
XPath Boolean EVAL Replacement Callback.
Definition: agt_util.c:8993
val_value_t * agt_make_uint_leaf(obj_template_t *parentobj, const xmlChar *leafname, uint32 leafval, status_t *res)
make a uint32 val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:4175
obj_template_t * agt_get_action_output_obj(val_value_t *actionval)
Get the action output object template.
Definition: agt_util.c:7365
val_value_t * agt_make_virtual_leaf(obj_template_t *parentobj, const xmlChar *leafname, getcb_fn_t callbackfn, status_t *res)
make a val_value_t struct for a specified virtual leaf or leaf-list
Definition: agt_util.c:4345
status_t agt_add_bits_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, const ncx_list_t *leafval)
make a child node from a ncx_list_t struct (bits) and add to parent.
Definition: agt_util.c:8610
void agt_record_error(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)
Generate an rpc_err_rec_t and save it in the msg.
Definition: agt_util.c:2335
status_t agt_apply_patch_edit(ses_cb_t *scb, agt_edit_parms_cb_t *parms)
SIL version of the db_api_send_edt_full2 API.
Definition: agt_util.c:9293
status_t agt_add_idref_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, const val_idref_t *leafval)
make a child node from a val_idref_t struct and add to parent.
Definition: agt_util.c:8550
xpath_pcb_t * agt_new_xpath_pcb(ses_cb_t *scb, const xmlChar *expr, status_t *res)
Get a new XPath parser control block and set up the server variable bindings.
Definition: agt_util.c:4652
val_value_t * agt_make_int64_key(int64 leafval)
make a generic key leaf node from an int64
Definition: agt_util.c:8762
val_value_t * agt_make_list(obj_template_t *parentobj, const xmlChar *listname, status_t *res)
make a val_value_t struct for a specified list
Definition: agt_util.c:4288
const val_value_t * agt_get_parmval(const xmlChar *parmname, rpc_msg_t *msg)
Get the identified val_value_t for a given parameter.
Definition: agt_util.c:2290
void agt_print_error_headers(void)
Print the error number and error message for each error to STDOUT or the logfile; Used for doxygen he...
Definition: agt_util.c:9652
xmlChar * agt_get_startup_filespec(status_t *res)
Figure out where to store the startup file.
Definition: agt_util.c:4754
boolean agt_module_in_cli_valset(const xmlChar *modname)
Check if there is a module=foo parameter in the CLI parameter set.
Definition: agt_util.c:6811
agt_crl_mode_t agt_crl_mode_enum(const xmlChar *crl_mode)
Get the enum for the CRL mode string.
Definition: agt_util.c:7760
val_value_t * agt_make_object(obj_template_t *parentobj, const xmlChar *objname, status_t *res)
make a val_value_t struct for a specified node
Definition: agt_util.c:4314
val_value_t * agt_make_leaf(obj_template_t *parentobj, const xmlChar *leafname, const xmlChar *leafstrval, status_t *res)
make a string val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:4156
val_value_t * agt_get_rpc_input(rpc_msg_t *msg)
Get the rpc input value node.
Definition: agt_util.c:7310
val_value_t * agt_make_int64_leaf2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, int64 leafval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:6448
val_value_t * agt_make_object2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *objname, status_t *res)
make a val_value_t struct for a specified node
Definition: agt_util.c:6671
void agt_record_attr_error(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: agt_util.c:2555
val_value_t * agt_make_uint_leaf2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, uint32 leafval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:6348
const xmlChar * agt_crl_mode_str(agt_crl_mode_t crl_mode)
Get the string for the CRL mode enum.
Definition: agt_util.c:7729
boolean agt_op_ok_for_maintenance_mode(const obj_template_t *rpcobj)
Check if the operation is OK for maintenance mode.
Definition: agt_util.c:7636
val_value_t * agt_make_int64_leaf(obj_template_t *parentobj, const xmlChar *leafname, int64 leafval, status_t *res)
make an int64 val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:4232
val_value_t * agt_make_bits_key(const ncx_list_t *leafval)
make a generic key leaf node from a bits struct
Definition: agt_util.c:8863
val_value_t * agt_make_empty_leaf(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, boolean boolval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_EMPTY)
Definition: agt_util.c:6634
void agt_record_warning(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_parm, ncx_node_t nodetyp, void *error_path, const ncx_errinfo_t *errinfo)
Generate an rpc_err_rec_t and save it in the msg.
Definition: agt_util.c:2503
const xmlChar * agt_getTermReasonStr(ses_term_reason_t termreason)
Convert the termination reason enum to a string.
Definition: agt_util.c:7395
val_value_t * agt_make_string_key(const xmlChar *leafval)
make a generic key leaf node from a string
Definition: agt_util.c:8662
status_t agt_find_in_datastore(ncx_cfg_t cfg_id, val_value_t *err_value, val_value_t **retval)
Find the node (should be from an <edit-config> content node) in the specified datastore.
Definition: agt_util.c:7209
status_t agt_xpath_example(struct xpath_pcb_t_ *pcb, val_value_t *context, val_value_t *docroot, boolean *result)
XPath Boolean EVAL Replacement Callback.
Definition: agt_util.c:9012
val_value_t * agt_make_boolean_key(boolean leafval)
make a generic key leaf node from a boolean
Definition: agt_util.c:8787
val_value_t * agt_make_int_key(int32 leafval)
make a generic key leaf node from an int
Definition: agt_util.c:8712
uint32 agt_get_error_count(rpc_msg_t *msg)
Get the current number of errors in the rpc msg Q.
Definition: agt_util.c:7283
void agt_record_error_obj(ses_cb_t *scb, xml_msg_hdr_t *msghdr, status_t res, obj_template_t *errobj, const xmlChar *badval)
Generate an rpc_err_rec_t and save it in the msg Use the provided object for <rpc-error> fields.
Definition: agt_util.c:2374
val_value_t * agt_make_idref_leaf(obj_template_t *parentobj, const xmlChar *leafname, const val_idref_t *leafval, status_t *res)
make an identityref val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:4261
status_t agt_add_patch_edit(agt_edit_parms_cb_t *parms, const xmlChar *edit_id_str, const xmlChar *edit_target, const xmlChar *edit_operation, const xmlChar *edit_xml_value, const xmlChar *insert_point, const xmlChar *insert_where)
Create an edit request and add to YANG Patch in progress.
Definition: agt_util.c:9201
agt_sa_push_parms_t * agt_cvt_val2parms(val_value_t *reqval, status_t *res)
Fill in sa_push_parms from a message val_value_t.
Definition: agt_util.c:9436
int agt_connect_udp_client(const xmlChar *hostname, uint16_t port, boolean *is_ipv6)
Start a UDP connection to a client.
Definition: agt_util.c:7191
val_value_t * agt_get_key_value(val_value_t *startval, val_value_t **lastkey)
Get the next expected key value in the ancestor chain.
Definition: agt_util.c:5363
val_value_t * agt_make_uint64_key(uint64 leafval)
make a generic key leaf node from a uint64
Definition: agt_util.c:8737
boolean agt_check_delete_all_allowed(obj_template_t *testobj)
Check if the delete-all or remove-all operation is enabled for for specified object.
Definition: agt_util.c:6882
val_value_t * agt_make_union_leaf(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const val_value_t *leafval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list use a val_value_t for a union
Definition: agt_util.c:6290
val_value_t * agt_make_int_leaf2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, int32 leafval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:6381
ncx_cfg_t agt_get_edit_config_id(rpc_msg_t *rpcmsg)
Get the enum ID of the configuration that is being edited.
Definition: agt_util.c:6786
status_t agt_add_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, const xmlChar *leafstrval)
make a child node from a string and add to parent.
Definition: agt_util.c:8222
val_value_t * agt_make_bits_leaf(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const ncx_list_t *listval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_BITS or NCX_BT_SLIST)
Definition: agt_util.c:6562
status_t agt_add_boolean_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, boolean boolval)
make a child node from a boolean and add to parent.
Definition: agt_util.c:8493
xmlChar * agt_make_srid_filespec(const xmlChar *basestr, const xmlChar *patstr, const xmlChar *valstr)
Make a filespec string needed for a filespec with SRID in it.
Definition: agt_util.c:4675
val_value_t * agt_make_uint64_leaf(obj_template_t *parentobj, const xmlChar *leafname, uint64 leafval, status_t *res)
make a uint64 val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:4213
status_t agt_add_int_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, int32 leafval)
make a child node from a int32 and add to parent.
Definition: agt_util.c:8330
val_value_t * agt_make_idref_key(const val_idref_t *leafval)
make a generic key leaf node from an idref struct
Definition: agt_util.c:8808
val_value_t * agt_make_uint64_leaf2(obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, uint64 leafval, status_t *res)
make a val_value_t struct for a specified leaf or leaf-list
Definition: agt_util.c:6414
status_t agt_add_uint_leafy(val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, uint32 leafval)
make a child node from a uint32 and add to parent.
Definition: agt_util.c:8276
status_t(* getcb_fn_t)(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
GET1 Callback function for agent node get handler.
Definition: getcb.h:666
op_editop_t
NETCONF edit-config operation types.
Definition: op.h:122
boolean(* val_nodetest_fn_t)(xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node)
user function callback template to test output of a specified node.
Definition: val_util.h:132
status_t
global error return code
Definition: status_enum.h:219
ses_term_reason_t
Session Termination reason.
Definition: ses.h:491
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
ncx_node_t
NCX Internal Node Types.
Definition: ncxtypes.h:437
uint32 ncx_etag_t
The ETag used in RESTCONF messages is the lower 32 bits of a ncx_transaction_id_t.
Definition: ncxtypes.h:750
ncx_cfg_t
hardwire the 3 standard configs
Definition: ncxtypes.h:548
ncx_iqual_t
The instance qualifier types are borrowed from ABNF and RelaxNG.
Definition: ncxtypes.h:460
ncx_protocol_t
NCX session protocol versions supported.
Definition: ncxtypes.h:980
ncx_layer_t
Enumeration of NETCONF protocol layers.
Definition: ncxtypes.h:507
ncx_withdefaults_t
enum for with-defaults enum values
Definition: ncxtypes.h:1259
Contains NCX constants.
YANG module data structures Many internal representations of YANG module constructs.
Data Object Support.
NETCONF protocol remote procedure call common definitions.
NETCONF Session Common definitions module.
Global error messages for status code enumerations.
Transaction Control Block.
Definition: agt_cfg.h:235
struct to contain all agt_send_edit parameters
Definition: agt.h:2143
SIL-SA PUSH Parameter Block.
Definition: agt.h:894
struct representing 1 configuration database
Definition: cfg.h:229
YANG error info statement struct used to override default error handling in the server.
Definition: ncxtypes.h:1347
header for a NCX List
Definition: ncxtypes.h:838
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1118
One YANG data-def-stmt.
Definition: obj.h:1284
NETCONF Server and Client RPC Request/Reply Message Header.
Definition: rpc.h:185
Session Control Block.
Definition: ses.h:759
one QName for the NCX_BT_IDREF value
Definition: val.h:818
one value to match one type
Definition: val.h:939
represents one attribute
Definition: xml_util.h:159
Common Encoding Message Header No longer XML specific!! Used by JSON and CBOR parsing as well!...
Definition: xml_msg.h:417
gather node data into a simple struct.
Definition: xml_util.h:207
XPath parser control block.
Definition: xpath.h:754
XPath expression result.
Definition: xpath.h:705
One YANG Patch Request.
Definition: yang_patch.h:155
Value Node Basic Support.
XML and JSON Message send and receive support.
XML Utilities.
Schema and data model Xpath search support.
YANG Patch Media Type.