Loading...
Searching...
No Matches
session_client.h
Go to the documentation of this file.
#ifndef NC_SESSION_CLIENT_H_
#define NC_SESSION_CLIENT_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <libyang/libyang.h>
#include "messages_client.h"
#include "netconf.h"
#include "session.h"
#ifdef NC_ENABLED_SSH_TLS
# include <libssh/libssh.h>
#endif /* NC_ENABLED_SSH_TLS */
int nc_client_set_schema_searchpath(const char *path);
const char *nc_client_get_schema_searchpath(void);
int nc_client_set_schema_callback(ly_module_imp_clb clb, void *user_data);
ly_module_imp_clb nc_client_get_schema_callback(void **user_data);
void nc_client_set_new_session_context_autofill(int enabled);
int nc_client_set_new_session_context_schema_mount(struct nc_session *session);
void nc_client_set_thread_context(void *context);
void *nc_client_get_thread_context(void);
int nc_client_init(void);
void nc_client_destroy(void);
struct nc_session *nc_connect_inout(int fdin, int fdout, struct ly_ctx *ctx);
struct nc_session *nc_connect_unix(const char *address, struct ly_ctx *ctx);
#ifdef NC_ENABLED_SSH_TLS
void nc_client_ssh_set_knownhosts_mode(NC_SSH_KNOWNHOSTS_MODE mode);
int nc_client_ssh_set_knownhosts_path(const char *path);
void nc_client_ssh_set_auth_password_clb(char *(*auth_password)(const char *username, const char *hostname, void *priv),
void *priv);
void nc_client_ssh_get_auth_password_clb(char *(**auth_password)(const char *username, const char *hostname, void *priv),
void **priv);
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);
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);
void nc_client_ssh_set_auth_privkey_passphrase_clb(char *(*auth_privkey_passphrase)(const char *privkey_path, void *priv),
void *priv);
void nc_client_ssh_get_auth_privkey_passphrase_clb(char *(**auth_privkey_passphrase)(const char *privkey_path, void *priv),
void **priv);
int nc_client_ssh_add_keypair(const char *pub_key, const char *priv_key);
int nc_client_ssh_del_keypair(int idx);
int nc_client_ssh_get_keypair_count(void);
int nc_client_ssh_get_keypair(int idx, const char **pub_key, const char **priv_key);
void nc_client_ssh_set_auth_pref(NC_SSH_AUTH_TYPE auth_type, int16_t pref);
int16_t nc_client_ssh_get_auth_pref(NC_SSH_AUTH_TYPE auth_type);
int nc_client_ssh_set_username(const char *username);
const char *nc_client_ssh_get_username(void);
struct nc_session *nc_connect_ssh(const char *host, uint16_t port, struct ly_ctx *ctx);
struct nc_session *nc_connect_libssh(ssh_session ssh_session, struct ly_ctx *ctx);
struct nc_session *nc_connect_ssh_channel(struct nc_session *session, struct ly_ctx *ctx);
int nc_client_tls_set_cert_key_paths(const char *client_cert, const char *client_key);
void nc_client_tls_get_cert_key_paths(const char **client_cert, const char **client_key);
int nc_client_tls_set_trusted_ca_paths(const char *ca_file, const char *ca_dir);
void nc_client_tls_get_trusted_ca_paths(const char **ca_file, const char **ca_dir);
int nc_client_tls_set_crl_paths(const char *crl_file, const char *crl_dir);
void nc_client_tls_get_crl_paths(const char **crl_file, const char **crl_dir);
struct nc_session *nc_connect_tls(const char *host, uint16_t port, struct ly_ctx *ctx);
struct nc_session *nc_connect_libssl(void *tls, struct ly_ctx *ctx);
#endif /* NC_ENABLED_SSH_TLS */
const char * const *nc_session_get_cpblts(const struct nc_session *session);
const char *nc_session_cpblt(const struct nc_session *session, const char *capab);
int nc_session_ntf_thread_running(const struct nc_session *session);
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);
NC_MSG_TYPE nc_recv_notif(struct nc_session *session, int timeout, struct lyd_node **envp, struct lyd_node **op);
typedef void (*nc_notif_dispatch_clb)(struct nc_session *session, const struct lyd_node *envp, const struct lyd_node *op,
void *user_data);
int nc_recv_notif_dispatch(struct nc_session *session, nc_notif_dispatch_clb notif_clb);
int nc_recv_notif_dispatch_data(struct nc_session *session, nc_notif_dispatch_clb notif_clb, void *user_data,
void (*free_data)(void *));
NC_MSG_TYPE nc_send_rpc(struct nc_session *session, struct nc_rpc *rpc, int timeout, uint64_t *msgid);
void nc_client_session_set_not_strict(struct nc_session *session);
typedef void (*nc_client_monitoring_clb)(struct nc_session *session, void *user_data);
int nc_client_monitoring_thread_start(nc_client_monitoring_clb monitoring_clb, void *user_data, void (*free_data)(void *));
void nc_client_monitoring_thread_stop(void);
void nc_client_enable_tcp_keepalives(int enable);
void nc_client_set_tcp_keepalives(uint16_t idle_time, uint16_t max_probes, uint16_t probe_interval);
#ifdef __cplusplus
}
#endif
#endif /* NC_SESSION_CLIENT_H_ */
nc_rpc
NETCONF client RPC object.
nc_recv_notif_dispatch
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 <notificationCo...
nc_recv_notif
NC_MSG_TYPE nc_recv_notif(struct nc_session *session, int timeout, struct lyd_node **envp, struct lyd_node **op)
Receive NETCONF Notification.
nc_session_ntf_thread_running
int nc_session_ntf_thread_running(const struct nc_session *session)
Check whether the session has a notification thread running.
nc_session_get_cpblts
const char *const * nc_session_get_cpblts(const struct nc_session *session)
Get session capabilities.
nc_recv_reply
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.
nc_notif_dispatch_clb
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.
Definition session_client.h:564
nc_client_monitoring_thread_stop
void nc_client_monitoring_thread_stop(void)
Stop the client session monitoring thread.
nc_connect_inout
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.
nc_client_set_tcp_keepalives
void nc_client_set_tcp_keepalives(uint16_t idle_time, uint16_t max_probes, uint16_t probe_interval)
Set TCP keepalive options.
nc_client_monitoring_thread_start
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.
nc_recv_notif_dispatch_data
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 <notificationCo...
nc_client_session_set_not_strict
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,...
nc_session_cpblt
const char * nc_session_cpblt(const struct nc_session *session, const char *capab)
Check capability presence in a session.
nc_client_enable_tcp_keepalives
void nc_client_enable_tcp_keepalives(int enable)
Enable or disable TCP keepalives. Only affects new sessions.
nc_send_rpc
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.
nc_client_monitoring_clb
void(* nc_client_monitoring_clb)(struct nc_session *session, void *user_data)
Callback for monitoring client sessions.
Definition session_client.h:628
nc_connect_unix
struct nc_session * nc_connect_unix(const char *address, struct ly_ctx *ctx)
Connect to the NETCONF server via unix socket.
nc_client_ssh_set_knownhosts_mode
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.
nc_client_ssh_set_auth_privkey_passphrase_clb
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.
nc_client_ssh_get_auth_pref
int16_t nc_client_ssh_get_auth_pref(NC_SSH_AUTH_TYPE auth_type)
Get SSH authentication method preference.
nc_connect_libssh
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.
nc_client_ssh_add_keypair
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.
nc_client_ssh_get_auth_interactive_clb
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_c...
nc_client_ssh_set_username
int nc_client_ssh_set_username(const char *username)
Set client SSH username used for authentication.
nc_connect_ssh_channel
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.
nc_client_ssh_set_auth_interactive_clb
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.
nc_client_ssh_set_auth_pref
void nc_client_ssh_set_auth_pref(NC_SSH_AUTH_TYPE auth_type, int16_t pref)
Set SSH authentication method preference.
nc_connect_ssh
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).
nc_client_ssh_set_knownhosts_path
int nc_client_ssh_set_knownhosts_path(const char *path)
Set the path to the known_hosts file.
nc_client_ssh_del_keypair
int nc_client_ssh_del_keypair(int idx)
Remove an SSH public and private key pair that was used for client authentication.
nc_client_ssh_set_auth_password_clb
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.
nc_client_ssh_get_username
const char * nc_client_ssh_get_username(void)
Get client SSH username used for authentication.
nc_client_ssh_get_auth_password_clb
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_clie...
nc_client_ssh_get_keypair_count
int nc_client_ssh_get_keypair_count(void)
Get the number of public an private key pairs set to be used for client authentication.
nc_client_ssh_get_auth_privkey_passphrase_clb
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 priv...
nc_client_ssh_get_keypair
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.
nc_connect_libssl
struct nc_session * nc_connect_libssl(void *tls, struct ly_ctx *ctx)
Deprecated. Should not be needed.
nc_client_tls_set_cert_key_paths
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.
nc_client_tls_get_cert_key_paths
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.
nc_client_tls_set_trusted_ca_paths
int nc_client_tls_set_trusted_ca_paths(const char *ca_file, const char *ca_dir)
Set client trusted CA certificates paths.
nc_client_tls_get_trusted_ca_paths
void nc_client_tls_get_trusted_ca_paths(const char **ca_file, const char **ca_dir)
Get client trusted CA certificates paths.
nc_client_tls_set_crl_paths
int nc_client_tls_set_crl_paths(const char *crl_file, const char *crl_dir)
Deprecated.
nc_client_tls_get_crl_paths
void nc_client_tls_get_crl_paths(const char **crl_file, const char **crl_dir)
Deprecated.
nc_connect_tls
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)
nc_client_set_new_session_context_schema_mount
int nc_client_set_new_session_context_schema_mount(struct nc_session *session)
Set client session context to support schema-mount, if possible.
nc_client_set_schema_searchpath
int nc_client_set_schema_searchpath(const char *path)
Set location where libnetconf tries to search for YANG/YIN schemas.
nc_client_destroy
void nc_client_destroy(void)
Destroy all libssh and/or libssl/libcrypto dynamic memory and the client options, for both SSH and TL...
nc_client_get_schema_searchpath
const char * nc_client_get_schema_searchpath(void)
Get schema searchpath that was set by nc_client_set_schema_searchpath().
nc_client_set_new_session_context_autofill
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....
nc_client_get_thread_context
void * nc_client_get_thread_context(void)
Get thread-specific client context for sharing with some other thread using nc_client_set_thread_cont...
nc_client_set_schema_callback
int nc_client_set_schema_callback(ly_module_imp_clb clb, void *user_data)
Set callback function to get missing schemas.
nc_client_get_schema_callback
ly_module_imp_clb nc_client_get_schema_callback(void **user_data)
Get callback function used to get missing schemas.
nc_client_init
int nc_client_init(void)
Initialize client for establishing connections.
nc_client_set_thread_context
void nc_client_set_thread_context(void *context)
Use the provided thread-specific client's context in the current thread.
NC_MSG_TYPE
NC_MSG_TYPE
Enumeration of NETCONF message types.
Definition netconf.h:69
messages_client.h
libnetconf2's public functions and structures of NETCONF client messages.
netconf.h
libnetconf2's general public functions and structures definitions.
session.h
libnetconf2 session manipulation
NC_SSH_KNOWNHOSTS_MODE
NC_SSH_KNOWNHOSTS_MODE
Enumeration of host key checking and known_hosts entry adding modes.
Definition session.h:40
NC_SSH_AUTH_TYPE
NC_SSH_AUTH_TYPE
Enumeration of NETCONF SSH authentication methods.
Definition session.h:31