Coverage Report

Created: 2025-08-28 06:29

/src/frr/lib/vty.h
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/* Virtual terminal [aka TeletYpe] interface routine
3
 * Copyright (C) 1997 Kunihiro Ishiguro
4
 */
5
6
#ifndef _ZEBRA_VTY_H
7
#define _ZEBRA_VTY_H
8
9
#include <sys/types.h>
10
#ifdef HAVE_LIBPCRE2_POSIX
11
#ifndef _FRR_PCRE2_POSIX
12
#define _FRR_PCRE2_POSIX
13
#include <pcre2posix.h>
14
#endif /* _FRR_PCRE2_POSIX */
15
#elif defined(HAVE_LIBPCREPOSIX)
16
#include <pcreposix.h>
17
#else
18
#include <regex.h>
19
#endif /* HAVE_LIBPCRE2_POSIX */
20
21
#include "frrevent.h"
22
#include "log.h"
23
#include "sockunion.h"
24
#include "qobj.h"
25
#include "compiler.h"
26
#include "northbound.h"
27
#include "zlog_live.h"
28
#include "libfrr.h"
29
#include "mgmt_fe_client.h"
30
31
#ifdef __cplusplus
32
extern "C" {
33
#endif
34
35
struct json_object;
36
37
0
#define VTY_BUFSIZ 4096
38
0
#define VTY_MAXHIST 20
39
0
#define VTY_MAXDEPTH 8
40
41
0
#define VTY_MAXCFGCHANGES 16
42
43
struct vty_error {
44
  char error_buf[VTY_BUFSIZ];
45
  uint32_t line_num;
46
  int cmd_ret;
47
};
48
49
struct vty_cfg_change {
50
  char xpath[XPATH_MAXLEN];
51
  enum nb_operation operation;
52
  const char *value;
53
};
54
55
PREDECL_DLIST(vtys);
56
57
/* VTY struct. */
58
struct vty {
59
  struct vtys_item itm;
60
61
  /* File descripter of this vty. */
62
  int fd;
63
64
  /* output FD, to support stdin/stdout combination */
65
  int wfd;
66
67
  /* File output, used for VTYSH only */
68
  FILE *of;
69
  FILE *of_saved;
70
71
  /* whether we are using pager or not */
72
  bool is_paged;
73
74
  /* Is this vty connect to file or not */
75
  enum { VTY_TERM,       /* telnet conn or stdin/stdout UI */
76
         VTY_FILE,       /* reading and writing config files */
77
         VTY_SHELL,      /* vtysh client side UI */
78
         VTY_SHELL_SERV, /* server-side vtysh connection */
79
  } type;
80
81
  /* Node status of this vty */
82
  int node;
83
84
  /* Failure count */
85
  int fail;
86
87
  /* Output filer regex */
88
  bool filter;
89
  regex_t include;
90
91
  /* Line buffer */
92
  struct buffer *lbuf;
93
94
  /* Output buffer. */
95
  struct buffer *obuf;
96
97
  /* Command input buffer */
98
  char *buf;
99
100
  /* Command input error buffer */
101
  struct list *error;
102
103
  /* Command cursor point */
104
  int cp;
105
106
  /* Command length */
107
  int length;
108
109
  /* Command max length. */
110
  int max;
111
112
  /* Histry of command */
113
  char *hist[VTY_MAXHIST];
114
115
  /* History lookup current point */
116
  int hp;
117
118
  /* History insert end point */
119
  int hindex;
120
121
  /* Changes enqueued to be applied in the candidate configuration. */
122
  size_t num_cfg_changes;
123
  struct nb_cfg_change cfg_changes[VTY_MAXCFGCHANGES];
124
125
  /* XPath of the current node */
126
  int xpath_index;
127
  char xpath[VTY_MAXDEPTH][XPATH_MAXLEN];
128
129
  /*
130
   * Keep track of how many SET_CFG requests has been sent so far that
131
   * has not been committed yet.
132
   */
133
  size_t mgmt_num_pending_setcfg;
134
135
  /* In configure mode. */
136
  bool config;
137
138
  /* Private candidate configuration mode. */
139
  bool private_config;
140
141
  /* Candidate configuration. */
142
  struct nb_config *candidate_config;
143
144
  /* Base candidate configuration. */
145
  struct nb_config *candidate_config_base;
146
147
  /* Dynamic transaction information. */
148
  bool pending_allowed;
149
  bool pending_commit;
150
  char *pending_cmds_buf;
151
  size_t pending_cmds_buflen;
152
  size_t pending_cmds_bufpos;
153
154
  /* Confirmed-commit timeout and rollback configuration. */
155
  struct event *t_confirmed_commit_timeout;
156
  struct nb_config *confirmed_commit_rollback;
157
158
  /* qobj object ID (replacement for "index") */
159
  uint64_t qobj_index;
160
161
  /* qobj second-level object ID (replacement for "index_sub") */
162
  uint64_t qobj_index_sub;
163
164
  /* For escape character. */
165
  unsigned char escape;
166
167
  /* Current vty status. */
168
  enum {
169
    VTY_NORMAL,
170
    VTY_CLOSE,
171
    VTY_MORE,
172
    VTY_MORELINE,
173
    VTY_PASSFD,
174
  } status;
175
176
  /* vtysh socket/fd passing (for terminal monitor) */
177
  int pass_fd;
178
179
  /* CLI command return value (likely CMD_SUCCESS) when pass_fd != -1 */
180
  uint8_t pass_fd_status[4];
181
182
  /* live logging target / terminal monitor */
183
  struct zlog_live_cfg live_log;
184
185
  /* IAC handling: was the last character received the
186
     IAC (interpret-as-command) escape character (and therefore the next
187
     character will be the command code)?  Refer to Telnet RFC 854. */
188
  unsigned char iac;
189
190
  /* IAC SB (option subnegotiation) handling */
191
  unsigned char iac_sb_in_progress;
192
/* At the moment, we care only about the NAWS (window size) negotiation,
193
   and that requires just a 5-character buffer (RFC 1073):
194
     <NAWS char> <16-bit width> <16-bit height> */
195
#define TELNET_NAWS_SB_LEN 5
196
  unsigned char sb_buf[TELNET_NAWS_SB_LEN];
197
  /* How many subnegotiation characters have we received?  We just drop
198
     those that do not fit in the buffer. */
199
  size_t sb_len;
200
201
  /* Window width/height. */
202
  int width;
203
  int height;
204
205
  /* Configure lines. */
206
  int lines;
207
208
  /* Read and write thread. */
209
  struct event *t_read;
210
  struct event *t_write;
211
212
  /* Timeout seconds and thread. */
213
  unsigned long v_timeout;
214
  struct event *t_timeout;
215
216
  /* What address is this vty comming from. */
217
  char address[SU_ADDRSTRLEN];
218
219
  /* "frame" output.  This is buffered and will be printed if some
220
   * actual output follows, or will be discarded if the frame ends
221
   * without any output. */
222
  size_t frame_pos;
223
  char frame[1024];
224
225
  uint64_t mgmt_session_id; /* FE adapter identifies session w/ this */
226
  uint64_t mgmt_client_id;  /* FE vty client identifies w/ this ID */
227
  uint64_t mgmt_req_id;
228
  /* set when we have sent mgmtd a *REQ command in response to some vty
229
   * CLI command and we are waiting on the reply so we can respond to the
230
   * vty user. */
231
  const char *mgmt_req_pending_cmd;
232
  bool mgmt_locked_candidate_ds;
233
  bool mgmt_locked_running_ds;
234
  /* Need to track when we file-lock in vtysh to re-lock on end/conf t
235
   * workaround
236
   */
237
  bool vtysh_file_locked;
238
};
239
240
static inline void vty_push_context(struct vty *vty, int node, uint64_t id)
241
0
{
242
0
  vty->node = node;
243
0
  vty->qobj_index = id;
244
0
}
Unexecuted instantiation: ospf_main.c:vty_push_context
Unexecuted instantiation: ospf_bfd.c:vty_push_context
Unexecuted instantiation: ospf_dump.c:vty_push_context
Unexecuted instantiation: ospf_dump_api.c:vty_push_context
Unexecuted instantiation: ospf_errors.c:vty_push_context
Unexecuted instantiation: ospf_interface.c:vty_push_context
Unexecuted instantiation: ospf_lsa.c:vty_push_context
Unexecuted instantiation: ospf_lsdb.c:vty_push_context
Unexecuted instantiation: ospf_neighbor.c:vty_push_context
Unexecuted instantiation: ospf_network.c:vty_push_context
Unexecuted instantiation: ospf_nsm.c:vty_push_context
Unexecuted instantiation: ospf_opaque.c:vty_push_context
Unexecuted instantiation: ospf_packet.c:vty_push_context
Unexecuted instantiation: ospf_ri.c:vty_push_context
Unexecuted instantiation: ospf_routemap.c:vty_push_context
Unexecuted instantiation: ospf_routemap_nb.c:vty_push_context
Unexecuted instantiation: ospf_routemap_nb_config.c:vty_push_context
Unexecuted instantiation: ospf_spf.c:vty_push_context
Unexecuted instantiation: ospf_ti_lfa.c:vty_push_context
Unexecuted instantiation: ospf_sr.c:vty_push_context
Unexecuted instantiation: ospf_te.c:vty_push_context
Unexecuted instantiation: ospf_vty.c:vty_push_context
Unexecuted instantiation: ospf_zebra.c:vty_push_context
Unexecuted instantiation: ospfd.c:vty_push_context
Unexecuted instantiation: ospf_gr_helper.c:vty_push_context
Unexecuted instantiation: ospf_abr.c:vty_push_context
Unexecuted instantiation: ospf_apiserver.c:vty_push_context
Unexecuted instantiation: ospf_asbr.c:vty_push_context
Unexecuted instantiation: ospf_ase.c:vty_push_context
Unexecuted instantiation: ospf_ext.c:vty_push_context
Unexecuted instantiation: ospf_flood.c:vty_push_context
Unexecuted instantiation: ospf_gr.c:vty_push_context
Unexecuted instantiation: ospf_ia.c:vty_push_context
Unexecuted instantiation: ospf_ism.c:vty_push_context
Unexecuted instantiation: ospf_ldp_sync.c:vty_push_context
Unexecuted instantiation: ospf_route.c:vty_push_context
Unexecuted instantiation: ospf_api.c:vty_push_context
Unexecuted instantiation: affinitymap.c:vty_push_context
Unexecuted instantiation: affinitymap_cli.c:vty_push_context
Unexecuted instantiation: affinitymap_northbound.c:vty_push_context
Unexecuted instantiation: asn.c:vty_push_context
Unexecuted instantiation: bfd.c:vty_push_context
Unexecuted instantiation: buffer.c:vty_push_context
Unexecuted instantiation: command.c:vty_push_context
Unexecuted instantiation: command_graph.c:vty_push_context
Unexecuted instantiation: command_match.c:vty_push_context
Unexecuted instantiation: debug.c:vty_push_context
Unexecuted instantiation: distribute.c:vty_push_context
Unexecuted instantiation: ferr.c:vty_push_context
Unexecuted instantiation: filter.c:vty_push_context
Unexecuted instantiation: filter_cli.c:vty_push_context
Unexecuted instantiation: filter_nb.c:vty_push_context
Unexecuted instantiation: grammar_sandbox.c:vty_push_context
Unexecuted instantiation: hash.c:vty_push_context
Unexecuted instantiation: id_alloc.c:vty_push_context
Unexecuted instantiation: if.c:vty_push_context
Unexecuted instantiation: if_rmap.c:vty_push_context
Unexecuted instantiation: json.c:vty_push_context
Unexecuted instantiation: keychain.c:vty_push_context
Unexecuted instantiation: ldp_sync.c:vty_push_context
Unexecuted instantiation: lib_errors.c:vty_push_context
Unexecuted instantiation: lib_vty.c:vty_push_context
Unexecuted instantiation: libfrr.c:vty_push_context
Unexecuted instantiation: link_state.c:vty_push_context
Unexecuted instantiation: log.c:vty_push_context
Unexecuted instantiation: log_vty.c:vty_push_context
Unexecuted instantiation: mgmt_be_client.c:vty_push_context
Unexecuted instantiation: mgmt_fe_client.c:vty_push_context
Unexecuted instantiation: mgmt_msg.c:vty_push_context
Unexecuted instantiation: mlag.c:vty_push_context
Unexecuted instantiation: srv6.c:vty_push_context
Unexecuted instantiation: network.c:vty_push_context
Unexecuted instantiation: nexthop.c:vty_push_context
Unexecuted instantiation: netns_linux.c:vty_push_context
Unexecuted instantiation: nexthop_group.c:vty_push_context
Unexecuted instantiation: northbound.c:vty_push_context
Unexecuted instantiation: northbound_cli.c:vty_push_context
Unexecuted instantiation: northbound_db.c:vty_push_context
Unexecuted instantiation: pid_output.c:vty_push_context
Unexecuted instantiation: plist.c:vty_push_context
Unexecuted instantiation: prefix.c:vty_push_context
Unexecuted instantiation: privs.c:vty_push_context
Unexecuted instantiation: routemap.c:vty_push_context
Unexecuted instantiation: routemap_cli.c:vty_push_context
Unexecuted instantiation: routemap_northbound.c:vty_push_context
Unexecuted instantiation: sigevent.c:vty_push_context
Unexecuted instantiation: skiplist.c:vty_push_context
Unexecuted instantiation: sockopt.c:vty_push_context
Unexecuted instantiation: sockunion.c:vty_push_context
Unexecuted instantiation: spf_backoff.c:vty_push_context
Unexecuted instantiation: stream.c:vty_push_context
Unexecuted instantiation: systemd.c:vty_push_context
Unexecuted instantiation: termtable.c:vty_push_context
Unexecuted instantiation: event.c:vty_push_context
Unexecuted instantiation: vrf.c:vty_push_context
Unexecuted instantiation: vty.c:vty_push_context
Unexecuted instantiation: workqueue.c:vty_push_context
Unexecuted instantiation: xref.c:vty_push_context
Unexecuted instantiation: yang.c:vty_push_context
Unexecuted instantiation: yang_translator.c:vty_push_context
Unexecuted instantiation: yang_wrappers.c:vty_push_context
Unexecuted instantiation: zclient.c:vty_push_context
Unexecuted instantiation: zlog_5424.c:vty_push_context
Unexecuted instantiation: zlog_5424_cli.c:vty_push_context
Unexecuted instantiation: routing_nb_config.c:vty_push_context
Unexecuted instantiation: connected.c:vty_push_context
Unexecuted instantiation: if_netlink.c:vty_push_context
Unexecuted instantiation: interface.c:vty_push_context
Unexecuted instantiation: ioctl.c:vty_push_context
Unexecuted instantiation: kernel_netlink.c:vty_push_context
Unexecuted instantiation: label_manager.c:vty_push_context
Unexecuted instantiation: main.c:vty_push_context
Unexecuted instantiation: netconf_netlink.c:vty_push_context
Unexecuted instantiation: redistribute.c:vty_push_context
Unexecuted instantiation: router-id.c:vty_push_context
Unexecuted instantiation: rt_netlink.c:vty_push_context
Unexecuted instantiation: rtadv.c:vty_push_context
Unexecuted instantiation: rtread_netlink.c:vty_push_context
Unexecuted instantiation: rule_netlink.c:vty_push_context
Unexecuted instantiation: table_manager.c:vty_push_context
Unexecuted instantiation: tc_netlink.c:vty_push_context
Unexecuted instantiation: zapi_msg.c:vty_push_context
Unexecuted instantiation: zebra_affinitymap.c:vty_push_context
Unexecuted instantiation: zebra_dplane.c:vty_push_context
Unexecuted instantiation: zebra_errors.c:vty_push_context
Unexecuted instantiation: zebra_gr.c:vty_push_context
Unexecuted instantiation: zebra_l2.c:vty_push_context
Unexecuted instantiation: zebra_l2_bridge_if.c:vty_push_context
Unexecuted instantiation: zebra_evpn.c:vty_push_context
Unexecuted instantiation: zebra_evpn_mac.c:vty_push_context
Unexecuted instantiation: zebra_evpn_neigh.c:vty_push_context
Unexecuted instantiation: zebra_mlag.c:vty_push_context
Unexecuted instantiation: zebra_mlag_vty.c:vty_push_context
Unexecuted instantiation: zebra_mpls.c:vty_push_context
Unexecuted instantiation: zebra_mpls_netlink.c:vty_push_context
Unexecuted instantiation: zebra_mpls_null.c:vty_push_context
Unexecuted instantiation: zebra_mpls_vty.c:vty_push_context
Unexecuted instantiation: zebra_srv6.c:vty_push_context
Unexecuted instantiation: zebra_srv6_vty.c:vty_push_context
Unexecuted instantiation: zebra_mroute.c:vty_push_context
Unexecuted instantiation: zebra_nb.c:vty_push_context
Unexecuted instantiation: zebra_nb_config.c:vty_push_context
Unexecuted instantiation: zebra_nb_rpcs.c:vty_push_context
Unexecuted instantiation: zebra_nb_state.c:vty_push_context
Unexecuted instantiation: zebra_netns_id.c:vty_push_context
Unexecuted instantiation: zebra_netns_notify.c:vty_push_context
Unexecuted instantiation: zebra_nhg.c:vty_push_context
Unexecuted instantiation: zebra_ns.c:vty_push_context
Unexecuted instantiation: zebra_opaque.c:vty_push_context
Unexecuted instantiation: zebra_pbr.c:vty_push_context
Unexecuted instantiation: zebra_ptm.c:vty_push_context
Unexecuted instantiation: zebra_ptm_redistribute.c:vty_push_context
Unexecuted instantiation: zebra_pw.c:vty_push_context
Unexecuted instantiation: zebra_rib.c:vty_push_context
Unexecuted instantiation: zebra_router.c:vty_push_context
Unexecuted instantiation: zebra_rnh.c:vty_push_context
Unexecuted instantiation: zebra_routemap.c:vty_push_context
Unexecuted instantiation: zebra_routemap_nb_config.c:vty_push_context
Unexecuted instantiation: zebra_script.c:vty_push_context
Unexecuted instantiation: zebra_srte.c:vty_push_context
Unexecuted instantiation: zebra_tc.c:vty_push_context
Unexecuted instantiation: zebra_vrf.c:vty_push_context
Unexecuted instantiation: zebra_vty.c:vty_push_context
Unexecuted instantiation: zebra_vxlan.c:vty_push_context
Unexecuted instantiation: zebra_vxlan_if.c:vty_push_context
Unexecuted instantiation: zebra_evpn_mh.c:vty_push_context
Unexecuted instantiation: zebra_neigh.c:vty_push_context
Unexecuted instantiation: zserv.c:vty_push_context
Unexecuted instantiation: debug_nl.c:vty_push_context
Unexecuted instantiation: bgp_main.c:vty_push_context
Unexecuted instantiation: bgp_attr.c:vty_push_context
Unexecuted instantiation: bgp_attr_evpn.c:vty_push_context
Unexecuted instantiation: bgp_clist.c:vty_push_context
Unexecuted instantiation: bgp_community.c:vty_push_context
Unexecuted instantiation: bgp_community_alias.c:vty_push_context
Unexecuted instantiation: bgp_debug.c:vty_push_context
Unexecuted instantiation: bgp_dump.c:vty_push_context
Unexecuted instantiation: bgp_ecommunity.c:vty_push_context
Unexecuted instantiation: bgp_errors.c:vty_push_context
Unexecuted instantiation: bgp_evpn.c:vty_push_context
Unexecuted instantiation: bgp_evpn_mh.c:vty_push_context
Unexecuted instantiation: bgp_evpn_vty.c:vty_push_context
Unexecuted instantiation: bgp_filter.c:vty_push_context
Unexecuted instantiation: bgp_flowspec_vty.c:vty_push_context
Unexecuted instantiation: bgp_fsm.c:vty_push_context
Unexecuted instantiation: bgp_io.c:vty_push_context
Unexecuted instantiation: bgp_keepalives.c:vty_push_context
Unexecuted instantiation: bgp_labelpool.c:vty_push_context
Unexecuted instantiation: bgp_lcommunity.c:vty_push_context
Unexecuted instantiation: bgp_mac.c:vty_push_context
Unexecuted instantiation: bgp_mpath.c:vty_push_context
Unexecuted instantiation: bgp_mplsvpn.c:vty_push_context
Unexecuted instantiation: bgp_network.c:vty_push_context
Unexecuted instantiation: bgp_nexthop.c:vty_push_context
Unexecuted instantiation: bgp_nht.c:vty_push_context
Unexecuted instantiation: bgp_packet.c:vty_push_context
Unexecuted instantiation: bgp_pbr.c:vty_push_context
Unexecuted instantiation: bgp_rd.c:vty_push_context
Unexecuted instantiation: bgp_regex.c:vty_push_context
Unexecuted instantiation: bgp_route.c:vty_push_context
Unexecuted instantiation: bgp_routemap.c:vty_push_context
Unexecuted instantiation: bgp_routemap_nb.c:vty_push_context
Unexecuted instantiation: bgp_routemap_nb_config.c:vty_push_context
Unexecuted instantiation: bgp_table.c:vty_push_context
Unexecuted instantiation: bgp_updgrp.c:vty_push_context
Unexecuted instantiation: bgp_updgrp_adv.c:vty_push_context
Unexecuted instantiation: bgp_updgrp_packet.c:vty_push_context
Unexecuted instantiation: bgp_vpn.c:vty_push_context
Unexecuted instantiation: bgp_vty.c:vty_push_context
Unexecuted instantiation: bgp_zebra.c:vty_push_context
Unexecuted instantiation: bgpd.c:vty_push_context
Unexecuted instantiation: bgp_rfapi_cfg.c:vty_push_context
Unexecuted instantiation: rfapi_import.c:vty_push_context
Unexecuted instantiation: rfapi.c:vty_push_context
Unexecuted instantiation: rfapi_ap.c:vty_push_context
Unexecuted instantiation: rfapi_encap_tlv.c:vty_push_context
Unexecuted instantiation: rfapi_nve_addr.c:vty_push_context
Unexecuted instantiation: rfapi_monitor.c:vty_push_context
Unexecuted instantiation: rfapi_rib.c:vty_push_context
Unexecuted instantiation: rfapi_vty.c:vty_push_context
Unexecuted instantiation: vnc_debug.c:vty_push_context
Unexecuted instantiation: vnc_export_bgp.c:vty_push_context
Unexecuted instantiation: vnc_export_table.c:vty_push_context
Unexecuted instantiation: vnc_import_bgp.c:vty_push_context
Unexecuted instantiation: vnc_zebra.c:vty_push_context
Unexecuted instantiation: bgp_addpath.c:vty_push_context
Unexecuted instantiation: bgp_advertise.c:vty_push_context
Unexecuted instantiation: bgp_aspath.c:vty_push_context
Unexecuted instantiation: bgp_bfd.c:vty_push_context
Unexecuted instantiation: bgp_conditional_adv.c:vty_push_context
Unexecuted instantiation: bgp_damp.c:vty_push_context
Unexecuted instantiation: bgp_encap_tlv.c:vty_push_context
Unexecuted instantiation: bgp_flowspec.c:vty_push_context
Unexecuted instantiation: bgp_flowspec_util.c:vty_push_context
Unexecuted instantiation: bgp_label.c:vty_push_context
Unexecuted instantiation: bgp_open.c:vty_push_context
Unexecuted instantiation: rfp_example.c:vty_push_context
Unexecuted instantiation: pim_assert.c:vty_push_context
Unexecuted instantiation: pim_bfd.c:vty_push_context
Unexecuted instantiation: pim_bsm.c:vty_push_context
Unexecuted instantiation: pim_cmd_common.c:vty_push_context
Unexecuted instantiation: pim_errors.c:vty_push_context
Unexecuted instantiation: pim_hello.c:vty_push_context
Unexecuted instantiation: pim_iface.c:vty_push_context
Unexecuted instantiation: pim_ifchannel.c:vty_push_context
Unexecuted instantiation: pim_instance.c:vty_push_context
Unexecuted instantiation: pim_join.c:vty_push_context
Unexecuted instantiation: pim_jp_agg.c:vty_push_context
Unexecuted instantiation: pim_macro.c:vty_push_context
Unexecuted instantiation: pim_mroute.c:vty_push_context
Unexecuted instantiation: pim_msg.c:vty_push_context
Unexecuted instantiation: pim_nb.c:vty_push_context
Unexecuted instantiation: pim_nb_config.c:vty_push_context
Unexecuted instantiation: pim_neighbor.c:vty_push_context
Unexecuted instantiation: pim_nht.c:vty_push_context
Unexecuted instantiation: pim_oil.c:vty_push_context
Unexecuted instantiation: pim_pim.c:vty_push_context
Unexecuted instantiation: pim_routemap.c:vty_push_context
Unexecuted instantiation: pim_rp.c:vty_push_context
Unexecuted instantiation: pim_rpf.c:vty_push_context
Unexecuted instantiation: pim_sock.c:vty_push_context
Unexecuted instantiation: pim_ssm.c:vty_push_context
Unexecuted instantiation: pim_ssmpingd.c:vty_push_context
Unexecuted instantiation: pim_static.c:vty_push_context
Unexecuted instantiation: pim_tib.c:vty_push_context
Unexecuted instantiation: pim_time.c:vty_push_context
Unexecuted instantiation: pim_tlv.c:vty_push_context
Unexecuted instantiation: pim_upstream.c:vty_push_context
Unexecuted instantiation: pim_util.c:vty_push_context
Unexecuted instantiation: pim_vty.c:vty_push_context
Unexecuted instantiation: pim_zebra.c:vty_push_context
Unexecuted instantiation: pim_zlookup.c:vty_push_context
Unexecuted instantiation: pim_vxlan.c:vty_push_context
Unexecuted instantiation: pim_register.c:vty_push_context
Unexecuted instantiation: pimd.c:vty_push_context
Unexecuted instantiation: pim_cmd.c:vty_push_context
Unexecuted instantiation: pim_igmp.c:vty_push_context
Unexecuted instantiation: pim_igmp_mtrace.c:vty_push_context
Unexecuted instantiation: pim_igmpv2.c:vty_push_context
Unexecuted instantiation: pim_igmpv3.c:vty_push_context
Unexecuted instantiation: pim_main.c:vty_push_context
Unexecuted instantiation: pim_mlag.c:vty_push_context
Unexecuted instantiation: pim_msdp.c:vty_push_context
Unexecuted instantiation: pim_msdp_packet.c:vty_push_context
Unexecuted instantiation: pim_msdp_socket.c:vty_push_context
Unexecuted instantiation: pim_signals.c:vty_push_context
Unexecuted instantiation: pim_zpthread.c:vty_push_context
245
246
/* note: VTY_PUSH_CONTEXT(..., NULL) doesn't work, since it will try to
247
 * dereference "NULL->qobj_node.nid" */
248
#define VTY_PUSH_CONTEXT(nodeval, ptr)                                         \
249
0
  vty_push_context(vty, nodeval, QOBJ_ID_0SAFE(ptr))
250
0
#define VTY_PUSH_CONTEXT_NULL(nodeval) vty_push_context(vty, nodeval, 0ULL)
251
#define VTY_PUSH_CONTEXT_SUB(nodeval, ptr)                                     \
252
0
  do {                                                                   \
253
0
    vty->node = nodeval;                                           \
254
0
    /* qobj_index stays untouched */                               \
255
0
    vty->qobj_index_sub = QOBJ_ID_0SAFE(ptr);                      \
256
0
  } while (0)
257
258
/* can return NULL if context is invalid! */
259
#define VTY_GET_CONTEXT(structname)                                            \
260
0
  QOBJ_GET_TYPESAFE(vty->qobj_index, structname)
261
#define VTY_GET_CONTEXT_SUB(structname)                                        \
262
0
  QOBJ_GET_TYPESAFE(vty->qobj_index_sub, structname)
263
264
/* will return if ptr is NULL. */
265
#define VTY_CHECK_CONTEXT(ptr)                                                 \
266
0
  if (!ptr) {                                                            \
267
0
    vty_out(vty,                                                   \
268
0
      "Current configuration object was deleted "            \
269
0
      "by another process.\n");                              \
270
0
    return CMD_WARNING;                                            \
271
0
  }
272
273
/* struct structname *ptr = <context>;   ptr will never be NULL. */
274
#define VTY_DECLVAR_CONTEXT(structname, ptr)                                   \
275
0
  struct structname *ptr = VTY_GET_CONTEXT(structname);                  \
276
0
  VTY_CHECK_CONTEXT(ptr);
277
#define VTY_DECLVAR_CONTEXT_SUB(structname, ptr)                               \
278
0
  struct structname *ptr = VTY_GET_CONTEXT_SUB(structname);              \
279
0
  VTY_CHECK_CONTEXT(ptr);
280
#define VTY_DECLVAR_INSTANCE_CONTEXT(structname, ptr)                          \
281
0
  if (vty->qobj_index == 0)                                              \
282
0
    return CMD_NOT_MY_INSTANCE;                                    \
283
0
  struct structname *ptr = VTY_GET_CONTEXT(structname);                  \
284
0
  VTY_CHECK_CONTEXT(ptr);
285
286
#define VTY_DECLVAR_CONTEXT_VRF(vrfptr)                                        \
287
0
  struct vrf *vrfptr;                                                    \
288
0
  if (vty->node == CONFIG_NODE)                                          \
289
0
    vrfptr = vrf_lookup_by_id(VRF_DEFAULT);                        \
290
0
  else                                                                   \
291
0
    vrfptr = VTY_GET_CONTEXT(vrf);                                 \
292
0
  VTY_CHECK_CONTEXT(vrfptr);                                             \
293
0
  MACRO_REQUIRE_SEMICOLON() /* end */
294
295
/* XPath macros. */
296
#define VTY_PUSH_XPATH(nodeval, value)                                         \
297
0
  do {                                                                   \
298
0
    if (vty->xpath_index >= VTY_MAXDEPTH) {                        \
299
0
      vty_out(vty, "%% Reached maximum CLI depth (%u)\n",    \
300
0
        VTY_MAXDEPTH);                                 \
301
0
      return CMD_WARNING;                                    \
302
0
    }                                                              \
303
0
    vty->node = nodeval;                                           \
304
0
    strlcpy(vty->xpath[vty->xpath_index], value,                   \
305
0
      sizeof(vty->xpath[0]));                                \
306
0
    vty->xpath_index++;                                            \
307
0
  } while (0)
308
309
0
#define VTY_CURR_XPATH vty->xpath[vty->xpath_index - 1]
310
311
#define VTY_CHECK_XPATH                                                        \
312
0
  do {                                                                   \
313
0
    if (vty->type != VTY_FILE && !vty->private_config &&           \
314
0
        vty->xpath_index > 0 &&                                    \
315
0
        !yang_dnode_exists(vty->candidate_config->dnode,           \
316
0
               VTY_CURR_XPATH)) {                      \
317
0
      vty_out(vty,                                           \
318
0
        "Current configuration object was deleted "    \
319
0
        "by another process.\n\n");                    \
320
0
      return CMD_WARNING;                                    \
321
0
    }                                                              \
322
0
  } while (0)
323
324
struct vty_arg {
325
  const char *name;
326
  const char *value;
327
  const char **argv;
328
  int argc;
329
};
330
331
/* Integrated configuration file. */
332
#define INTEGRATE_DEFAULT_CONFIG "frr.conf"
333
334
/* Default time out value */
335
0
#define VTY_TIMEOUT_DEFAULT 600
336
337
/* Vty read buffer size. */
338
#define VTY_READ_BUFSIZ 512
339
340
/* Directory separator. */
341
#ifndef DIRECTORY_SEP
342
0
#define DIRECTORY_SEP '/'
343
#endif /* DIRECTORY_SEP */
344
345
#ifndef IS_DIRECTORY_SEP
346
0
#define IS_DIRECTORY_SEP(c) ((c) == DIRECTORY_SEP)
347
#endif
348
349
extern struct nb_config *vty_mgmt_candidate_config;
350
extern bool vty_log_commands;
351
352
extern char const *const mgmt_daemons[];
353
extern uint mgmt_daemons_count;
354
355
/* Prototypes. */
356
extern void vty_init(struct event_loop *m, bool do_command_logging);
357
extern void vty_init_vtysh(void);
358
extern void vty_terminate(void);
359
extern void vty_reset(void);
360
extern struct vty *vty_new(void);
361
extern struct vty *vty_stdio(void (*atclose)(int isexit));
362
363
/* - vty_frame() output goes to a buffer (for context-begin markers)
364
 * - vty_out() will first print this buffer, and clear it
365
 * - vty_endframe() clears the buffer without printing it, and prints an
366
 *   extra string if the buffer was empty before (for context-end markers)
367
 */
368
extern int vty_out(struct vty *, const char *, ...) PRINTFRR(2, 3);
369
extern void vty_frame(struct vty *, const char *, ...) PRINTFRR(2, 3);
370
extern void vty_endframe(struct vty *, const char *);
371
extern bool vty_set_include(struct vty *vty, const char *regexp);
372
/* returns CMD_SUCCESS so you can do a one-line "return vty_json(...)"
373
 * NULL check and json_object_free() is included.
374
 *
375
 * _no_pretty means do not add a bunch of newlines and dump the output
376
 * as densely as possible.
377
 */
378
extern int vty_json(struct vty *vty, struct json_object *json);
379
extern int vty_json_no_pretty(struct vty *vty, struct json_object *json);
380
extern void vty_json_empty(struct vty *vty);
381
/* post fd to be passed to the vtysh client
382
 * fd is owned by the VTY code after this and will be closed when done
383
 */
384
extern void vty_pass_fd(struct vty *vty, int fd);
385
386
extern FILE *vty_open_config(const char *config_file, char *config_default_dir);
387
extern bool vty_read_config(struct nb_config *config, const char *config_file,
388
          char *config_default_dir);
389
extern void vty_read_file(struct nb_config *config, FILE *confp);
390
extern void vty_read_file_finish(struct vty *vty, struct nb_config *config);
391
extern void vty_time_print(struct vty *, int);
392
extern void vty_serv_start(const char *, unsigned short, const char *);
393
extern void vty_serv_stop(void);
394
extern void vty_close(struct vty *);
395
extern char *vty_get_cwd(void);
396
extern void vty_update_xpath(const char *oldpath, const char *newpath);
397
extern int vty_config_enter(struct vty *vty, bool private_config,
398
          bool exclusive, bool file_lock);
399
extern void vty_config_exit(struct vty *);
400
extern int vty_config_node_exit(struct vty *);
401
extern int vty_shell(struct vty *);
402
extern int vty_shell_serv(struct vty *);
403
extern void vty_hello(struct vty *);
404
405
/* ^Z / SIGTSTP handling */
406
extern void vty_stdio_suspend(void);
407
extern void vty_stdio_resume(void);
408
extern void vty_stdio_close(void);
409
410
extern void vty_init_mgmt_fe(void);
411
extern bool vty_mgmt_fe_enabled(void);
412
extern bool vty_mgmt_should_process_cli_apply_changes(struct vty *vty);
413
414
extern bool mgmt_vty_read_configs(void);
415
extern int vty_mgmt_send_config_data(struct vty *vty, bool implicit_commit);
416
extern int vty_mgmt_send_commit_config(struct vty *vty, bool validate_only,
417
               bool abort);
418
extern int vty_mgmt_send_get_req(struct vty *vty, bool is_config,
419
         Mgmtd__DatastoreId datastore,
420
         const char **xpath_list, int num_req);
421
extern int vty_mgmt_send_lockds_req(struct vty *vty, Mgmtd__DatastoreId ds_id,
422
            bool lock, bool scok);
423
extern void vty_mgmt_resume_response(struct vty *vty, bool success);
424
425
static inline bool vty_needs_implicit_commit(struct vty *vty)
426
0
{
427
0
  return frr_get_cli_mode() == FRR_CLI_CLASSIC && !vty->pending_allowed;
428
0
}
Unexecuted instantiation: ospf_main.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_bfd.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_dump.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_dump_api.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_errors.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_interface.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_lsa.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_lsdb.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_neighbor.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_network.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_nsm.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_opaque.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_packet.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ri.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_routemap.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_routemap_nb.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_routemap_nb_config.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_spf.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ti_lfa.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_sr.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_te.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_zebra.c:vty_needs_implicit_commit
Unexecuted instantiation: ospfd.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_gr_helper.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_abr.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_apiserver.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_asbr.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ase.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ext.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_flood.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_gr.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ia.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ism.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_ldp_sync.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_route.c:vty_needs_implicit_commit
Unexecuted instantiation: ospf_api.c:vty_needs_implicit_commit
Unexecuted instantiation: affinitymap.c:vty_needs_implicit_commit
Unexecuted instantiation: affinitymap_cli.c:vty_needs_implicit_commit
Unexecuted instantiation: affinitymap_northbound.c:vty_needs_implicit_commit
Unexecuted instantiation: asn.c:vty_needs_implicit_commit
Unexecuted instantiation: bfd.c:vty_needs_implicit_commit
Unexecuted instantiation: buffer.c:vty_needs_implicit_commit
Unexecuted instantiation: command.c:vty_needs_implicit_commit
Unexecuted instantiation: command_graph.c:vty_needs_implicit_commit
Unexecuted instantiation: command_match.c:vty_needs_implicit_commit
Unexecuted instantiation: debug.c:vty_needs_implicit_commit
Unexecuted instantiation: distribute.c:vty_needs_implicit_commit
Unexecuted instantiation: ferr.c:vty_needs_implicit_commit
Unexecuted instantiation: filter.c:vty_needs_implicit_commit
Unexecuted instantiation: filter_cli.c:vty_needs_implicit_commit
Unexecuted instantiation: filter_nb.c:vty_needs_implicit_commit
Unexecuted instantiation: grammar_sandbox.c:vty_needs_implicit_commit
Unexecuted instantiation: hash.c:vty_needs_implicit_commit
Unexecuted instantiation: id_alloc.c:vty_needs_implicit_commit
Unexecuted instantiation: if.c:vty_needs_implicit_commit
Unexecuted instantiation: if_rmap.c:vty_needs_implicit_commit
Unexecuted instantiation: json.c:vty_needs_implicit_commit
Unexecuted instantiation: keychain.c:vty_needs_implicit_commit
Unexecuted instantiation: ldp_sync.c:vty_needs_implicit_commit
Unexecuted instantiation: lib_errors.c:vty_needs_implicit_commit
Unexecuted instantiation: lib_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: libfrr.c:vty_needs_implicit_commit
Unexecuted instantiation: link_state.c:vty_needs_implicit_commit
Unexecuted instantiation: log.c:vty_needs_implicit_commit
Unexecuted instantiation: log_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: mgmt_be_client.c:vty_needs_implicit_commit
Unexecuted instantiation: mgmt_fe_client.c:vty_needs_implicit_commit
Unexecuted instantiation: mgmt_msg.c:vty_needs_implicit_commit
Unexecuted instantiation: mlag.c:vty_needs_implicit_commit
Unexecuted instantiation: srv6.c:vty_needs_implicit_commit
Unexecuted instantiation: network.c:vty_needs_implicit_commit
Unexecuted instantiation: nexthop.c:vty_needs_implicit_commit
Unexecuted instantiation: netns_linux.c:vty_needs_implicit_commit
Unexecuted instantiation: nexthop_group.c:vty_needs_implicit_commit
Unexecuted instantiation: northbound.c:vty_needs_implicit_commit
Unexecuted instantiation: northbound_cli.c:vty_needs_implicit_commit
Unexecuted instantiation: northbound_db.c:vty_needs_implicit_commit
Unexecuted instantiation: pid_output.c:vty_needs_implicit_commit
Unexecuted instantiation: plist.c:vty_needs_implicit_commit
Unexecuted instantiation: prefix.c:vty_needs_implicit_commit
Unexecuted instantiation: privs.c:vty_needs_implicit_commit
Unexecuted instantiation: routemap.c:vty_needs_implicit_commit
Unexecuted instantiation: routemap_cli.c:vty_needs_implicit_commit
Unexecuted instantiation: routemap_northbound.c:vty_needs_implicit_commit
Unexecuted instantiation: sigevent.c:vty_needs_implicit_commit
Unexecuted instantiation: skiplist.c:vty_needs_implicit_commit
Unexecuted instantiation: sockopt.c:vty_needs_implicit_commit
Unexecuted instantiation: sockunion.c:vty_needs_implicit_commit
Unexecuted instantiation: spf_backoff.c:vty_needs_implicit_commit
Unexecuted instantiation: stream.c:vty_needs_implicit_commit
Unexecuted instantiation: systemd.c:vty_needs_implicit_commit
Unexecuted instantiation: termtable.c:vty_needs_implicit_commit
Unexecuted instantiation: event.c:vty_needs_implicit_commit
Unexecuted instantiation: vrf.c:vty_needs_implicit_commit
Unexecuted instantiation: vty.c:vty_needs_implicit_commit
Unexecuted instantiation: workqueue.c:vty_needs_implicit_commit
Unexecuted instantiation: xref.c:vty_needs_implicit_commit
Unexecuted instantiation: yang.c:vty_needs_implicit_commit
Unexecuted instantiation: yang_translator.c:vty_needs_implicit_commit
Unexecuted instantiation: yang_wrappers.c:vty_needs_implicit_commit
Unexecuted instantiation: zclient.c:vty_needs_implicit_commit
Unexecuted instantiation: zlog_5424.c:vty_needs_implicit_commit
Unexecuted instantiation: zlog_5424_cli.c:vty_needs_implicit_commit
Unexecuted instantiation: routing_nb_config.c:vty_needs_implicit_commit
Unexecuted instantiation: connected.c:vty_needs_implicit_commit
Unexecuted instantiation: if_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: interface.c:vty_needs_implicit_commit
Unexecuted instantiation: ioctl.c:vty_needs_implicit_commit
Unexecuted instantiation: kernel_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: label_manager.c:vty_needs_implicit_commit
Unexecuted instantiation: main.c:vty_needs_implicit_commit
Unexecuted instantiation: netconf_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: redistribute.c:vty_needs_implicit_commit
Unexecuted instantiation: router-id.c:vty_needs_implicit_commit
Unexecuted instantiation: rt_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: rtadv.c:vty_needs_implicit_commit
Unexecuted instantiation: rtread_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: rule_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: table_manager.c:vty_needs_implicit_commit
Unexecuted instantiation: tc_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: zapi_msg.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_affinitymap.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_dplane.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_errors.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_gr.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_l2.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_l2_bridge_if.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_evpn.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_evpn_mac.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_evpn_neigh.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mlag.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mlag_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mpls.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mpls_netlink.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mpls_null.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mpls_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_srv6.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_srv6_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_mroute.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_nb.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_nb_config.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_nb_rpcs.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_nb_state.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_netns_id.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_netns_notify.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_nhg.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_ns.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_opaque.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_pbr.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_ptm.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_ptm_redistribute.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_pw.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_rib.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_router.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_rnh.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_routemap.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_routemap_nb_config.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_script.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_srte.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_tc.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_vrf.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_vxlan.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_vxlan_if.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_evpn_mh.c:vty_needs_implicit_commit
Unexecuted instantiation: zebra_neigh.c:vty_needs_implicit_commit
Unexecuted instantiation: zserv.c:vty_needs_implicit_commit
Unexecuted instantiation: debug_nl.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_main.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_attr.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_attr_evpn.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_clist.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_community.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_community_alias.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_debug.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_dump.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_ecommunity.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_errors.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_evpn.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_evpn_mh.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_evpn_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_filter.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_flowspec_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_fsm.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_io.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_keepalives.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_labelpool.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_lcommunity.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_mac.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_mpath.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_mplsvpn.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_network.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_nexthop.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_nht.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_packet.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_pbr.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_rd.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_regex.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_route.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_routemap.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_routemap_nb.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_routemap_nb_config.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_table.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_updgrp.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_updgrp_adv.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_updgrp_packet.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_vpn.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_zebra.c:vty_needs_implicit_commit
Unexecuted instantiation: bgpd.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_rfapi_cfg.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_import.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_ap.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_encap_tlv.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_nve_addr.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_monitor.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_rib.c:vty_needs_implicit_commit
Unexecuted instantiation: rfapi_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: vnc_debug.c:vty_needs_implicit_commit
Unexecuted instantiation: vnc_export_bgp.c:vty_needs_implicit_commit
Unexecuted instantiation: vnc_export_table.c:vty_needs_implicit_commit
Unexecuted instantiation: vnc_import_bgp.c:vty_needs_implicit_commit
Unexecuted instantiation: vnc_zebra.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_addpath.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_advertise.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_aspath.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_bfd.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_conditional_adv.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_damp.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_encap_tlv.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_flowspec.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_flowspec_util.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_label.c:vty_needs_implicit_commit
Unexecuted instantiation: bgp_open.c:vty_needs_implicit_commit
Unexecuted instantiation: rfp_example.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_assert.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_bfd.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_bsm.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_cmd_common.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_errors.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_hello.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_iface.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_ifchannel.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_instance.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_join.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_jp_agg.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_macro.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_mroute.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_msg.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_nb.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_nb_config.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_neighbor.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_nht.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_oil.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_pim.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_routemap.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_rp.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_rpf.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_sock.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_ssm.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_ssmpingd.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_static.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_tib.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_time.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_tlv.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_upstream.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_util.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_vty.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_zebra.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_zlookup.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_vxlan.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_register.c:vty_needs_implicit_commit
Unexecuted instantiation: pimd.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_cmd.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_igmp.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_igmp_mtrace.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_igmpv2.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_igmpv3.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_main.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_mlag.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_msdp.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_msdp_packet.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_msdp_socket.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_signals.c:vty_needs_implicit_commit
Unexecuted instantiation: pim_zpthread.c:vty_needs_implicit_commit
429
430
#ifdef __cplusplus
431
}
432
#endif
433
434
#endif /* _ZEBRA_VTY_H */