libosmovty 1.9.3
Osmocom VTY library
VTY Command

VTY command handling. More...

Files

file  command.h
 Zebra configuration command interface routine.
 
file  command.c
 

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...
 
struct  vty_parent_node
 

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"
 
#define CONFIGFILE_MASK   022
 
#define CMD_ATTR_PUBLIC_MASK    (CMD_ATTR_HIDDEN | CMD_ATTR_IMMEDIATE | CMD_ATTR_NODE_EXIT)
 
#define IPV6_ADDR_STR   "0123456789abcdefABCDEF:.%"
 
#define IPV6_PREFIX_STR   "0123456789abcdefABCDEF:.%/"
 
#define STATE_START   1
 
#define STATE_COLON   2
 
#define STATE_DOUBLE   3
 
#define STATE_ADDR   4
 
#define STATE_DOT   5
 
#define STATE_SLASH   6
 
#define STATE_MASK   7
 

Typedefs

typedef int(* print_func_t) (void *data, const char *fmt,...)
 

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...
 
enum  match_type {
  NO_MATCH = 0 ,
  ANY_MATCH ,
  EXTEND_MATCH ,
  IPV4_PREFIX_MATCH ,
  IPV4_MATCH ,
  IPV6_PREFIX_MATCH ,
  IPV6_MATCH ,
  RANGE_MATCH ,
  VARARG_MATCH ,
  PARTLY_MATCH ,
  EXACT_MATCH
}
 
enum  {
  ATTR_TYPE_GLOBAL = (1 << 0) ,
  ATTR_TYPE_LIB = (1 << 1) ,
  ATTR_TYPE_APP = (1 << 2)
}
 

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)
 
static const char * node_name_from_prompt (const char *prompt, char *name_buf, size_t name_buf_size)
 
static void install_basic_node_commands (int node)
 Install common commands like 'exit' and 'list'. More...
 
static void install_node_bare (struct cmd_node *node, int(*func)(struct vty *))
 Install top node of command vector, without adding basic node commands. More...
 
static int cmp_node (const void *p, const void *q)
 
static int cmp_desc (const void *p, const void *q)
 
static char * cmd_desc_str (const char **string)
 Fetch next description. More...
 
static vector cmd_make_descvec (const char *string, const char *descstr)
 New string vector. More...
 
static int cmd_cmdsize (vector strvec)
 
static char * xml_escape (const char *inp)
 
static char cmd_attr_get_flag (unsigned int attr)
 
static int vty_dump_element (const struct cmd_element *cmd, print_func_t print_func, void *data, const char *newline)
 
static bool vty_command_is_common (const struct cmd_element *cmd)
 Return true if a node is installed by install_basic_node_commands(), so that we can avoid repeating them for each and every node during 'show running-config'. More...
 
static int vty_dump_nodes (print_func_t print_func, void *data, const char *newline, unsigned char gflag_mask, bool match)
 
static int print_func_vty (void *data, const char *format,...)
 
static int vty_dump_xml_ref_to_vty (struct vty *vty)
 
static int print_func_stream (void *data, const char *format,...)
 
static int check_element_exists (struct cmd_node *cnode, const char *cmdstring)
 
static int config_write_host (struct vty *vty)
 
static vector cmd_node_vector (vector v, enum node_type ntype)
 
static enum match_type cmd_ipv4_match (const char *str)
 
static enum match_type cmd_ipv4_prefix_match (const char *str)
 
static int check_base (const char *str)
 
static char * cmd_deopt (void *ctx, const char *str)
 
static enum match_type cmd_match (const char *str, const char *command, enum match_type min, bool recur)
 
static enum match_type cmd_filter (char *command, vector v, unsigned int index, enum match_type level)
 
static int is_cmd_ambiguous (char *command, vector v, int index, enum match_type type)
 
static const char * cmd_entry_function (const char *src, const char *dst)
 
static const char * cmd_entry_function_desc (const char *src, const char *dst)
 
static int cmd_unique_string (vector v, const char *str)
 
static int desc_unique_string (vector v, const char *str)
 
static int cmd_try_do_shortcut (enum node_type node, char *first_word)
 
static vector cmd_describe_command_real (vector vline, struct vty *vty, int *status)
 
static int cmd_lcd (char **matched)
 
static char ** cmd_complete_command_real (vector vline, struct vty *vty, int *status)
 
static struct vty_parent_nodevty_parent (struct vty *vty)
 
static bool vty_pop_parent (struct vty *vty)
 
static void vty_clear_parents (struct vty *vty)
 
int vty_go_parent (struct vty *vty)
 
static int cmd_execute_command_real (vector vline, struct vty *vty, struct cmd_element **cmd)
 
static size_t len (const char *str)
 
static int indent_cmp (const char *a, const char *b)
 Make sure the common length of strings a and b is identical, then compare their lengths. More...
 
 DEFUN (config_terminal, config_terminal_cmd, "configure [terminal]", "Configuration from vty interface\n" "Configuration terminal\n")
 
 DEFUN (enable, config_enable_cmd, "enable [expert-mode]", "Turn on privileged mode command\n" "Enable the expert mode (show hidden commands)\n")
 
 DEFUN (disable, config_disable_cmd, "disable", "Turn off privileged mode command\n")
 
 gDEFUN (config_exit, config_exit_cmd, "exit", "Exit current mode and down to previous mode\n")
 
 gDEFUN (config_end, config_end_cmd, "end", "End current mode and change to enable mode.")
 
 DEFUN (shutdown, shutdown_cmd, "shutdown", "Request a shutdown of the program\n")
 
 DEFUN (show_version, show_version_cmd, "show version", SHOW_STR "Displays program version\n")
 
 DEFUN (show_online_help, show_online_help_cmd, "show online-help", SHOW_STR "Online help\n")
 
 DEFUN (show_pid, show_pid_cmd, "show pid", SHOW_STR "Displays the process ID\n")
 
 DEFUN (show_uptime, show_uptime_cmd, "show uptime", SHOW_STR "Displays how long the program has been running\n")
 
 gDEFUN (config_help, config_help_cmd, "help", "Description of the interactive help system\n")
 
static void print_attr_list (struct vty *vty, unsigned int attr_mask)
 
 gDEFUN (show_vty_attr_all, show_vty_attr_all_cmd, "show vty-attributes", SHOW_STR "List of VTY attributes\n")
 
 gDEFUN (show_vty_attr, show_vty_attr_cmd, "show vty-attributes (application|library|global)", SHOW_STR "List of VTY attributes\n" "Application specific attributes only\n" "Library specific attributes only\n" "Global attributes only\n")
 
static unsigned int node_flag_mask (const struct cmd_node *cnode, bool expert_mode)
 
static const char * cmd_gflag_mask (const struct cmd_element *cmd)
 
