libosmovty 1.9.0.192-1c24
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 }
}