libosmovty 1.9.0.196-9975
Osmocom VTY library
command.h File Reference

Zebra configuration command interface routine. More...

#include <stdio.h>
#include <stdbool.h>
#include <sys/types.h>
#include "vector.h"
#include <osmocom/core/defs.h>
#include <osmocom/core/utils.h>
#include "vty.h"

Go to the source code of this file.

Data Structures

struct  host
 Host configuration variable. More...
 
struct  cmd_node
 Node which has some commands and prompt string and configuration function pointer . More...
 
struct  cmd_element
 Structure of a command element. More...
 
struct  desc
 Command description structure. More...
 

Macros

#define CMD_SUCCESS   0
 Return value of the commands. More...
 
#define CMD_WARNING   1
 
#define CMD_ERR_NO_MATCH   2
 
#define CMD_ERR_AMBIGUOUS   3
 
#define CMD_ERR_INCOMPLETE   4
 
#define CMD_ERR_EXEED_ARGC_MAX   5
 
#define CMD_ERR_NOTHING_TODO   6
 
#define CMD_COMPLETE_FULL_MATCH   7
 
#define CMD_COMPLETE_MATCH   8
 
#define CMD_COMPLETE_LIST_MATCH   9
 
#define CMD_SUCCESS_DAEMON   10
 
#define CMD_ERR_INVALID_INDENT   11
 
#define CMD_ARGC_MAX   256
 
#define DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
 
#define gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
 
#define DEFUN_CMD_ELEMENT_ATTR_USRATTR(funcname, cmdname, cmdstr, helpstr, attrs, usrattrs)
 
#define DEFUN_CMD_FUNC_DECL(funcname)    static int funcname (struct cmd_element *, struct vty *, int, const char *[]); \
 
#define DEFUN_CMD_FUNC_TEXT(funcname)
 
#define DEFUN(funcname, cmdname, cmdstr, helpstr)
 Macro for defining a VTY node and function. More...
 
#define gDEFUN(funcname, cmdname, cmdstr, helpstr)
 Macro for defining a non-static (global) VTY node and function. More...
 
#define DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, attr)
 
#define DEFUN_HIDDEN(funcname, cmdname, cmdstr, helpstr)    DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
 
#define DEFUN_DEPRECATED(funcname, cmdname, cmdstr, helpstr)    DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)
 
#define DEFUN_ATTR_USRATTR(funcname, cmdname, attr, usrattr, cmdstr, helpstr)
 Macro for defining a VTY node and function with global & program specific attributes. More...
 
#define DEFUN_USRATTR(funcname, cmdname, usrattr, cmdstr, helpstr)    DEFUN_ATTR_USRATTR(funcname, cmdname, 0, usrattr, cmdstr, helpstr)
 
#define DEFUN_NOSH(funcname, cmdname, cmdstr, helpstr)    DEFUN(funcname, cmdname, cmdstr, helpstr)
 
#define DEFSH(daemon, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(NULL, cmdname, cmdstr, helpstr, 0, daemon) \
 
#define DEFUNSH(daemon, funcname, cmdname, cmdstr, helpstr)
 
#define DEFUNSH_ATTR(daemon, funcname, cmdname, cmdstr, helpstr, attr)
 
#define DEFUNSH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr)    DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
 
#define DEFUNSH_DEPRECATED(daemon, funcname, cmdname, cmdstr, helpstr)    DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)
 
#define ALIAS(funcname, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)
 
#define gALIAS(funcname, cmdname, cmdstr, helpstr)    gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)
 
#define ALIAS_ATTR(funcname, cmdname, cmdstr, helpstr, attr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0)
 
#define ALIAS_HIDDEN(funcname, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, 0)
 
#define ALIAS_DEPRECATED(funcname, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, 0)
 
#define ALIAS_SH(daemon, funcname, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon)
 
#define ALIAS_SH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, daemon)
 
#define ALIAS_SH_DEPRECATED(daemon, funcname, cmdname, cmdstr, helpstr)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, daemon)
 
#define CMD_OPTION(S)   ((S[0]) == '[')
 
#define CMD_VARIABLE(S)   (((S[0]) >= 'A' && (S[0]) <= 'Z') || ((S[0]) == '<'))
 
#define CMD_VARARG(S)   ((S[0]) == '.')
 
#define CMD_RANGE(S)   ((S[0] == '<'))
 