static const char * cmd_flag_mask (const struct cmd_element *cmd, unsigned int flag_mask)
 
 gDEFUN (config_list, config_list_cmd, "list [with-flags]", "Print command list\n" "Also print the VTY attribute flags\n")
 
static int write_config_file (const char *config_file, char **outpath)
 
 DEFUN (config_write_file, config_write_file_cmd, "write file [PATH]", "Write running configuration to memory, network, or terminal\n" "Write to configuration file\n" "Set file path to store the config, or replace if already exists\n")
 
 ALIAS (config_write_file, config_write_cmd, "write", "Write running configuration to memory, network, or terminal\n") ALIAS(config_write_file
 
write Write running configuration to or terminal n Write configuration to the file (same as write file)\n") ALIAS(config_write_file
 
write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup config (same as write file)\n") DEFUN(config_write_terminal
 
 if (vty->type==VTY_SHELL_SERV)
 
 vty_out (vty, "!%s", VTY_NEWLINE)
 
 for (i=0;i< vector_active(cmdvec);i++) if((node
 
 ALIAS (config_write_terminal, show_running_config_cmd, "show running-config", SHOW_STR "running configuration\n")
 
 DEFUN (config_hostname, hostname_cmd, "hostname WORD", "Set system's network name\n" "This system's network name\n")
 
 DEFUN (config_no_hostname, no_hostname_cmd, "no hostname [HOSTNAME]", NO_STR "Reset system's network name\n" "Host name of this router\n")
 
 DEFUN (config_password, password_cmd, "password (8|) WORD", "Assign the terminal connection password\n" "Specifies a HIDDEN password will follow\n" "dummy string \n" "The HIDDEN line password string\n")
 
 ALIAS (config_password, password_text_cmd, "password LINE", "Assign the terminal connection password\n" "The UNENCRYPTED (cleartext) line password\n")
 
 ALIAS (config_enable_password, enable_password_text_cmd, "enable password LINE", "Modify enable password parameters\n" "Assign the privileged level password\n" "The UNENCRYPTED (cleartext) 'enable' password\n")
 
 DEFUN (config_terminal_length, config_terminal_length_cmd, "terminal length <0-512>", "Set terminal line parameters\n" "Set number of lines on a screen\n" "Number of lines on screen (0 for no pausing)\n")
 
 DEFUN (config_terminal_no_length, config_terminal_no_length_cmd, "terminal no length", "Set terminal line parameters\n" NO_STR "Set number of lines on a screen\n")
 
 DEFUN (service_terminal_length, service_terminal_length_cmd, "service terminal-length <0-512>", "Set up miscellaneous service\n" "System wide terminal length configuration\n" "Number of lines of VTY (0 means no line control)\n")
 
 DEFUN (no_service_terminal_length, no_service_terminal_length_cmd, "no service terminal-length [<0-512>]", NO_STR "Set up miscellaneous service\n" "System wide terminal length configuration\n" "Number of lines of VTY (0 means no line control)\n")
 
 DEFUN_HIDDEN (do_echo, echo_cmd, "echo .MESSAGE", "Echo a message back to the vty\n" "The message to echo\n")
 
 DEFUN (banner_motd_file, banner_motd_file_cmd, "banner motd file [FILE]", "Set banner\n" "Banner for motd\n" "Banner from a file\n" "Filename\n")
 
 DEFUN (banner_motd_default, banner_motd_default_cmd, "banner motd default", "Set banner string\n" "Strings for motd\n" "Default string\n")
 
 DEFUN (no_banner_motd, no_banner_motd_cmd, "no banner motd", NO_STR "Set banner string\n" "Strings for motd\n")
 
int osmo_vty_write_config_file (const char *filename)
 Write the current running config to a given file. More...
 
int osmo_vty_save_config_file (void)
 Save the current state to the config file. More...
 
static __attribute__ ((constructor))
 

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 []
 
void * tall_vty_cmd_ctx
 
static struct timespec starttime
 
vector cmdvec
 
struct host host
 
struct cmd_node auth_node
 
struct cmd_node view_node
 
struct cmd_node auth_enable_node
 
struct cmd_node enable_node
 
struct cmd_node config_node
 
const char * default_motd = ""
 
static const struct value_string cmd_attr_desc []
 
static const char *const cmd_lib_attr_desc [32]
 
static const char cmd_lib_attr_letters [32]
 
const struct value_string vty_ref_gen_mode_names []
 
const struct value_string vty_ref_gen_mode_desc []
 
 config_write_memory_cmd
 
write memory
 
write Write running configuration to network
 
write Write running configuration to or terminal n Write configuration to the copy_runningconfig_startupconfig_cmd
 
write Write running configuration to or terminal n Write configuration to the copy running config startup config
 
write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup config_write_terminal_cmd
 
write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup write terminal
 
write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup write Write running configuration to or terminal n Write to terminal n
 
struct cmd_nodenode
 
 else
 
return CMD_SUCCESS
 
enum gsmtap_um_voice_type __attribute__
 

Detailed Description

VTY command handling.

Macro Definition Documentation

◆ ALIAS

#define ALIAS (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)

◆ ALIAS_ATTR

#define ALIAS_ATTR (   funcname,
  cmdname,
  cmdstr,
  helpstr,
  attr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0)

◆ ALIAS_DEPRECATED

#define ALIAS_DEPRECATED (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, 0)

◆ ALIAS_HIDDEN

#define ALIAS_HIDDEN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, 0)

◆ ALIAS_SH

#define ALIAS_SH (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon)

◆ ALIAS_SH_DEPRECATED

#define ALIAS_SH_DEPRECATED (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, daemon)

◆ ALIAS_SH_HIDDEN

#define ALIAS_SH_HIDDEN (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, daemon)

◆ AREA_TAG_STR

#define AREA_TAG_STR   "[area tag]\n"

◆ AS_STR

#define AS_STR   "AS number\n"

◆ BGP_STR

#define BGP_STR   "BGP information\n"

◆ CLEAR_STR

#define CLEAR_STR   "Reset functions\n"

◆ CMD_ARGC_MAX

#define CMD_ARGC_MAX   256

◆ CMD_ATTR_PUBLIC_MASK

#define CMD_ATTR_PUBLIC_MASK    (CMD_ATTR_HIDDEN | CMD_ATTR_IMMEDIATE | CMD_ATTR_NODE_EXIT)

◆ CMD_COMPLETE_FULL_MATCH

#define CMD_COMPLETE_FULL_MATCH   7

◆ CMD_COMPLETE_LIST_MATCH

#define CMD_COMPLETE_LIST_MATCH   9

◆ CMD_COMPLETE_MATCH

#define CMD_COMPLETE_MATCH   8

◆ CMD_ERR_AMBIGUOUS

#define CMD_ERR_AMBIGUOUS   3

◆ CMD_ERR_EXEED_ARGC_MAX

#define CMD_ERR_EXEED_ARGC_MAX   5

◆ CMD_ERR_INCOMPLETE

#define CMD_ERR_INCOMPLETE   4

◆ CMD_ERR_INVALID_INDENT

#define CMD_ERR_INVALID_INDENT   11

◆ CMD_ERR_NO_MATCH

#define CMD_ERR_NO_MATCH   2

◆ CMD_ERR_NOTHING_TODO

#define CMD_ERR_NOTHING_TODO   6

◆ CMD_IPV4

#define CMD_IPV4 (   S)    ((strcmp ((S), "A.B.C.D") == 0))

◆ CMD_IPV4_PREFIX

#define CMD_IPV4_PREFIX (   S)    ((strcmp ((S), "A.B.C.D/M") == 0))

◆ CMD_IPV6

#define CMD_IPV6 (   S)    ((strcmp ((S), "X:X::X:X") == 0))

◆ CMD_IPV6_PREFIX

#define CMD_IPV6_PREFIX (   S)    ((strcmp ((S), "X:X::X:X/M") == 0))

◆ CMD_OPTION

#define CMD_OPTION (   S)    ((S[0]) == '[')

◆ CMD_RANGE

#define CMD_RANGE (   S)    ((S[0] == '<'))

◆ CMD_SUCCESS

#define CMD_SUCCESS   0

Return value of the commands.

◆ CMD_SUCCESS_DAEMON

#define CMD_SUCCESS_DAEMON   10

◆ CMD_VARARG

#define CMD_VARARG (   S)    ((S[0]) == '.')

◆ CMD_VARIABLE

#define CMD_VARIABLE (   S)    (((S[0]) >= 'A' && (S[0]) <= 'Z') || ((S[0]) == '<'))

◆ CMD_WARNING

#define CMD_WARNING   1

◆ CONF_BACKUP_EXT

#define CONF_BACKUP_EXT   ".sav"

◆ CONFIGFILE_MASK

#define CONFIGFILE_MASK   022

◆ DEBUG_STR

#define DEBUG_STR   "Debugging functions (see also 'undebug')\n"

◆ DEFSH

#define DEFSH (   daemon,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_CMD_ELEMENT(NULL, cmdname, cmdstr, helpstr, 0, daemon) \

◆ DEFUN

#define DEFUN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)
Value:
DEFUN_CMD_FUNC_DECL(funcname) \
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
DEFUN_CMD_FUNC_TEXT(funcname)
#define DEFUN_CMD_FUNC_DECL(funcname)
Definition: command.h:246

Macro for defining a VTY node and function.

Parameters
[in]funcnameName of the function implementing the node
[in]cmdnameName of the command node
[in]cmdstrString with syntax of node
[in]helpstrString with help message of node

◆ DEFUN_ATTR

#define DEFUN_ATTR (   funcname,
  cmdname,
  cmdstr,
  helpstr,
  attr 
)
Value:
DEFUN_CMD_FUNC_DECL(funcname) \
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0) \
DEFUN_CMD_FUNC_TEXT(funcname)

