'\" t
.\" Title: libnutclient_tcp
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 06/21/2026
.\" Manual: NUT Manual
.\" Source: Network UPS Tools 2.8.5
.\" Language: English
.\"
.TH "LIBNUTCLIENT_TCP" "3" "06/21/2026" "Network UPS Tools 2\&.8\&.5" "NUT Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
libnutclient_tcp, nutclient_tcp_create_client, nutclient_tcp_is_connected, nutclient_tcp_disconnect, nutclient_tcp_reconnect, nutclient_tcp_set_timeout, nutclient_tcp_get_timeout, nutclient_tcp_get_ssl_caps, nutclient_tcp_is_ssl \- TCP protocol related function for Network UPS Tools high\-level client access library
.SH "SYNOPSIS"
.sp
.nf
#include
#include /* uint16_t */
#include /* time_t */
typedef NUTCLIENT_t NUTCLIENT_TCP_t;
NUTCLIENT_TCP_t nutclient_tcp_create_client(
const char* host, uint16_t port);
int nutclient_tcp_is_connected(NUTCLIENT_TCP_t client);
void nutclient_tcp_disconnect(NUTCLIENT_TCP_t client);
int nutclient_tcp_reconnect(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_timeout(NUTCLIENT_TCP_t client, time_t timeout);
time_t nutclient_tcp_get_timeout(NUTCLIENT_TCP_t client);
/* SSL (NUT STARTTLS) support, behavior may be build\-dependent
* (none/OpenSSL/NSS): */
/* Capabilities of this build, bitmask: */
#define UPSCLI_SSL_CAPS_NONE 0 /* No ability to use SSL */
#define UPSCLI_SSL_CAPS_OPENSSL 1 /* Can use OpenSSL\-specific setup */
#define UPSCLI_SSL_CAPS_NSS 2 /* Can use Mozilla NSS\-specific setup */
int nutclient_tcp_get_ssl_caps(void);
/* Is the specified client currently connected in SSL mode? */
int nutclient_tcp_is_ssl(NUTCLIENT_TCP_t client);
NUTCLIENT_TCP_t nutclient_tcp_create_client_ssl_OpenSSL(
const char* host, uint16_t port, int try_ssl,
int force_ssl, int certverify,
const char *ca_path, const char *ca_file,
const char *cert_file, const char *key_file, const char *key_pass);
void nutclient_tcp_set_ssl_config_OpenSSL(NUTCLIENT_TCP_t client,
int force_ssl, int certverify,
const char *ca_path, const char *ca_file,
const char *cert_file, const char *key_file, const char *key_pass);
NUTCLIENT_TCP_t nutclient_tcp_create_client_ssl_NSS(
const char* host, uint16_t port, int try_ssl,
int force_ssl, int certverify,
const char *certstore_path, const char *certstore_pass,
const char *certstore_prefix,
const char *certhost_name,
const char *certident_name);
void nutclient_tcp_set_ssl_config_NSS(NUTCLIENT_TCP_t client,
int force_ssl, int certverify,
const char *certstore_path, const char *certstore_pass,
const char *certstore_prefix,
const char *certhost_name,
const char *certident_name);
/* Individual SSL option getters/setters: */
void nutclient_tcp_set_ssl_try(NUTCLIENT_TCP_t client, int try_ssl);
int nutclient_tcp_get_ssl_try(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_ssl_force(NUTCLIENT_TCP_t client, int force_ssl);
int nutclient_tcp_get_ssl_force(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_ssl_certverify(NUTCLIENT_TCP_t client, int certverify);
int nutclient_tcp_get_ssl_certverify(NUTCLIENT_TCP_t client);
/* OpenSSL (PEM): Trusted CA directory: */
void nutclient_tcp_set_ssl_capath(NUTCLIENT_TCP_t client, const char* ca_path);
const char* nutclient_tcp_get_ssl_capath(NUTCLIENT_TCP_t client);
/* Trusted CA file: */
void nutclient_tcp_set_ssl_cafile(NUTCLIENT_TCP_t client, const char* ca_file);
const char* nutclient_tcp_get_ssl_cafile(NUTCLIENT_TCP_t client);
/* Client certificate (public): */
void nutclient_tcp_set_ssl_certfile(NUTCLIENT_TCP_t client, const char* cert_file);
const char* nutclient_tcp_get_ssl_certfile(NUTCLIENT_TCP_t client);
/* Client key (private): */
void nutclient_tcp_set_ssl_keyfile(NUTCLIENT_TCP_t client, const char* key_file);
const char* nutclient_tcp_get_ssl_keyfile(NUTCLIENT_TCP_t client);
/* OpenSSL and NSS: Client key (private): */
void nutclient_tcp_set_ssl_keypass(NUTCLIENT_TCP_t client, const char* key_pass);
const char* nutclient_tcp_get_ssl_keypass(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_ssl_certstore_path(NUTCLIENT_TCP_t client,
const char* certstore_path);
const char* nutclient_tcp_get_ssl_certstore_path(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_ssl_certstore_prefix(NUTCLIENT_TCP_t client,
const char* certstore_prefix);
const char* nutclient_tcp_get_ssl_certstore_prefix(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_ssl_certident_name(NUTCLIENT_TCP_t client,
const char* certident_name);
const char* nutclient_tcp_get_ssl_certident_name(NUTCLIENT_TCP_t client);
void nutclient_tcp_set_ssl_certhost_name(NUTCLIENT_TCP_t client,
const char* certhost_name);
const char* nutclient_tcp_get_ssl_certhost_name(NUTCLIENT_TCP_t client);
.fi
.SH "DESCRIPTION"
.sp
These functions allow to manage connections to \fBupsd\fR(8) using NUT TCP protocol\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
\fBnutclient_tcp_create_client()\fR
function create the
\fINUTCLIENT_TCP_t\fR
context and intend to connect to upsd at
\fIhost\fR
and
\fIport\fR\&.
.sp
The context must be freed by
\fInutclient_destroy()\fR\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIhost\fR
can be a sever name or a valid IPv4 or IPv6 address like "localhost", "127\&.0\&.0\&.1" or "::1"\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIport\fR
is a valid TCP port, generally
\fI3493\fR\&.
.RE
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
\fBnutclient_tcp_is_connected()\fR
function test if the connection is valid\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
\fBnutclient_tcp_disconnect()\fR
function force to disconnect the specified connection\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
\fBnutclient_tcp_reconnect()\fR
function force to reconnect a connection, disconnecting it if needed\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
\fBnutclient_tcp_set_timeout()\fR
function set the timeout duration for I/O operations\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
\fBnutclient_tcp_get_timeout()\fR
function retrieve the timeout duration for I/O operations\&.
.sp
\fItimeout\fR
values are specified in seconds, use negative values for blocking\&.
.RE
.SH "SEE ALSO"
.sp
\fBlibnutclient\fR(3) \fBlibnutclient_general\fR(3)