Client-side NETCONF session manipulation.
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_unix (const char *address, struct ly_ctx *ctx) |
| Connect to the NETCONF server via unix socket. More...
|
|
const char *const * | nc_session_get_cpblts (const struct nc_session *session) |
| Get session capabilities. More...
|
|
const char * | nc_session_cpblt (const struct nc_session *session, const char *capab) |
| Check capability presence in a session. More...
|
|
int | nc_session_ntf_thread_running (const struct nc_session *session) |
| Check whether the session has a notification thread running. More...
|
|
NC_MSG_TYPE | nc_recv_reply (struct nc_session *session, struct nc_rpc *rpc, uint64_t msgid, int timeout, int parseroptions, struct nc_reply **reply) |
| Receive NETCONF RPC reply. More...
|
|
NC_MSG_TYPE | nc_recv_notif (struct nc_session *session, int timeout, struct nc_notif **notif) |
| Receive NETCONF Notification. More...
|
|
int | nc_recv_notif_dispatch (struct nc_session *session, void(*notif_clb)(struct nc_session *session, const struct nc_notif *notif)) |
| Receive NETCONF Notifications in a separate thread until the session is terminated or <notificationComplete> is received. 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...
|
|
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...
|
|
Client-side NETCONF session manipulation.
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.
Transport layer is supposed to be already set. Function do not cover authentication or any other manipulation with the transport layer, it only establish NETCONF session by sending and processing NETCONF <hello> messages.
- Parameters
-
[in] | fdin | Input file descriptor for reading (clear) data from NETCONF server. |
[in] | fdout | Output file descriptor for writing (clear) data for NETCONF server. |
[in] | ctx | Optional parameter. If set, provides strict YANG context for the session (ignoring what is actually supported by the server side). If not set, YANG context is created for the session using <get-schema> (if supported by the server side) or/and by searching for YANG schemas in the searchpath (see nc_client_schema_searchpath()). In every case except not providing context to connect to a server supporting <get-schema> it is possible that the session context will not include all the models supported by the server. |
- Returns
- Created NETCONF session object or NULL in case of error.
struct nc_session* nc_connect_unix |
( |
const char * |
address, |
|
|
struct ly_ctx * |
ctx |
|
) |
| |
Connect to the NETCONF server via unix socket.
Connect to netconf server via an unix socket. Function do not cover authentication or any other manipulation with the transport layer, it only establish NETCONF session by sending and processing NETCONF <hello> messages.
- Parameters
-
[in] | address | Path to the unix socket. |
[in] | ctx | Optional parameter. If set, provides strict YANG context for the session (ignoring what is actually supported by the server side). If not set, YANG context is created for the session using <get-schema> (if supported by the server side) or/and by searching for YANG schemas in the searchpath (see nc_client_schema_searchpath()). In every case except not providing context to connect to a server supporting <get-schema> it is possible that the session context will not include all the models supported by the server. |
- Returns
- Created NETCONF session object or NULL in case of error.
const char* const* nc_session_get_cpblts |
( |
const struct nc_session * |
session | ) |
|
Get session capabilities.
- Parameters
-
[in] | session | Session to get the information from. |
- Returns
- NULL-terminated array of the
session
capabilities.
const char* nc_session_cpblt |
( |
const struct nc_session * |
session, |
|
|
const char * |
capab |
|
) |
| |
Check capability presence in a session.
- Parameters
-
[in] | session | Session to check. |
[in] | capab | Capability to look for, capability with any additional suffix will match. |
- Returns
- Matching capability, NULL if none found.
int nc_session_ntf_thread_running |
( |
const struct nc_session * |
session | ) |
|
Check whether the session has a notification thread running.
- Parameters
-
[in] | session | Session to check. |
- Returns
- 1 if notfication thread is running, 0 otherwise.
NC_MSG_TYPE nc_recv_reply |
( |
struct nc_session * |
session, |
|
|
struct nc_rpc * |
rpc, |
|
|
uint64_t |
msgid, |
|
|
int |
timeout, |
|
|
int |
parseroptions, |
|
|
struct nc_reply ** |
reply |
|
) |
| |
Receive NETCONF RPC reply.
Be careful, normally there is a whole RPC reply (output) of an RPC in the reply
. However, if a reply to <get> or <get-config> RPC is received, the reply
is actually the configuration (with either state data or not). This means, for example, that the reply data in these cases should not be validated with LYD_OPT_RPCREPLY, but LYD_OPT_GET and LYD_OPT_GETCONFIG, respectively.
- Parameters
-
[in] | session | NETCONF session from which the function gets data. It must be the client side session object. |
[in] | rpc | Original RPC this should be the reply to. |
[in] | msgid | Expected message ID of the reply. |
[in] | timeout | Timeout for reading in milliseconds. Use negative value for infinite waiting and 0 for immediate return if data are not available on the wire. |
[in] | parseroptions | libyang parseroptions flags, do not set the data type, it is set internally. LYD_OPT_DESTRUCT and LYD_OPT_NOSIBLINGS is ignored. |
[out] | reply | Resulting object of NETCONF RPC reply. Set only on NC_MSG_REPLY and NC_MSG_REPLY_ERR_MSGID return. |
- Returns
- NC_MSG_REPLY for success, NC_MSG_WOULDBLOCK if
timeout
has elapsed, NC_MSG_ERROR if reading has failed, NC_MSG_NOTIF if a notification was read instead (call this function again to get the reply), and NC_MSG_REPLY_ERR_MSGID if a reply with missing or wrong message-id was received.
NC_MSG_TYPE nc_recv_notif |
( |
struct nc_session * |
session, |
|
|
int |
timeout, |
|
|
struct nc_notif ** |
notif |
|
) |
| |
Receive NETCONF Notification.
- Parameters
-
[in] | session | NETCONF session from which the function gets data. It must be the client side session object. |
[in] | timeout | Timeout for reading in milliseconds. Use negative value for infinite waiting and 0 for immediate return if data are not available on the wire. |
[out] | notif | Resulting object of NETCONF Notification. |
- Returns
- NC_MSG_NOTIF for success, NC_MSG_WOULDBLOCK if
timeout
has elapsed, NC_MSG_ERROR if reading has failed, and NC_MSG_REPLY if a reply was read instead (call this function again to get a notification).
int nc_recv_notif_dispatch |
( |
struct nc_session * |
session, |
|
|
void(*)(struct nc_session *session, const struct nc_notif *notif) |
notif_clb |
|
) |
| |
Receive NETCONF Notifications in a separate thread until the session is terminated or <notificationComplete> is received.
- Parameters
-
[in] | session | Netconf session to read notifications from. |
[in] | notif_clb | Function that is called for every received notification (including <notificationComplete>). Parameters are the session the notification was received on and the notification itself. |
- Returns
- 0 if the thread was successfully created, -1 on error.
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.
- Parameters
-
[in] | session | NETCONF session where the RPC will be written. |
[in] | rpc | NETCOFN RPC object to send via specified session. Object can be created by nc_rpc_lock(), nc_rpc_unlock() and nc_rpc_generic() functions. |
[in] | timeout | Timeout for writing in milliseconds. Use negative value for infinite waiting and 0 for return if data cannot be sent immediately. |
[out] | msgid | If RPC was successfully sent, this is it's message ID. |
- Returns
- NC_MSG_RPC on success, NC_MSG_WOULDBLOCK in case of a busy session, and NC_MSG_ERROR on error.
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.
Generally, no such data should be worked with, so use this function only when you know what you are doing and you understand the consequences.
- Parameters
-
[in] | session | NETCONF client session. |