◆ DEFUN_ATTR_USRATTR

#define DEFUN_ATTR_USRATTR (   funcname,
  cmdname,
  attr,
  usrattr,
  cmdstr,
  helpstr 
)
Value:
DEFUN_CMD_FUNC_DECL(funcname) \
DEFUN_CMD_ELEMENT_ATTR_USRATTR(funcname, cmdname, cmdstr, helpstr, attr, usrattr) \
DEFUN_CMD_FUNC_TEXT(funcname)

Macro for defining a VTY node and function with global & program specific attributes.

Parameters
[in]funcnameName of the function implementing the node.
[in]cmdnameName of the command node.
[in]attrGlobal attributes (see CMD_ATTR_*).
[in]usrattrProgram specific attributes.
[in]cmdstrString with syntax of node.
[in]helpstrString with help message of node.

◆ DEFUN_CMD_ELEMENT

#define DEFUN_CMD_ELEMENT (   funcname,
  cmdname,
  cmdstr,
  helpstr,
  attrs,
  dnum 
)
Value:
static struct cmd_element cmdname = \
{ \
.string = cmdstr, \
.func = funcname, \
.doc = helpstr, \
.attr = attrs, \
.daemon = dnum, \
};
Structure of a command element.
Definition: command.h:175
const char * string
Command specification by string.
Definition: command.h:176

◆ DEFUN_CMD_ELEMENT_ATTR_USRATTR

#define DEFUN_CMD_ELEMENT_ATTR_USRATTR (   funcname,
  cmdname,
  cmdstr,
  helpstr,
  attrs,
  usrattrs 
)
Value:
static struct cmd_element cmdname = \
{ \
.string = cmdstr, \
.func = funcname, \
.doc = helpstr, \
.attr = attrs, \
.usrattr = usrattrs, \
};

◆ DEFUN_CMD_FUNC_DECL

#define DEFUN_CMD_FUNC_DECL (   funcname)     static int funcname (struct cmd_element *, struct vty *, int, const char *[]); \

◆ DEFUN_CMD_FUNC_TEXT

#define DEFUN_CMD_FUNC_TEXT (   funcname)
Value:
static int funcname \
(struct cmd_element *self, struct vty *vty, int argc, const char *argv[])
vty
Definition: tdef_vty.c:296
argv
Definition: tdef_vty.c:296
argc
Definition: tdef_vty.c:296
Internal representation of a single VTY.
Definition: vty.h:60

◆ DEFUN_DEPRECATED

#define DEFUN_DEPRECATED (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)

◆ DEFUN_HIDDEN

#define DEFUN_HIDDEN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)

◆ DEFUN_NOSH

#define DEFUN_NOSH (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUN(funcname, cmdname, cmdstr, helpstr)

◆ DEFUN_USRATTR

#define DEFUN_USRATTR (   funcname,
  cmdname,
  usrattr,
  cmdstr,
  helpstr 
)     DEFUN_ATTR_USRATTR(funcname, cmdname, 0, usrattr, cmdstr, helpstr)

◆ DEFUNSH

#define DEFUNSH (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)
Value:
DEFUN_CMD_FUNC_DECL(funcname) \
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon) \
DEFUN_CMD_FUNC_TEXT(funcname)

◆ DEFUNSH_ATTR

#define DEFUNSH_ATTR (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr,
  attr 
)
Value:
DEFUN_CMD_FUNC_DECL(funcname) \
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, daemon) \
DEFUN_CMD_FUNC_TEXT(funcname)

◆ DEFUNSH_DEPRECATED

#define DEFUNSH_DEPRECATED (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)

◆ DEFUNSH_HIDDEN

#define DEFUNSH_HIDDEN (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)     DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)

◆ gALIAS

#define gALIAS (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)     gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)

◆ gDEFUN

#define gDEFUN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)
Value:
DEFUN_CMD_FUNC_DECL(funcname) \
gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
DEFUN_CMD_FUNC_TEXT(funcname)

