blob: 68a93d0b046d8978ea341a98b5d1da35b9c599a9 [file] [log] [blame]
Michal Vasko7bcb48e2016-01-15 10:28:54 +01001/**
2 * \file messages_client.h
3 * \author Radek Krejci <rkrejci@cesnet.cz>
4 * \author Michal Vasko <mvasko@cesnet.cz>
5 * \brief libnetconf2's public functions and structures of NETCONF client messages.
6 *
7 * Copyright (c) 2015 CESNET, z.s.p.o.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 * 3. Neither the name of the Company nor the names of its contributors
19 * may be used to endorse or promote products derived from this
20 * software without specific prior written permission.
21 *
22 */
23
24#ifndef NC_MESSAGES_CLIENT_H_
25#define NC_MESSAGES_CLIENT_H_
26
27#include <stdint.h>
28
29#include "netconf.h"
30
Michal Vaskof0537d82016-01-29 14:42:38 +010031/**
32 * @brief Enumeration of RPC types
33 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010034typedef enum {
Michal Vasko7f1c78b2016-01-19 09:52:14 +010035 NC_RPC_UNKNOWN = 0, /**< invalid RPC. */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010036 NC_RPC_GENERIC, /**< user-defined generic RPC. */
37
38 /* ietf-netconf */
39 NC_RPC_GETCONFIG, /**< \<get-config\> RPC. */
40 NC_RPC_EDIT, /**< \<edit-config\> RPC. */
41 NC_RPC_COPY, /**< \<copy-config\> RPC. */
42 NC_RPC_DELETE, /**< \<delete-config\> RPC. */
43 NC_RPC_LOCK, /**< \<lock\> RPC. */
44 NC_RPC_UNLOCK, /**< \<unlock\> RPC. */
45 NC_RPC_GET, /**< \<get\> RPC. */
46 /* NC_RPC_CLOSE is not defined since sending \<close-session\> is done by nc_session_free() */
47 NC_RPC_KILL, /**< \<kill-session\> RPC. */
48 NC_RPC_COMMIT, /**< \<commit\> RPC. */
49 NC_RPC_DISCARD, /**< \<discard-changes\> RPC. */
50 NC_RPC_CANCEL, /**< \<cancel-commit\> RPC. */
51 NC_RPC_VALIDATE, /**< \<validate\> RPC. */
52
53 /* ietf-netconf-monitoring */
54 NC_RPC_GETSCHEMA, /**< \<get-schema\> RPC. */
55
56 /* notifications */
57 NC_RPC_SUBSCRIBE /**< \<create-subscription\> RPC. */
58} NC_RPC_TYPE;
59
Michal Vaskof0537d82016-01-29 14:42:38 +010060/**
61 * @brief Enumeration of \<edit-config\> default operation
62 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010063typedef enum {
Michal Vaskof0537d82016-01-29 14:42:38 +010064 NC_RPC_EDIT_DFLTOP_UNKNOWN = 0, /**< unknown default operation */
65 NC_RPC_EDIT_DFLTOP_MERGE, /**< default operation merge */
66 NC_RPC_EDIT_DFLTOP_REPLACE, /**< default operation replace */
67 NC_RPC_EDIT_DFLTOP_NONE /**< default operation none */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010068} NC_RPC_EDIT_DFLTOP;
69
Michal Vaskof0537d82016-01-29 14:42:38 +010070/**
71 * @brief Enumeration of \<edit-config\> test option
72 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010073typedef enum {
Michal Vaskof0537d82016-01-29 14:42:38 +010074 NC_RPC_EDIT_TESTOPT_UNKNOWN = 0, /**< unknown test option */
75 NC_RPC_EDIT_TESTOPT_TESTSET, /**< test-then-set option */
76 NC_RPC_EDIT_TESTOPT_SET, /**< set option */
77 NC_RPC_EDIT_TESTOPT_TEST /**< test-only option */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010078} NC_RPC_EDIT_TESTOPT;
79
Michal Vaskof0537d82016-01-29 14:42:38 +010080/**
81 * @brief Enumeration of \<edit-config\> error option
82 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010083typedef enum {
Michal Vaskof0537d82016-01-29 14:42:38 +010084 NC_RPC_EDIT_ERROPT_UNKNOWN = 0, /**< unknown error option */
85 NC_RPC_EDIT_ERROPT_STOP, /**< stop-on-error option */
86 NC_RPC_EDIT_ERROPT_CONTINUE, /**< continue-on-error option */
87 NC_RPC_EDIT_ERROPT_ROLLBACK /**< rollback-on-error option */
Michal Vasko7bcb48e2016-01-15 10:28:54 +010088} NC_RPC_EDIT_ERROPT;
89
90/**
91 * @brief NETCONF error structure representation
92 */
93struct nc_err {
94 /**
95 * @brief \<error-type\>, error layer where the error occurred.
96 */
97 const char *type;
98 /**
99 * @brief \<error-tag\>.
100 */
101 const char *tag;
102 /**
103 * @brief \<error-severity\>.
104 */
105 const char *severity;
106 /**
107 * @brief \<error-app-tag\>, the data-model-specific or implementation-specific error condition, if one exists.
108 */
109 const char *apptag;
110 /**
111 * @brief \<error-path\>, XPATH expression identifying the element with the error.
112 */
113 const char *path;
114 /**
115 * @brief \<error-message\>, Human-readable description of the error.
116 */
117 const char *message;
118 const char *message_lang;
119
120 /* <error-info> */
121
122 /**
123 * @brief \<session-id\>, session ID of the session holding the requested lock.
124 */
125 const char *sid;
126 /**
127 * @brief \<bad-attr\>, the name of the data-model-specific XML attribute that caused the error.
128 */
129 const char **attr;
130 uint16_t attr_count;
131 /**
132 * @brief \<bad-element\>, the name of the data-model-specific XML element that caused the error.
133 */
134 const char **elem;
135 uint16_t elem_count;
136 /**
137 * @brief \<bad-namespace\>, the name of the unexpected XML namespace that caused the error.
138 */
139 const char **ns;
140 uint16_t ns_count;
141 /**
142 * @brief Remaining non-standard elements.
143 */
144 struct lyxml_elem **other;
145 uint16_t other_count;
146};
147
148/**
149 * @brief NETCONF client RPC object
150 */
151struct nc_rpc;
152
Michal Vasko1a38c862016-01-15 15:50:07 +0100153/**
154 * @brief NETCONF client rpc-reply object
155 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100156struct nc_reply {
Michal Vaskof0537d82016-01-29 14:42:38 +0100157 NC_RPL type; /**< reply type */
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100158};
159
Michal Vasko1a38c862016-01-15 15:50:07 +0100160/**
161 * @brief NETCONF client data rpc-reply object
162 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100163struct nc_reply_data {
164 NC_RPL type; /**< NC_RPL_DATA */
165 struct lyd_node *data; /**< libyang data tree */
166};
167
Michal Vasko1a38c862016-01-15 15:50:07 +0100168/**
169 * @brief NETCONF client error rpc-reply object
170 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100171struct nc_reply_error {
Michal Vasko1a38c862016-01-15 15:50:07 +0100172 NC_RPL type; /**< NC_RPL_ERROR */
173 const struct nc_err *err; /**< errors, any of the values inside can be NULL */
174 uint32_t count; /**< number of error structures */
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100175};
176
Michal Vasko1a38c862016-01-15 15:50:07 +0100177/**
178 * @brief NETCONF client notification object
179 */
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100180struct nc_notif {
181 NC_RPL type; /**< NC_RPL_NOTIF */
182 const char *datetime; /**< eventTime of the notification */
183 struct lyd_node *tree; /**< libyang data tree of the message */
184};
185
186/**
187 * @brief Get the type of the RPC
188 *
189 * @param[in] rpc RPC to check the type of.
190 * @return Type of \p rpc.
191 */
192NC_RPC_TYPE nc_rpc_get_type(const struct nc_rpc *rpc);
193
194/**
195 * @brief Create a generic NETCONF RPC
196 *
197 * Note that created object can be sent via any NETCONF session that shares the context
198 * of the \p data.
199 *
200 * @param[in] data NETCONF RPC data as a data tree.
201 * @param[in] paramtype How to further manage data parameters.
202 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
203 */
204struct nc_rpc *nc_rpc_generic(const struct lyd_node *data, NC_PARAMTYPE paramtype);
205
206/**
207 * @brief Create a generic NETCONF RPC from an XML string
208 *
209 * Note that functions to create any RPC object do not check validity of the provided
210 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100211 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100212 * check. Created object can be sent via any NETCONF session which supports all the
213 * needed NETCONF capabilities for the RPC.
214 *
215 * @param[in] xml_str NETCONF RPC data as an XML string.
216 * @param[in] paramtype How to further manage data parameters.
217 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
218 */
219struct nc_rpc *nc_rpc_generic_xml(const char *xml_str, NC_PARAMTYPE paramtype);
220
221/**
222 * @brief Create NETCONF RPC \<get-config\>
223 *
224 * Note that functions to create any RPC object do not check validity of the provided
225 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100226 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100227 * check. Created object can be sent via any NETCONF session which supports all the
228 * needed NETCONF capabilities for the RPC.
229 *
230 * @param[in] source Source datastore being queried.
231 * @param[in] filter Optional filter data, an XML subtree or XPath expression.
232 * @param[in] wd_mode Optional with-defaults capability mode.
233 * @param[in] paramtype How to further manage data parameters.
234 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
235 */
236struct nc_rpc *nc_rpc_getconfig(NC_DATASTORE source, const char *filter, NC_WD_MODE wd_mode,
237 NC_PARAMTYPE paramtype);
238
239/**
240 * @brief Create NETCONF RPC \<edit-config\>
241 *
242 * Note that functions to create any RPC object do not check validity of the provided
243 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100244 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100245 * check. Created object can be sent via any NETCONF session which supports all the
246 * needed NETCONF capabilities for the RPC.
247 *
248 * @param[in] target Target datastore being edited.
249 * @param[in] default_op Optional default operation.
250 * @param[in] test_opt Optional test option.
251 * @param[in] error_opt Optional error option.
252 * @param[in] edit_content Config or URL where the config to perform is to be found.
253 * @param[in] paramtype How to further manage data parameters.
254 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
255 */
256struct nc_rpc *nc_rpc_edit(NC_DATASTORE target, NC_RPC_EDIT_DFLTOP default_op, NC_RPC_EDIT_TESTOPT test_opt,
257 NC_RPC_EDIT_ERROPT error_opt, const char *edit_content, NC_PARAMTYPE paramtype);
258
259/**
260 * @brief Create NETCONF RPC \<copy-config\>
261 *
262 * Note that functions to create any RPC object do not check validity of the provided
263 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100264 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100265 * check. Created object can be sent via any NETCONF session which supports all the
266 * needed NETCONF capabilities for the RPC.
267 *
268 * @param[in] target Target datastore.
269 * @param[in] url_trg Used instead \p target if the target is an URL.
270 * @param[in] source Source datastore.
271 * @param[in] url_or_config_src Used instead \p source if the source is an URL or a config.
272 * @param[in] wd_mode Optional with-defaults capability mode.
273 * @param[in] paramtype How to further manage data parameters.
274 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
275 */
276struct nc_rpc *nc_rpc_copy(NC_DATASTORE target, const char *url_trg, NC_DATASTORE source,
277 const char *url_or_config_src, NC_WD_MODE wd_mode, NC_PARAMTYPE paramtype);
278
279/**
280 * @brief Create NETCONF RPC \<delete-config\>
281 *
282 * Note that functions to create any RPC object do not check validity of the provided
283 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100284 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100285 * check. Created object can be sent via any NETCONF session which supports all the
286 * needed NETCONF capabilities for the RPC.
287 *
288 * @param[in] target Target datastore to delete.
289 * @param[in] url Used instead \p target if the target is an URL.
290 * @param[in] paramtype How to further manage data parameters.
291 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
292 */
293struct nc_rpc *nc_rpc_delete(NC_DATASTORE target, const char *url, NC_PARAMTYPE paramtype);
294
295/**
296 * @brief Create NETCONF RPC \<lock\>
297 *
298 * Note that functions to create any RPC object do not check validity of the provided
299 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100300 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100301 * check. Created object can be sent via any NETCONF session which supports all the
302 * needed NETCONF capabilities for the RPC.
303 *
304 * @param[in] target Target datastore of the operation.
305 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
306 */
307struct nc_rpc *nc_rpc_lock(NC_DATASTORE target);
308
309/**
310 * @brief Create NETCONF RPC \<unlock\>
311 *
312 * Note that functions to create any RPC object do not check validity of the provided
313 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100314 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100315 * check. Created object can be sent via any NETCONF session which supports all the
316 * needed NETCONF capabilities for the RPC.
317 *
318 * @param[in] target Target datastore of the operation.
319 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
320 */
321struct nc_rpc *nc_rpc_unlock(NC_DATASTORE target);
322
323/**
324 * @brief Create NETCONF RPC \<get\>
325 *
326 * Note that functions to create any RPC object do not check validity of the provided
327 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100328 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100329 * check. Created object can be sent via any NETCONF session which supports all the
330 * needed NETCONF capabilities for the RPC.
331 *
332 * @param[in] filter Optional filter data, an XML subtree or XPath expression.
333 * @param[in] wd_mode Optional with-defaults capability mode.
334 * @param[in] paramtype How to further manage data parameters.
335 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
336 */
337struct nc_rpc *nc_rpc_get(const char *filter, NC_WD_MODE wd_mode, NC_PARAMTYPE paramtype);
338
339/**
340 * @brief Create NETCONF RPC \<kill-session\>
341 *
342 * Note that functions to create any RPC object do not check validity of the provided
343 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100344 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100345 * check. Created object can be sent via any NETCONF session which supports all the
346 * needed NETCONF capabilities for the RPC.
347 *
348 * @param[in] session_id Session ID of the session to kill.
349 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
350 */
351struct nc_rpc *nc_rpc_kill(uint32_t session_id);
352
353/**
354 * @brief Create NETCONF RPC \<commit\>
355 *
356 * Note that functions to create any RPC object do not check validity of the provided
357 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100358 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100359 * check. Created object can be sent via any NETCONF session which supports all the
360 * needed NETCONF capabilities for the RPC.
361 *
362 * @param[in] confirmed Whether the commit is to be confirmed.
363 * @param[in] confirm_timeout Optional confirm timeout.
364 * @param[in] persist Optional identification string of a new persistent confirmed commit.
365 * @param[in] persist_id Optional identification string of a persistent confirmed commit to be commited.
366 * @param[in] paramtype How to further manage data parameters.
367 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
368 */
369struct nc_rpc *nc_rpc_commit(int confirmed, uint32_t confirm_timeout, const char *persist, const char *persist_id,
370 NC_PARAMTYPE paramtype);
371
372/**
373 * @brief Create NETCONF RPC \<discard-changes\>
374 *
375 * Note that functions to create any RPC object do not check validity of the provided
376 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100377 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100378 * check. Created object can be sent via any NETCONF session which supports all the
379 * needed NETCONF capabilities for the RPC.
380 *
381 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
382 */
383struct nc_rpc *nc_rpc_discard(void);
384
385/**
386 * @brief Create NETCONF RPC \<cancel-commit\>
387 *
388 * Note that functions to create any RPC object do not check validity of the provided
389 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100390 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100391 * check. Created object can be sent via any NETCONF session which supports all the
392 * needed NETCONF capabilities for the RPC.
393 *
394 * @param[in] persist_id Optional identification string of a persistent confirmed commit.
395 * @param[in] paramtype How to further manage data parameters.
396 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
397 */
398struct nc_rpc *nc_rpc_cancel(const char *persist_id, NC_PARAMTYPE paramtype);
399
400/**
401 * @brief Create NETCONF RPC \<validate\>
402 *
403 * Note that functions to create any RPC object do not check validity of the provided
404 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100405 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100406 * check. Created object can be sent via any NETCONF session which supports all the
407 * needed NETCONF capabilities for the RPC.
408 *
409 * @param[in] source Source datastore being validated.
410 * @param[in] url_or_config Usedn instead \p source if the source is an URL or a config.
411 * @param[in] paramtype How to further manage data parameters.
412 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
413 */
414struct nc_rpc *nc_rpc_validate(NC_DATASTORE source, const char *url_or_config, NC_PARAMTYPE paramtype);
415
416/**
417 * @brief Create NETCONF RPC \<get-schema\>
418 *
419 * Note that functions to create any RPC object do not check validity of the provided
420 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100421 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100422 * check. Created object can be sent via any NETCONF session which supports all the
423 * needed NETCONF capabilities for the RPC.
424 *
425 * @param[in] identifier Requested model identifier.
426 * @param[in] version Optional model version, either YANG version (1.0/1.1) or revision date.
427 * @param[in] format Optional format of the model (default is YANG).
428 * @param[in] paramtype How to further manage data parameters.
429 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
430 */
431struct nc_rpc *nc_rpc_getschema(const char *identifier, const char *version, const char *format, NC_PARAMTYPE paramtype);
432
433/**
434 * @brief Create NETCONF RPC \<create-subscription\>
435 *
436 * Note that functions to create any RPC object do not check validity of the provided
437 * parameters. It is checked later while sending the RPC via a specific NETCONF session
Michal Vaskof0537d82016-01-29 14:42:38 +0100438 * (#nc_send_rpc()) since the NETCONF capabilities of the session are needed for such a
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100439 * check. Created object can be sent via any NETCONF session which supports all the
440 * needed NETCONF capabilities for the RPC.
441 *
442 * @param[in] stream_name Optional name of a NETCONF stream to subscribe to.
443 * @param[in] filter Optional filter data, an XML subtree or XPath expression.
444 * @param[in] start_time Optional YANG datetime identifying the start of the subscription.
445 * @param[in] stop_time Optional YANG datetime identifying the end of the subscription.
446 * @param[in] paramtype How to further manage data parameters.
447 * @return Created RPC object to send via a NETCONF session or NULL in case of (memory allocation) error.
448 */
449struct nc_rpc *nc_rpc_subscribe(const char *stream_name, const char *filter, const char *start_time,
450 const char *stop_time, NC_PARAMTYPE paramtype);
451
452/**
453 * @brief Free the NETCONF RPC object.
Michal Vaskof0537d82016-01-29 14:42:38 +0100454 *
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100455 * @param[in] rpc Object to free.
456 */
457void nc_rpc_free(struct nc_rpc *rpc);
458
459/**
460 * @brief Free the NETCONF RPC reply object.
Michal Vaskof0537d82016-01-29 14:42:38 +0100461 *
462 * @param[in] reply Object to free.
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100463 */
464void nc_reply_free(struct nc_reply *reply);
465
Michal Vasko1a38c862016-01-15 15:50:07 +0100466/**
467 * @brief Free the NETCONF Notification object.
Michal Vaskof0537d82016-01-29 14:42:38 +0100468 *
469 * @param[in] notif Object to free.
Michal Vasko1a38c862016-01-15 15:50:07 +0100470 */
471void nc_notif_free(struct nc_notif *notif);
472
Michal Vasko7bcb48e2016-01-15 10:28:54 +0100473#endif /* NC_MESSAGES_CLIENT_H_ */