#define CMD_IPV4(S)   ((strcmp ((S), "A.B.C.D") == 0))
 
#define CMD_IPV4_PREFIX(S)   ((strcmp ((S), "A.B.C.D/M") == 0))
 
#define CMD_IPV6(S)   ((strcmp ((S), "X:X::X:X") == 0))
 
#define CMD_IPV6_PREFIX(S)   ((strcmp ((S), "X:X::X:X/M") == 0))
 
#define VTY_IPV4_CMD   "A.B.C.D"
 
#define VTY_IPV6_CMD   "X:X::X:X"
 
#define VTY_IPV46_CMD   "(" VTY_IPV4_CMD "|" VTY_IPV6_CMD ")"
 
#define SHOW_STR   "Show running system information\n"
 
#define IP_STR   "IP information\n"
 
#define IPV6_STR   "IPv6 information\n"
 
#define NO_STR   "Negate a command or set its defaults\n"
 
#define CLEAR_STR   "Reset functions\n"
 
#define RIP_STR   "RIP information\n"
 
#define BGP_STR   "BGP information\n"
 
#define OSPF_STR   "OSPF information\n"
 
#define NEIGHBOR_STR   "Specify neighbor router\n"
 
#define DEBUG_STR   "Debugging functions (see also 'undebug')\n"
 
#define UNDEBUG_STR   "Disable debugging functions (see also 'debug')\n"
 
#define ROUTER_STR   "Enable a routing process\n"
 
#define AS_STR   "AS number\n"
 
#define MBGP_STR   "MBGP information\n"
 
#define MATCH_STR   "Match values from routing table\n"
 
#define SET_STR   "Set values in destination routing protocol\n"
 
#define OUT_STR   "Filter outgoing routing updates\n"
 
#define IN_STR   "Filter incoming routing updates\n"
 
#define V4NOTATION_STR   "specify by IPv4 address notation(e.g. 0.0.0.0)\n"
 
#define OSPF6_NUMBER_STR   "Specify by number\n"
 
#define INTERFACE_STR   "Interface infomation\n"
 
#define IFNAME_STR   "Interface name(e.g. ep0)\n"
 
#define IP6_STR   "IPv6 Information\n"
 
#define OSPF6_STR   "Open Shortest Path First (OSPF) for IPv6\n"
 
#define OSPF6_ROUTER_STR   "Enable a routing process\n"
 
#define OSPF6_INSTANCE_STR   "<1-65535> Instance ID\n"
 
#define SECONDS_STR   "<1-65535> Seconds\n"
 
#define ROUTE_STR   "Routing Table\n"
 
#define PREFIX_LIST_STR   "Build a prefix list\n"
 
#define OSPF6_DUMP_TYPE_LIST   "(neighbor|interface|area|lsa|zebra|config|dbex|spf|route|lsdb|redistribute|hook|asbr|prefix|abr)"
 
#define ISIS_STR   "IS-IS information\n"
 
#define AREA_TAG_STR   "[area tag]\n"
 
#define CONF_BACKUP_EXT   ".sav"
 
#define NEIGHBOR_CMD   "neighbor A.B.C.D "
 
#define NO_NEIGHBOR_CMD   "no neighbor A.B.C.D "
 
#define NEIGHBOR_ADDR_STR   "Neighbor address\n"
 
#define NEIGHBOR_CMD2   "neighbor (A.B.C.D|WORD) "
 
#define NO_NEIGHBOR_CMD2   "no neighbor (A.B.C.D|WORD) "
 
#define NEIGHBOR_ADDR_STR2   "Neighbor address\nNeighbor tag\n"
 

Enumerations

enum  node_type {
  AUTH_NODE ,
  VIEW_NODE ,
  AUTH_ENABLE_NODE ,
  ENABLE_NODE ,
  CONFIG_NODE ,
  SERVICE_NODE ,
  DEBUG_NODE ,
  CFG_LOG_NODE ,
  CFG_STATS_NODE ,
  VTY_NODE ,
  L_E1INP_NODE ,
  L_IPA_NODE ,
  L_NS_NODE ,
  L_BSSGP_NODE ,
  L_CTRL_NODE ,
  L_CS7_NODE ,
  L_CS7_AS_NODE ,
  L_CS7_ASP_NODE ,
  L_CS7_XUA_NODE ,
  L_CS7_RTABLE_NODE ,
  L_CS7_LINK_NODE ,
  L_CS7_LINKSET_NODE ,
  L_CS7_SCCPADDR_NODE ,
  L_CS7_SCCPADDR_GT_NODE ,
  L_CPU_SCHED_NODE ,
  L_NS_BIND_NODE ,
  L_NS_NSE_NODE ,
  RESERVED1_NODE ,
  RESERVED2_NODE ,
  RESERVED3_NODE ,
  RESERVED4_NODE ,
  RESERVED5_NODE ,
  RESERVED6_NODE ,
  RESERVED7_NODE ,
  RESERVED8_NODE ,
  _LAST_OSMOVTY_NODE
}
 There are some command levels which called from command node. More...
 