Macro for defining a non-static (global) VTY node and function.

Parameters
[in]funcnameName of the function implementing the node
[in]cmdnameName of the command node
[in]cmdstrString with syntax of node
[in]helpstrString with help message of node

◆ gDEFUN_CMD_ELEMENT

#define gDEFUN_CMD_ELEMENT (   funcname,
  cmdname,
  cmdstr,
  helpstr,
  attrs,
  dnum 
)
Value:
struct cmd_element cmdname = \
{ \
.string = cmdstr, \
.func = funcname, \
.doc = helpstr, \
.attr = attrs, \
.daemon = dnum, \
};

◆ IFNAME_STR

#define IFNAME_STR   "Interface name(e.g. ep0)\n"

◆ IN_STR

#define IN_STR   "Filter incoming routing updates\n"

◆ INTERFACE_STR

#define INTERFACE_STR   "Interface infomation\n"

◆ IP6_STR

#define IP6_STR   "IPv6 Information\n"

◆ IP_STR

#define IP_STR   "IP information\n"

◆ IPV6_ADDR_STR

#define IPV6_ADDR_STR   "0123456789abcdefABCDEF:.%"

◆ IPV6_PREFIX_STR

#define IPV6_PREFIX_STR   "0123456789abcdefABCDEF:.%/"

◆ IPV6_STR

#define IPV6_STR   "IPv6 information\n"

◆ ISIS_STR

#define ISIS_STR   "IS-IS information\n"

◆ MATCH_STR

#define MATCH_STR   "Match values from routing table\n"

◆ MBGP_STR

#define MBGP_STR   "MBGP information\n"

◆ NEIGHBOR_ADDR_STR

#define NEIGHBOR_ADDR_STR   "Neighbor address\n"

◆ NEIGHBOR_ADDR_STR2

#define NEIGHBOR_ADDR_STR2   "Neighbor address\nNeighbor tag\n"

◆ NEIGHBOR_CMD

#define NEIGHBOR_CMD   "neighbor A.B.C.D "

◆ NEIGHBOR_CMD2

#define NEIGHBOR_CMD2   "neighbor (A.B.C.D|WORD) "

◆ NEIGHBOR_STR

#define NEIGHBOR_STR   "Specify neighbor router\n"

◆ NO_NEIGHBOR_CMD

#define NO_NEIGHBOR_CMD   "no neighbor A.B.C.D "

◆ NO_NEIGHBOR_CMD2

#define NO_NEIGHBOR_CMD2   "no neighbor (A.B.C.D|WORD) "

◆ NO_STR

#define NO_STR   "Negate a command or set its defaults\n"

◆ OSPF6_DUMP_TYPE_LIST

#define OSPF6_DUMP_TYPE_LIST   "(neighbor|interface|area|lsa|zebra|config|dbex|spf|route|lsdb|redistribute|hook|asbr|prefix|abr)"

◆ OSPF6_INSTANCE_STR

#define OSPF6_INSTANCE_STR   "<1-65535> Instance ID\n"

◆ OSPF6_NUMBER_STR

#define OSPF6_NUMBER_STR   "Specify by number\n"

◆ OSPF6_ROUTER_STR

#define OSPF6_ROUTER_STR   "Enable a routing process\n"

◆ OSPF6_STR

#define OSPF6_STR   "Open Shortest Path First (OSPF) for IPv6\n"

◆ OSPF_STR

#define OSPF_STR   "OSPF information\n"

◆ OUT_STR

#define OUT_STR   "Filter outgoing routing updates\n"

◆ PREFIX_LIST_STR

#define PREFIX_LIST_STR   "Build a prefix list\n"

◆ RIP_STR

#define RIP_STR   "RIP information\n"

◆ ROUTE_STR

#define ROUTE_STR   "Routing Table\n"

◆ ROUTER_STR

#define ROUTER_STR   "Enable a routing process\n"

◆ SECONDS_STR

#define SECONDS_STR   "<1-65535> Seconds\n"

◆ SET_STR

#define SET_STR   "Set values in destination routing protocol\n"

◆ SHOW_STR

#define SHOW_STR   "Show running system information\n"

◆ STATE_ADDR

#define STATE_ADDR   4

◆ STATE_COLON

#define STATE_COLON   2

◆ STATE_DOT

#define STATE_DOT   5

◆ STATE_DOUBLE

#define STATE_DOUBLE   3

◆ STATE_MASK

#define STATE_MASK   7

◆ STATE_SLASH

#define STATE_SLASH   6

◆ STATE_START

#define STATE_START   1

◆ UNDEBUG_STR

#define UNDEBUG_STR   "Disable debugging functions (see also 'debug')\n"

◆ V4NOTATION_STR

#define V4NOTATION_STR   "specify by IPv4 address notation(e.g. 0.0.0.0)\n"

◆ VTY_IPV46_CMD

#define VTY_IPV46_CMD   "(" VTY_IPV4_CMD "|" VTY_IPV6_CMD ")"

◆ VTY_IPV4_CMD

#define VTY_IPV4_CMD   "A.B.C.D"

◆ VTY_IPV6_CMD

#define VTY_IPV6_CMD   "X:X::X:X"

Typedef Documentation

◆ print_func_t

typedef int(* print_func_t) (void *data, const char *fmt,...)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Attributes (flags) for cmd_element.

Enumerator
CMD_ATTR_DEPRECATED 
CMD_ATTR_HIDDEN 
CMD_ATTR_IMMEDIATE 
CMD_ATTR_NODE_EXIT 
CMD_ATTR_LIB_COMMAND 

◆ anonymous enum

anonymous enum

Attributes shared between libraries (up to 32 entries).

Enumerator
OSMO_SCCP_LIB_ATTR_RSTRT_ASP 
OSMO_ABIS_LIB_ATTR_IPA_NEW_LNK 
OSMO_ABIS_LIB_ATTR_LINE_UPD 
_OSMO_CORE_LIB_ATTR_COUNT 

◆ anonymous enum

anonymous enum
Enumerator
ATTR_TYPE_GLOBAL 
ATTR_TYPE_LIB 
ATTR_TYPE_APP 

◆ match_type

enum match_type
Enumerator
NO_MATCH 
ANY_MATCH 
EXTEND_MATCH 
IPV4_PREFIX_MATCH 
IPV4_MATCH 
IPV6_PREFIX_MATCH 
IPV6_MATCH 
RANGE_MATCH 
VARARG_MATCH 
PARTLY_MATCH 
EXACT_MATCH 

◆ node_type

enum node_type

There are some command levels which called from command node.

Enumerator
AUTH_NODE 

Authentication mode of vty interface.

VIEW_NODE 

View node.

Default mode of vty interface.

AUTH_ENABLE_NODE 

Authentication mode for change enable.

ENABLE_NODE 

Enable node.

CONFIG_NODE 

Config node.

Default mode of config file.

