yumapro  24.10-2
YumaPro SDK
Loading...
Searching...
No Matches
agt_ses.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#ifndef _H_agt_ses
13#define _H_agt_ses
14/* FILE: agt_ses.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----------------------------------------------------------------------
3506-jun-06 abb Begun.
36*/
37
38#include <sys/select.h>
39
40#include <xmlstring.h>
41
42#ifndef _H_getcb
43#include "getcb.h"
44#endif
45
46#ifndef _H_ncxconst
47#include "ncxconst.h"
48#endif
49
50#ifndef _H_ses
51#include "ses.h"
52#endif
53
54#ifndef _H_status
55#include "status.h"
56#endif
57
58#ifndef _H_val
59#include "val.h"
60#endif
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
66/********************************************************************
67* *
68* C O N S T A N T S *
69* *
70*********************************************************************/
71
72/********************************************************************
73* *
74* T Y P E S *
75* *
76*********************************************************************/
77
78
101/********************************************************************
102* *
103* F U N C T I O N S *
104* *
105*********************************************************************/
106
107/* what is this hack? */
108extern const char *term_reason_str (ses_term_reason_t termreason);
109
110
117extern status_t
118 agt_ses_init (void);
119
120
126extern void
127 agt_ses_cleanup (void);
128
129
135extern ses_cb_t *
137
138
147extern status_t
149 ses_id_t use_sid);
150
151
161extern status_t
163 ses_id_t use_sid);
164
165
171extern void
173
174
175#ifdef WITH_COAP
181extern ses_cb_t *
183
184
190extern void
192
193#endif // WITH_COAP
194
195
196#if defined(WITH_SNMP) && defined(WITH_RESTCONF)
197
203extern ses_cb_t *
205
206
212extern void
214
215#endif // WITH_SNMP
216
217
227extern ses_cb_t *
229 int fd);
230
231
245extern ses_cb_t *
247 int fd,
248 const char *client_addr);
249
250
256extern void
258
259
267extern void
269 boolean clear_locks);
270
271
278extern boolean
280
281
290extern boolean
292 ses_id_t killedby,
293 ses_term_reason_t termreason);
294
295
296#ifdef PTHREADS
304extern void
306 ses_id_t killedby,
307 ses_term_reason_t termreason);
308#endif // PTHREADS
309
310
318extern void
320 ses_id_t killedby,
321 ses_term_reason_t termreason);
322
323
331extern boolean
333
334
343extern boolean
344 agt_ses_process_first_ready (boolean ycontrol);
345
346
347#ifdef PTHREADS
348
355extern void
357
358#else
359
366extern void
368
369#endif // PTHREADS
370
371
379extern boolean
380 agt_ses_ssh_port_allowed (uint16 port);
381
382
392extern void
393 agt_ses_fill_writeset (fd_set *fdset,
394 int *maxfdnum);
395
396
409extern status_t
411 getcb_mode_t cbmode,
412 const val_value_t *virval,
413 val_value_t *dstval);
414
415
428extern status_t
430 getcb_mode_t cbmode,
431 const val_value_t *virval,
432 val_value_t *dstval);
433
434
447extern status_t
449 getcb_mode_t cbmode,
450 const val_value_t *virval,
451 val_value_t *dstval);
452
453
466extern status_t
468 getcb_mode_t cbmode,
469 const val_value_t *virval,
470 val_value_t *dstval);
471
472
485extern status_t
487 getcb_mode_t cbmode,
488 const val_value_t *virval,
489 val_value_t *dstval);
490
491
492
505extern status_t
507 getcb_mode_t cbmode,
508 const val_value_t *virval,
509 val_value_t *dstval);
510
511
524extern status_t
526 getcb_mode_t cbmode,
527 const val_value_t *virval,
528 val_value_t *dstval);
529
530
531
544extern status_t
546 getcb_mode_t cbmode,
547 const val_value_t *virval,
548 val_value_t *dstval);
549
550
563extern status_t
565 getcb_mode_t cbmode,
566 const val_value_t *virval,
567 val_value_t *dstval);
568
569
582extern status_t
584 getcb_mode_t cbmode,
585 const val_value_t *virval,
586 val_value_t *dstval);
587
588
601extern status_t
603 getcb_mode_t cbmode,
604 const val_value_t *virval,
605 val_value_t *dstval);
606
607
613extern void
615
616
623extern ses_cb_t*
625
626
632extern uint32
634
635
636
637#ifdef WITH_YP_HA
638
644extern void
645 agt_ses_go_active (void);
646
647#endif // WITH_YP_HA
648
649
650#ifdef WITH_YP_HA
651
657extern void
658 agt_ses_go_standby (void);
659
660
667extern void
669
670#endif // WITH_YP_HA
671
672
678extern boolean
680
687extern boolean
688 agt_ses_max_user_sessions (const xmlChar *user);
689
690
696extern void
697 agt_ses_set_max_sessions (uint16 val);
698
699
705extern void
706 agt_ses_set_max_cli_sessions (uint16 val);
707
708
714extern void
716
717
723extern void
724 agt_ses_set_hello_timeout (uint32 val);
725
726
732extern void
733 agt_ses_set_idle_timeout (uint32 val);
734
735
740#ifdef __cplusplus
741} /* end extern 'C' */
742#endif
743
744#endif /* _H_agt_ses */
GET1 and GET2 Callback Support.
void agt_ses_thread_kill_session(ses_cb_t *scb, ses_id_t killedby, ses_term_reason_t termreason)
Kill the specified session; called from session thread.
Definition: agt_ses.c:1219
void agt_ses_free_dummy_session(ses_cb_t *scb)
Free a dummy session control block.
Definition: agt_ses.c:695
boolean agt_ses_request_close(ses_cb_t *scb, ses_id_t killedby, ses_term_reason_t termreason)
Start the close of the specified session.
Definition: agt_ses.c:1157
status_t agt_ses_get_outNotifications(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the outNotifications counter
Definition: agt_ses.c:2194
void agt_ses_go_active(void)
Activate MGMT sessions because YP-HA mode is active.
Definition: agt_ses.c:2488
void agt_ses_set_max_user_sessions(uint16 val)
Set the max-user-sessions parameter.
Definition: agt_ses.c:2736
void agt_ses_set_max_cli_sessions(uint16 val)
Set the max-cli-sessions parameter.
Definition: agt_ses.c:2717
boolean agt_ses_max_cli_sessions(void)
Check if max-cli-sessions parameter has been reached.
Definition: agt_ses.c:2585
ses_cb_t * agt_ses_new_session_tls(ses_transport_t transport, int fd, const char *client_addr)
Create a real agent session control block for TLS.
Definition: agt_ses.c:888
status_t agt_ses_set_dummy_session_acm(ses_cb_t *dummy_session, ses_id_t use_sid)
Set the session ID and username of the user that will be responsible for the rollback if needed.
Definition: agt_ses.c:577
status_t agt_ses_get_inRpcs(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the inRpcs counter
Definition: agt_ses.c:2104
status_t agt_ses_get_session_outNotifications(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the outNotifications counter
Definition: agt_ses.c:2374
status_t agt_ses_get_inBadHellos(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the inBadHellos counter
Definition: agt_ses.c:2074
status_t agt_ses_get_droppedSessions(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the droppedSessions counter
Definition: agt_ses.c:2224
status_t agt_ses_get_outRpcErrors(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the outRpcErrors counter
Definition: agt_ses.c:2164
void agt_ses_check_timeouts(ses_id_t sid)
Check if any sessions need to be dropped because they have been idle too long.
Definition: agt_ses.c:1811
ses_cb_t * agt_ses_new_dummy_session(void)
Create a dummy session control block.
Definition: agt_ses.c:537
ses_cb_t * agt_ses_get_session_for_id(ses_id_t sid)
get the session for the supplied sid
Definition: agt_ses.c:2438
void agt_ses_set_hello_timeout(uint32 val)
Set the hello-timeout parameter.
Definition: agt_ses.c:2755
status_t agt_ses_get_session_inRpcs(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the session/inRpcs counter
Definition: agt_ses.c:2254
status_t agt_ses_get_inBadRpcs(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the inBadRpcs counter
Definition: agt_ses.c:2134
void agt_ses_kill_session(ses_cb_t *scb, ses_id_t killedby, ses_term_reason_t termreason)
Kill the specified session.
Definition: agt_ses.c:1314
ses_cb_t * agt_ses_new_snmp_session(void)
Create a dummy SNMP session control block.
Definition: agt_ses.c:790
void agt_ses_set_max_sessions(uint16 val)
Set the max-sessions parameter.
Definition: agt_ses.c:2698
boolean agt_ses_session_id_valid(ses_id_t sid)
Check if a session-id is for an active session.
Definition: agt_ses.c:1132
boolean agt_ses_process_first_ready(boolean ycontrol)
Check the readyQ and process the first message, if any.
Definition: agt_ses.c:1576
void agt_ses_free_coap_session(ses_cb_t *scb)
Free a dummy CoAP session control block.
Definition: agt_ses.c:764
void agt_ses_invalidate_session_acm_caches(void)
Invalidate all session ACM caches so they will be rebuilt.
Definition: agt_ses.c:2410
boolean agt_ses_max_user_sessions(const xmlChar *user)
Check if max-user-sessions parameter has been reached.
Definition: agt_ses.c:2632
ses_cb_t * agt_ses_new_session(ses_transport_t transport, int fd)
Create a real server session control block.
Definition: agt_ses.c:863
uint32 agt_ses_mgmt_session_count(void)
Get number of management sessions open.
Definition: agt_ses.c:2458
void agt_ses_go_standby(void)
Deactivate MGMT sessions because YP-HA mode is standby.
Definition: agt_ses.c:2503
void agt_ses_cleanup(void)
Cleanup the session manager module data structures.
Definition: agt_ses.c:501
status_t agt_ses_set_dummy_session_tcb(ses_cb_t *dummy_session, ses_id_t use_sid)
Set the session TCB if needed.
Definition: agt_ses.c:649
boolean agt_ses_process_first_ready_by_sid(ses_id_t sid)
Check the readyQ and process the first message matching session, if any.
Definition: agt_ses.c:1548
status_t agt_ses_get_session_inBadRpcs(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the inBadRpcs counter
Definition: agt_ses.c:2294
status_t agt_ses_get_inSessions(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the inSessions counter
Definition: agt_ses.c:2044
void agt_ses_fill_writeset(fd_set *fdset, int *maxfdnum)
Drain the ses_msg outreadyQ and set the specified fdset Used by agt_ncxserver write_fd_set.
Definition: agt_ses.c:2005
void agt_ses_set_idle_timeout(uint32 val)
Set the idle-timeout parameter.
Definition: agt_ses.c:2774
status_t agt_ses_get_session_outRpcErrors(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
<get> operation handler for the outRpcErrors counter
Definition: agt_ses.c:2334
status_t agt_ses_init(void)
INIT 1: Initialize the session manager module data structures.
Definition: agt_ses.c:467
void agt_ses_free_session2(ses_cb_t *scb, boolean clear_locks)
Free a real session control block but with optional unlocking.
Definition: agt_ses.c:943
void agt_ses_free_snmp_session(ses_cb_t *scb)
Free a dummy snmp session control block.
Definition: agt_ses.c:834
void agt_ses_free_session(ses_cb_t *scb)
Free a real session control block.
Definition: agt_ses.c:924
boolean agt_ses_ssh_port_allowed(uint16 port)
Check if the port number used for SSH connect is okay.
Definition: agt_ses.c:1955
ses_cb_t * agt_ses_new_coap_session(void)
Create a dummy CoAP session control block.
Definition: agt_ses.c:720
void agt_ses_remove_subsys(ses_id_t sid)
Remove a subsystem session for an HA Standby.
Definition: agt_ses.c:2549
getcb_mode_t
get callback retrieval types; only get2 supports getnext
Definition: getcb.h:259
status_t
global error return code
Definition: status_enum.h:210
ses_transport_t
NETCONF Transport Types.
Definition: ses.h:359
ses_term_reason_t
Session Termination reason.
Definition: ses.h:417
uint32 ses_id_t
Session ID.
Definition: ses.h:335
Contains NCX constants.
NETCONF Session Common definitions module.
Global error messages for status code enumerations.
Session Control Block.
Definition: ses.h:573
one value to match one type
Definition: val.h:912
Value Node Basic Support.