enum  {
  CMD_ATTR_DEPRECATED = (1 << 0) ,
  CMD_ATTR_HIDDEN = (1 << 1) ,
  CMD_ATTR_IMMEDIATE = (1 << 2) ,
  CMD_ATTR_NODE_EXIT = (1 << 3) ,
  CMD_ATTR_LIB_COMMAND = (1 << 4)
}
 Attributes (flags) for cmd_element. More...
 
enum  {
  OSMO_SCCP_LIB_ATTR_RSTRT_ASP ,
  OSMO_ABIS_LIB_ATTR_IPA_NEW_LNK ,
  OSMO_ABIS_LIB_ATTR_LINE_UPD ,
  _OSMO_CORE_LIB_ATTR_COUNT
}
 Attributes shared between libraries (up to 32 entries). More...
 
enum  vty_ref_gen_mode {
  VTY_REF_GEN_MODE_DEFAULT = 0 ,
  VTY_REF_GEN_MODE_EXPERT ,
  VTY_REF_GEN_MODE_HIDDEN
}
 VTY reference generation mode. More...
 

Functions

void install_node (struct cmd_node *node, int(*func)(struct vty *))
 Install top node of command vector. More...
 
void install_default (int node)
 Deprecated, now happens implicitly when calling install_node(). More...
 
void install_element (int ntype, struct cmd_element *cmd)
 Install a command into a node. More...
 
void install_lib_element (int ntype, struct cmd_element *cmd)
 Install a library command into a node. More...
 
void install_element_ve (struct cmd_element *cmd)
 
void install_lib_element_ve (struct cmd_element *cmd)
 
void sort_node (void)
 Sort each node's command element according to command string. More...
 
void vty_install_default (int node)
 Deprecated, now happens implicitly when calling install_node(). More...
 
char * argv_concat (const char **argv, int argc, int shift)
 
vector cmd_make_strvec (const char *string)
 Breaking up string into each command piece. More...
 
int cmd_make_strvec2 (const char *string, char **indent, vector *strvec_p)
 Break up string in command tokens. More...
 
void cmd_free_strvec (vector v)
 Free allocated string vector. More...
 
vector cmd_describe_command (vector vline, struct vty *vty, int *status)
 
char ** cmd_complete_command (vector vline, struct vty *vty, int *status)
 
const char * cmd_prompt (enum node_type node)
 Return prompt character of specified node. More...
 
int config_from_file (struct vty *, FILE *)
 
enum node_type node_parent (enum node_type)
 
int cmd_execute_command (vector, struct vty *, struct cmd_element **, int)
 
int cmd_execute_command_strict (vector, struct vty *, struct cmd_element **)
 
void config_replace_string (struct cmd_element *, char *,...)
 
void cmd_init (int)
 
const char * host_config_file (void)
 
void host_config_set (const char *)
 
char * osmo_asciidoc_escape (const char *inp)
 escape all special asciidoc symbols More...
 
void print_version (int print_copyright)
 print the version (and optionally copyright) information More...
 
int vty_dump_xml_ref_mode (FILE *stream, enum vty_ref_gen_mode mode)
 Print the XML reference of all VTY nodes to the given stream. More...
 
int vty_dump_xml_ref (FILE *stream)
 Print the XML reference of all VTY nodes to the given stream. More...
 
int vty_cmd_range_match (const char *range, const char *str)
 

Variables

struct cmd_element config_exit_cmd
 
struct cmd_element config_help_cmd
 
struct cmd_element config_list_cmd
 
struct cmd_element config_end_cmd
 
void * tall_vty_cmd_ctx
 
const struct value_string vty_ref_gen_mode_names []
 
const struct value_string vty_ref_gen_mode_desc []
 

Detailed Description

Zebra configuration command interface routine.