SERVICE_NODE 

Service node.

DEBUG_NODE 

Debug node.

CFG_LOG_NODE 

Configure the logging.

CFG_STATS_NODE 

Configure the statistics.

VTY_NODE 

Vty node.

L_E1INP_NODE 

E1 line in libosmo-abis.

L_IPA_NODE 

IPA proxying commands in libosmo-abis.

L_NS_NODE 

NS node in libosmo-gb.

L_BSSGP_NODE 

BSSGP node in libosmo-gb.

L_CTRL_NODE 

Control interface node.

L_CS7_NODE 

SS7 root node.

L_CS7_AS_NODE 

SS7 Application Server.

L_CS7_ASP_NODE 

SS7 Application Server Process.

L_CS7_XUA_NODE 

SS7 xUA Listener.

L_CS7_RTABLE_NODE 

SS7 Routing Table.

L_CS7_LINK_NODE 

SS7 Link.

L_CS7_LINKSET_NODE 

SS7 Linkset.

L_CS7_SCCPADDR_NODE 

SS7 SCCP Address.

L_CS7_SCCPADDR_GT_NODE 

SS7 SCCP Global Title.

L_CPU_SCHED_NODE 

CPU Sched related options node.

L_NS_BIND_NODE 

NS bind node.

L_NS_NSE_NODE 

NS NSE node.

RESERVED1_NODE 

Reserved for later extensions.

RESERVED2_NODE 

Reserved for later extensions.

RESERVED3_NODE 

Reserved for later extensions.

RESERVED4_NODE 

Reserved for later extensions.

RESERVED5_NODE 

Reserved for later extensions.

RESERVED6_NODE 

Reserved for later extensions.

RESERVED7_NODE 

Reserved for later extensions.

RESERVED8_NODE 

Reserved for later extensions.

_LAST_OSMOVTY_NODE 

◆ vty_ref_gen_mode

VTY reference generation mode.

Enumerator
VTY_REF_GEN_MODE_DEFAULT 

Default mode: all commands except deprecated and hidden.

VTY_REF_GEN_MODE_EXPERT 

Expert mode: all commands including hidden, excluding deprecated.

VTY_REF_GEN_MODE_HIDDEN 

"Inverse" mode: only hidden commands.

Function Documentation

◆ __attribute__()

static __attribute__ ( (constructor)  )
static

References osmo_clock_gettime(), and starttime.

◆ ALIAS() [1/4]

ALIAS ( config_enable_password  ,
enable_password_text_cmd  ,
"enable password LINE"  ,
"Modify enable password parameters\n" "Assign the privileged level password\n" "The UNENCRYPTED (cleartext) 'enable' password\n  
)

◆ ALIAS() [2/4]

ALIAS ( config_password  ,
password_text_cmd  ,
"password LINE"  ,
"Assign the terminal connection password\n" "The UNENCRYPTED (cleartext) line password\n  
)

◆ ALIAS() [3/4]

ALIAS ( config_write_file  ,
config_write_cmd  ,
"write"  ,
"Write running configuration to  memory,
network  ,
or terminal\n  
)

◆ ALIAS() [4/4]

ALIAS ( config_write_terminal  ,
show_running_config_cmd  ,
"show running-config ,
SHOW_STR "running configuration\n  
)

◆ argv_concat()

char * argv_concat ( const char **  argv,
int  argc,
int  shift 
)

References argc, argv, len(), and tall_vty_cmd_ctx.

Referenced by DEFUN(), DEFUN_HIDDEN(), and gDEFUN().

◆ check_base()

static int check_base ( const char *  str)
static

Referenced by vty_cmd_range_match().

◆ check_element_exists()

static int check_element_exists ( struct cmd_node cnode,
const char *  cmdstring 
)
static

◆ cmd_attr_get_flag()

static char cmd_attr_get_flag ( unsigned int  attr)
static

◆ cmd_cmdsize()

static int cmd_cmdsize ( vector  strvec)
static

References desc::cmd, CMD_OPTION, vector_active, and vector_slot.

Referenced by install_element().

◆ cmd_complete_command()

char ** cmd_complete_command ( vector  vline,
struct vty vty,
int *  status 
)

◆ cmd_complete_command_real()

◆ cmd_deopt()

static char * cmd_deopt ( void *  ctx,
const char *  str 
)
static

◆ cmd_desc_str()

static char * cmd_desc_str ( const char **  string)
static

Fetch next description.

Used in cmd_make_descvec().

References start, cmd_element::string, and tall_vty_cmd_ctx.

Referenced by cmd_make_descvec().

◆ cmd_describe_command()

◆ cmd_describe_command_real()

◆ cmd_entry_function()

static const char * cmd_entry_function ( const char *  src,
const char *  dst 
)
static

◆ cmd_entry_function_desc()

static const char * cmd_entry_function_desc ( const char *  src,
const char *  dst 
)
static

◆ cmd_execute_command()

◆ cmd_execute_command_real()

◆ cmd_execute_command_strict()

◆ cmd_filter()

static enum match_type cmd_filter ( char *  command,
vector  v,
unsigned int  index,
enum match_type  level 
)
static

◆ cmd_flag_mask()

static const char * cmd_flag_mask ( const struct cmd_element cmd,
unsigned int  flag_mask 
)
static

◆ cmd_free_strvec()

void cmd_free_strvec ( vector  v)

Free allocated string vector.

References vector_active, vector_free(), and vector_slot.

Referenced by config_from_file(), vty_command(), vty_complete_command(), and vty_describe_command().

◆ cmd_gflag_mask()

static const char * cmd_gflag_mask ( const struct cmd_element cmd)
static

◆ cmd_init()

◆ cmd_ipv4_match()

static enum match_type cmd_ipv4_match ( const char *  str)
static

◆ cmd_ipv4_prefix_match()

static enum match_type cmd_ipv4_prefix_match ( const char *  str)
static

◆ cmd_lcd()

static int cmd_lcd ( char **  matched)
static

◆ cmd_make_descvec()

static vector cmd_make_descvec ( const char *  string,
const char *  descstr 
)
static

◆ cmd_make_strvec()

vector cmd_make_strvec ( const char *  string)

Breaking up string into each command piece.

I assume given character is separated by a space character. Return value is a vector which includes char ** data element.

References cmd_make_strvec2(), and cmd_element::strvec.

Referenced by vty_command(), vty_complete_command(), and vty_describe_command().

◆ cmd_make_strvec2()

int cmd_make_strvec2 ( const char *  string,
char **  indent,
vector strvec_p 
)

Break up string in command tokens.

Return leading indents.

Parameters
[in]stringString to split.
[out]indentIf not NULL, return a talloc_strdup of indent characters.
[out]strvec_pReturns vector of split tokens, must not be NULL.
Returns
CMD_SUCCESS or CMD_ERR_INVALID_INDENT

