summaryrefslogtreecommitdiffstats
path: root/lib/northbound_cli.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/northbound_cli.h')
-rw-r--r--lib/northbound_cli.h159
1 files changed, 159 insertions, 0 deletions
diff --git a/lib/northbound_cli.h b/lib/northbound_cli.h
new file mode 100644
index 0000000..e472425
--- /dev/null
+++ b/lib/northbound_cli.h
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2018 NetDEF, Inc.
+ * Renato Westphal
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _FRR_NORTHBOUND_CLI_H_
+#define _FRR_NORTHBOUND_CLI_H_
+
+#include "northbound.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Possible formats in which a configuration can be displayed. */
+enum nb_cfg_format {
+ NB_CFG_FMT_CMDS = 0,
+ NB_CFG_FMT_JSON,
+ NB_CFG_FMT_XML,
+};
+
+extern struct nb_config *vty_shared_candidate_config;
+
+/*
+ * Enqueue change to be applied in the candidate configuration.
+ *
+ * vty
+ * The vty context.
+ *
+ * xpath
+ * XPath (absolute or relative) of the configuration option being edited.
+ *
+ * operation
+ * Operation to apply (either NB_OP_CREATE, NB_OP_MODIFY or NB_OP_DELETE).
+ *
+ * value
+ * New value of the configuration option. Should be NULL for typeless YANG
+ * data (e.g. presence-containers). For convenience, NULL can also be used
+ * to restore a leaf to its default value.
+ */
+extern void nb_cli_enqueue_change(struct vty *vty, const char *xpath,
+ enum nb_operation operation,
+ const char *value);
+
+/*
+ * Apply enqueued changes to the candidate configuration, do not batch,
+ * and apply any pending commits along with the currently enqueued.
+ *
+ * vty
+ * The vty context.
+ *
+ * xpath_base_fmt
+ * Prepend the given XPath (absolute or relative) to all enqueued
+ * configuration changes. This is an optional parameter.
+ *
+ * Returns:
+ * CMD_SUCCESS on success, CMD_WARNING_CONFIG_FAILED otherwise.
+ */
+extern int nb_cli_apply_changes_clear_pending(struct vty *vty,
+ const char *xpath_base_fmt, ...);
+
+/*
+ * Apply enqueued changes to the candidate configuration, this function
+ * may not immediately apply the changes, instead adding them to a pending
+ * queue.
+ *
+ * vty
+ * The vty context.
+ *
+ * xpath_base_fmt
+ * Prepend the given XPath (absolute or relative) to all enqueued
+ * configuration changes. This is an optional parameter.
+ *
+ * Returns:
+ * CMD_SUCCESS on success, CMD_WARNING_CONFIG_FAILED otherwise.
+ */
+extern int nb_cli_apply_changes(struct vty *vty, const char *xpath_base_fmt,
+ ...);
+
+/*
+ * Execute a YANG RPC or Action.
+ *
+ * vty
+ * The vty terminal to dump any error.
+ *
+ * xpath
+ * XPath of the YANG RPC or Action node.
+ *
+ * input
+ * List of 'yang_data' structures containing the RPC input parameters. It
+ * can be set to NULL when there are no input parameters.
+ *
+ * output
+ * List of 'yang_data' structures used to retrieve the RPC output parameters.
+ * It can be set to NULL when it's known that the given YANG RPC or Action
+ * doesn't have any output parameters.
+ *
+ * Returns:
+ * CMD_SUCCESS on success, CMD_WARNING otherwise.
+ */
+extern int nb_cli_rpc(struct vty *vty, const char *xpath, struct list *input,
+ struct list *output);
+
+/*
+ * Show CLI commands associated to the given YANG data node.
+ *
+ * vty
+ * The vty terminal to dump the configuration to.
+ *
+ * dnode
+ * libyang data node that should be shown in the form of CLI commands.
+ *
+ * show_defaults
+ * Specify whether to display default configuration values or not.
+ */
+extern void nb_cli_show_dnode_cmds(struct vty *vty,
+ const struct lyd_node *dnode,
+ bool show_defaults);
+
+/*
+ * Perform pending commit, if any.
+ *
+ * vty
+ * The vty context.
+ *
+ * Returns
+ * CMD_SUCCESS on success (or no pending), CMD_WARNING_CONFIG_FAILED
+ * otherwise.
+ */
+extern int nb_cli_pending_commit_check(struct vty *vty);
+
+/* Prototypes of internal functions. */
+extern void nb_cli_show_config_prepare(struct nb_config *config,
+ bool with_defaults);
+extern void nb_cli_confirmed_commit_clean(struct vty *vty);
+extern int nb_cli_confirmed_commit_rollback(struct vty *vty);
+extern void nb_cli_install_default(int node);
+extern void nb_cli_init(struct thread_master *tm);
+extern void nb_cli_terminate(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FRR_NORTHBOUND_CLI_H_ */