yumapro  23.10T-7
YumaPro SDK
Loading...
Searching...
No Matches
agt_sil.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2024, 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#ifdef WITH_YCONTROL
13#ifndef _H_agt_sil
14#define _H_agt_sil
15
16/* FILE: agt_sil.h
17*********************************************************************
18* *
19* P U R P O S E *
20* *
21*********************************************************************/
22
29/*********************************************************************
30* *
31* C H A N G E H I S T O R Y *
32* *
33*********************************************************************
34
35date init comment
36----------------------------------------------------------------------
3718-feb-14 abb Begun
38*/
39
40#ifndef _H_agt
41#include "agt.h"
42#endif
43
44#ifndef _H_agt_cfg
45#include "agt_cfg.h"
46#endif
47
48#ifndef _H_ncxtypes
49#include "ncxtypes.h"
50#endif
51
52#ifndef _H_dlq
53#include "dlq.h"
54#endif
55
56#ifndef _H_getcb
57#include "getcb.h"
58#endif
59
60#ifndef _H_status
61#include "status.h"
62#endif
63
64#ifdef __cplusplus
65extern "C" {
66#endif
67
80/********************************************************************
81* *
82* C O N S T A N T S *
83* *
84*********************************************************************/
85
86/********************************************************************
87* *
88* T Y P E S *
89* *
90*********************************************************************/
91
93typedef struct agt_sil_added_edit_t_ {
95 dlq_hdr_t qhdr;
96
98 xmlChar *path;
99
102
104 xmlChar *editop;
105
107 xmlChar *where;
108
110 xmlChar *point;
111
113 boolean skipcb;
115
116
126typedef void
128 const xmlChar *subsys_id,
129 status_t get_status,
130 val_value_t *return_val);
131
132
143typedef status_t
144 (*agt_sil_rpc_walker_fn_t) (const xmlChar *subsys_id,
145 status_t rpc_status,
146 val_value_t *return_val,
147 dlq_hdr_t *saveQ);
148
149
165typedef status_t
167 rpc_msg_t *msg,
169 const xmlChar *subsys_id,
170 status_t tx_status,
171 dlq_hdr_t *edded_editQ);
172
173
174
175/********************************************************************
176* *
177* F U N C T I O N S *
178* *
179*********************************************************************/
180
181
187extern status_t
188 agt_sil_init (void);
189
190
196extern void
197 agt_sil_cleanup (void);
198
199
221extern status_t
223 const xmlChar *user_id,
224 const xmlChar *client_addr,
225 const xmlChar *target,
226 boolean is_validate,
227 boolean is_replay,
228 boolean is_reverse_edit,
229 boolean is_load_config,
230 boolean is_hook_load,
231 boolean is_hook_validate,
232 dlq_hdr_t *editQ);
233
234
249extern status_t
251 const xmlChar *user_id,
252 const xmlChar *client_addr,
253 const xmlChar *target,
254 boolean is_replay,
255 dlq_hdr_t *editQ);
256
257
265extern status_t
266 agt_sil_continue_transaction (const xmlChar *txid_str,
267 agt_cbtyp_t cur_phase);
268
269
275extern void
276 agt_sil_end_transaction (const xmlChar *txid_str);
277
278
286extern void
287 agt_sil_cancel_transaction (const xmlChar *txid_str);
288
289
300extern status_t
301 agt_sil_send_load_event (const xmlChar *name,
302 boolean is_bundle,
303 boolean is_load);
304
305
316extern status_t
317 agt_sil_send_stream_callback_event (const xmlChar *subsys_id,
318 const xmlChar *modname,
319 const xmlChar *stream_name,
320 boolean all_streams,
321 agt_not_subevent_t subevent);
322
323
329extern boolean
331
332
338extern void
340
341
342
353extern status_t
355 getcb_get2_t *get2cb,
356 xml_msg_hdr_t *msg,
357 const xmlChar **txid_str);
358
359
368extern status_t
369 agt_sil_get_transaction_status (const xmlChar *txid_str);
370
371
381extern void
382 agt_sil_walk_get_results (const xmlChar *txid_str,
383 agt_sil_get_walker_fn_t get_walker_fn);
384
385
397extern status_t
398 agt_sil_walk_rpc_results (const xmlChar *txid_str,
399 agt_sil_rpc_walker_fn_t rpc_walker_fn,
400 dlq_hdr_t *saveQ);
401
402
416extern status_t
418 rpc_msg_t *msg,
420 const xmlChar *txid_str,
421 agt_sil_shook_walker_fn_t shook_walker_fn);
422
423
429extern void
430 agt_sil_end_get_transaction (const xmlChar *txid_str);
431
432
438extern void
439 agt_sil_set_subsys_timeout (uint32 val);
440
441
453extern status_t
455 rpc_msg_t *msg,
456 obj_template_t *obj,
457 val_value_t *actionval,
458 const xmlChar **txid_str);
459
460
469extern status_t
470 agt_sil_rpc_transaction_status (const xmlChar *txid_str);
471
472
478extern void
479 agt_sil_end_rpc_transaction (const xmlChar *txid_str);
480
481
492extern status_t
494 const xmlChar *client_txid,
495 boolean isvalidate,
496 boolean isrollback,
497 boolean isrunning);
498
499
505extern status_t
506 agt_sil_transaction_complete_cb (const xmlChar *txid_str);
507
508
534extern status_t
535 agt_sil_get_exit_mode_edit (const xmlChar *txid_str,
536 agt_tx_type_t tx_type,
537 val_value_t **error_val,
538 xmlChar **error_path,
539 xmlChar **error_msg,
540 boolean *need_reverse_edit);
541
542
562extern status_t
563 agt_sil_get_exit_mode (const xmlChar *txid_str,
564 agt_tx_type_t tx_type);
565
566
582extern boolean
583 agt_sil_last_in_transaction (const xmlChar *txid_str,
584 ses_id_t sid);
585
586
593extern void
594 agt_sil_unload_module (const xmlChar *modname);
595
596
604extern status_t
605 agt_sil_bundle_walker (const xmlChar *name,
606 void *cookie);
607
608
616extern status_t
617 agt_sil_module_walker (const xmlChar *name,
618 void *cookie);
619
630extern status_t
632 const xmlChar *client_txid,
633 agt_cbtyp_t cbtyp,
634 agt_commit_type_t commit_type);
635
636
637
644extern boolean
645 agt_sil_subsys_registered (const xmlChar *subsys_id);
646
647
650#ifdef __cplusplus
651} /* end extern 'C' */
652#endif
653
654#endif /* _H_agt_sil */
655#endif // WITH_YCONTROL
Multi-Protocol Network Management Server.
Manage Server configuration edit transactions.
dlq provides general double-linked list and queue support:
GET1 and GET2 Callback Support.
status_t agt_sil_continue_transaction(const xmlChar *txid_str, agt_cbtyp_t cur_phase)
Continue a transaction to apply or commit phase.
Definition: agt_sil.c:9293
void agt_sil_end_transaction(const xmlChar *txid_str)
End a transaction.
Definition: agt_sil.c:9419
status_t agt_sil_start_transaction(agt_cfg_transaction_t *txcb, const xmlChar *user_id, const xmlChar *client_addr, const xmlChar *target, boolean is_validate, boolean is_replay, boolean is_reverse_edit, boolean is_load_config, boolean is_hook_load, boolean is_hook_validate, dlq_hdr_t *editQ)
Start Transaction Handler.
Definition: agt_sil.c:8802
status_t agt_sil_walk_shook_results(ses_cb_t *scb, rpc_msg_t *msg, agt_cfg_transaction_t *txcb, const xmlChar *txid_str, agt_sil_shook_walker_fn_t shook_walker_fn)
Walk the Set Hook results.
Definition: agt_sil.c:10219
status_t(* agt_sil_shook_walker_fn_t)(ses_cb_t *scb, rpc_msg_t *msg, agt_cfg_transaction_t *txcb, const xmlChar *subsys_id, status_t tx_status, dlq_hdr_t *edded_editQ)
Set Hook walker function.
Definition: agt_sil.h:166
status_t agt_sil_walk_rpc_results(const xmlChar *txid_str, agt_sil_rpc_walker_fn_t rpc_walker_fn, dlq_hdr_t *saveQ)
Walk the RPC transaction results.
Definition: agt_sil.c:10159
boolean agt_sil_edit_transaction_in_progress(void)
Check if a SIL-SA transaction is in progress.
Definition: agt_sil.c:9778
status_t agt_sil_transaction_complete_cb(const xmlChar *txid_str)
SIL transaction complete callback.
Definition: agt_sil.c:10602
status_t agt_sil_send_stream_callback_event(const xmlChar *subsys_id, const xmlChar *modname, const xmlChar *stream_name, boolean all_streams, agt_not_subevent_t subevent)
Send a "<stream-callback-event>" message to one subsystem.
Definition: agt_sil.c:9622
void(* agt_sil_get_walker_fn_t)(getcb_get2_t *get2cb, const xmlChar *subsys_id, status_t get_status, val_value_t *return_val)
get walker function for processing results from remote GET transaction from 1 or more subsystems
Definition: agt_sil.h:127
status_t agt_sil_handle_remote_commit_completeness(ses_cb_t *client_scb, const xmlChar *client_txid, agt_cbtyp_t cbtyp, agt_commit_type_t commit_type)
Handle remote SIL-SA subsytem Commit Completeness callbacks.
Definition: agt_sil.c:11110
status_t agt_sil_init(void)
Initialize the SIL features module (phase 2)
Definition: agt_sil.c:8675
status_t agt_sil_handle_remote_trans_start(ses_cb_t *client_scb, const xmlChar *client_txid, boolean isvalidate, boolean isrollback, boolean isrunning)
Handle a remote transaction.
Definition: agt_sil.c:10821
status_t agt_sil_rpc_transaction_status(const xmlChar *txid_str)
Get RPC transaction status.
Definition: agt_sil.c:10551
status_t agt_sil_get_exit_mode_edit(const xmlChar *txid_str, agt_tx_type_t tx_type, val_value_t **error_val, xmlChar **error_path, xmlChar **error_msg, boolean *need_reverse_edit)
Get the transaction exit code.
Definition: agt_sil.c:10674
status_t agt_sil_continue_start_transaction(agt_cfg_transaction_t *txcb, const xmlChar *user_id, const xmlChar *client_addr, const xmlChar *target, boolean is_replay, dlq_hdr_t *editQ)
Continue already existed Start Transaction.
Definition: agt_sil.c:9041
void agt_sil_unload_module(const xmlChar *modname)
Unload a module from the subsystem register messages so the cleanup is not attempted again during sys...
Definition: agt_sil.c:10997
void agt_sil_end_rpc_transaction(const xmlChar *txid_str)
End an RPC transaction.
Definition: agt_sil.c:10582
status_t(* agt_sil_rpc_walker_fn_t)(const xmlChar *subsys_id, status_t rpc_status, val_value_t *return_val, dlq_hdr_t *saveQ)
RPC walker function for processing results from remote GET transaction from 1 or more subsystems.
Definition: agt_sil.h:144
status_t agt_sil_start_rpc_transaction(ses_cb_t *client_scb, rpc_msg_t *msg, obj_template_t *obj, val_value_t *actionval, const xmlChar **txid_str)
Start an RPC transaction.
Definition: agt_sil.c:10331
status_t agt_sil_send_load_event(const xmlChar *name, boolean is_bundle, boolean is_load)
Send a <load-event> to all subsystems.
Definition: agt_sil.c:9541
boolean agt_sil_subsys_registered(const xmlChar *subsys_id)
Check if the subsystem has a SIL-SA service registered.
Definition: agt_sil.c:11185
void agt_sil_cancel_transaction(const xmlChar *txid_str)
Cancel and delete the transaction.
Definition: agt_sil.c:9441
void agt_sil_check_deleted_edits(agt_cfg_transaction_t *txcb)
Check for deleted edits.
Definition: agt_sil.c:9794
status_t agt_sil_module_walker(const xmlChar *name, void *cookie)
Callback for dynamically loaded modules.
Definition: agt_sil.c:11062
status_t agt_sil_start_get_transaction(ses_cb_t *client_scb, getcb_get2_t *get2cb, xml_msg_hdr_t *msg, const xmlChar **txid_str)
Start a GET2 transaction.
Definition: agt_sil.c:9845
boolean agt_sil_last_in_transaction(const xmlChar *txid_str, ses_id_t sid)
Check if the session is the last in the current transaction.
Definition: agt_sil.c:10901
void agt_sil_cleanup(void)
Cleanup the SIL Features Module.
Definition: agt_sil.c:8729
status_t agt_sil_get_transaction_status(const xmlChar *txid_str)
Get the GET2 transaction status.
Definition: agt_sil.c:10077
void agt_sil_walk_get_results(const xmlChar *txid_str, agt_sil_get_walker_fn_t get_walker_fn)
Walk the GET2 results.
Definition: agt_sil.c:10110
void agt_sil_set_subsys_timeout(uint32 val)
Set the subsys-timeout parameter.
Definition: agt_sil.c:10304
status_t agt_sil_get_exit_mode(const xmlChar *txid_str, agt_tx_type_t tx_type)
Get the transaction exit code.
Definition: agt_sil.c:10754
void agt_sil_end_get_transaction(const xmlChar *txid_str)
End a GET2 transaction.
Definition: agt_sil.c:10283
status_t agt_sil_bundle_walker(const xmlChar *name, void *cookie)
Callback for bundles.
Definition: agt_sil.c:11022
agt_commit_type_t
NETCONF commit types.
Definition: agt.h:737
agt_tx_type_t
YControl transaction type.
Definition: agt.h:755
agt_cbtyp_t
enumeration of the different server EDIT callback types These are used as array indices so there is n...
Definition: agt.h:711
agt_not_subevent_t
event-stream sub-event types
Definition: agt_not.h:127
status_t
global error return code
Definition: status_enum.h:210
uint32 ses_id_t
Session ID.
Definition: ses.h:335
YANG module data structures Many internal representations of YANG module constructs.
Global error messages for status code enumerations.
Transaction Control Block.
Definition: agt_cfg.h:235
Set Hook added edits from subsystem(s)
Definition: agt_sil.h:93
xmlChar * point
point parameter string
Definition: agt_sil.h:110
val_value_t * editval
edit value being added
Definition: agt_sil.h:101
xmlChar * editop
edit operation string
Definition: agt_sil.h:104
dlq_hdr_t qhdr
queue header
Definition: agt_sil.h:95
boolean skipcb
skip callback flag
Definition: agt_sil.h:113
xmlChar * path
absolute path for the editval
Definition: agt_sil.h:98
xmlChar * where
where parameter string
Definition: agt_sil.h:107
GET2 control block.
Definition: getcb.h:355
One YANG data-def-stmt.
Definition: obj.h:1209
NETCONF Server and Client RPC Request/Reply Message Header.
Definition: rpc.h:181
Session Control Block.
Definition: ses.h:573
one value to match one type
Definition: val.h:911
Common Encoding Message Header No longer XML specific!! Used by JSON and CBOR parsing as well!...
Definition: xml_msg.h:397