yumapro  25.10-1
YumaPro SDK
Loading...
Searching...
No Matches
agt_not.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_not
13#define _H_agt_not
14/* FILE: agt_not.h
15*********************************************************************
16* *
17* P U R P O S E *
18* *
19*********************************************************************/
20
27/*********************************************************************
28* *
29* C H A N G E H I S T O R Y *
30* *
31*********************************************************************
32
33date init comment
34----------------------------------------------------------------------
3530-may-09 abb Begun.
36*/
37
38#include <xmlstring.h>
39
40#ifndef _H_dlq
41#include "dlq.h"
42#endif
43
44#ifndef _H_ncxtypes
45#include "ncxtypes.h"
46#endif
47
48#ifndef _H_obj
49#include "obj.h"
50#endif
51
52#ifndef _H_ses
53#include "ses.h"
54#endif
55
56#ifndef _H_status
57#include "status.h"
58#endif
59
60#ifndef _H_tstamp
61#include "tstamp.h"
62#endif
63
64#ifndef _H_val
65#include "val.h"
66#endif
67
68#ifndef _H_yang_patch
69#include "yang_patch.h"
70#endif
71
72#ifdef __cplusplus
73extern "C" {
74#endif
75
76/* header only */
77
78
103/********************************************************************
104* *
105* C O N S T A N T S *
106* *
107*********************************************************************/
108
110#define AGT_NOT_MODULE1 (const xmlChar *)"notifications"
111
113#define AGT_NOT_MODULE2 (const xmlChar *)"nc-notifications"
114
115
116/********************************************************************
117* *
118* T Y P E S *
119* *
120*********************************************************************/
121
123typedef uint32 agt_not_subid_t;
124
125
127typedef enum agt_not_subevent_t_ {
130
133
137
138
143typedef struct agt_not_msg_t_ {
145 dlq_hdr_t qhdr;
146
149
162 dlq_hdr_t keyQ;
163
164 /* payload set by caller: Q of val_value_t */
165 dlq_hdr_t payloadQ;
166
168 uint32 msgid;
169
171 xmlChar eventTime[TSTAMP_MIN_SIZE];
172
178
181
183 boolean usemsgid;
184
190
197
204
206
207
209typedef enum agt_not_filtertyp_t_ {
217
220
224
225
229typedef enum agt_not_sterr_t_ {
240
241
243typedef enum agt_not_push_change_t_ {
251
252
256typedef enum agt_not_suspend_reason_t_ {
259
262
265
268
271
275
276
280typedef enum agt_not_term_reason_t_ {
283
286
289
292
295
298
301
303
304
306typedef enum agt_not_sub_state_t_ {
309
312
315
319
320
322typedef enum agt_not_rcvr_state_t_ {
325
328
331
334
337
339
356typedef void
358 agt_not_subid_t subid,
359 agt_not_filtertyp_t filtyp,
360 const val_value_t *new_filter);
361
362
376typedef void
378 boolean kill_pending);
379
380
381
390typedef void
392
393
402typedef void
404
405
406
468typedef void
469 (*agt_not_stream_cbfn_t) (const xmlChar *event_stream,
470 agt_not_subevent_t subevent,
471 void *cookie);
472
473
474
475
491typedef struct agt_not_rcvrparms_t_ {
492
495
498
500 const xmlChar *name;
501
503 const xmlChar *remote_address;
504
507
510
512 const xmlChar *local_address;
513
516
519
522
525
528
531
533
534
535
547typedef struct agt_not_sub_rcvrparms_t_ {
548
551
553 uint32 id;
554
556 const xmlChar *name;
557
559 const xmlChar *name_ref;
560
562
563
564
569typedef struct agt_not_sub_modversion_t_ {
570
573
575 const xmlChar *module_name;
576
578 const xmlChar *revision;
579
581 const xmlChar *revision_label;
582
584
585
586
600typedef struct agt_not_subparms_t_ {
601
604
607
610
612 const xmlChar *filter_name;
613
616
621
626
631
633 const xmlChar *source_address;
634
636 const xmlChar *purpose;
637
642
644 uint8 dscp;
645
647 const xmlChar *stream;
648
653 //const xmlChar *replay_start_time;
654
658 const xmlChar *stop_time;
659
665
668
671
673 boolean is_periodic;
674
676 boolean period_set;
677
679 uint32 period;
680
682 const xmlChar *anchor_time;
683
685 boolean on_change;
686
689
692
695
697
698
706typedef struct agt_not_substats_t_ {
707
714
728
733 xmlChar replay_start_time[TSTAMP_MIN_SIZE];
734
745
747
748
749
757typedef struct agt_not_rcvrstats_t_ {
758
765
779
790
792
793
797/********************************************************************
798* *
799* F U N C T I O N S *
800* *
801*********************************************************************/
802
803
844extern status_t
845 agt_not_init (void);
846
847
855extern status_t
856 agt_not_init_sil_sa (void);
857
858
866extern status_t
867 agt_not_init2 (void);
868
869
875extern void
876 agt_not_cleanup (void);
877
878
885extern void
887
888
889
890#ifdef PTHREADS
909extern uint32
911
912#else
913
929extern uint32
931
932#endif // PTHREADS
933
934
935/*
936* @brief Remove any delivered notifications when the replay buffer
937* size is set to zero
938*
939* Called from periodic task or thread
940*
941* Cleanup is now done internally and this function is removed
942*
943* extern void
944* agt_not_clean_eventlog (void);
945*/
946
947
955extern void
957
958
965extern agt_not_msg_t *
967
968
977extern agt_not_msg_t *
979 const xmlChar *eventTime);
980
981
991extern void
993
994
1013extern void
1015 val_value_t *val);
1016
1017
1018
1037extern void
1039 val_value_t *val);
1040
1041
1058extern void
1060
1061
1086extern void
1087 agt_not_queue_notification_stream (const xmlChar *stream_name,
1088 agt_not_msg_t *notif);
1089
1090
1101extern boolean
1102 agt_not_is_replay_event (const obj_template_t *notifobj);
1103
1104
1110extern void
1112
1113
1134extern status_t
1136 const xmlChar *stream,
1137 xmlChar *startTime,
1138 xmlChar *stopTime,
1139 boolean futurestop,
1140 op_filtertyp_t filtertype,
1141 val_value_t *filterval,
1142 val_value_t *selectval);
1143
1144
1145
1169extern status_t
1171 const xmlChar *stream,
1172 xmlChar *startTime,
1173 xmlChar *stopTime,
1174 boolean futurestop,
1175 op_filtertyp_t filtertype,
1176 val_value_t *filterval,
1177 val_value_t *selectval,
1178 ncx_msg_encoding_t out_encoding);
1179
1180
1181
1182#ifdef WITH_YP_HA
1190extern status_t
1191 agt_not_go_active (void);
1192#endif // WITH_YP_HA
1193
1194#ifdef WITH_YP_HA
1200extern void
1201 agt_not_go_standby (void);
1202#endif // WITH_YP_HA
1203
1204
1205#ifdef WITH_YANG_PUSH
1212extern status_t
1214#endif // WITH_YANG_PUSH
1215
1216
1226extern status_t
1227 agt_not_set_filter (const xmlChar *name,
1228 ncx_nmda_filtyp_t nmda_filtyp,
1229 agt_not_filtertyp_t filtyp,
1230 const val_value_t *filval);
1231
1232
1233
1247extern status_t
1249 const xmlChar *name,
1250 agt_not_filtertyp_t *filtyp,
1251 val_value_t **filval);
1252
1253
1261extern status_t
1262 agt_not_delete_filter (const xmlChar *name,
1263 ncx_nmda_filtyp_t nmda_filtyp);
1264
1265
1266
1275extern status_t
1276 agt_not_delete_all_filters (boolean force);
1277
1278
1311extern status_t
1313 ses_cb_t *scb,
1314 const xmlChar *stream_filter_name,
1315 const val_value_t *stream_subtree_filter,
1316 const val_value_t *stream_xpath_filter,
1317 const xmlChar *stream,
1318 const xmlChar *replay_start_time,
1319 const xmlChar *stop_time,
1320 const val_value_t *encoding,
1321 const val_value_t *parentval,
1322 agt_not_subid_t *subid,
1323 agt_not_sterr_t *errnum,
1324 val_value_t **errchild);
1325
1326
1368 ses_cb_t *scb,
1369 agt_not_subid_t subid,
1370 const xmlChar *stream_filter_name,
1371 const val_value_t *stream_subtree_filter,
1372 const val_value_t *stream_xpath_filter,
1373 const xmlChar *stop_time,
1374 const val_value_t *parentval,
1375 agt_not_sterr_t *errnum,
1376 val_value_t **errchild);
1377
1378
1390extern status_t
1392 agt_not_subid_t subid);
1393
1394
1395
1403extern status_t
1405 boolean silent_kill);
1406
1407
1417extern status_t
1419
1420
1421#ifdef WITH_YANG_PUSH
1448extern status_t
1450 ses_cb_t *scb,
1451 const xmlChar *selection_filter_ref,
1452 const xmlChar *stop_time,
1453 const val_value_t *encoding,
1454 const val_value_t *parentval,
1455 agt_not_modify_filter_cbfn_t modify_cbfn,
1457 agt_not_subid_t *subid,
1458 agt_not_sterr_t *errnum,
1459 val_value_t **errchild,
1460 boolean *isbinary);
1461
1462
1482extern status_t
1484 ses_id_t sid,
1485 agt_not_subid_t cur_subid,
1486 const xmlChar *selection_filter_ref,
1487 const xmlChar *stop_time,
1488 const val_value_t *parentval,
1489 agt_not_sterr_t *errnum,
1490 val_value_t **errchild);
1491
1492
1500extern status_t
1503
1504
1520extern status_t
1522 obj_template_t *subscription_completed,
1523 obj_template_t *subscription_modified,
1524 obj_template_t *subscription_resumed,
1525 obj_template_t *subscription_started,
1526 obj_template_t *subscription_suspended,
1527 obj_template_t *subscription_terminated);
1528
1529
1541extern status_t
1543 ses_id_t sid,
1544 obj_template_t *notif_obj,
1545 rpc_msg_t *msg,
1546 boolean *subscription_deleted);
1547
1548
1571extern status_t
1573 ses_id_t sid,
1574 const xmlChar *filespec,
1575 rpc_msg_t *msg,
1576 boolean first_push,
1577 obj_template_t *notif_obj,
1578 boolean *subscription_deleted,
1579 uint32 *checksum,
1580 uint32 *bytecnt);
1581
1582
1598extern status_t
1600 ses_id_t sid,
1601 const xmlChar *filespec,
1602 rpc_msg_t *msg,
1603 obj_template_t *notif_obj,
1604 boolean *subscription_deleted);
1605
1606
1615extern void
1618
1619
1620
1629extern void
1631
1632
1642extern void
1644 agt_not_term_reason_t term_reason);
1645
1646
1657extern status_t
1659 ses_id_t sid,
1660 obj_template_t *notif_obj,
1661 yang_patch_cb_t *pcb,
1662 boolean *subscription_deleted);
1663
1664
1665#endif // WITH_YANG_PUSH
1666
1667
1677extern void
1679
1680
1681#ifdef WITH_YANG_PUSH
1689extern obj_template_t *
1691
1692
1700extern obj_template_t *
1702
1703
1711extern status_t
1713 agt_not_msg_t *notif);
1714
1715#endif // WITH_YANG_PUSH
1716
1717
1727extern status_t
1728 agt_not_create_event_stream (const xmlChar *name,
1729 uint32 eventlog_size,
1730 const xmlChar *description);
1731
1732
1740extern status_t
1742 const xmlChar *name);
1743
1744
1751extern status_t
1753
1754
1755
1764extern status_t
1765 agt_not_edit_module_map (const xmlChar *modname,
1766 const xmlChar *stream_name,
1767 boolean is_create);
1768
1769
1776extern status_t
1777 agt_not_delete_module_map (const xmlChar *modname);
1778
1779
1780
1787extern status_t
1789
1796extern boolean
1797 agt_not_event_stream_exists (const xmlChar *stream_name);
1798
1799
1811extern status_t
1812 agt_not_clear_event_stream_log (const xmlChar *stream_name);
1813
1814
1815
1869extern status_t
1870 agt_not_register_stream_cbfn (const xmlChar *modname,
1871 const xmlChar *stream_name,
1872 boolean all_streams,
1874 void *cookie);
1875
1876
1888extern void
1889 agt_not_unregister_stream_cbfn (const xmlChar *modname,
1891
1892
1893
1894
1895#ifdef WITH_YCONTROL
1931extern status_t
1932 agt_not_register_stream_cbfn_subsys (const xmlChar *subsys_id,
1933 const xmlChar *modname,
1934 const xmlChar *stream_name,
1935 boolean all_streams);
1936
1937
1946extern void
1947 agt_not_unregister_stream_cbfn_subsys (const xmlChar *subsys_id,
1948 const xmlChar *modname);
1949
1950
1951
1952
1963extern status_t
1964 agt_not_check_register_add (const xmlChar *modname,
1965 val_value_t *request_val);
1966
1967
1977extern boolean
1978 agt_not_any_unregistered (const xmlChar *modname);
1979
1980
1981
1992extern void
1993 agt_not_subsys_gone (const xmlChar *subsys_id);
1994
1995
2013extern status_t
2014 agt_not_stream_callback_subsys (const xmlChar *stream_name,
2015 agt_not_subevent_t subevent,
2016 const xmlChar *modname,
2017 boolean all_streams);
2018
2019
2020#endif // WITH_YCONTROL
2021
2022
2023
2038extern void
2039 agt_not_unload_module (const xmlChar *modname);
2040
2041
2042
2059extern status_t
2061 const ncx_sm_mpid_t *mpid);
2062
2063
2064#ifdef WITH_RESTCONF
2073extern status_t
2075 obj_template_t *streamobj);
2076
2077#endif // WITH_RESTCONF
2078
2079
2080#if defined(WITH_YANG_PUSH) && defined(WITH_YANG_PUSH2)
2092extern status_t
2093 agt_not_sub_receiver_edit (const agt_not_sub_rcvrparms_t *parms);
2094
2095
2096
2107extern status_t
2108 agt_not_delete_sub_receivers (uint32 id);
2109
2110
2124extern status_t
2125 agt_not_edit_subscription (const agt_not_subparms_t *parms,
2126 agt_not_sterr_t *errnum,
2127 val_value_t **errchild);
2128
2129
2139extern status_t
2140 agt_not_delete_subscriptions (void);
2141
2142
2152extern status_t
2153 agt_not_get_substats (agt_not_subid_t id,
2154 agt_not_substats_t *retstats);
2155
2156
2157
2166extern const xmlChar *
2167 agt_not_get_sub_state (agt_not_sub_state_t state);
2168
2169
2177extern status_t
2178 agt_not_delete_receivers (void);
2179
2180
2191extern status_t
2192 agt_not_edit_receiver (const agt_not_rcvrparms_t *parms);
2193
2194
2205extern status_t
2206 agt_not_delete_receiver (const xmlChar *name);
2207
2208
2209
2220extern status_t
2221 agt_not_get_rcvrstats (agt_not_subid_t id,
2222 const xmlChar *rcvr_name,
2223 agt_not_rcvrstats_t *retstats);
2224
2225
2235extern status_t
2236 agt_not_reset_rcvr (agt_not_subid_t id,
2237 const xmlChar *rcvr_name);
2238
2239
2240
2241
2250extern const xmlChar *
2251 agt_not_get_rcvr_state (agt_not_rcvr_state_t state);
2252
2253
2254
2264extern boolean
2265 agt_not_subid_ok (agt_not_subid_t id);
2266
2267
2276extern boolean
2277 agt_not_subid_in_use (agt_not_subid_t id);
2278
2279
2292extern status_t
2293 agt_not_get_publisher_ids (uint32 subid,
2294 const uint32 **retarr,
2295 uint32 *retcount);
2296
2297
2298#endif // YANG_PUSH and YANG_PUSH2
2299
2300
2304#ifdef __cplusplus
2305} /* end extern 'C' */
2306#endif
2307
2308#endif /* _H_agt_not */
dlq provides general double-linked list and queue support:
status_t agt_not_get_simop_update(agt_not_subid_t subid, ses_id_t sid, const xmlChar *filespec, rpc_msg_t *msg, boolean first_push, obj_template_t *notif_obj, boolean *subscription_deleted, uint32 *checksum, uint32 *bytecnt)
Used by YANG Push to get the candidate Simuated Operational On-Change subscription.
Definition: agt_not.c:10484
void agt_not_suspend_push_subscription(agt_not_subid_t subid, agt_not_suspend_reason_t reason)
Suspend a subscription and stop sending notifications to it.
Definition: agt_not.c:10723
void agt_not_add_key(agt_not_msg_t *notif, val_value_t *val)
Queue the specified value node into the keyQ for the specified notification.
Definition: agt_not.c:7908
status_t agt_not_register_stream_cbfn(const xmlChar *modname, const xmlChar *stream_name, boolean all_streams, agt_not_stream_cbfn_t cbfn, void *cookie)
Register a SIL event-stream callback function.
Definition: agt_not.c:11342
status_t agt_not_create_event_stream(const xmlChar *name, uint32 eventlog_size, const xmlChar *description)
Create an event-stream from a YANG module interface.
Definition: agt_not.c:11029
void agt_not_queue_notification_stream(const xmlChar *stream_name, agt_not_msg_t *notif)
Queue the specified notification in the replay log.
Definition: agt_not.c:8205
status_t agt_not_set_notif_mpid(agt_not_msg_t *msg, const ncx_sm_mpid_t *mpid)
Set the MPID to use for sending the schema-mounted notification.
Definition: agt_not.c:11976
agt_not_msg_t * agt_not_new_notification_ex(obj_template_t *eventType, const xmlChar *eventTime)
Malloc and initialize the fields in an agt_not_msg_t Use provided eventTime (extended)
Definition: agt_not.c:7804
status_t agt_not_init2(void)
INIT 2: Initialize the monitoring data structures This must be done after the <running> config is loa...
Definition: agt_not.c:6714
agt_not_msg_t * agt_not_new_notification(obj_template_t *eventType)
Malloc and initialize the fields in an agt_not_msg_t.
Definition: agt_not.c:7780
status_t agt_not_modify_push_subscription(ses_id_t sid, agt_not_subid_t cur_subid, const xmlChar *selection_filter_ref, const xmlChar *stop_time, const val_value_t *parentval, agt_not_sterr_t *errnum, val_value_t **errchild)
Modify a RFC 8641 YANG Push subscription.
Definition: agt_not.c:10246
status_t agt_not_init(void)
INIT 1: Initialize the server notification module data structures.
Definition: agt_not.c:6523
void agt_not_queue_notification(agt_not_msg_t *notif)
Queue the specified notification in the replay log.
Definition: agt_not.c:7940
boolean agt_not_any_unregistered(const xmlChar *modname)
Check if any entries are still unregistered for a subsystem building a register-request.
Definition: agt_not.c:11760
status_t agt_not_delete_all_filters(boolean force)
Delete all existing filter entries.
Definition: agt_not.c:9179
void agt_not_kill_push_subscription(agt_not_subid_t subid, agt_not_term_reason_t term_reason)
Kill a YANG Push Subscription.
Definition: agt_not.c:10803
status_t agt_not_delete_all_module_maps(ses_cb_t *scb)
Delete all configured module-maps from a YANG module interface.
Definition: agt_not.c:11223
status_t agt_not_register_yang_push(agt_not_check_push_cbfn_t cbfn, agt_not_module_removed_cbfn_t mod_cbfn)
Used by YANG Push to check periodic and simulated operational.
Definition: agt_not.c:10324
status_t agt_not_kill_dynamic_subscription(agt_not_subid_t subid)
Terminate any session's RFC 8639 subscription.
Definition: agt_not.c:9938
status_t agt_not_delete_configured_subscription(agt_not_subid_t subid, boolean silent_kill)
Delete a configured RFC 8639 subscription.
Definition: agt_not.c:9919
void agt_not_cleanup_sil_sa(void)
Cleanup the module data structures.
Definition: agt_not.c:6944
void agt_not_remove_module_filters(const ncx_module_t *mod)
Invoke Module Removed Callback.
Definition: agt_not.c:10918
status_t agt_not_delete_dynamic_subscription(ses_id_t sid, agt_not_subid_t subid)
Terminate your own RFC 8639 subscription.
Definition: agt_not.c:9898
status_t agt_not_send_onchange_update(agt_not_subid_t subid, ses_id_t sid, obj_template_t *notif_obj, yang_patch_cb_t *pcb, boolean *subscription_deleted)
Used by YANG Push to send an on-change update to 1 session.
Definition: agt_not.c:10845
status_t agt_not_delete_all_event_streams(ses_cb_t *scb)
Delete all configured event-streams from a YANG module interface.
Definition: agt_not.c:11105
boolean agt_not_event_stream_exists(const xmlChar *stream_name)
Check if the specified event stream is configured.
Definition: agt_not.c:11251
void agt_not_remove_subscription(ses_id_t sid)
Remove and expire a subscription with the specified session ID.
Definition: agt_not.c:7759
status_t agt_not_init_restconf_streams(val_value_t *streamsval, obj_template_t *streamobj)
Initialize the monitoring data structures for restconf This must be done after the <running> config i...
Definition: agt_not.c:12260
obj_template_t * agt_not_get_started_obj(void)
Get subscription-started object.
Definition: agt_not.c:10973
status_t agt_not_delete_filter(const xmlChar *name, ncx_nmda_filtyp_t nmda_filtyp)
Delete an existing filter entry.
Definition: agt_not.c:9103
void agt_not_cancel_subscription(ses_id_t sid)
Cancel any notification subscription for the specified session.
Definition: agt_not.c:8266
status_t agt_not_establish_subscription(ses_cb_t *scb, const xmlChar *stream_filter_name, const val_value_t *stream_subtree_filter, const val_value_t *stream_xpath_filter, const xmlChar *stream, const xmlChar *replay_start_time, const xmlChar *stop_time, const val_value_t *encoding, const val_value_t *parentval, agt_not_subid_t *subid, agt_not_sterr_t *errnum, val_value_t **errchild)
Create a RFC 8639 stream subscription.
Definition: agt_not.c:9662
status_t agt_not_init_sil_sa(void)
INIT 1: Initialize the server notification module data structures.
Definition: agt_not.c:6679
status_t agt_not_delete_module_map(const xmlChar *modname)
Delete a module map from a YANG module interface.
Definition: agt_not.c:11194
uint32 agt_not_send_notifications(thd_tcb_t *tcb)
Send notifications (PTHREADS VERSION)
Definition: agt_not.c:7618
status_t agt_not_edit_module_map(const xmlChar *modname, const xmlChar *stream_name, boolean is_create)
Create or modify a module map from a YANG module interface.
Definition: agt_not.c:11136
void agt_not_unregister_stream_cbfn(const xmlChar *modname, agt_not_stream_cbfn_t cbfn)
Unregister a SIL event-stream callback function.
Definition: agt_not.c:11412
obj_template_t * agt_not_get_modified_obj(void)
Get subscription-modified object.
Definition: agt_not.c:10952
status_t agt_not_modify_subscription(ses_cb_t *scb, agt_not_subid_t subid, const xmlChar *stream_filter_name, const val_value_t *stream_subtree_filter, const val_value_t *stream_xpath_filter, const xmlChar *stop_time, const val_value_t *parentval, agt_not_sterr_t *errnum, val_value_t **errchild)
Modify a RFC 8639 stream subscription.
Definition: agt_not.c:9741
void agt_not_free_notification(agt_not_msg_t *notif)
Scrub the memory in an agt_not_template_t by freeing all the sub-fields and then freeing the entire s...
Definition: agt_not.c:7829
status_t agt_not_delete_event_stream(ses_cb_t *scb, const xmlChar *name)
Delete an event-stream from a YANG module interface.
Definition: agt_not.c:11067
status_t agt_not_init_yangpush(obj_template_t *streams_obj)
Init the yang-push related streams and data structures.
Definition: agt_not.c:8602
status_t agt_not_register_stream_cbfn_subsys(const xmlChar *subsys_id, const xmlChar *modname, const xmlChar *stream_name, boolean all_streams)
Register a SIL event-stream callback function.
Definition: agt_not.c:11504
status_t agt_not_send_periodic_update(agt_not_subid_t subid, ses_id_t sid, obj_template_t *notif_obj, rpc_msg_t *msg, boolean *subscription_deleted)
Used by YANG Push to send a periodic update to 1 session.
Definition: agt_not.c:10405
status_t agt_not_start_subscription2(ses_cb_t *scb, const xmlChar *stream, xmlChar *startTime, xmlChar *stopTime, boolean futurestop, op_filtertyp_t filtertype, val_value_t *filterval, val_value_t *selectval, ncx_msg_encoding_t out_encoding)
Malloc and fill in a new subscription control block USED BY RESTCONF ONLY.
Definition: agt_not.c:8474
void agt_not_cleanup(void)
Cleanup the module data structures.
Definition: agt_not.c:6866
status_t agt_not_go_active(void)
Enable active notification subscriptions.
Definition: agt_not.c:8529
void agt_not_add_to_payload(agt_not_msg_t *notif, val_value_t *val)
Queue the specified value node into the payloadQ for the specified notification.
Definition: agt_not.c:7882
void agt_not_unregister_stream_cbfn_subsys(const xmlChar *subsys_id, const xmlChar *modname)
Unregister a SIL event-stream callback function.
Definition: agt_not.c:11575
status_t agt_not_send_push_notif(agt_not_subid_t subid, agt_not_msg_t *notif)
Send the notification directly to the specified push subscription ID.
Definition: agt_not.c:10995
status_t agt_not_set_filter(const xmlChar *name, ncx_nmda_filtyp_t nmda_filtyp, agt_not_filtertyp_t filtyp, const val_value_t *filval)
Add or Modify a filter entry.
Definition: agt_not.c:8905
status_t agt_not_clone_filter(ncx_nmda_filtyp_t nmda_filtyp, const xmlChar *name, agt_not_filtertyp_t *filtyp, val_value_t **filval)
Find a filter entry and clone it.
Definition: agt_not.c:8945
status_t agt_not_setup_push_subscription(ses_cb_t *scb, const xmlChar *selection_filter_ref, const xmlChar *stop_time, const val_value_t *encoding, const val_value_t *parentval, agt_not_modify_filter_cbfn_t modify_cbfn, agt_not_delete_subscription_cbfn_t delete_cbfn, agt_not_subid_t *subid, agt_not_sterr_t *errnum, val_value_t **errchild, boolean *isbinary)
Create a RFC 8641 YANG Push subscription.
Definition: agt_not.c:9981
status_t agt_not_start_subscription(ses_cb_t *scb, const xmlChar *stream, xmlChar *startTime, xmlChar *stopTime, boolean futurestop, op_filtertyp_t filtertype, val_value_t *filterval, val_value_t *selectval)
Malloc and fill in a new subscription control block.
Definition: agt_not.c:8452
void agt_not_subsys_gone(const xmlChar *subsys_id)
Unload any remote stream callbacks when a subsystem session is lost and subsys-gone event handled.
Definition: agt_not.c:11802
boolean agt_not_is_replay_event(const obj_template_t *notifobj)
Check if the specified notfication is the replayComplete or notificationComplete notification events.
Definition: agt_not.c:8230
status_t agt_not_send_simop_update(agt_not_subid_t subid, ses_id_t sid, const xmlChar *filespec, rpc_msg_t *msg, obj_template_t *notif_obj, boolean *subscription_deleted)
Use the file contents to send an Simulated Operational on-change update to the client session.
Definition: agt_not.c:10652
void agt_not_resume_push_subscription(agt_not_subid_t subid)
Resume a YANG Push Subscription.
Definition: agt_not.c:10759
status_t agt_not_stream_callback_subsys(const xmlChar *stream_name, agt_not_subevent_t subevent, const xmlChar *modname, boolean all_streams)
Invoke a stream callback function on the SIL-SA subsystem.
Definition: agt_not.c:11859
void agt_not_unload_module(const xmlChar *modname)
Unload any remote stream callbacks when a module is unloaded.
Definition: agt_not.c:11924
status_t agt_not_register_notif_objs(obj_template_t *replay_completed, obj_template_t *subscription_completed, obj_template_t *subscription_modified, obj_template_t *subscription_resumed, obj_template_t *subscription_started, obj_template_t *subscription_suspended, obj_template_t *subscription_terminated)
Register Notification Objects.
Definition: agt_not.c:10361
status_t agt_not_clear_event_stream_log(const xmlChar *stream_name)
Remove all the stored notifications in the eventlog for the specified event stream.
Definition: agt_not.c:11281
void agt_not_go_standby(void)
Exit active notification subscription mode and disable notifications.
Definition: agt_not.c:8565
status_t agt_not_check_register_add(const xmlChar *modname, val_value_t *request_val)
Check if a "<stream-callback>" container needs to be added to the "<register>" list entry.
Definition: agt_not.c:11647
agt_not_rcvr_state_t
Configured Receiver state.
Definition: agt_not.h:322
agt_not_term_reason_t
Terminate subscription reasons.
Definition: agt_not.h:280
void(* agt_not_check_push_cbfn_t)(ses_id_t sid)
Check Push Callback.
Definition: agt_not.h:391
agt_not_sterr_t
stream error parameter numbers used internally for error reporting
Definition: agt_not.h:229
void(* agt_not_modify_filter_cbfn_t)(ses_cb_t *scb, agt_not_subid_t subid, agt_not_filtertyp_t filtyp, const val_value_t *new_filter)
Modify Filter Callback.
Definition: agt_not.h:357
agt_not_filtertyp_t
server supported filter types
Definition: agt_not.h:209
agt_not_push_change_t
PUSH change type enums used by agt_val anf agt_push.
Definition: agt_not.h:243
agt_not_suspend_reason_t
Suspend subscription reasons Used internally instead of finding YANG identities.
Definition: agt_not.h:256
void(* agt_not_delete_subscription_cbfn_t)(agt_not_subid_t subid, boolean kill_pending)
Delete Subscription Callback.
Definition: agt_not.h:377
agt_not_sub_state_t
Configured subscription state.
Definition: agt_not.h:306
void(* agt_not_module_removed_cbfn_t)(const ncx_module_t *mod)
Remove Module Callback.
Definition: agt_not.h:403
uint32 agt_not_subid_t
subscription-id parameter
Definition: agt_not.h:123
agt_not_subevent_t
event-stream sub-event types
Definition: agt_not.h:127
void(* agt_not_stream_cbfn_t)(const xmlChar *event_stream, agt_not_subevent_t subevent, void *cookie)
Event Stream Callback.
Definition: agt_not.h:469
@ AGT_NOT_RCVRST_DISCONNECTED
disconnected
Definition: agt_not.h:336
@ AGT_NOT_RCVRST_SUSPENDED
suspended
Definition: agt_not.h:330
@ AGT_NOT_RCVRST_ACTIVE
active
Definition: agt_not.h:327
@ AGT_NOT_RCVRST_CONNECTING
connecting
Definition: agt_not.h:333
@ AGT_NOT_RCVRST_NONE
not set
Definition: agt_not.h:324
@ AGT_NOT_TERM_SUSPENSION_TIMEOUT
suspension timeout
Definition: agt_not.h:294
@ AGT_NOT_TERM_FILTER_UNAVAILABLE
filter unavailable
Definition: agt_not.h:285
@ AGT_NOT_TERM_STREAM_UNAVAILABLE
stream unavailable
Definition: agt_not.h:291
@ AGT_NOT_TERM_DATASTORE_NOT_SUBSCRIBABLE
datastore not subscribable
Definition: agt_not.h:297
@ AGT_NOT_TERM_NO_SUCH_SUBSCRIPTION
no such subscription
Definition: agt_not.h:288
@ AGT_NOT_TERM_NONE
not set
Definition: agt_not.h:282
@ AGT_NOT_TERM_UNCHANGING_SELECTION
unchanging selection
Definition: agt_not.h:300
@ AGT_NOT_STERR_XPATH_FILTER
xpath-filter
Definition: agt_not.h:233
@ AGT_NOT_STERR_STREAM
stream name
Definition: agt_not.h:234
@ AGT_NOT_STERR_SUBTREE_FILTER
subtree-filter
Definition: agt_not.h:232
@ AGT_NOT_STERR_NONE
not set
Definition: agt_not.h:230
@ AGT_NOT_STERR_START_TIME
start-time
Definition: agt_not.h:235
@ AGT_NOT_STERR_ID
modify only
Definition: agt_not.h:238
@ AGT_NOT_STERR_FILTER_REF
filter-ref
Definition: agt_not.h:231
@ AGT_NOT_STERR_ENCODING
encoding
Definition: agt_not.h:237
@ AGT_NOT_STERR_STOP_TIME
stop-time
Definition: agt_not.h:236
@ AGT_NOT_FILTER_SUBTREE
subtree filter
Definition: agt_not.h:219
@ AGT_NOT_FILTER_XPATH
XPath filter.
Definition: agt_not.h:222
@ AGT_NOT_FILTER_NONE
not set
Definition: agt_not.h:210
@ AGT_NOT_FILTER_EMPTY
the filters configuration allows an empty filter to exist that just has a name in it; treat this an v...
Definition: agt_not.h:216
@ AGT_NOT_PUSH_CHANGE_REPLACE
replace edit
Definition: agt_not.h:249
@ AGT_NOT_PUSH_CHANGE_DELETE
delete edit
Definition: agt_not.h:246
@ AGT_NOT_PUSH_CHANGE_INSERT
insert edit
Definition: agt_not.h:247
@ AGT_NOT_PUSH_CHANGE_CREATE
create edit
Definition: agt_not.h:245
@ AGT_NOT_PUSH_CHANGE_NONE
not set
Definition: agt_not.h:244
@ AGT_NOT_PUSH_CHANGE_MOVE
move edit
Definition: agt_not.h:248
@ AGT_NOT_SUSPEND_UNSUPPORTABLE_VOLUME
unsupported volume
Definition: agt_not.h:264
@ AGT_NOT_SUSPEND_NONE
not set
Definition: agt_not.h:258
@ AGT_NOT_SUSPEND_UPDATE_TOO_BIG
update too big
Definition: agt_not.h:270
@ AGT_NOT_SUSPEND_PERIOD_UNSUPPORTED
period unsupported
Definition: agt_not.h:267
@ AGT_NOT_SUSPEND_INSUFFICIENT_RESOURCES
insufficient resources
Definition: agt_not.h:261
@ AGT_NOT_SUSPEND_SYNC_TOO_BIG
sync too big
Definition: agt_not.h:273
@ AGT_NOT_SUBST_CONCLUDED
concluded
Definition: agt_not.h:317
@ AGT_NOT_SUBST_INVALID
invalid
Definition: agt_not.h:314
@ AGT_NOT_SUBST_NONE
not set
Definition: agt_not.h:308
@ AGT_NOT_SUBST_VALID
valid
Definition: agt_not.h:311
@ AGT_NOT_SUBEV_INACTIVE
inactive sub-event
Definition: agt_not.h:135
@ AGT_NOT_SUBEV_ACTIVE
active sub-event
Definition: agt_not.h:132
@ AGT_NOT_SUBEV_NONE
not set
Definition: agt_not.h:129
op_filtertyp_t
NETCONF protocol operation PDU filter types.
Definition: op.h:114
op_editop_t
NETCONF edit-config operation types.
Definition: op.h:122
status_t
global error return code
Definition: status_enum.h:219
uint32 ses_id_t
Session ID.
Definition: ses.h:407
#define TSTAMP_MIN_SIZE
normal minimum buffer size for a tstamp buffer
Definition: tstamp.h:71
ncx_msg_encoding_t
enumeration for message encoding formats
Definition: ncxtypes.h:648
ncx_nmda_filtyp_t
internal enumerations for NMDA filter types used in the /filters container NCX_NMDA_FILTYP_STREAM == ...
Definition: ncxtypes.h:1676
ncx_nmda_ds_t
internal enumerations for standard NMDA datastores
Definition: ncxtypes.h:1612
YANG module data structures Many internal representations of YANG module constructs.
Data Object Support.
NETCONF Session Common definitions module.
Global error messages for status code enumerations.
one notification message that will be sent to all subscriptions in the stream and kept in the replay ...
Definition: agt_not.h:143
boolean usemsgid
internal field to use or change msgid
Definition: agt_not.h:183
dlq_hdr_t qhdr
queue header
Definition: agt_not.h:145
status_t res
internal status for making the message to prevent a malformed notification message from being sent to...
Definition: agt_not.h:189
uint32 msgid
message ID assigned to this notification
Definition: agt_not.h:168
val_value_t * msg
the /notification element
Definition: agt_not.h:177
obj_template_t * notobj
notification event object for this message
Definition: agt_not.h:148
val_value_t * event
backptr inside msg for filter for top-level notifications
Definition: agt_not.h:180
val_value_t * treetop
internal backptr to the top of the instance hierarchy if this is a nested notification; YANG 1....
Definition: agt_not.h:196
dlq_hdr_t keyQ
notification ancestor keyQ if this is a YANG 1.1 nested notification.
Definition: agt_not.h:162
ncx_sm_mpid_t * sm_mpid
clone of the MPID to use if this is a schema-mounted notification.
Definition: agt_not.h:203
receiver instance entry parameter block used by various subscribe APIs each API will ignore unused pa...
Definition: agt_not.h:491
boolean enable_segmentation_set
make sure not to use false unless really set
Definition: agt_not.h:524
boolean remote_port_set
make sure not to use 0 unless really set
Definition: agt_not.h:509
const xmlChar * remote_address
remote-address is inet:host
Definition: agt_not.h:503
op_editop_t editop
edit operation
Definition: agt_not.h:494
uint16 local_port
optional local-port is inet:port-number
Definition: agt_not.h:515
boolean enable_segmentation
enable-segmentation leaf if udp-notif
Definition: agt_not.h:521
uint16 max_segment_size
max-segment-size if udp-notif
Definition: agt_not.h:527
uint16 remote_port
remote-port is inet:port-number
Definition: agt_not.h:506
boolean is_establish
is_establish flag to help match existing APIs
Definition: agt_not.h:497
const xmlChar * name
receiver name
Definition: agt_not.h:500
boolean local_port_set
make sure not to use 0 unless really set
Definition: agt_not.h:518
boolean max_segment_size_set
make sure not to use 0 unless really set
Definition: agt_not.h:530
const xmlChar * local_address
optional local-address is inet:host
Definition: agt_not.h:512
subscription receiver statistics
Definition: agt_not.h:757
uint64 excluded_events
excluded events is poorly defined for datastores for event streams it is incremented when there is a ...
Definition: agt_not.h:778
uint64 out_events
total notifications sent Tracks the session out-notifications leaf for a plain subscription; Total of...
Definition: agt_not.h:764
agt_not_rcvr_state_t rcvr_state
the receiver/state is an enum UDP connections almost always succeed even if the target socket is not ...
Definition: agt_not.h:789
subscription module-list entry From ietf-yang-push-revision module
Definition: agt_not.h:569
const xmlChar * module_name
module-name
Definition: agt_not.h:575
op_editop_t editop
edit operation
Definition: agt_not.h:572
const xmlChar * revision
revision date
Definition: agt_not.h:578
const xmlChar * revision_label
revision label
Definition: agt_not.h:581
subscription receiver entry parameter block used by various subscribe APIs each API will ignore unuse...
Definition: agt_not.h:547
const xmlChar * name_ref
receiver instance name ref
Definition: agt_not.h:559
uint32 id
subscription ID
Definition: agt_not.h:553
op_editop_t editop
edit operation
Definition: agt_not.h:550
const xmlChar * name
receiver name
Definition: agt_not.h:556
subscription parms parameter block used by various subscribe APIs each API will ignore unused paramet...
Definition: agt_not.h:600
boolean on_change
on-change datastore subscription flag
Definition: agt_not.h:685
const xmlChar * filter_name
filter name id a filter-ref parameter used
Definition: agt_not.h:612
const val_value_t * encoding
leaf containing the encoding parameter if set; need identityref details
Definition: agt_not.h:625
boolean configured_replay
configured-replay leaf not supported yet causes entire replay buffer to be sent to receiver Since sta...
Definition: agt_not.h:664
boolean sync_on_start
TRUE = sync-on-start requested by client (default)
Definition: agt_not.h:688
const xmlChar * source_address
source address parameter is not supported yet in server
Definition: agt_not.h:633
uint32 period
period or dampening in centiseconds
Definition: agt_not.h:679
const xmlChar * purpose
admin string saved from configured subsctiption
Definition: agt_not.h:636
boolean period_set
used for period or dampening-period
Definition: agt_not.h:676
uint8 dscp
DSCP value to use for the subscription.
Definition: agt_not.h:644
const xmlChar * anchor_time
anchor time support starting 25.10-1
Definition: agt_not.h:682
op_editop_t editop
edit operation
Definition: agt_not.h:603
const val_value_t * parentval
parentval of the parameters to handle additional unstable YANG Push 2 parameters
Definition: agt_not.h:641
uint32 included_changes
inverse of excluded-changes; all combinations supported
Definition: agt_not.h:691
boolean is_datastore
datastore subscription flag
Definition: agt_not.h:667
const val_value_t * transport
leaf containing the transport parameter if set; need identityref details
Definition: agt_not.h:630
ncx_nmda_ds_t datastore_id
NMDA datastore ID if is_datastore true.
Definition: agt_not.h:670
boolean is_establish
is_establish flag to help match existing APIs
Definition: agt_not.h:606
boolean delete_rcvrs_pending
internal fields : do not set
Definition: agt_not.h:694
const val_value_t * subtree_filter
subtree containing the subtree-filter if used
Definition: agt_not.h:615
boolean is_periodic
TRUE for periodic subscription.
Definition: agt_not.h:673
agt_not_subid_t id
subscription ID only provided if is_configured
Definition: agt_not.h:609
const xmlChar * stream
event stream subscription
Definition: agt_not.h:647
const xmlChar * stop_time
the replay-start-time is read-only when used in configured subscriptions so not present here
Definition: agt_not.h:658
const val_value_t * xpath_filter
leaf containing the XPath filter if used; need PCB from val to preserve namespace mappings from the c...
Definition: agt_not.h:620
subscription statistics
Definition: agt_not.h:706
agt_not_sub_state_t sub_state
the configured-subscription-state is an enum the server does not accept invalid parameters to start b...
Definition: agt_not.h:744
uint64 excluded_events
excluded events is poorly defined for datastores for event streams it is incremented when there is a ...
Definition: agt_not.h:727
uint64 out_events
total notifications sent Tracks the session out-notifications leaf for a plain subscription; Total of...
Definition: agt_not.h:713
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1118
Moint Point Instance This struct lives in a val_value_t.val_extra struct.
Definition: ncxtypes.h:1796
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
Thread control block (TCB)
Definition: thd.h:175
one value to match one type
Definition: val.h:939
One YANG Patch Request.
Definition: yang_patch.h:155
Timestamp utilities.
Value Node Basic Support.
YANG Patch Media Type.