1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (C) 2018 NetDEF, Inc.
7 #ifndef _FRR_NORTHBOUND_CLI_H_
8 #define _FRR_NORTHBOUND_CLI_H_
10 #include "northbound.h"
16 /* Possible formats in which a configuration can be displayed. */
23 extern struct nb_config
*vty_shared_candidate_config
;
26 * Enqueue change to be applied in the candidate configuration.
32 * XPath (absolute or relative) of the configuration option being edited.
35 * Operation to apply (either NB_OP_CREATE, NB_OP_MODIFY or NB_OP_DELETE).
38 * New value of the configuration option. Should be NULL for typeless YANG
39 * data (e.g. presence-containers). For convenience, NULL can also be used
40 * to restore a leaf to its default value.
42 extern void nb_cli_enqueue_change(struct vty
*vty
, const char *xpath
,
43 enum nb_operation operation
,
47 * Apply enqueued changes to the candidate configuration, do not batch,
48 * and apply any pending commits along with the currently enqueued.
54 * Prepend the given XPath (absolute or relative) to all enqueued
55 * configuration changes. This is an optional parameter.
58 * CMD_SUCCESS on success, CMD_WARNING_CONFIG_FAILED otherwise.
60 extern int nb_cli_apply_changes_clear_pending(struct vty
*vty
,
61 const char *xpath_base_fmt
, ...)
65 * Apply enqueued changes to the candidate configuration, this function
66 * may not immediately apply the changes, instead adding them to a pending
73 * Prepend the given XPath (absolute or relative) to all enqueued
74 * configuration changes. This is an optional parameter.
77 * CMD_SUCCESS on success, CMD_WARNING_CONFIG_FAILED otherwise.
79 extern int nb_cli_apply_changes(struct vty
*vty
, const char *xpath_base_fmt
,
83 * Execute a YANG RPC or Action.
86 * The vty terminal to dump any error.
89 * XPath of the YANG RPC or Action node.
92 * List of 'yang_data' structures containing the RPC input parameters. It
93 * can be set to NULL when there are no input parameters.
96 * List of 'yang_data' structures used to retrieve the RPC output parameters.
97 * It can be set to NULL when it's known that the given YANG RPC or Action
98 * doesn't have any output parameters.
101 * CMD_SUCCESS on success, CMD_WARNING otherwise.
103 extern int nb_cli_rpc(struct vty
*vty
, const char *xpath
, struct list
*input
,
104 struct list
*output
);
107 * Show CLI commands associated to the given YANG data node.
110 * The vty terminal to dump the configuration to.
113 * libyang data node that should be shown in the form of CLI commands.
116 * Specify whether to display default configuration values or not.
118 extern void nb_cli_show_dnode_cmds(struct vty
*vty
,
119 const struct lyd_node
*dnode
,
123 * Perform pending commit, if any.
129 * CMD_SUCCESS on success (or no pending), CMD_WARNING_CONFIG_FAILED
132 extern int nb_cli_pending_commit_check(struct vty
*vty
);
134 /* Prototypes of internal functions. */
135 extern void nb_cli_show_config_prepare(struct nb_config
*config
,
137 extern void nb_cli_confirmed_commit_clean(struct vty
*vty
);
138 extern int nb_cli_confirmed_commit_rollback(struct vty
*vty
);
139 extern void nb_cli_install_default(int node
);
140 extern void nb_cli_init(struct thread_master
*tm
);
141 extern void nb_cli_terminate(void);
147 #endif /* _FRR_NORTHBOUND_CLI_H_ */