yumapro  24.10-11
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
2069extern status_t
2071 val_value_t *err_value,
2072 val_value_t **retval);
2073
2074
2083extern uint32
2085
2086
2097extern val_value_t *
2099
2100
2109extern obj_template_t *
2111
2112
2113
2122extern obj_template_t *
2124
2125
2134extern const xmlChar*
2136
2137
2138#ifdef PTHREADS
2148extern boolean
2149 agt_get_ok_for_nolock (rpc_msg_t *msg);
2150
2151
2161extern boolean
2162 agt_getbulk_ok_for_nolock (const xmlChar *pathstr);
2163
2164#endif // PTHREADS
2165
2166
2177extern boolean
2179
2180
2189extern const xmlChar *
2191
2192
2201extern agt_crl_mode_t
2202 agt_crl_mode_enum (const xmlChar *crl_mode);
2203
2204
2216extern val_nodetest_fn_t
2217 agt_util_get_testfn (xml_msg_hdr_t *msg,
2218 boolean getop);
2219
2220
2221
2238extern status_t
2239 agt_fill_dummy_method (const xmlChar *modname,
2240 const xmlChar *rpcname,
2241 xml_node_t *node,
2242 obj_template_t **rpcobj);
2243
2244
2260extern yang_patch_cb_t *
2261 agt_make_yang_patch_cb (const xmlChar *patch_id,
2262 const xmlChar *the_comment,
2263 const xmlChar *patch_root,
2265 uint32 included_changes);
2266
2267
2284extern yang_patch_cb_t *
2285 agt_make_yang_patch_cb_targobj (const xmlChar *patch_id,
2286 const xmlChar *the_comment,
2287 const xmlChar *patch_root,
2289 uint32 included_changes,
2290 obj_template_t *targobj);
2291
2292
2306extern yang_patch_cb_t *
2307 agt_make_yang_patch_cb_file (const xmlChar *patch_id,
2308 const xmlChar *the_comment,
2309 const xmlChar *patch_root,
2310 const xmlChar *filespec);
2311
2312
2328extern boolean
2329 agt_check_included_changes (agt_cfg_transaction_t *txcb,
2330 uint32 included_changes,
2331 obj_template_t *targobj);
2332
2333
2334
2335
2336
2352extern status_t
2353 agt_add_leafy (val_value_t *parentval,
2354 const xmlChar *modname,
2355 const xmlChar *leafname,
2356 const xmlChar *leafstrval);
2357
2358
2374extern status_t
2375 agt_add_uint_leafy (val_value_t *parentval,
2376 const xmlChar *modname,
2377 const xmlChar *leafname,
2378 uint32 leafval);
2379
2380
2381
2397extern status_t
2398 agt_add_int_leafy (val_value_t *parentval,
2399 const xmlChar *modname,
2400 const xmlChar *leafname,
2401 int32 leafval);
2402
2403
2419extern status_t
2421 const xmlChar *modname,
2422 const xmlChar *leafname,
2423 uint64 leafval);
2424
2425
2441extern status_t
2442 agt_add_int64_leafy (val_value_t *parentval,
2443 const xmlChar *modname,
2444 const xmlChar *leafname,
2445 int64 leafval);
2446
2447
2448
2464extern status_t
2466 const xmlChar *modname,
2467 const xmlChar *leafname,
2468 boolean boolval);
2469
2470
2489extern status_t
2490 agt_add_idref_leafy (val_value_t *parentval,
2491 const xmlChar *modname,
2492 const xmlChar *leafname,
2493 const val_idref_t *leafval);
2494
2495
2514extern status_t
2515 agt_add_bits_leafy (val_value_t *parentval,
2516 const xmlChar *modname,
2517 const xmlChar *leafname,
2518 const ncx_list_t *leafval);
2519
2520
2521
2522
2523/***** APIS USED FOR NESTED NOTIFICATION GENERATION ****/
2524
2525
2536extern val_value_t *
2537 agt_make_string_key (const xmlChar *leafval);
2538
2539
2540
2551extern val_value_t *
2552 agt_make_uint_key (uint32 leafval);
2553
2554
2555
2566extern val_value_t *
2567 agt_make_int_key (int32 leafval);
2568
2569
2570
2581extern val_value_t *
2582 agt_make_uint64_key (uint64 leafval);
2583
2584
2585
2596extern val_value_t *
2597 agt_make_int64_key (int64 leafval);
2598
2599
2600
2611extern val_value_t *
2612 agt_make_boolean_key (boolean leafval);
2613
2614
2625extern val_value_t *
2626 agt_make_idref_key (const val_idref_t *leafval);
2627
2628
2639extern val_value_t *
2640 agt_make_bits_key (const ncx_list_t *leafval);
2641
2642
2643/*
2644* @brief make a generic key leaf node from a union
2645*
2646* - OK for SIL or SIL-SA
2647*
2648* @param leafval union version of value to set for key leaf
2649* @return malloced value node
2650*/
2651extern val_value_t *
2652 agt_make_union_key (const val_value_t *leafval);
2653
2654
2665extern status_t
2666 agt_get_sid_set_id (xmlChar *buff,
2667 uint32 bufflen);
2668
2669
2670
2671
2707extern status_t
2708 agt_xpath_force_true (struct xpath_pcb_t_ *pcb,
2709 val_value_t *context,
2710 val_value_t *docroot,
2711 boolean *result);
2712
2713
2750extern status_t
2751 agt_xpath_example (struct xpath_pcb_t_ *pcb,
2752 val_value_t *context,
2753 val_value_t *docroot,
2754 boolean *result);
2755
2756
2757
2758
2775extern agt_edit_parms_cb_t *
2776 agt_new_edit_parms (const xmlChar *patch_id_str,
2777 boolean system_edit,
2778 boolean skip_sil,
2779 const xmlChar *comment);
2780
2781
2798extern status_t
2799 agt_init_edit_parms (agt_edit_parms_cb_t *parms,
2800 const xmlChar *patch_id_str,
2801 boolean system_edit,
2802 boolean skip_sil,
2803 const xmlChar *comment);
2804
2805
2806
2815extern void
2816 agt_clean_edit_parms (agt_edit_parms_cb_t *parms);
2817
2818
2827extern void
2828 agt_free_edit_parms (agt_edit_parms_cb_t *parms);
2829
2830
2854extern status_t
2856 const xmlChar *edit_id_str,
2857 const xmlChar *edit_target,
2858 const xmlChar *edit_operation,
2859 const xmlChar *edit_xml_value,
2860 const xmlChar *insert_point,
2861 const xmlChar *insert_where);
2862
2863
2883extern status_t
2885 agt_edit_parms_cb_t *parms);
2886
2887
2888
2889
2909extern status_t
2910 agt_get_bulktest (const xml_msg_hdr_t *msg,
2911 const obj_template_t *obj,
2912 const xpath_pcb_t **retpcb,
2913 const xmlChar **retexpr);
2914
2915
2921extern void
2923
2924
2928#ifdef __cplusplus
2929} /* end extern 'C' */
2930#endif
2931
2932#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:828
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:6600
obj_template_t * agt_get_rpc_output_obj(rpc_msg_t *msg)
Get the rpc output object template.
Definition: agt_util.c:7272
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:6194
boolean agt_notifications_enabled(void)
Check if notifications are enabled.
Definition: agt_util.c:6217
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:6239
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:8361
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:8307
boolean agt_backups_enabled(void)
Check if the backup commands are enabled.
Definition: agt_util.c:5774
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:6484
val_value_t * agt_make_uint_key(uint32 leafval)
make a generic key leaf node from a uint
Definition: agt_util.c:8611
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:8916
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:7299
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:8533
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:9210
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:8473
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:8685
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:9375
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:6808
agt_crl_mode_t agt_crl_mode_enum(const xmlChar *crl_mode)
Get the enum for the CRL mode string.
Definition: agt_util.c:7694
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:7244
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:6446
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:6669
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:6346
const xmlChar * agt_crl_mode_str(agt_crl_mode_t crl_mode)
Get the string for the CRL mode enum.
Definition: agt_util.c:7663
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:7570
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:8786
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:6632
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:7329
val_value_t * agt_make_string_key(const xmlChar *leafval)
make a generic key leaf node from a string
Definition: agt_util.c:8585
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:7143
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:8935
val_value_t * agt_make_boolean_key(boolean leafval)
make a generic key leaf node from a boolean
Definition: agt_util.c:8710
val_value_t * agt_make_int_key(int32 leafval)
make a generic key leaf node from an int
Definition: agt_util.c:8635
uint32 agt_get_error_count(rpc_msg_t *msg)
Get the current number of errors in the rpc msg Q.
Definition: agt_util.c:7217
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:9118
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:8660
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:6879
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:6288
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:6379
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:6783
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:8145
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:6560
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:8416
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:8253
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:8731
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:6412
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:8199
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:417
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:771
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:1001
ncx_layer_t
Enumeration of NETCONF protocol layers.
Definition: ncxtypes.h:507
ncx_withdefaults_t
enum for with-defaults enum values
Definition: ncxtypes.h:1278
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:2013
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:1366
header for a NCX List
Definition: ncxtypes.h:859
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1138
One YANG data-def-stmt.
Definition: obj.h:1232
NETCONF Server and Client RPC Request/Reply Message Header.
Definition: rpc.h:185
Session Control Block.
Definition: ses.h:573
one QName for the NCX_BT_IDREF value
Definition: val.h:795
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
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.