If indent is passed non-NULL, only simple space ' ' indents are allowed, so that indent can simply return the count of leading spaces. Otherwise any isspace() characters are allowed for indenting (backwards compat).

References CMD_ERR_INVALID_INDENT, CMD_SUCCESS, start, cmd_element::string, cmd_element::strvec, tall_vty_cmd_ctx, vector_init(), VECTOR_MIN_SIZE, and vector_set().

Referenced by cmd_make_strvec(), and config_from_file().

◆ cmd_match()

◆ cmd_node_vector()

◆ cmd_prompt()

const char * cmd_prompt ( enum node_type  node)

Return prompt character of specified node.

References cmdvec, node, cmd_node::prompt, and vector_slot.

Referenced by vty_prompt().

◆ cmd_try_do_shortcut()

static int cmd_try_do_shortcut ( enum node_type  node,
char *  first_word 
)
static

◆ cmd_unique_string()

static int cmd_unique_string ( vector  v,
const char *  str 
)
static

◆ cmp_desc()

static int cmp_desc ( const void *  p,
const void *  q 
)
static

References desc::cmd.

Referenced by sort_node().

◆ cmp_node()

static int cmp_node ( const void *  p,
const void *  q 
)
static

References cmd_element::string.

Referenced by sort_node().

◆ config()

write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup config ( same as write  file)

◆ config_from_file()

◆ config_replace_string()

void config_replace_string ( struct cmd_element ,
char *  ,
  ... 
)

◆ config_write_host()

◆ DEFUN() [1/19]

DEFUN ( banner_motd_default  ,
banner_motd_default_cmd  ,
"banner motd default"  ,
"Set banner string\n" "Strings for motd\n" "Default string\n  
)

References CMD_SUCCESS, default_motd, and host::motd.

◆ DEFUN() [2/19]

DEFUN ( banner_motd_file  ,
banner_motd_file_cmd  ,
"banner motd file [FILE],
"Set banner\n" "Banner for motd\n" "Banner from a file\n" "Filename\n  
)

◆ DEFUN() [3/19]

DEFUN ( config_hostname  ,
hostname_cmd  ,
"hostname WORD"  ,
"Set system's network name\n" "This system's network name\n  
)

◆ DEFUN() [4/19]

DEFUN ( config_no_hostname  ,
no_hostname_cmd  ,
"no hostname "  [HOSTNAME],
NO_STR "Reset system's network name\n" "Host name of this router\n  
)

References CMD_SUCCESS, and host::name.

◆ DEFUN() [5/19]

DEFUN ( config_password  ,
password_cmd  ,
"password (8|) WORD"  ,
"Assign the terminal connection password\n" "Specifies a HIDDEN password will follow\n" "dummy string \n" "The HIDDEN line password string\n  
)

◆ DEFUN() [6/19]

DEFUN ( config_terminal  ,
config_terminal_cmd  ,
"configure "  [terminal],
"Configuration from vty interface\n" "Configuration terminal\n  
)

◆ DEFUN() [7/19]

DEFUN ( config_terminal_length  ,
config_terminal_length_cmd  ,
"terminal length <0-512>"  ,
"Set terminal line parameters\n" "Set number of lines on a screen\n" "Number of lines on screen (0 for no pausing)\n  
)

References argv, CMD_SUCCESS, and vty::lines.

◆ DEFUN() [8/19]

DEFUN ( config_terminal_no_length  ,
config_terminal_no_length_cmd  ,
"terminal no length ,
"Set terminal line parameters\n" NO_STR "Set number of lines on a screen\n  
)

References CMD_SUCCESS, and vty::lines.

◆ DEFUN() [9/19]

DEFUN ( config_write_file  ,
config_write_file_cmd  ,
"write file [PATH],
"Write running configuration to  memory,
network  ,
or terminal\n" "Write to configuration file\n" "Set file path to store the  config,
or replace if already exists\n  
)

◆ DEFUN() [10/19]

DEFUN ( disable  ,
config_disable_cmd  ,
"disable"  ,
"Turn off privileged mode command\n  
)

◆ DEFUN() [11/19]

DEFUN ( enable  ,
config_enable_cmd  ,
"enable "  [expert-mode],
"Turn on privileged mode command\n" "Enable the expert mode (show hidden commands)\n  
)

◆ DEFUN() [12/19]

DEFUN ( no_banner_motd  ,
no_banner_motd_cmd  ,
"no banner motd"  ,
NO_STR "Set banner string\n" "Strings for motd\n  
)

◆ DEFUN() [13/19]

DEFUN ( no_service_terminal_length  ,
no_service_terminal_length_cmd  ,
"no service terminal-length [< 0-512 >],
NO_STR "Set up miscellaneous service\n" "System wide terminal length configuration\n" "Number of lines of VTY (0 means no line control)\n  
)

References CMD_SUCCESS, and host::lines.

◆ DEFUN() [14/19]

DEFUN ( service_terminal_length  ,
service_terminal_length_cmd  ,
"service terminal-length <0-512>"  ,
"Set up miscellaneous service\n" "System wide terminal length configuration\n" "Number of lines of VTY (0 means no line control)\n  
)

References argv, CMD_SUCCESS, and host::lines.

◆ DEFUN() [15/19]

DEFUN ( show_online_help  ,
show_online_help_cmd  ,
"show online-help"  ,
SHOW_STR "Online help\n  
)

◆ DEFUN() [16/19]

DEFUN ( show_pid  ,
show_pid_cmd  ,
"show pid ,
SHOW_STR "Displays the process ID\n  
)

References CMD_SUCCESS, VTY_NEWLINE, and vty_out().

◆ DEFUN() [17/19]

DEFUN ( show_uptime  ,
show_uptime_cmd  ,
"show uptime"  ,
SHOW_STR "Displays how long the program has been running\n  
)

◆ DEFUN() [18/19]

DEFUN ( show_version  ,
show_version_cmd  ,
"show version ,
SHOW_STR "Displays program version\n  
)

◆ DEFUN() [19/19]

DEFUN ( shutdown  ,
shutdown_cmd  ,
"shutdown"  ,
"Request a shutdown of the program\n  
)

◆ DEFUN_HIDDEN()

DEFUN_HIDDEN ( do_echo  ,
echo_cmd  ,
"echo .MESSAGE"  ,
"Echo a message back to the vty\n" "The message to echo\n  
)

◆ desc_unique_string()

static int desc_unique_string ( vector  v,
const char *  str 
)
static

◆ file()

write Write running configuration to or terminal n Write configuration to the file ( same as write  file)

◆ for()

for ( )

◆ gDEFUN() [1/6]

gDEFUN ( config_end  ,
config_end_cmd  ,
"end"  ,
"End current mode and change to enable mode."   
)

◆ gDEFUN() [2/6]

gDEFUN ( config_exit  ,
config_exit_cmd  ,
"exit"  ,
"Exit current mode and down to previous mode\n  
)

