libnetconf2  3.5.4
NETCONF server and client library in C.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
session_client.h File Reference

libnetconf2 session client manipulation More...

#include <libyang/libyang.h>
#include "messages_client.h"
#include "netconf.h"
#include "session.h"
#include <libssh/libssh.h>
Include dependency graph for session_client.h:

Go to the source code of this file.

Typedefs

typedef void(* nc_client_monitoring_clb )(struct nc_session *session, void *user_data)
 Callback for monitoring client sessions. More...
 
typedef void(* nc_notif_dispatch_clb )(struct nc_session *session, const struct lyd_node *envp, const struct lyd_node *op, void *user_data)
 Callback for receiving notifications in a separate thread. More...
 

Functions

void nc_client_destroy (void)
 Destroy all libssh and/or libssl/libcrypto dynamic memory and the client options, for both SSH and TLS, and for Call Home too. More...
 
void nc_client_enable_tcp_keepalives (int enable)
 Enable or disable TCP keepalives. Only affects new sessions. More...
 
ly_module_imp_clb nc_client_get_schema_callback (void **user_data)
 Get callback function used to get missing schemas. More...
 
const char * nc_client_get_schema_searchpath (void)
 Get schema searchpath that was set by nc_client_set_schema_searchpath(). More...
 
void * nc_client_get_thread_context (void)
 Get thread-specific client context for sharing with some other thread using nc_client_set_thread_context(). More...
 
int nc_client_init (void)
 Initialize client for establishing connections. More...
 
int nc_client_monitoring_thread_start (nc_client_monitoring_clb monitoring_clb, void *user_data, void(*free_data)(void *))
 Start a thread that monitors client sessions. More...
 
void nc_client_monitoring_thread_stop (void)
 Stop the client session monitoring thread. More...
 
void nc_client_session_set_not_strict (struct nc_session *session)
 Make a session not strict when sending RPCs and receiving RPC replies. In other words, it will silently skip unknown nodes without an error. More...
 
void nc_client_set_new_session_context_autofill (int enabled)
 Enable/disable loading of all the YANG modules supported by the server when a new session is created. If disabled, it is expected that users update the context themselves and load the YANG modules that are planned to be used. Otherwise even basic RPCs may fail to be sent! More...
 
int nc_client_set_new_session_context_schema_mount (struct nc_session *session)
 Set client session context to support schema-mount, if possible. More...
 
int nc_client_set_schema_callback (ly_module_imp_clb clb, void *user_data)
 Set callback function to get missing schemas. More...
 
int nc_client_set_schema_searchpath (const char *path)
 Set location where libnetconf tries to search for YANG/YIN schemas. More...
 
void nc_client_set_tcp_keepalives (uint16_t idle_time, uint16_t max_probes, uint16_t probe_interval)
 Set TCP keepalive options. More...
 
void nc_client_set_thread_context (void *context)
 Use the provided thread-specific client's context in the current thread. More...
 
int nc_client_ssh_add_keypair (const char *pub_key, const char *priv_key)
 Add an SSH public and private key pair to be used for client authentication. More...
 
int nc_client_ssh_del_keypair (int idx)
 Remove an SSH public and private key pair that was used for client authentication. More...
 
void nc_client_ssh_get_auth_interactive_clb (char *(**auth_interactive)(const char *auth_name, const char *instruction, const char *prompt, int echo, void *priv), void **priv)
 Get currently set SSH interactive authentication callback and its private data previously set by nc_client_ssh_set_auth_interactive_clb(). More...
 
void nc_client_ssh_get_auth_password_clb (char *(**auth_password)(const char *username, const char *hostname, void *priv), void **priv)
 Get currently set SSH password authentication callback and its private data previously set by nc_client_ssh_set_auth_password_clb(). More...
 
int16_t nc_client_ssh_get_auth_pref (NC_SSH_AUTH_TYPE auth_type)
 Get SSH authentication method preference. More...
 
void nc_client_ssh_get_auth_privkey_passphrase_clb (char *(**auth_privkey_passphrase)(const char *privkey_path, void *priv), void **priv)
 Get currently set SSH publickey authentication encrypted private key passphrase callback and its private data previously set by nc_client_ssh_set_auth_privkey_passphrase_clb(). More...
 
int nc_client_ssh_get_keypair (int idx, const char **pub_key, const char **priv_key)
 Get a specific keypair set to be used for client authentication. More...
 
int nc_client_ssh_get_keypair_count (void)
 Get the number of public an private key pairs set to be used for client authentication. More...
 
const char * nc_client_ssh_get_username (void)
 Get client SSH username used for authentication. More...
 
void nc_client_ssh_set_auth_interactive_clb (char *(*auth_interactive)(const char *auth_name, const char *instruction, const char *prompt, int echo, void *priv), void *priv)
 Set SSH interactive authentication callback. More...
 
