yumapro  23.10T-10
YumaPro SDK
Loading...
Searching...
No Matches
agt_cfg.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2023, YumaWorks, Inc., All Rights Reserved.
4 *
5 * Unless required by applicable law or agreed to in writing,
6 * software distributed under the License is distributed on an
7 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 * KIND, either express or implied. See the License for the
9 * specific language governing permissions and limitations
10 * under the License.
11 */
12#ifndef _H_agt_cfg
13#define _H_agt_cfg
14
15/* FILE: agt_cfg.h
16*********************************************************************
17* *
18* P U R P O S E *
19* *
20*********************************************************************/
21
28/*********************************************************************
29* *
30* C H A N G E H I S T O R Y *
31* *
32*********************************************************************
33
34date init comment
35----------------------------------------------------------------------
3622dec11 abb begun; split out from ncx/rpc ...
37
38*/
39
40#include <time.h>
41
42#ifndef _H_agt
43#include "agt.h"
44#endif
45
46#ifndef _H_cfg
47#include "cfg.h"
48#endif
49
50#ifndef _H_dlq
51#include "dlq.h"
52#endif
53
54#ifndef _H_ncxtypes
55#include "ncxtypes.h"
56#endif
57
58#ifndef _H_op
59#include "op.h"
60#endif
61
62#ifndef _H_status
63#include "status.h"
64#endif
65
66#ifndef _H_val
67#include "val.h"
68#endif
69
70#ifndef _H_xpath
71#include "xpath.h"
72#endif
73
74#ifdef __cplusplus
75extern "C" {
76#endif
77
78/********************************************************************
79* *
80* C O N S T A N T S *
81* *
82*********************************************************************/
83
84/* header only */
85
109#define AGT_CFG_SET_VALIDATE_DEF(C) (C)->is_validate_def = TRUE
110
112#define AGT_CFG_GET_VALIDATE_DEF(C) (C)->is_validate_def
113
115#define AGT_CFG_SET_SKIP_SIL(C) (C)->skip_sil = TRUE
116
118#define AGT_CFG_GET_SKIP_SIL(C) (C)->skip_sil
119
121#define AGT_CFG_SET_SKIP_SIL_PARTIAL(C) (C)->skip_sil_partial = TRUE
122
124#define AGT_CFG_GET_SKIP_SIL_PARTIAL(C) (C)->skip_sil_partial
125
127#define AGT_CFG_SET_SKIP_SAVE(C) (C)->skip_save = TRUE
128
130#define AGT_CFG_GET_SKIP_SAVE(C) (C)->skip_save
131
133#define AGT_CFG_GET_COMMENT(C) (C)->comment
134
136#define AGT_CFG_SET_COMMENT(C,S) (C)->comment = S
137
141#define AGT_CFG_GET_TXCB(M) (M)->rpc_txcb
142
144#define AGT_CFG_SET_CUR_SILCALL(C,S) (C)->cur_silcall = S
145
147#define AGT_CFG_GET_CUR_SILCALL(C) (C)->cur_silcall
148
150#define AGT_CFG_SET_TOP_REPLACE(C) (C)->top_replace = TRUE
151
153#define AGT_CFG_IS_TOP_REPLACE(C) (C)->top_replace
154
156#define AGT_CFG_NEWMPIDQ(C) &((C)->newmpidQ)
157
159#define AGT_CFG_CHECK_REDO(C) (C)->check_redo_root_check
160
162#define AGT_CFG_IS_CC_TIMEOUT(C) (C)->is_cc_timeout
163
165#define AGT_CFG_TEST_ONLY_CLEANUP(C) (C)->test_only_cleanup
166
167/********************************************************************
168* *
169* T Y P E S *
170* *
171*********************************************************************/
172
173
175typedef enum agt_cfg_edit_action_t_ {
178
181
184
187
190
193
197
198
200typedef enum agt_cfg_edit_type_t_ {
205
206
235typedef struct agt_cfg_transaction_t_ {
237 dlq_hdr_t qhdr;
238
241
243 xmlChar *txid_str;
244
246 time_t timestamp;
247
250
253
256
259
262
270
272 boolean start_bad;
273
275 boolean rootcheck;
276
279
281 boolean commitcheck;
282
284 boolean is_validate;
285
288
290 boolean is_commit;
291
293 boolean is_rollback;
294
296 boolean is_unload;
297
300
302 boolean is_load;
303
305 boolean is_restore;
306
309
312
314 boolean top_replace;
315
318
323
326
328 boolean skip_sil;
329
332
335
337 boolean skip_save;
338
341
344
346 boolean skip_cb;
347
349 boolean hook_merge;
350
353
356
359
362
365
368
373
378
380 const xmlChar *comment;
381
384 dlq_hdr_t undoQ; /* Q of agt_cfg_undo_rec_t */
385
389 dlq_hdr_t auditQ; /* Q of agt_cfg_audit_rec_t */
390
394 dlq_hdr_t deadnodeQ; /* Q of ncx_backptr to val_value_t */
395
402 /* not used anymore. See def_reg implementation instead for
403 * must visit checks
404 */
405 // dlq_hdr_t xpath_visitQ; // backptr to agt_cfg_xpath_visit_t
406
408 struct agt_cfg_nested_silcall_t_ *cur_silcall;
409
414 dlq_hdr_t transhookQ;
415
422 dlq_hdr_t newmpidQ; // Q of backptr to agt_cfg_undo_rec_t
423
424#ifdef WITH_YCONTROL
428 dlq_hdr_t silcallQ;
429
431 dlq_hdr_t silcall_undoQ;
432
435
438
441
444
446 boolean cancel_done;
447
452 dlq_hdr_t added_silcallQ;
453#endif // WITH_YCONTROL
454
459
461
462
476typedef struct agt_cfg_nested_silcall_t_ {
478 dlq_hdr_t qhdr;
479
482
485
488
491
494
495 /* the newval is a backptr into the subtree
496 * that is really rooted in the undo record that is at
497 * the root of this edit.
498 */
499 val_value_t *newval;
500
501 /* the curval is a backptr into the subtree
502 * that is really rooted in the undo record that is at
503 * the root of this edit.
504 */
505 val_value_t *curval;
506
509
512
514 struct agt_cfg_nested_silcall_t_ *parent;
515
526
528
529
548typedef struct agt_cfg_undo_rec_t_ {
550 dlq_hdr_t qhdr;
551
554
557
559 boolean edit2_merge;
560
563
566
569
574
576 boolean added_edit;
577
579 boolean skip_cb;
580
582 boolean is_insert;
583
588
591
594
597
600
603
606
609
612
615
618
621
624
631
637 xmlChar *save_path;
638
646 dlq_hdr_t extra_deleteQ;
656 dlq_hdr_t nested_silcallQ;
667 dlq_hdr_t child_undoQ;
671
674
677
680
683
684#ifdef WITH_YCONTROL
685
688#endif // WITH_YCONTROL
689
691 struct agt_cfg_undo_rec_t_ *orig_rev_undo;
692
697
698} YPACK agt_cfg_undo_rec_t;
699
700
701#ifdef WITH_YCONTROL
702
704typedef struct agt_cfg_child_silcall_t_ {
706 dlq_hdr_t qhdr;
707
710
713
716
718
719
721typedef struct agt_cfg_silcall_t_ {
723 dlq_hdr_t qhdr;
724
727
730
733
735 dlq_hdr_t *subsysQ;
736
738 dlq_hdr_t keyptrQ;
739
741 boolean hook_edit;
742
745
749 dlq_hdr_t child_editQ;
750
751} YPACK agt_cfg_silcall_t;
752#endif // WITH_YCONTROL
753
754
758typedef struct agt_cfg_audit_rec_t_ {
760 dlq_hdr_t qhdr;
761
763 xmlChar *target;
764
767
773
776
777} YPACK agt_cfg_audit_rec_t;
778
779
781typedef struct agt_cfg_commit_test_t_ {
783 dlq_hdr_t qhdr;
784
787
790
793
796
799
801 uint32 testflags;
803
804
806typedef struct agt_cfg_xpath_visit_t_ {
808 dlq_hdr_t qhdr;
809
812
816
817
819typedef struct agt_cfg_trans_hook_t_ {
821 dlq_hdr_t qhdr;
822
825
828
831
834
838
839
843/********************************************************************
844* *
845* F U N C T I O N S *
846* *
847*********************************************************************/
848
881 agt_cfg_edit_type_t edit_type,
882 boolean rootcheck,
883 boolean is_validate,
884 boolean is_rollback,
885 status_t *res);
886
887
912 agt_cfg_edit_type_t edit_type,
913 boolean rootcheck,
914 boolean is_validate,
915 boolean is_rollback,
916 boolean no_cb,
917 status_t *res);
918
919
945 agt_cfg_edit_type_t edit_type,
946 boolean rootcheck,
947 boolean is_validate,
948 boolean is_rollback,
949 boolean no_cb,
950 ses_cb_t *scb,
951 status_t *res);
952
953
961extern status_t
964
965
993 agt_cfg_edit_type_t edit_type,
994 boolean rootcheck,
995 boolean is_validate,
996 boolean is_rollback,
997 boolean no_cb,
998 boolean no_silsa_cb,
999 ses_cb_t *scb,
1000 status_t *res);
1001
1002
1030extern agt_cfg_transaction_t *
1032 agt_cfg_edit_type_t edit_type,
1033 boolean rootcheck,
1034 boolean is_validate,
1035 boolean is_rollback,
1036 boolean no_silsa_cb,
1038 ses_cb_t *scb,
1039 status_t *res);
1040
1041
1047extern void
1049
1050
1058extern status_t
1059 agt_cfg_init_transactions (const xmlChar *txidfile,
1060 boolean foundfile);
1061
1062
1068extern void
1069 agt_cfg_cleanup_transactions (const xmlChar *txidfile);
1070
1071
1080
1081
1087extern agt_cfg_undo_rec_t *
1088 agt_cfg_new_undorec (void);
1089
1090
1096extern void
1098
1099
1105extern void
1107
1108
1120extern void
1122
1123
1131extern agt_cfg_audit_rec_t *
1132 agt_cfg_new_auditrec (const xmlChar *target,
1133 op_editop_t editop);
1134
1135
1141extern void
1143
1144
1150extern agt_cfg_commit_test_t *
1152
1153
1159extern void
1161
1162
1168extern void
1170
1171
1177extern void
1179
1180
1187extern boolean
1189
1190
1196extern void
1198
1199
1205extern void
1207
1208
1209#ifdef WITH_YCONTROL
1220extern agt_cfg_silcall_t *
1222 val_value_t *newval,
1223 val_value_t *curval,
1224 dlq_hdr_t *subsysQ);
1225
1226
1232extern void
1234
1235
1250extern status_t
1252 op_editop_t editop,
1253 val_value_t *newval,
1254 val_value_t *curval,
1255 dlq_hdr_t *subsysQ,
1256 val_value_t *callval,
1257 agt_hook_type_t hook_type);
1258
1259
1273extern status_t
1275 op_editop_t editop,
1276 val_value_t *newval,
1277 val_value_t *curval,
1278 dlq_hdr_t *subsysQ,
1279 val_value_t *callval);
1280
1281
1296extern status_t
1298 op_editop_t editop,
1299 val_value_t *newval,
1300 val_value_t *curval,
1301 dlq_hdr_t *subsysQ,
1302 val_value_t *callval);
1303
1304#endif // WITH_YCONTROL
1305
1306
1325extern status_t
1327 agt_cfg_undo_rec_t *undo,
1328 op_editop_t editop,
1329 val_value_t *newval,
1330 val_value_t *curval,
1331 obj_template_t *callback_obj,
1332 boolean indelete,
1333 boolean in_reverse_delete,
1334 agt_cfg_nested_silcall_t **result);
1335
1336
1350extern agt_cfg_undo_rec_t *
1352 val_value_t *newnode,
1353 val_value_t *curnode);
1354
1355
1365extern agt_cfg_undo_rec_t *
1367 val_value_t *newnode,
1368 val_value_t *curnode);
1369
1370
1378extern agt_cfg_undo_rec_t *
1380
1381
1390extern void
1392 op_editop_t *editop,
1393 val_value_t **newval,
1394 val_value_t **curval);
1395
1396
1402extern void
1404
1405
1411extern void
1413
1414
1423extern boolean
1425 agt_cfg_undo_rec_t *child_undo);
1426
1427
1434extern agt_cfg_undo_rec_t *
1436
1437
1445extern agt_cfg_undo_rec_t *
1447 agt_cfg_undo_rec_t *cur_undo);
1448
1449
1456extern agt_cfg_undo_rec_t *
1458
1459
1467extern agt_cfg_undo_rec_t *
1469 agt_cfg_undo_rec_t *cur_undo);
1470
1471
1478extern agt_cfg_undo_rec_t *
1480
1481
1488extern agt_cfg_undo_rec_t *
1490
1491
1505extern agt_cfg_undo_rec_t *
1507 val_value_t *newnode,
1508 val_value_t *curnode);
1509
1510
1522extern boolean
1524 val_value_t *next_parent);
1525
1526
1537extern agt_cfg_undo_rec_t *
1539 val_value_t *newnode,
1540 val_value_t *curnode);
1541
1542
1562extern boolean
1564 val_value_t *newnode,
1565 val_value_t *curnode);
1566
1567
1578extern boolean
1580 val_value_t *newnode);
1581
1582
1592extern agt_cfg_trans_hook_t *
1594 val_value_t *newval,
1595 val_value_t *curval,
1596 op_editop_t editop);
1597
1598
1604extern void
1606
1607
1614extern agt_cfg_trans_hook_t *
1616
1617
1624extern agt_cfg_trans_hook_t *
1626
1627
1634extern agt_cfg_trans_hook_t *
1636
1637
1644extern agt_cfg_trans_hook_t *
1646
1647
1660extern boolean
1662 val_value_t *newval,
1663 val_value_t *curval);
1664
1665
1673extern agt_cfg_undo_rec_t *
1675
1676
1686extern agt_cfg_undo_rec_t *
1688 agt_cfg_undo_rec_t *cur_undo);
1689
1690
1699extern agt_cfg_undo_rec_t *
1701
1702
1712extern agt_cfg_undo_rec_t *
1714 agt_cfg_undo_rec_t *cur_undo);
1715
1716
1723extern void
1725 cfg_template_t *cfg);
1726
1727
1737extern agt_cfg_undo_rec_t *
1739 agt_cfg_undo_rec_t *parent_undo);
1740
1741
1751extern agt_cfg_undo_rec_t *
1753 agt_cfg_undo_rec_t *cur_undo);
1754
1755
1768extern agt_cfg_undo_rec_t *
1770 val_value_t *newnode,
1771 val_value_t *curnode);
1772
1773
1785 agt_cfg_find_nested_silcall (dlq_hdr_t *silcallQ,
1786 val_value_t *newnode,
1787 val_value_t *curnode);
1788
1789
1798extern boolean
1800
1801
1812extern boolean
1814 val_value_t *newnode,
1815 val_value_t *curnode);
1816
1817
1833extern val_value_t *
1835 val_value_t *newval,
1836 val_value_t *curval);
1837
1838
1839
1840
1847extern uint32
1849
1850
1851
1855#ifdef __cplusplus
1856} /* end extern 'C' */
1857#endif
1858
1859#endif /* _H_agt_cfg */
Multi-Protocol Network Management Server.
@ brief NCX configuration database manager
dlq provides general double-linked list and queue support:
agt_cfg_undo_rec_t * agt_cfg_first_active_undo(agt_cfg_transaction_t *txcb)
Get the first active undo record.
Definition: agt_cfg.c:3825
agt_cfg_transaction_t * agt_cfg_new_transaction_ex(ncx_cfg_t cfgid, agt_cfg_edit_type_t edit_type, boolean rootcheck, boolean is_validate, boolean is_rollback, boolean no_cb, status_t *res)
Malloc and initialize agt_cfg_transaction_t struct Extended.
Definition: agt_cfg.c:972
agt_cfg_undo_rec_t * agt_cfg_last_active_child_undo(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *parent_undo)
Get the last active child undo record.
Definition: agt_cfg.c:4040
boolean agt_cfg_transaction_is_unload(agt_cfg_transaction_t *txcb)
Check if this transaction is a commit for unloading a module.
Definition: agt_cfg.c:1901
agt_cfg_trans_hook_t * agt_cfg_prev_trans_hook(agt_cfg_trans_hook_t *cur_hook)
Get the previous Trans Hook entry.
Definition: agt_cfg.c:3734
agt_cfg_audit_rec_t * agt_cfg_new_auditrec(const xmlChar *target, op_editop_t editop)
Malloc and initialize a new agt_cfg_audit_rec_t struct.
Definition: agt_cfg.c:1755
agt_cfg_trans_hook_t * agt_cfg_new_trans_hook(obj_template_t *target_obj, val_value_t *newval, val_value_t *curval, op_editop_t editop)
Create and fill in a Trans Hook callback back pointer.
Definition: agt_cfg.c:3611
agt_cfg_commit_test_t * agt_cfg_new_commit_test(void)
Malloc a agt_cfg_commit_test_t struct.
Definition: agt_cfg.c:1813
void agt_cfg_child_edit_fields(agt_cfg_undo_rec_t *child_undo, op_editop_t *editop, val_value_t **newval, val_value_t **curval)
Get the child edit fields from the undo record.
Definition: agt_cfg.c:2836
agt_cfg_transaction_t * agt_cfg_new_transaction(ncx_cfg_t cfgid, agt_cfg_edit_type_t edit_type, boolean rootcheck, boolean is_validate, boolean is_rollback, status_t *res)
Malloc and initialize agt_cfg_transaction_t struct.
Definition: agt_cfg.c:927
agt_cfg_transaction_t * agt_cfg_rerun_transaction(ncx_cfg_t cfgid, agt_cfg_edit_type_t edit_type, boolean rootcheck, boolean is_validate, boolean is_rollback, boolean no_silsa_cb, ncx_transaction_id_t txid, ses_cb_t *scb, status_t *res)
Malloc and initialize agt_cfg_transaction_t struct.
Definition: agt_cfg.c:1295
agt_cfg_nested_silcall_t * agt_cfg_find_nested_silcall(dlq_hdr_t *silcallQ, val_value_t *newnode, val_value_t *curnode)
Match nested callback in provided undo record nested silcall Queue.
Definition: agt_cfg.c:4242
boolean agt_cfg_find_duplicate_silcall(agt_cfg_transaction_t *txcb, val_value_t *newnode, val_value_t *curnode)
Check if there is already the same callback in the nested silcall.
Definition: agt_cfg.c:3499
status_t agt_cfg_finish_new_transaction(ses_cb_t *scb, agt_cfg_transaction_t *txcb)
Call the start transaction callback if it was deferred.
Definition: agt_cfg.c:1209
agt_cfg_undo_rec_t * agt_cfg_find_undo_node(agt_cfg_transaction_t *txcb, val_value_t *newnode, val_value_t *curnode)
Find an undo node.
Definition: agt_cfg.c:2591
void agt_cfg_free_auditrec(agt_cfg_audit_rec_t *auditrec)
Free all the memory used by the specified agt_cfg_audit_rec_t.
Definition: agt_cfg.c:1791
status_t agt_cfg_add_silcall(agt_cfg_transaction_t *txcb, op_editop_t editop, val_value_t *newval, val_value_t *curval, dlq_hdr_t *subsysQ, val_value_t *callval)
Create and fill in a remote SIL callback back pointer Add it to the transaction control block silcall...
Definition: agt_cfg.c:2175
agt_cfg_undo_rec_t * agt_cfg_find_child_undo_node(agt_cfg_undo_rec_t *parent_undo, val_value_t *newnode, val_value_t *curnode)
Find a child undo node.
Definition: agt_cfg.c:3188
agt_cfg_undo_rec_t * agt_cfg_next_child_undo(agt_cfg_undo_rec_t *cur_undo)
Get the next child undo record.
Definition: agt_cfg.c:3159
agt_cfg_undo_rec_t * agt_cfg_next_undo(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *cur_undo)
Get the next undo record.
Definition: agt_cfg.c:3064
boolean agt_cfg_ascendant_lists_check(val_value_t *test_val, val_value_t *next_parent)
Test an undo node within specified parent list.
Definition: agt_cfg.c:3312
boolean agt_cfg_check_parent_edits(agt_cfg_transaction_t *txcb, val_value_t *newnode)
Make sure that current undo is unique and does not have the same undo in different parent undo.
Definition: agt_cfg.c:3569
void agt_cfg_clean_undorec(agt_cfg_undo_rec_t *undo)
Clean all the memory used by the specified agt_cfg_undo_rec_t but do not free the struct itself.
Definition: agt_cfg.c:1732
agt_cfg_undo_rec_t * agt_cfg_first_undo(agt_cfg_transaction_t *txcb)
Get the first undo record.
Definition: agt_cfg.c:3041
void agt_cfg_free_trans_hook(agt_cfg_trans_hook_t *hook)
Clean and free a malloced Trans Hook callback.
Definition: agt_cfg.c:3642
void agt_cfg_free_silcall(agt_cfg_silcall_t *silcall)
Clean and free a mallocedremote SIL callback back pointer.
Definition: agt_cfg.c:2041
ncx_transaction_id_t agt_cfg_txid_in_progress(ncx_cfg_t cfgid)
Return the ID of the current transaction ID in progress.
Definition: agt_cfg.c:1629
agt_cfg_undo_rec_t * agt_cfg_prev_active_undo(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *cur_undo)
Get the prev active undo record.
Definition: agt_cfg.c:3944
boolean agt_cfg_undo_match(agt_cfg_undo_rec_t *undo, val_value_t *newnode, val_value_t *curnode)
Check if provided undo is the one for newval and curval.
Definition: agt_cfg.c:4344
boolean agt_cfg_use_child_undo(agt_cfg_undo_rec_t *undo, agt_cfg_undo_rec_t *child_undo)
Check if the child edit node should be invoked.
Definition: agt_cfg.c:3011
boolean agt_cfg_has_added_edits(agt_cfg_transaction_t *txcb)
Check if there are added edits in the Queue.
Definition: agt_cfg.c:4311
agt_cfg_transaction_t * agt_cfg_new_transaction_ex3(ncx_cfg_t cfgid, agt_cfg_edit_type_t edit_type, boolean rootcheck, boolean is_validate, boolean is_rollback, boolean no_cb, boolean no_silsa_cb, ses_cb_t *scb, status_t *res)
Malloc and initialize agt_cfg_transaction_t struct Extended3.
Definition: agt_cfg.c:1075
agt_cfg_undo_rec_t * agt_cfg_last_undo(agt_cfg_transaction_t *txcb)
Get the last undo record.
Definition: agt_cfg.c:3089
status_t agt_cfg_add_nested_silcall(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *undo, op_editop_t editop, val_value_t *newval, val_value_t *curval, obj_template_t *callback_obj, boolean indelete, boolean in_reverse_delete, agt_cfg_nested_silcall_t **result)
Malloc and fill in a new nested SIL callback record.
Definition: agt_cfg.c:2406
void agt_cfg_dump_undo(agt_cfg_undo_rec_t *undo)
Debug log a description of the undo record.
Definition: agt_cfg.c:2939
agt_cfg_undo_rec_t * agt_cfg_prev_active_child_undo(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *cur_undo)
Get the prev active child undo record.
Definition: agt_cfg.c:4078
void agt_cfg_clear_config_txid(agt_cfg_transaction_t *txcb, cfg_template_t *cfg)
Clear current config txid if any.
Definition: agt_cfg.c:3987
void agt_cfg_remove_module_commit_tests(ncx_module_t *mod)
Remove module commit tests for specified module.
Definition: agt_cfg.c:1941
agt_cfg_trans_hook_t * agt_cfg_last_trans_hook(agt_cfg_transaction_t *txcb)
Get the last Transaction Hook entry.
Definition: agt_cfg.c:3711
uint32 agt_cfg_transaction_edit_count(agt_cfg_transaction_t *txcb)
Check the undo record count for the transaction.
Definition: agt_cfg.c:4459
agt_cfg_undo_rec_t * agt_cfg_next_active_undo(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *cur_undo)
Get the next active undo record.
Definition: agt_cfg.c:3865
agt_cfg_undo_rec_t * agt_cfg_find_undo_node_ascendant(agt_cfg_transaction_t *txcb, val_value_t *newnode, val_value_t *curnode)
Find an undo node and check for the ascendant lists match.
Definition: agt_cfg.c:4125
void agt_cfg_cleanup_transactions(const xmlChar *txidfile)
Cleanup the transaction ID functionality.
Definition: agt_cfg.c:1605
void agt_cfg_restore_newnode(agt_cfg_undo_rec_t *undo)
Swap the newnode and newnode_pointers.
Definition: agt_cfg.c:2982
void agt_cfg_force_full_root_check(agt_cfg_transaction_t *txcb)
Tag this transaction as needing a full root check.
Definition: agt_cfg.c:1920
val_value_t * agt_cfg_generate_edit2_newval(agt_cfg_transaction_t *txcb, val_value_t *newval, val_value_t *curval)
Generate newval from child_edits.
Definition: agt_cfg.c:4384
agt_cfg_trans_hook_t * agt_cfg_next_trans_hook(agt_cfg_trans_hook_t *cur_hook)
Get the next Transaction Hook callback.
Definition: agt_cfg.c:3688
agt_cfg_undo_rec_t * agt_cfg_first_child_edit(agt_cfg_transaction_t *txcb, val_value_t *newnode, val_value_t *curnode)
Get the first child node edit record for a given transaction.
Definition: agt_cfg.c:2705
void agt_cfg_set_transaction_commit(agt_cfg_transaction_t *txcb)
Tag this transaction as a commit from candidate to running.
Definition: agt_cfg.c:1860
agt_cfg_undo_rec_t * agt_cfg_last_active_undo(agt_cfg_transaction_t *txcb)
Get the last active undo record.
Definition: agt_cfg.c:3908
agt_cfg_undo_rec_t * agt_cfg_find_undo_node_slow(agt_cfg_transaction_t *txcb, val_value_t *newnode, val_value_t *curnode)
Find an undo node and check for the ascendant lists match.
Definition: agt_cfg.c:3357
void agt_cfg_init_undorec(agt_cfg_undo_rec_t *undo)
Initialize a new agt_cfg_undo_rec_t struct.
Definition: agt_cfg.c:1675
void agt_cfg_free_commit_test(agt_cfg_commit_test_t *commit_test)
Free a previously malloced agt_cfg_commit_test_t struct.
Definition: agt_cfg.c:1834
agt_cfg_undo_rec_t * agt_cfg_next_child_edit(agt_cfg_undo_rec_t *curedit)
Get the next child node edit record for a given transaction.
Definition: agt_cfg.c:2783
agt_cfg_silcall_t * agt_cfg_new_silcall(op_editop_t editop, val_value_t *newval, val_value_t *curval, dlq_hdr_t *subsysQ)
Create and fill in a remote SIL callback back pointer.
Definition: agt_cfg.c:2008
status_t agt_cfg_add_hook_silcall(agt_cfg_transaction_t *txcb, op_editop_t editop, val_value_t *newval, val_value_t *curval, dlq_hdr_t *subsysQ, val_value_t *callval, agt_hook_type_t hook_type)
Create and fill in a remote Hook SIL callback back pointer Add it to the transaction control block si...
Definition: agt_cfg.c:2081
void agt_cfg_free_undorec(agt_cfg_undo_rec_t *undo)
Free all the memory used by the specified agt_cfg_undo_rec_t.
Definition: agt_cfg.c:1706
agt_cfg_trans_hook_t * agt_cfg_first_trans_hook(agt_cfg_transaction_t *txcb)
Get the first transaction hook record.
Definition: agt_cfg.c:3665
void agt_cfg_set_transaction_unload(agt_cfg_transaction_t *txcb)
Tag this transaction as a commit for unloading a module.
Definition: agt_cfg.c:1880
agt_cfg_undo_rec_t * agt_cfg_prev_undo(agt_cfg_transaction_t *txcb, agt_cfg_undo_rec_t *cur_undo)
Get the prev undo record.
Definition: agt_cfg.c:3112
void agt_cfg_free_transaction(agt_cfg_transaction_t *txcb)
Clean and free a agt_cfg_transaction_t struct.
Definition: agt_cfg.c:1419
status_t agt_cfg_init_transactions(const xmlChar *txidfile, boolean foundfile)
Initialize the transaction ID functionality.
Definition: agt_cfg.c:1535
agt_cfg_transaction_t * agt_cfg_new_transaction_ex2(ncx_cfg_t cfgid, agt_cfg_edit_type_t edit_type, boolean rootcheck, boolean is_validate, boolean is_rollback, boolean no_cb, ses_cb_t *scb, status_t *res)
Malloc and initialize agt_cfg_transaction_t struct Extended2.
Definition: agt_cfg.c:1021
status_t agt_cfg_add_edit2_silcall(agt_cfg_transaction_t *txcb, op_editop_t editop, val_value_t *newval, val_value_t *curval, dlq_hdr_t *subsysQ, val_value_t *callval)
Create and fill in a remote SIL callback back pointer.
Definition: agt_cfg.c:2267
agt_cfg_undo_rec_t * agt_cfg_first_child_undo(agt_cfg_undo_rec_t *undo)
Get the first child undo record for EDIT2 mode.
Definition: agt_cfg.c:3137
agt_cfg_undo_rec_t * agt_cfg_new_undorec(void)
Malloc and initialize a new agt_cfg_undo_rec_t struct.
Definition: agt_cfg.c:1651
boolean agt_cfg_check_hook_created(agt_cfg_transaction_t *txcb, val_value_t *newval, val_value_t *curval)
Check if the Transaction Hook has been already setup for the current undo record or newval/curval val...
Definition: agt_cfg.c:3764
agt_cfg_edit_action_t
classify the config edit action type
Definition: agt_cfg.h:175
agt_cfg_edit_type_t
classify the config edit type
Definition: agt_cfg.h:200
@ AGT_CFG_EDIT_ACTION_REPLACE
replace edit action
Definition: agt_cfg.h:189
@ AGT_CFG_EDIT_ACTION_DELETE_DEFAULT
delete default edit action
Definition: agt_cfg.h:195
@ AGT_CFG_EDIT_ACTION_MOVE
move edit action
Definition: agt_cfg.h:186
@ AGT_CFG_EDIT_ACTION_SET
set edit action
Definition: agt_cfg.h:183
@ AGT_CFG_EDIT_ACTION_NONE
not set
Definition: agt_cfg.h:177
@ AGT_CFG_EDIT_ACTION_DELETE
delete edit action
Definition: agt_cfg.h:192
@ AGT_CFG_EDIT_ACTION_ADD
add edit action
Definition: agt_cfg.h:180
@ AGT_CFG_EDIT_TYPE_PARTIAL
REPLACE = subtree replace.
Definition: agt_cfg.h:203
@ AGT_CFG_EDIT_TYPE_FULL
REPLACE = full database replace.
Definition: agt_cfg.h:202
@ AGT_CFG_EDIT_TYPE_NONE
not set
Definition: agt_cfg.h:201
agt_hook_type_t
Hook types enumeration to specify Hook type.
Definition: agt.h:820
op_testop_t
NETCONF edit-config test-option types.
Definition: op.h:160
op_editop_t
NETCONF edit-config operation types.
Definition: op.h:122
status_t
global error return code
Definition: status_enum.h:210
ncx_cfg_t
hardwire the 3 standard configs
Definition: ncxtypes.h:548
uint64 ncx_transaction_id_t
transaction is scoped to single session write operation on a config
Definition: ncxtypes.h:724
ncx_btype_t
enumeration of the built-in NCX types These types cannot be overridden and cannot be imported
Definition: ncxtypes.h:213
YANG module data structures Many internal representations of YANG module constructs.
NETCONF protocol operations.
Global error messages for status code enumerations.
struct of params to use when generating sysConfigChange notification.
Definition: agt_cfg.h:758
xmlChar * target
target for audit record
Definition: agt_cfg.h:763
op_editop_t editop
edit operation
Definition: agt_cfg.h:766
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:760
const val_value_t * newval
support for yumaworks-config-change extensions must clone with val_clone_config_data instead of using...
Definition: agt_cfg.h:772
const val_value_t * curval
current value from edit
Definition: agt_cfg.h:775
struct of data for 1 children of one remote SIL callback
Definition: agt_cfg.h:704
op_editop_t editop
edit operation
Definition: agt_cfg.h:709
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:706
val_value_t * newval
new value
Definition: agt_cfg.h:712
val_value_t * curval
current value
Definition: agt_cfg.h:715
struct for the commit-time tests for a single object
Definition: agt_cfg.h:781
obj_template_t * obj
object template for commit test
Definition: agt_cfg.h:786
ncx_transaction_id_t result_txid
transaction ID for result
Definition: agt_cfg.h:795
xpath_pcb_t * objpcb
XPath control block for object.
Definition: agt_cfg.h:789
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:783
ncx_btype_t btyp
base type of this object
Definition: agt_cfg.h:798
uint32 testflags
test flags for this object AGT_TEST_FL_FOO bits
Definition: agt_cfg.h:801
xpath_result_t * result
XPath result for object eval of objpcb.
Definition: agt_cfg.h:792
struct of data for 1 nested SIL callback within 1 undo.
Definition: agt_cfg.h:476
val_value_t * curval_clone
In case of delete-children-first mode newval and curval may get cleaned and deleted before the actual...
Definition: agt_cfg.h:525
status_t validate_res
validate status
Definition: agt_cfg.h:484
status_t rollback_res
rollback status
Definition: agt_cfg.h:493
op_editop_t editop
edit operation
Definition: agt_cfg.h:481
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:478
status_t commit_res
commit status
Definition: agt_cfg.h:490
struct agt_cfg_nested_silcall_t_ * parent
back pointer to parent silcall
Definition: agt_cfg.h:514
dlq_hdr_t nested_silcallQ
Q of cchild SIL calls.
Definition: agt_cfg.h:511
obj_template_t * callback_obj
object template for this callback
Definition: agt_cfg.h:508
status_t apply_res
apply status
Definition: agt_cfg.h:487
struct of data for 1 remote SIL callback
Definition: agt_cfg.h:721
boolean hook_edit
SIL-SA Hook support.
Definition: agt_cfg.h:741
dlq_hdr_t * subsysQ
Q of subsystems that need this edit.
Definition: agt_cfg.h:735
agt_hook_type_t hook_type
SIL-SA Hook type.
Definition: agt_cfg.h:744
op_editop_t editop
edit operation
Definition: agt_cfg.h:726
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:723
dlq_hdr_t child_editQ
Queue of EDIT2 children edits that will be used in the callback Q of agt_cfg_child_silcall_t.
Definition: agt_cfg.h:749
dlq_hdr_t keyptrQ
manage list keys: Q of ncx_backptr_t to val_value_t
Definition: agt_cfg.h:738
val_value_t * newval
new value
Definition: agt_cfg.h:729
val_value_t * curval
current value
Definition: agt_cfg.h:732
struct of Transaction Hooks parameters
Definition: agt_cfg.h:819
op_editop_t editop
edit operation
Definition: agt_cfg.h:833
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:821
val_value_t * newval
new value
Definition: agt_cfg.h:827
obj_template_t * target_obj
target object
Definition: agt_cfg.h:824
val_value_t * curval
current value
Definition: agt_cfg.h:830
boolean subtree_mode
subtree mode active
Definition: agt_cfg.h:836
Transaction Control Block.
Definition: agt_cfg.h:235
boolean skip_cb
Add_edit API flag : skip callback.
Definition: agt_cfg.h:346
dlq_hdr_t silcall_undoQ
silcall undo Q
Definition: agt_cfg.h:431
xmlChar * txid_str
transaction ID string
Definition: agt_cfg.h:243
boolean post_sethook_mode
Add_edit API flag : Post Set hook mode flag.
Definition: agt_cfg.h:343
boolean is_load
loading startup at boot-time
Definition: agt_cfg.h:302
dlq_hdr_t transhookQ
Queue of the Transaction Hook callbacks rigistered for the current transaction.
Definition: agt_cfg.h:414
agt_cfg_edit_type_t edit_type
edit type enum
Definition: agt_cfg.h:249
boolean skip_sil
need to skip SIL callbacks
Definition: agt_cfg.h:328
boolean is_rollback
transaction is a rollback
Definition: agt_cfg.h:293
dlq_hdr_t deadnodeQ
contains nodes marked as deleted by the delete_dead_nodes test used for false when-stmt test deletion...
Definition: agt_cfg.h:394
boolean rootcheck_done
root-check done flag
Definition: agt_cfg.h:278
struct agt_cfg_nested_silcall_t_ * cur_silcall
Q of ncx_backptr_t to xpath_pcb_t for keeping track of which auxillary must-stmt validation tests and...
Definition: agt_cfg.h:408
time_t timestamp
transaction start timestamp
Definition: agt_cfg.h:246
dlq_hdr_t added_silcallQ
Q of agt_cfg_silcall_t used to track which objects have remote SIL callbacks involved in this transac...
Definition: agt_cfg.h:452
boolean is_commit
transaction is commit candidate to running
Definition: agt_cfg.h:290
boolean hook_merge
Add_edit API flag : hook merge flag.
Definition: agt_cfg.h:349
status_t rollback_res
saved rollback phase status
Definition: agt_cfg.h:261
dlq_hdr_t newmpidQ
Queue of backptrs to undo records that are for the creation of an MPID for schema mount This will be ...
Definition: agt_cfg.h:422
boolean commitcheck
commit check needed flag
Definition: agt_cfg.h:281
const xmlChar * comment
comment provided by the caller: do not clone; just use backptr!!
Definition: agt_cfg.h:380
boolean test_only_cleanup
TRUE if the rollback is not an error but just a cleanup for a test-only edit transaction.
Definition: agt_cfg.h:377
boolean sethook_mode
Add_edit API flag : Set hook mode flag.
Definition: agt_cfg.h:340
boolean silcall_setup_done
TRUE if the silcall setup is done.
Definition: agt_cfg.h:361
boolean need_reverse_edit
TRUE if remote edit on multiple subsystems failed and now a reverse edit is needed.
Definition: agt_cfg.h:372
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:237
boolean top_replace
top replace in progress
Definition: agt_cfg.h:314
boolean silcall_done
silcall done flag
Definition: agt_cfg.h:437
boolean skip_save
need to skip NV-save
Definition: agt_cfg.h:337
boolean skip_sil_partial
need to skip SIL partial callbacks
Definition: agt_cfg.h:334
boolean is_restore
loading a backup file with restore operation
Definition: agt_cfg.h:305
dlq_hdr_t silcallQ
Q of agt_cfg_silcall_t used to track which objects have remote SIL callbacks involved in this transac...
Definition: agt_cfg.h:428
boolean skip_silsa_hooks
need to skip SIL-SA hooks
Definition: agt_cfg.h:440
boolean cancel_done
cancel transaction must only be done once
Definition: agt_cfg.h:446
ncx_transaction_id_t txid
transaction ID (uint64
Definition: agt_cfg.h:240
boolean subsys_add_edit_mode
add_edit mode form subsystem
Definition: agt_cfg.h:443
boolean is_unload
transaction is for an unload operation
Definition: agt_cfg.h:296
boolean silcall_sethook_done
TRUE if the set-hook callbacks already done.
Definition: agt_cfg.h:367
op_testop_t test_option
YPW-1356: netconfd: server crash when test-option is test-only and target=running and check-root-firs...
Definition: agt_cfg.h:269
boolean start_bad
running config has YANG validation errors
Definition: agt_cfg.h:272
boolean root_check_first
need root-check first
Definition: agt_cfg.h:355
status_t commit_res
saved commit phase status
Definition: agt_cfg.h:258
boolean force_full_root_check
need to force a full root check
Definition: agt_cfg.h:317
boolean check_redo_root_check
need to force a full root check after patch mode validations could not process all possible changes
Definition: agt_cfg.h:322
boolean is_cc_timeout
Rollback is from Confirmed-Commit Timeout.
Definition: agt_cfg.h:311
boolean no_txcb_start_comp_cb
need to skip Transaction Start/ Complete callbacks
Definition: agt_cfg.h:331
boolean is_transhook
Trans Start-Cmplt hooks flag.
Definition: agt_cfg.h:308
dlq_hdr_t auditQ
TBD: this is redundant and can be derived from the undoQ contains edit record highlights used in the ...
Definition: agt_cfg.h:389
boolean enable_force_delete
YPW-2210: this is EDIT2 merge with Deletes Mode The delete mode is set in check_commit_deletes() API.
Definition: agt_cfg.h:458
boolean root_check_first_done
root-check first done flag
Definition: agt_cfg.h:358
boolean rootcheck
root-check needed flag
Definition: agt_cfg.h:275
boolean is_commit_completeness
Commit completeness cb flag.
Definition: agt_cfg.h:299
boolean fill_candidate_failed
flag fill candidate from running failed
Definition: agt_cfg.h:325
boolean silcall_undo_mode
silcall undo mode active
Definition: agt_cfg.h:434
ncx_cfg_t cfg_id
configuration datastore being edited
Definition: agt_cfg.h:252
boolean silcall_invoke_only_sethook
TRUE if the only set-hook callbacks should be invoked.
Definition: agt_cfg.h:364
boolean check_duplicate_silcall
check duplicate SIL call
Definition: agt_cfg.h:352
dlq_hdr_t undoQ
each distinct effective edit point in the data tree will have a separate undo record in the undoQ
Definition: agt_cfg.h:384
boolean is_validate_def
validate default flag
Definition: agt_cfg.h:287
boolean is_validate
transaction is for the <validate> operation
Definition: agt_cfg.h:284
status_t apply_res
saved apply phase status
Definition: agt_cfg.h:255
struct of params to undo an edit operation.
Definition: agt_cfg.h:548
boolean skip_cb
used by add_edit only
Definition: agt_cfg.h:579
boolean free_curnode
need to free curnode
Definition: agt_cfg.h:553
val_value_t * newnode_parent
newnode parent node
Definition: agt_cfg.h:605
boolean in_reverse_edit
reverse edit active
Definition: agt_cfg.h:562
status_t validate_res
validate phase status
Definition: agt_cfg.h:670
dlq_hdr_t child_undoQ
child undo recs can occur in edit2 mode if an existing entry is modified with a merge operation Inste...
Definition: agt_cfg.h:667
status_t rollback_res
rollback phase status
Definition: agt_cfg.h:682
val_value_t * newnode_marker
newnode marker if swapped out
Definition: agt_cfg.h:602
val_value_t * curnode_clone
clone of current node before it changes
Definition: agt_cfg.h:614
boolean subsys_add_edit
add_edit mode form subsystem
Definition: agt_cfg.h:687
val_value_t * parentnode
parent node of edit node
Definition: agt_cfg.h:620
agt_cfg_nested_silcall_t * cur_silcall
current SIL call control block pointer
Definition: agt_cfg.h:623
op_editop_t editop
edit operation
Definition: agt_cfg.h:590
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:550
boolean skip_sil_partial
skip SIL partial mode
Definition: agt_cfg.h:568
boolean is_insert
insert or move
Definition: agt_cfg.h:582
boolean is_autodelete
undo is from an auto-delete (other-case or false-when) must not try to replace with defaults if true
Definition: agt_cfg.h:587
val_editvars_t * newnode_editvars
need to save the newnode->editvars for YP-HA and later YANG Push so the insert operation will not be ...
Definition: agt_cfg.h:630
struct agt_cfg_undo_rec_t_ * orig_rev_undo
back pointer to original undo for reverse edit
Definition: agt_cfg.h:691
agt_cfg_edit_action_t edit_action
internal edit action
Definition: agt_cfg.h:596
boolean added_edit
Add_edit API flag.
Definition: agt_cfg.h:576
boolean force_delete
YPW-2210: this is EDIT2 merge Undo record with at least one delete in it The delete is set from check...
Definition: agt_cfg.h:696
xmlChar * save_path
if YP-HA Active mode then this path string will be saved so the correct path will be used in YANG Pat...
Definition: agt_cfg.h:637
dlq_hdr_t extra_deleteQ
extra deletes can occur if a node is added that is part of a choice.
Definition: agt_cfg.h:646
op_editop_t cvtop
converted edit operation
Definition: agt_cfg.h:593
status_t commit_res
commit phase status
Definition: agt_cfg.h:679
status_t sil_apply_res
SIL apply phase status.
Definition: agt_cfg.h:676
boolean is_sil_force_replay
nthis is a SIL force replay transaction
Definition: agt_cfg.h:556
boolean parent_is_edit2_merge
tells if the undo is in the child_undoQ and its parent is in EDIT2 mode
Definition: agt_cfg.h:573
boolean when_force_delete
when-stmt force delete flag
Definition: agt_cfg.h:565
val_value_t * curnode
current node in edit
Definition: agt_cfg.h:608
boolean edit2_merge
this is EDIT2 merge so child edits needed
Definition: agt_cfg.h:559
val_value_t * newnode
new node in edit
Definition: agt_cfg.h:599
val_value_t * child_undo_curnode_clone
clone of child node
Definition: agt_cfg.h:617
val_value_t * curnode_marker
curnode marker if swapped out
Definition: agt_cfg.h:611
dlq_hdr_t nested_silcallQ
nested silcalls can occur if an edit is created for a node with nested SIL callbacks,...
Definition: agt_cfg.h:656
status_t apply_res
apply phase status
Definition: agt_cfg.h:673
struct to keep track of XPath tests run in this transaction
Definition: agt_cfg.h:806
val_value_t * valnode
valnode for XPath visit
Definition: agt_cfg.h:814
dlq_hdr_t qhdr
queue header
Definition: agt_cfg.h:808
xpath_pcb_t * xpath
XPath control block for XPath visit.
Definition: agt_cfg.h:811
struct representing 1 configuration database
Definition: cfg.h:229
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1134
One YANG data-def-stmt.
Definition: obj.h:1220
Session Control Block.
Definition: ses.h:573
one set of edit-in-progress variables for one value node
Definition: val.h:823
one value to match one type
Definition: val.h:912
XPath parser control block.
Definition: xpath.h:754
XPath expression result.
Definition: xpath.h:705
Value Node Basic Support.
Schema and data model Xpath search support.