◆ gDEFUN() [3/6]

gDEFUN ( config_help  ,
config_help_cmd  ,
"help"  ,
"Description of the interactive help system\n  
)

References CMD_SUCCESS, VTY_NEWLINE, and vty_out().

◆ gDEFUN() [4/6]

◆ gDEFUN() [5/6]

gDEFUN ( show_vty_attr  ,
show_vty_attr_cmd  ,
"show vty-attributes (application|library|global)"  ,
SHOW_STR "List of VTY attributes\n" "Application specific attributes only\n" "Library specific attributes only\n" "Global attributes only\n  
)

◆ gDEFUN() [6/6]

gDEFUN ( show_vty_attr_all  ,
show_vty_attr_all_cmd  ,
"show vty-attributes"  ,
SHOW_STR "List of VTY attributes\n  
)

References CMD_SUCCESS, and print_attr_list().

◆ host_config_file()

const char * host_config_file ( void  )

References host::config.

◆ host_config_set()

void host_config_set ( const char *  filename)

References host::config, and tall_vty_cmd_ctx.

Referenced by DEFUN(), and vty_read_config_file().

◆ if()

◆ indent_cmp()

static int indent_cmp ( const char *  a,
const char *  b 
)
static

Make sure the common length of strings a and b is identical, then compare their lengths.

I.e., if a is longer than b, a must start with exactly b, and vice versa.

Returns
EINVAL on mismatch, -1 for a < b, 0 for a == b, 1 for a > b.

References len().

Referenced by config_from_file().

◆ install_basic_node_commands()

static void install_basic_node_commands ( int  node)
static

◆ install_default()

void install_default ( int  node)

Deprecated, now happens implicitly when calling install_node().

Users of the API may still attempt to call this function, hence leave it here as a no-op.

◆ install_element()

void install_element ( int  ntype,
struct cmd_element cmd 
)

Install a command into a node.

Parameters
[in]ntypeNode Type
[cmd]element to be installed

References check_element_exists(), cmd_cmdsize(), cmd_make_descvec(), cmd_node::cmd_vector, cmd_element::cmdsize, cmdvec, cmd_element::doc, OSMO_ASSERT, cmd_element::string, cmd_element::strvec, vector_set(), and vector_slot.

Referenced by install_element_ve(), and install_lib_element().

◆ install_element_ve()

void install_element_ve ( struct cmd_element cmd)

◆ install_lib_element()

void install_lib_element ( int  ntype,
struct cmd_element cmd 
)

◆ install_lib_element_ve()

◆ install_node()

void install_node ( struct cmd_node node,
int(*)(struct vty *)  func 
)

◆ install_node_bare()

static void install_node_bare ( struct cmd_node node,
int(*)(struct vty *)  func 
)
static

Install top node of command vector, without adding basic node commands.

References cmd_node::cmd_vector, cmdvec, cmd_node::func, cmd_node::name, cmd_node::node, node, node_name_from_prompt(), cmd_node::prompt, vector_init(), VECTOR_MIN_SIZE, and vector_set_index().

Referenced by cmd_init(), and install_node().

◆ is_cmd_ambiguous()

◆ len()

◆ node_flag_mask()

◆ node_name_from_prompt()

static const char * node_name_from_prompt ( const char *  prompt,
char *  name_buf,
size_t  name_buf_size 
)
static

References cmd_node::prompt.

Referenced by install_node_bare().

◆ node_parent()

enum node_type node_parent ( enum  node_type)

◆ osmo_asciidoc_escape()

char * osmo_asciidoc_escape ( const char *  inp)

escape all special asciidoc symbols

Parameters
unsafestring
Returns
a new talloc char *

References len(), and tall_vty_cmd_ctx.

Referenced by asciidoc_handle_counter(), asciidoc_osmo_stat_item_group_handler(), asciidoc_osmo_stat_item_handler(), asciidoc_rate_ctr_group_handler(), and asciidoc_rate_ctr_handler().

◆ osmo_vty_save_config_file()

int osmo_vty_save_config_file ( void  )

Save the current state to the config file.

Returns
0 in case of success.

If the filename already exists create a filename.sav version with the current code.

References host::config, and write_config_file().

◆ osmo_vty_write_config_file()

int osmo_vty_write_config_file ( const char *  filename)

Write the current running config to a given file.

Parameters
[in]vtythe vty of the code
[in]filenamewhere to store the file
Returns
0 in case of success.

If the filename already exists create a filename.sav version with the current code.

References write_config_file().

◆ print_attr_list()

◆ print_func_stream()

static int print_func_stream ( void *  data,
const char *  format,
  ... 
)
static

References data.

Referenced by vty_dump_xml_ref_mode().

◆ print_func_vty()

static int print_func_vty ( void *  data,
const char *  format,
  ... 
)
static

References data, and vty_out_va().

Referenced by vty_dump_xml_ref_to_vty().

◆ print_version()

void print_version ( int  print_copyright)

print the version (and optionally copyright) information

This is called from main when a daemon is invoked with -v or –version.

References host::app_info, vty_app_info::copyright, vty_app_info::name, and vty_app_info::version.

◆ sort_node()

void sort_node ( void  )

Sort each node's command element according to command string.

References cmd_node::cmd_vector, cmdvec, cmp_desc(), cmp_node(), _vector::index, cmd_element::strvec, vector_active, and vector_slot.

◆ vty_clear_parents()

static void vty_clear_parents ( struct vty vty)
static

References vty_pop_parent().

Referenced by vty_go_parent().

◆ vty_cmd_range_match()

int vty_cmd_range_match ( const char *  range,
const char *  str 
)

◆ vty_command_is_common()

static bool vty_command_is_common ( const struct cmd_element cmd)
static

Return true if a node is installed by install_basic_node_commands(), so that we can avoid repeating them for each and every node during 'show running-config'.

References config_end_cmd, config_exit_cmd, config_help_cmd, config_list_cmd, config_write_memory_cmd, and config_write_terminal_cmd.

Referenced by vty_dump_nodes().

◆ vty_dump_element()

◆ vty_dump_nodes()

static int vty_dump_nodes ( print_func_t  print_func,
void *  data,
const char *  newline,
unsigned char  gflag_mask,
bool  match 
)
static

◆ vty_dump_xml_ref()

int vty_dump_xml_ref ( FILE *  stream)

Print the XML reference of all VTY nodes to the given stream.

Parameters
[out]streamOutput stream to print the XML reference to.
Returns
always 0 for now, no errors possible.

NOTE: this function is deprecated because it does not allow to specify the XML reference generation mode (default mode is hard-coded). Use vty_dump_xml_ref_mode() instead.

References vty_dump_xml_ref_mode(), and VTY_REF_GEN_MODE_DEFAULT.

◆ vty_dump_xml_ref_mode()

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.

