2 * Copyright (C) 2018 NetDEF, Inc.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the Free
7 * Software Foundation; either version 2 of the License, or (at your option)
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * You should have received a copy of the GNU General Public License along
16 * with this program; see the file COPYING; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 #ifndef _FRR_NORTHBOUND_CLI_H_
21 #define _FRR_NORTHBOUND_CLI_H_
23 #include "northbound.h"
29 /* Possible formats in which a configuration can be displayed. */
36 extern struct nb_config
*vty_shared_candidate_config
;
39 * Enqueue change to be applied in the candidate configuration.
45 * XPath (absolute or relative) of the configuration option being edited.
48 * Operation to apply (either NB_OP_CREATE, NB_OP_MODIFY or NB_OP_DELETE).
51 * New value of the configuration option. Should be NULL for typeless YANG
52 * data (e.g. presence-containers). For convenience, NULL can also be used
53 * to restore a leaf to its default value.
55 extern void nb_cli_enqueue_change(struct vty
*vty
, const char *xpath
,
56 enum nb_operation operation
,
60 * Apply enqueued changes to the candidate configuration, do not batch,
61 * and apply any pending commits along with the currently enqueued.
67 * Prepend the given XPath (absolute or relative) to all enqueued
68 * configuration changes. This is an optional parameter.
71 * CMD_SUCCESS on success, CMD_WARNING_CONFIG_FAILED otherwise.
73 extern int nb_cli_apply_changes_clear_pending(struct vty
*vty
,
74 const char *xpath_base_fmt
, ...)
78 * Apply enqueued changes to the candidate configuration, this function
79 * may not immediately apply the changes, instead adding them to a pending
86 * Prepend the given XPath (absolute or relative) to all enqueued
87 * configuration changes. This is an optional parameter.
90 * CMD_SUCCESS on success, CMD_WARNING_CONFIG_FAILED otherwise.
92 extern int nb_cli_apply_changes(struct vty
*vty
, const char *xpath_base_fmt
,
96 * Execute a YANG RPC or Action.
99 * The vty terminal to dump any error.
102 * XPath of the YANG RPC or Action node.
105 * List of 'yang_data' structures containing the RPC input parameters. It
106 * can be set to NULL when there are no input parameters.
109 * List of 'yang_data' structures used to retrieve the RPC output parameters.
110 * It can be set to NULL when it's known that the given YANG RPC or Action
111 * doesn't have any output parameters.
114 * CMD_SUCCESS on success, CMD_WARNING otherwise.
116 extern int nb_cli_rpc(struct vty
*vty
, const char *xpath
, struct list
*input
,
117 struct list
*output
);
120 * Show CLI commands associated to the given YANG data node.
123 * The vty terminal to dump the configuration to.
126 * libyang data node that should be shown in the form of CLI commands.
129 * Specify whether to display default configuration values or not.
131 extern void nb_cli_show_dnode_cmds(struct vty
*vty
,
132 const struct lyd_node
*dnode
,
136 * Perform pending commit, if any.
142 * CMD_SUCCESS on success (or no pending), CMD_WARNING_CONFIG_FAILED
145 extern int nb_cli_pending_commit_check(struct vty
*vty
);
147 /* Prototypes of internal functions. */
148 extern void nb_cli_show_config_prepare(struct nb_config
*config
,
150 extern void nb_cli_confirmed_commit_clean(struct vty
*vty
);
151 extern int nb_cli_confirmed_commit_rollback(struct vty
*vty
);
152 extern void nb_cli_install_default(int node
);
153 extern void nb_cli_init(struct thread_master
*tm
);
154 extern void nb_cli_terminate(void);
160 #endif /* _FRR_NORTHBOUND_CLI_H_ */