void nc_client_ssh_set_auth_password_clb (char *(*auth_password)(const char *username, const char *hostname, void *priv), void *priv)
 Set SSH password authentication callback. More...
 
void nc_client_ssh_set_auth_pref (NC_SSH_AUTH_TYPE auth_type, int16_t pref)
 Set SSH authentication method preference. More...
 
void nc_client_ssh_set_auth_privkey_passphrase_clb (char *(*auth_privkey_passphrase)(const char *privkey_path, void *priv), void *priv)
 Set SSH publickey authentication encrypted private key passphrase callback. More...
 
void nc_client_ssh_set_knownhosts_mode (NC_SSH_KNOWNHOSTS_MODE mode)
 Set the behaviour of checking the host key and adding/reading entries to/from the known_hosts file. More...
 
int nc_client_ssh_set_knownhosts_path (const char *path)
 Set the path to the known_hosts file. More...
 
int nc_client_ssh_set_username (const char *username)
 Set client SSH username used for authentication. More...
 
void nc_client_tls_get_cert_key_paths (const char **client_cert, const char **client_key)
 Get client authentication identity - a certificate and a private key. More...
 
void nc_client_tls_get_crl_paths (const char **crl_file, const char **crl_dir)
 Deprecated. More...
 
void nc_client_tls_get_trusted_ca_paths (const char **ca_file, const char **ca_dir)
 Get client trusted CA certificates paths. More...
 
int nc_client_tls_set_cert_key_paths (const char *client_cert, const char *client_key)
 Set client authentication identity - a certificate and a private key. More...
 
int nc_client_tls_set_crl_paths (const char *crl_file, const char *crl_dir)
 Deprecated. More...
 
int nc_client_tls_set_trusted_ca_paths (const char *ca_file, const char *ca_dir)
 Set client trusted CA certificates paths. More...
 
struct nc_session * nc_connect_inout (int fdin, int fdout, struct ly_ctx *ctx)
 Connect to the NETCONF server via proviaded input/output file descriptors. More...
 
struct nc_session * nc_connect_libssh (ssh_session ssh_session, struct ly_ctx *ctx)
 Connect to the NETCONF server using the provided SSH (libssh) session. More...
 
struct nc_session * nc_connect_libssl (void *tls, struct ly_ctx *ctx)
 Deprecated. Should not be needed. More...
 
struct nc_session * nc_connect_ssh (const char *host, uint16_t port, struct ly_ctx *ctx)
 Connect to the NETCONF server using SSH transport (via libssh). More...
 
struct nc_session * nc_connect_ssh_channel (struct nc_session *session, struct ly_ctx *ctx)
 Create another NETCONF session on existing SSH session using separated SSH channel. More...
 
struct nc_session * nc_connect_tls (const char *host, uint16_t port, struct ly_ctx *ctx)
 Connect to the NETCONF server using TLS transport (via libssl) More...
 
struct nc_session * nc_connect_unix (const char *address, struct ly_ctx *ctx)
 Connect to the NETCONF server via unix socket. More...
 
NC_MSG_TYPE nc_recv_notif (struct nc_session *session, int timeout, struct lyd_node **envp, struct lyd_node **op)
 Receive NETCONF Notification. More...
 
int nc_recv_notif_dispatch (struct nc_session *session, nc_notif_dispatch_clb notif_clb)
 Receive NETCONF Notifications in a separate thread until the session is terminated or <notificationComplete> is received. More...
 
int nc_recv_notif_dispatch_data (struct nc_session *session, nc_notif_dispatch_clb notif_clb, void *user_data, void(*free_data)(void *))
 Receive NETCONF Notifications in a separate thread until the session is terminated or <notificationComplete> is received. Similar to nc_recv_notif_dispatch() but allows to set arbitrary user data that can be freed as well. More...
 
NC_MSG_TYPE nc_recv_reply (struct nc_session *session, struct nc_rpc *rpc, uint64_t msgid, int timeout, struct lyd_node **envp, struct lyd_node **op)
 Receive NETCONF RPC reply. More...
 
NC_MSG_TYPE nc_send_rpc (struct nc_session *session, struct nc_rpc *rpc, int timeout, uint64_t *msgid)
 Send NETCONF RPC message via the session. More...
 
const char * nc_session_cpblt (const struct nc_session *session, const char *capab)
 Check capability presence in a session. More...
 
const char *const * nc_session_get_cpblts (const struct nc_session *session)
 Get session capabilities. More...
 
int nc_session_ntf_thread_running (const struct nc_session *session)
 Check whether the session has a notification thread running. More...
 

Detailed Description

libnetconf2 session client manipulation

Author
Michal Vasko mvask.nosp@m.o@ce.nosp@m.snet..nosp@m.cz

This source code is licensed under BSD 3-Clause License (the "License"). You may not use this file except in compliance with the License. You may obtain a copy of the License at

https://opensource.org/licenses/BSD-3-Clause

Definition in file session_client.h.