Parameters
[out]streamOutput stream to print the XML reference to.
[in]modeThe XML reference generation mode.
Returns
always 0 for now, no errors possible.

References CMD_ATTR_DEPRECATED, CMD_ATTR_HIDDEN, mode, print_func_stream(), vty_dump_nodes(), VTY_REF_GEN_MODE_DEFAULT, VTY_REF_GEN_MODE_EXPERT, and VTY_REF_GEN_MODE_HIDDEN.

Referenced by vty_dump_xml_ref().

◆ vty_dump_xml_ref_to_vty()

static int vty_dump_xml_ref_to_vty ( struct vty vty)
static

◆ vty_go_parent()

◆ vty_install_default()

void vty_install_default ( int  node)

Deprecated, now happens implicitly when calling install_node().

Users of the API may still attempt to call this function, hence leave it here as a no-op.

◆ vty_out()

◆ vty_parent()

static struct vty_parent_node * vty_parent ( struct vty vty)
static

◆ vty_pop_parent()

◆ write_config_file()

◆ xml_escape()

static char * xml_escape ( const char *  inp)
static

References ADD, len(), and tall_vty_cmd_ctx.

Referenced by vty_dump_element().

Variable Documentation

◆ auth_enable_node

struct cmd_node auth_enable_node
Initial value:
= {
"Password: ",
.name = "auth-enable",
}
@ AUTH_ENABLE_NODE
Authentication mode for change enable.
Definition: command.h:76

Referenced by cmd_init().

◆ auth_node

struct cmd_node auth_node
Initial value:
= {
"Password: ",
.name = "auth",
}
@ AUTH_NODE
Authentication mode of vty interface.
Definition: command.h:74

Referenced by cmd_init().

◆ cmd_attr_desc

const struct value_string cmd_attr_desc[]
static
Initial value:
= {
{ CMD_ATTR_DEPRECATED, "This command is deprecated" },
{ CMD_ATTR_HIDDEN, "This command is hidden (check expert mode)" },
{ CMD_ATTR_IMMEDIATE, "This command applies immediately" },
{ CMD_ATTR_NODE_EXIT, "This command applies on VTY node exit" },
{ 0, NULL }
}
@ CMD_ATTR_DEPRECATED
Definition: command.h:149
@ CMD_ATTR_HIDDEN
Definition: command.h:150
@ CMD_ATTR_IMMEDIATE
Definition: command.h:151
@ CMD_ATTR_NODE_EXIT
Definition: command.h:152

Referenced by print_attr_list(), and vty_dump_element().

◆ cmd_lib_attr_desc

const char* const cmd_lib_attr_desc[32]
static
Initial value:
= {
"This command applies on ASP restart",
"This command applies on IPA link establishment",
"This command applies on E1 line update",
}
@ OSMO_SCCP_LIB_ATTR_RSTRT_ASP
Definition: command.h:166
@ OSMO_ABIS_LIB_ATTR_IPA_NEW_LNK
Definition: command.h:167
@ OSMO_ABIS_LIB_ATTR_LINE_UPD
Definition: command.h:168

Referenced by print_attr_list(), and vty_dump_element().

◆ cmd_lib_attr_letters

const char cmd_lib_attr_letters[32]
static

◆ CMD_SUCCESS

◆ cmdvec

◆ config

write Write running configuration to or terminal n Write configuration to the copy running config startup config

◆ config_end_cmd

struct cmd_element config_end_cmd
extern

◆ config_exit_cmd

◆ config_help_cmd

struct cmd_element config_help_cmd
extern

◆ config_list_cmd

struct cmd_element config_list_cmd
extern

◆ config_node

struct cmd_node config_node
Initial value:
= {
"%s(config)# ",
1
}
@ CONFIG_NODE
Config node.
Definition: command.h:78

Referenced by cmd_init().

◆ config_write_memory_cmd

config_write_memory_cmd

◆ config_write_terminal_cmd

write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup config_write_terminal_cmd

◆ copy_runningconfig_startupconfig_cmd

write Write running configuration to or terminal n Write configuration to the copy_runningconfig_startupconfig_cmd

Referenced by cmd_init().

◆ default_motd

const char* default_motd = ""

Referenced by cmd_init(), and DEFUN().

◆ else

else
Initial value:
{
vty_out(vty, "%sCurrent configuration:%s", VTY_NEWLINE,
vty_out(vty, "!%s", VTY_NEWLINE)
#define VTY_NEWLINE
Definition: vty.h:161

◆ enable_node

struct cmd_node enable_node
Initial value:
= {
"%s# ",
.name = "enable",
}
@ ENABLE_NODE
Enable node.
Definition: command.h:77

Referenced by cmd_init().

◆ host

struct host host

◆ memory

write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup write Write running configuration to memory

◆ n

write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup write Write running configuration to or terminal n Write to terminal n
Initial value:
{
unsigned int i

◆ network

write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup write Write running configuration to network

◆ node

◆ starttime

struct timespec starttime
static

◆ tall_vty_cmd_ctx [1/2]

◆ tall_vty_cmd_ctx [2/2]

◆ terminal

write Write running configuration to or terminal n Write configuration to the copy running config startup Copy configuration n Copy running config to n Copy running config to startup write terminal

Referenced by cmd_init().

◆ view_node

struct cmd_node view_node
Initial value:
= {
"%s> ",
.name = "view",
}
@ VIEW_NODE
View node.
Definition: command.h:75

Referenced by cmd_init().

◆ vty_ref_gen_mode_desc [1/2]

const struct value_string vty_ref_gen_mode_desc[]
extern

◆ vty_ref_gen_mode_desc [2/2]

const struct value_string vty_ref_gen_mode_desc[]
Initial value:
= {
{ VTY_REF_GEN_MODE_DEFAULT, "all commands except deprecated and hidden" },
{ VTY_REF_GEN_MODE_EXPERT, "all commands including hidden, excluding deprecated" },
{ VTY_REF_GEN_MODE_HIDDEN, "hidden commands only" },
{ 0, NULL }
}
@ VTY_REF_GEN_MODE_HIDDEN
"Inverse" mode: only hidden commands.
Definition: command.h:477
@ VTY_REF_GEN_MODE_EXPERT
Expert mode: all commands including hidden, excluding deprecated.
Definition: command.h:475
@ VTY_REF_GEN_MODE_DEFAULT
Default mode: all commands except deprecated and hidden.
Definition: command.h:473

◆ vty_ref_gen_mode_names [1/2]

const struct value_string vty_ref_gen_mode_names[]
extern

◆ vty_ref_gen_mode_names [2/2]

const struct value_string vty_ref_gen_mode_names[]
Initial value:
= {
{ VTY_REF_GEN_MODE_DEFAULT, "default" },
{ VTY_REF_GEN_MODE_EXPERT, "expert" },
{ VTY_REF_GEN_MODE_HIDDEN, "hidden" },
{ 0, NULL }
}