![]()  | 
  
    yumapro
    25.10-1
    
   YumaPro SDK 
   | 
 
NETCONF Session Common definitions module. More...
#include <stdio.h>#include <time.h>#include <xmlreader.h>#include <sys/socket.h>#include "dlq.h"#include "ncxtypes.h"#include "status.h"#include "tstamp.h"#include <net-snmp/net-snmp-config.h>#include <net-snmp/net-snmp-features.h>#include <net-snmp/net-snmp-includes.h>
Go to the source code of this file.
Data Structures | |
| struct | ses_stats_t | 
| Per Session Statistics.  More... | |
| struct | ses_total_stats_t | 
| Session Total Statistics.  More... | |
| struct | ses_msg_buff_t | 
| Session Message Buffer.  More... | |
| struct | ses_ready_t | 
| embedded Q header for the message ready Q The 'inq' flag is used to prevent queue corruption  More... | |
| struct | ses_msg_t | 
| Session Message.  More... | |
| struct | ses_udpnotif_cb_t | 
| Special UDP-Notif Collector Control Block Used to manage the DGRAM connection where the publishers are not known in advance.  More... | |
| struct | ses_cb_t | 
| Session Control Block.  More... | |
Macros | |
| #define | SES_MY_SID(S) ((S)->sid) | 
| get session-id  | |
| #define | SES_MY_FD(S) ((S)->fd) | 
| get file descriptor  | |
| #define | SES_MY_USERNAME(S) ((S)->username) | 
| get username  | |
| #define | SES_KILLREQ_SET(S) ((S)->state >= SES_ST_SHUTDOWN_REQ) | 
| check if a kill request is set  | |
| #define | SES_ACK_KILLREQ(S) ((S)->state = SES_ST_SHUTDOWN) | 
| ack a kill request  | |
| #define | SES_OUT_BYTES(S) (S)->stats.out_bytes | 
| get session out bytes  | |
| #define | SES_LINELEN(S) (S)->stats.out_line | 
| get current out line number  | |
| #define | SES_LINESIZE(S) (S)->linesize | 
| get current line size  | |
| #define | SES_BUFFSIZE(S) (S)->session_buffsize | 
| get session buffer max used size  | |
| #define | SES_IN_ENCODING(S) (S)->in_encoding | 
| get the inbound message encoding  | |
| #define | SES_OUT_ENCODING(S) (S)->out_encoding | 
| get the outbound message encoding  | |
| #define | SES_IS_DUMMY(S) ((S)->sid == 0) | 
| test if this is a dummy session  | |
| #define | SES_IS_YCONTROL(S) ((S)->ycontrol) | 
| test if this is a YControl session  | |
| #define | SES_CONN_CLOSED(S) (S)->conn_closed | 
| check if the connection is closed  | |
| #define | SES_SET_CUR_RPC_MSG(S, MSG) (S)->cur_rpc_msg = MSG | 
| set the current RPC message  | |
| #define | SES_GET_CUR_RPC_MSG(S) (S)->cur_rpc_msg | 
| get the current RPC message  | |
| #define | SES_GET_JSON_1LINE(S) (S)->json_1line | 
| get the JSON 1 line state  | |
| #define | SES_USE_JSON_ATTRS(S) (S)->json_attrs | 
| get the JSON use attributes flag  | |
| #define | SES_SET_JSON_ATTRS(S) (S)->json_attrs = TRUE | 
| set the JSON attributes flag  | |
| #define | SES_SET_LEAFLIST_PTR(S, V) (S)->leaflist = V | 
| set the session leaf-list pointer  | |
| #define | SES_GET_LEAFLIST_PTR(S) (S)->leaflist | 
| get the session leaf-list pointer  | |
| #define | SES_SET_LEAFLIST_ATTRS(S, A) (S)->any_leaflist_attrs = A | 
| set the leaf-list attributes  | |
| #define | SES_GET_LEAFLIST_ATTRS(S) (S)->any_leaflist_attrs | 
| get the leaf-list attributes  | |
| #define | SES_KEEP_XMLNS(S) (S)->keep_xmlns | 
| get keep xmlns attributes flag  | |
| #define | SES_RAWXML_MODE(S) (S)->rawxml_mode | 
| get the raw XML mode  | |
| #define | SES_STATE(S) (S)->state | 
| get the session state  | |
| #define | SES_PEERADDR(S) (S)->peeraddr | 
| get the session peer address  | |
| #define | SES_PEERPORT(S) (S)->peerport | 
| get the session peer port number  | |
| #define | SES_TRANSPORT(S) (S)->transport | 
| get the session transport enum  | |
| #define | SES_PROTOCOL(S) (S)->protocol | 
| get the session protocol enum  | |
| #define | SES_IS_IPV6(S) (S)->is_ipv6 | 
| check if the session is using IPv6  | |
| #define | SES_IS_CALLHOME(S) (S)->is_callhome | 
| check if this is a callhome session  | |
| #define | SES_TYPE(S) (S)->type | 
| get the session type  | |
| #define | SES_GET_COOKIE(S) (S)->get_cookie | 
| get the session cookie  | |
| #define | SES_BREADCRUMBQ(S) &(S)->breadcrumbQ | 
| get the session breadcrumb Q  | |
| #define | SES_CURMSG(S) (S)->curmsg | 
| get the session current message  | |
| #define | SES_START_TLS(S) (S)->start_tls | 
| get the start TLS flag  | |
| #define | SES_WILDCARD_OK(S) (S)->wildcard_ok | 
| check if wildcard OK in XML filters  | |
| #define | SES_MGRCB(S) (S)->mgrcb | 
| get the manager session control block  | |
| #define | SES_NOTIF_ACTIVE(S) (S)->notif_active | 
| check if notifications are active  | |
| #define | SES_RFC8639_NOTIF_COUNT(S) (S)->rfc8639_notif_cnt | 
| get the notification count  | |
| #define | SES_BINARY_NOTIFS(S) (S)->binary_notifs | 
| establish-subscription used with encode-yang-cbor used on the session S  | |
| #define | BINLOG (const xmlChar *)"***binary***" | 
| If binary encoding then this message will be printed instead of showing binary characters in the log files.  | |
| #define | SES_RDFN(S) (S)->rdfn | 
| Access to the session read callback function.  | |
| #define | SES_WRFN(S) (S)->wrfn | 
| Access to the session write callback function.  | |
| #define | SES_SENDHOOK_FN(S) (S)->sendhook_fn | 
| Access to the session Send Hook callback function.  | |
| #define | SES_LAST_OUTBUFF(S) (S)->last_outbuff | 
| This flag is TRUE if the session write function is being called from ses_finish_msg.  More... | |
| #define | SES_SKIP_OUTMSG(S) (S)->skip_outmsg | 
| This flag is TRUE if the session write function is in skip mode, dropping segments instead of sending them.  | |
| #define | SES_CALLHOME_NAME(S) (S)->callhome_name | 
| agt only: Get the name of the callhome server that this session was started for so it can be reconnected only applies to NETCONF over TLS sessions  | |
| #define | SES_FREE_PENDING(S) (S)->free_pending | 
| agt only: Set this flag in agt_ses to delay freeing a subsystem session that is in progress with a remote transaction This will cause agt_top to clean up the session  | |
| #define | SES_RCVR_CB(S) (S)->rcvr_cb | 
| Access to the UDP-Notif Receiver Control Block Used by the publisher (server) One SCB per receiver is maintained.  | |
| #define | SES_CUR_DSCP(S) (S)->cur_dscp | 
| Save the current DSCP setting if UDP-Notif Publisher session on the server.  | |
| #define | SES_NULL_SID 0 | 
| session ID zero not used  | |
| #define | SES_MSG_BUFFSIZE 9000 | 
| controls the size of each buffer chunk  More... | |
| #define | SES_MAX_BUFFERS 500000 | 
| max number of buffer chunks a session can have allocated at once This is an arbitrary limit – no static memory is allocated based on this constant  | |
| #define | SES_MAX_FREE_BUFFERS 4 | 
| max number of buffers a session is allowed to cache in its freeQ  | |
| #define | SES_MAX_BUFFSEND 32 | 
| max number of buffers to try to send in one call to the write fn  | |
| #define | SES_MAX_BYTESEND 0xffff | 
| max number of bytes to try to send in one call to the write_fn  | |
| #define | SES_DEF_LINESIZE 72 | 
| max desired lines size; not a hard limit  | |
| #define | SES_MAX_STARTCHUNK_SIZE 13 | 
| max size of a valid base:1.1 chunk header start tag  | |
| #define | SES_MAX_CHUNKNUM_SIZE 10 | 
| max size of the chunk size number in the chunk start tag  | |
| #define | SES_STARTCHUNK_PAD 10 | 
| padding at start of buffer for chunk tagging  More... | |
| #define | SES_ENDCHUNK_PAD 8 | 
| leave enough room at the end for EOChunks for framing11 or http_chunk_mode  | |
| #define | SES_READBUFF_SIZE SES_MSG_BUFFSIZE | 
| default read buffer size 24.10T-5: change to match write buffer to support larger read size for UDP-Notif  | |
| #define | SES_UDPNOTIF_READBUFF_SIZE 65532 | 
| UDP-Notif read buffer needs a 64K buffer – not full 65535 bytes of UDP Segment available – leaving room for 2 bytes at end and still 16 bits length.  | |
| #define | SES_GET_YPMODE(S) (S)->yp_mode | 
| get internal YP mode flag  | |
| #define | SES_SET_YPMODE(S, V) (S)->yp_mode = V | 
| set internal YP mode flag  | |
| #define | SES_REMOTE_WAIT(S) (S)->remote_wait | 
| get remote wait flag  | |
| #define | SES_NEED_FILE_OVERRIDE(S) ((S)->file_override && (S)->fp) | 
| get file override flag (used in client)  | |
| #define | SES_SYSTEM_USERNAME NCX_EL_SYSTEM | 
| system username used in agt_state to report session state  | |
Typedefs | |
| typedef uint32 | ses_id_t | 
| Session ID.  | |
| typedef ssize_t(* | ses_read_fn_t) (void *s, char *buff, size_t bufflen, bool *erragain) | 
| optional read function for the session  More... | |
| typedef status_t(* | ses_write_fn_t) (void *s) | 
| optional write function for the session  More... | |
| typedef status_t(* | ses_sendhook_fn_t) (void *s, boolean start) | 
| optional send message start/end callback function  More... | |
| typedef status_t(* | ses_setup_fn_t) (void *s, void *cookie) | 
| (UDP-Notif) session setup callback  More... | |
Functions | |
| ses_cb_t * | ses_new_scb (void) | 
| Create a new session control block.  More... | |
| ses_cb_t * | ses_new_udpnotif_scb (void) | 
| Create a new session control block for UDP-Notif Collector.  More... | |
| ses_cb_t * | ses_new_dummy_scb (void) | 
| Create a new dummy session control block.  More... | |
| ses_cb_t * | ses_new_coap_scb (void) | 
| Create a new global CoAP session control block.  More... | |
| void | ses_init_coap_scb (ses_cb_t *scb) | 
| Initialize a CoAP session control block.  More... | |
| ses_cb_t * | ses_new_snmp_scb (void) | 
| Create a new global SNMP session control block.  More... | |
| void | ses_free_scb (ses_cb_t *scb) | 
| Free a session control block.  More... | |
| void | ses_putchar (ses_cb_t *scb, uint32 ch) | 
| Write one char to the session, without any translation.  More... | |
| void | ses_put_binchar (ses_cb_t *scb, uint32 ch) | 
| Write one binary char to the session, without any translation.  More... | |
| void | ses_putstr (ses_cb_t *scb, const xmlChar *str) | 
| Write a zero-terminated string to the session.  More... | |
| void | ses_put_binstr (ses_cb_t *scb, const xmlChar *str, uint32 len) | 
| Write a binary string to the session.  More... | |
| void | ses_putstr_indent (ses_cb_t *scb, const xmlChar *str, int32 indent) | 
| Write a zero-terminated content string to the session with indentation.  More... | |
| void | ses_putcstr (ses_cb_t *scb, const xmlChar *str, int32 indent) | 
| write XML element safe content string Write a zero-terminated element content string to the session  More... | |
| void | ses_puthstr (ses_cb_t *scb, const xmlChar *str) | 
| write HTML element safe content string Write a zero-terminated element content string to the session  More... | |
| void | ses_putcchar (ses_cb_t *scb, uint32 ch) | 
| Write one content char to the session, with translation as needed.  More... | |
| void | ses_putastr (ses_cb_t *scb, const xmlChar *str, int32 indent) | 
| write XML attribute safe content string Write a zero-terminated attribute content string to the session  More... | |
| void | ses_putjstr (ses_cb_t *scb, const xmlChar *str, int32 indent) | 
| write JSON safe content string Write a zero-terminated element content string to the session  More... | |
| void | ses_indent (ses_cb_t *scb, int32 indent) | 
| Write the proper newline + indentation to the specified session.  More... | |
| int32 | ses_indent_count (const ses_cb_t *scb) | 
| Get the logging indent count for this session.  More... | |
| int32 | ses_message_indent_count (const ses_cb_t *scb) | 
| Get the message indent count for this session.  More... | |
| void | ses_set_indent (ses_cb_t *scb, int32 indent) | 
| Set the logging indent count for this session.  More... | |
| void | ses_set_message_indent (ses_cb_t *scb, int32 indent) | 
| Set the message indent count for this session.  More... | |
| void | ses_set_mode (ses_cb_t *scb, ses_mode_t mode) | 
| Set the output mode for the specified session.  More... | |
| ses_mode_t | ses_get_mode (ses_cb_t *scb) | 
| Get the output mode for the specified session.  More... | |
| void | ses_start_msg_mode (ses_cb_t *scb) | 
| Set the message output mode to active.  More... | |
| void | ses_stop_msg_mode (ses_cb_t *scb) | 
| Set the message output mode to inactive.  More... | |
| status_t | ses_start_msg (ses_cb_t *scb) | 
| Start a new outbound message on the specified session.  More... | |
| void | ses_finish_msg (ses_cb_t *scb) | 
| Finish an outbound message on the specified session.  More... | |
| int | ses_read_cb (void *context, char *buffer, int len) | 
| The IO input front-end for the xmlTextReader parser read fn.  More... | |
| status_t | ses_accept_input (ses_cb_t *scb) | 
| The IO input handler for the ncxserver loop.  More... | |
| const xmlChar * | ses_state_name (ses_state_t state) | 
| Get the name of a session state from the enum value.  More... | |
| ncx_withdefaults_t | ses_withdef (const ses_cb_t *scb) | 
| Get the with-defaults value for this session.  More... | |
| uint32 | ses_line_left (const ses_cb_t *scb) | 
| Get the number of bytes that can be added to the current line before the session linesize limit is reached.  More... | |
| void | ses_put_extern (ses_cb_t *scb, const xmlChar *fname) | 
| write the contents of a file to the session  More... | |
| status_t | ses_put_extern2 (ses_cb_t *scb, const xmlChar *fname) | 
| write the contents of a file to the session  More... | |
| status_t | ses_put_extern_bin (ses_cb_t *scb, const xmlChar *fname) | 
| write the contents of a binary file to the session  More... | |
| ses_total_stats_t * | ses_get_total_stats (void) | 
| Get a r/w pointer to the the session totals stats.  More... | |
| ses_transport_t | ses_get_transport (ses_cb_t *scb) | 
| Get the transport enum for a given session.  More... | |
| ses_transport_t | ses_get_transport_enum (const xmlChar *str) | 
| Get the enum value for the yumaworks-types:transport-type.  More... | |
| const xmlChar * | ses_get_transport_name (ses_transport_t transport) | 
| Get the name of the transport for a given enum value.  More... | |
| const xmlChar * | ses_get_transport_yang_name (ses_transport_t transport) | 
| Get the name of the transport for a given enum value.  More... | |
| void | ses_set_xml_nons (ses_cb_t *scb) | 
| force xmlns attributes to be skipped in XML mode  More... | |
| boolean | ses_get_xml_nons (const ses_cb_t *scb) | 
| force xmlns attributes to be skipped in XML mode  More... | |
| status_t | ses_set_protocol (ses_cb_t *scb, ncx_protocol_t proto) | 
| set the NETCONF protocol version in use  More... | |
| ncx_protocol_t | ses_get_protocol (const ses_cb_t *scb) | 
| Get the NETCONF protocol set (or unset) for this session.  More... | |
| void | ses_set_protocols_requested (ses_cb_t *scb, ncx_protocol_t proto) | 
| set the NETCONF protocol versions requested  More... | |
| boolean | ses_protocol_requested (ses_cb_t *scb, ncx_protocol_t proto) | 
| check if the NETCONF protocol version was requested  More... | |
| void | ses_set_extern_xml_mode (ses_cb_t *scb, boolean rawxml_mode) | 
| Setup the scb for external XML parsing.  More... | |
| void | ses_set_extern_xml_mode_ex (ses_cb_t *scb, boolean rawxml_mode, boolean keep_xmlns) | 
| Setup the scb for external XML parsing.  More... | |
| void | ses_clear_extern_xml_mode (ses_cb_t *scb, boolean rawxml_mode) | 
| Clear the scb from external XML parsing.  More... | |
| void | ses_clear_extern_xml_mode_ex (ses_cb_t *scb, boolean rawxml_mode, boolean keep_xmlns) | 
| Clear the scb from external XML parsing.  More... | |
| void | ses_set_out_encoding (ses_cb_t *scb, ncx_display_mode_t encoding) | 
| Set the output encoding.  More... | |
| void | ses_set_SSE_encoding (ses_cb_t *scb) | 
| Set the output encoding to have a Server Sent Events filter Used for notification delivery over RESTCONF/HTTP.  More... | |
| ncx_display_mode_t | ses_get_out_encoding (ses_cb_t *scb) | 
| Get the output encoding.  More... | |
| int32 | ses_new_indent_count (boolean indent_in, int32 indent, int32 indent_amount) | 
| Get the new indent count from the current and indent_amount.  More... | |
| void | ses_free_xml_reader (ses_cb_t *scb) | 
| Free the xmlTextReader for the session The encoding is switching from XML to something else.  More... | |
| status_t | ses_getline_cb (xmlChar *fillbuff, uint32 fillbuffsize, void *cookie) | 
| The IO input front-end for the tk_parse_json_buffs function.  More... | |
| status_t | ses_set_control_session (ses_cb_t *scb) | 
| Set the specified session as a control session.  More... | |
| boolean | ses_is_control_session (ses_cb_t *scb) | 
| Check if the specified session is a control session.  More... | |
| void | ses_set_dbapi_session (ses_cb_t *scb) | 
| Set the specified session as a DB-API control session.  More... | |
| boolean | ses_is_dbapi_session (ses_cb_t *scb) | 
| Check if the specified session is a DB-API control session.  More... | |
| void | ses_set_dbapi_system_session (ses_cb_t *scb) | 
| Set the specified session as a DB-API control session for system edits.  More... | |
| boolean | ses_is_dbapi_system_session (ses_cb_t *scb) | 
| Check if the specified session is a DB-API control session for system edits.  More... | |
| void | ses_clear_dbapi_system_session (ses_cb_t *scb) | 
| Clear a session of the DB-API system status.  More... | |
| boolean | ses_is_system_session (ses_cb_t *scb) | 
| Check if the specified session is an internal system session.  More... | |
| int32 | ses_add_indent (ses_cb_t *scb, int32 indent) | 
| Add in the new indent amount.  More... | |
| int32 | ses_dec_indent (ses_cb_t *scb, int32 indent) | 
| Remove the specified indent amount.  More... | |
| ncx_msg_encoding_t | ses_get_msg_encoding (const ses_cb_t *scb) | 
| Get the message encoding for the HTTP session.  More... | |
| status_t | ses_start_http_chunk_mode (ses_cb_t *scb) | 
| Start outputting buffers in HTTP 1.1 chunk mode.  More... | |
| const xmlChar * | ses_get_entry_point (ses_cb_t *scb) | 
| Get the RESTCONF entry_point.  More... | |
| status_t | ses_set_entry_point (ses_cb_t *scb, const xmlChar *point) | 
| Set the RESTCONF entry_point.  More... | |
| boolean | ses_notifications_active (const ses_cb_t *scb) | 
| Check if the session has notifications active.  More... | |
| status_t | ses_set_gnmi_control_session (ses_cb_t *scb) | 
| Set the specified session as a gNMI control session.  More... | |
| boolean | ses_is_gnmi_control_session (ses_cb_t *scb) | 
| Check if the specified session is a gNMI control session.  More... | |
| void | ses_set_gnmi_session (ses_cb_t *scb) | 
| Set the specified session as a gNMI session.  More... | |
| boolean | ses_is_gnmi_session (ses_cb_t *scb) | 
| Check if the specified session is a gNMI session.  More... | |
| status_t | ses_add_breadcrumb_obj (ses_cb_t *scb, struct obj_template_t_ *obj) | 
| Add an object to the breadcrumbQ.  More... | |
| void | ses_clean_breadcrumbQ (ses_cb_t *scb) | 
| Clean the breadcrumbQ.  More... | |
| boolean | ses_dropped (const ses_cb_t *scb) | 
| Check if the session has been dropped by the client.  More... | |
| status_t | ses_set_file_override (ses_cb_t *scb, const xmlChar *filespec, boolean is_binary) | 
| Setup the session in file write override mode.  More... | |
| void | ses_clear_file_override (ses_cb_t *scb) | 
| Cleanup the session in file write override mode Does not delete the file, just closes it!  More... | |
| void | ses_start_checksum (ses_cb_t *scb) | 
| Clear the checksum field and start checksum mode.  More... | |
| uint32 | ses_finish_checksum (ses_cb_t *scb, uint32 *checksum_cnt) | 
| Stop checksum mode and return the final checksum.  More... | |
| boolean | ses_dropped_ex (ses_cb_t *scb) | 
| Check if the session has been dropped by the client.  More... | |
| status_t | ses_set_grpc_control_session (ses_cb_t *scb) | 
| Set the specified session as a gRPC control session.  More... | |
| boolean | ses_is_grpc_control_session (ses_cb_t *scb) | 
| Check if the specified session is a gRPC control session.  More... | |
| void | ses_set_grpc_session (ses_cb_t *scb) | 
| Set the specified session as a gRPC session.  More... | |
| boolean | ses_is_grpc_session (ses_cb_t *scb) | 
| Check if the specified session is a gRPC session.  More... | |
| void | ses_dump_binary_buff (const xmlChar *buff, size_t bufflen) | 
| Dump some bytes from the binary buffer (max 256)  More... | |
| boolean | ses_poll_ready (ses_cb_t *scb) | 
| Check if the specified session is ready to read bytes.  More... | |
| const xmlChar * | ses_get_scb_username (ses_cb_t *scb) | 
| Get the username to use from an SCB.  More... | |
| const xmlChar * | ses_get_scb_client_addr (ses_cb_t *scb) | 
| Get the client addr to use from an SCB.  More... | |
| size_t | ses_get_outbuff_len (const ses_cb_t *scb) | 
| Get the current outbuffer length for the session.  More... | |
| xmlChar * | ses_get_outbuff (ses_cb_t *scb) | 
| Get the session outbuffer character array.  More... | |
| status_t | ses_set_setup_cb (ses_cb_t *scb, ses_setup_fn_t fn, void *cookie) | 
| Set the setup handler callback for UDP-Notif.  More... | |
NETCONF Session Common definitions module.