libosmovty  1.0.1
Osmocom VTY library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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...
 

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_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_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 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 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
 
#define DECIMAL_STRLEN_MAX   10
 

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,
  RESERVED3_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)
}
 Attributes (flags) for cmd_element. 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
}
 

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_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 ()
 
char ** cmd_complete_command ()
 
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)
 
char * host_config_file ()
 
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...
 
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 int is_config_child (struct vty *vty)
 
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 int vty_dump_element (struct cmd_element *cmd, struct vty *vty)
 
static bool vty_command_is_common (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 (struct vty *vty)
 
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 cmd_range_match (const char *range, 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)
 
vector cmd_describe_command (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)
 
char ** cmd_complete_command (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","Turn on privileged mode command\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 (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")
 
 gDEFUN (config_help, config_help_cmd,"help","Description of the interactive help system\n")
 
 gDEFUN (config_list, config_list_cmd,"list","Print command list\n")
 
static int write_config_file (const char *config_file, char **outpath)
 
 DEFUN (config_write_file, config_write_file_cmd,"write file","Write running configuration to memory, network, or terminal\n""Write to configuration file\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 ()
 
 vty_out (vty,"end%s", VTY_NEWLINE)
 
 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...
 

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
 
void * tall_vty_cmd_ctx
 
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 = ""
 
 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
 

Detailed Description

VTY command handling.

Macro Definition Documentation

#define ALIAS (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_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_DEPRECATED (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, 0)
#define ALIAS_HIDDEN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, 0)
#define ALIAS_SH (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon)
#define ALIAS_SH_DEPRECATED (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, daemon)
#define ALIAS_SH_HIDDEN (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, daemon)
#define AREA_TAG_STR   "[area tag]\n"
#define AS_STR   "AS number\n"
#define BGP_STR   "BGP information\n"
#define CLEAR_STR   "Reset functions\n"
#define CMD_ARGC_MAX   256
#define CMD_COMPLETE_FULL_MATCH   7
#define CMD_COMPLETE_LIST_MATCH   9
#define CMD_COMPLETE_MATCH   8
#define CMD_ERR_EXEED_ARGC_MAX   5
#define CMD_ERR_INCOMPLETE   4
#define CMD_ERR_INVALID_INDENT   11
#define CMD_ERR_NOTHING_TODO   6
#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 CMD_RANGE (   S)    ((S[0] == '<'))
#define CMD_SUCCESS   0

Return value of the commands.

#define CMD_SUCCESS_DAEMON   10
#define CMD_VARARG (   S)    ((S[0]) == '.')
#define CMD_VARIABLE (   S)    (((S[0]) >= 'A' && (S[0]) <= 'Z') || ((S[0]) == '<'))
#define CONF_BACKUP_EXT   ".sav"

Referenced by write_config_file().

#define CONFIGFILE_MASK   022

Referenced by write_config_file().

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

Referenced by cmd_range_match().

#define DEFSH (   daemon,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_CMD_ELEMENT(NULL, cmdname, cmdstr, helpstr, 0, daemon) \
#define DEFUN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)
Value:
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
#define DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
Definition: command.h:181
#define DEFUN_CMD_FUNC_TEXT(funcname)
Definition: command.h:205
#define DEFUN_CMD_FUNC_DECL(funcname)
Definition: command.h:202

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
#define DEFUN_ATTR (   funcname,
  cmdname,
  cmdstr,
  helpstr,
  attr 
)
Value:
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0) \
#define DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
Definition: command.h:181
#define DEFUN_CMD_FUNC_TEXT(funcname)
Definition: command.h:205
#define DEFUN_CMD_FUNC_DECL(funcname)
Definition: command.h:202
#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, \
};
const char * string
Command specification by string.
Definition: command.h:143
Structure of a command element.
Definition: command.h:142
#define DEFUN_CMD_FUNC_DECL (   funcname)    static int funcname (struct cmd_element *, struct vty *, int, const char *[]); \
#define DEFUN_CMD_FUNC_TEXT (   funcname)
Value:
static int funcname \
(struct cmd_element *self, struct vty *vty, int argc, const char *argv[])
Internal representation of a single VTY.
Definition: vty.h:65
Structure of a command element.
Definition: command.h:142
#define DEFUN_DEPRECATED (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED) \
#define DEFUN_HIDDEN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
#define DEFUN_NOSH (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUN(funcname, cmdname, cmdstr, helpstr)
#define DEFUNSH (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)
Value:
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon) \
#define DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
Definition: command.h:181
#define DEFUN_CMD_FUNC_TEXT(funcname)
Definition: command.h:205
#define DEFUN_CMD_FUNC_DECL(funcname)
Definition: command.h:202
#define DEFUNSH_ATTR (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr,
  attr 
)
Value:
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, daemon) \
#define DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
Definition: command.h:181
#define DEFUN_CMD_FUNC_TEXT(funcname)
Definition: command.h:205
#define DEFUN_CMD_FUNC_DECL(funcname)
Definition: command.h:202
#define DEFUNSH_DEPRECATED (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)
#define DEFUNSH_HIDDEN (   daemon,
  funcname,
  cmdname,
  cmdstr,
  helpstr 
)    DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
#define gALIAS (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)    gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)
#define gDEFUN (   funcname,
  cmdname,
  cmdstr,
  helpstr 
)
Value:
gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
#define DEFUN_CMD_FUNC_TEXT(funcname)
Definition: command.h:205
#define gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
Definition: command.h:192
#define DEFUN_CMD_FUNC_DECL(funcname)
Definition: command.h:202

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
#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, \
};
const char * string
Command specification by string.
Definition: command.h:143
Structure of a command element.
Definition: command.h:142
#define IFNAME_STR   "Interface name(e.g. ep0)\n"
#define IN_STR   "Filter incoming routing updates\n"
#define INTERFACE_STR   "Interface infomation\n"
#define IP6_STR   "IPv6 Information\n"
#define IP_STR   "IP information\n"
#define IPV6_ADDR_STR   "0123456789abcdefABCDEF:.%"
#define IPV6_PREFIX_STR   "0123456789abcdefABCDEF:.%/"
#define IPV6_STR   "IPv6 information\n"
#define ISIS_STR   "IS-IS information\n"
#define MATCH_STR   "Match values from routing table\n"
#define MBGP_STR   "MBGP information\n"
#define NEIGHBOR_ADDR_STR   "Neighbor address\n"
#define NEIGHBOR_ADDR_STR2   "Neighbor address\nNeighbor tag\n"
#define NEIGHBOR_CMD   "neighbor A.B.C.D "
#define NEIGHBOR_CMD2   "neighbor (A.B.C.D|WORD) "
#define NEIGHBOR_STR   "Specify neighbor router\n"
#define NO_NEIGHBOR_CMD   "no neighbor A.B.C.D "
#define NO_NEIGHBOR_CMD2   "no neighbor (A.B.C.D|WORD) "
#define NO_STR   "Negate a command or set its defaults\n"
#define OSPF6_DUMP_TYPE_LIST   "(neighbor|interface|area|lsa|zebra|config|dbex|spf|route|lsdb|redistribute|hook|asbr|prefix|abr)"
#define OSPF6_INSTANCE_STR   "<1-65535> Instance ID\n"
#define OSPF6_NUMBER_STR   "Specify by number\n"
#define OSPF6_ROUTER_STR   "Enable a routing process\n"
#define OSPF6_STR   "Open Shortest Path First (OSPF) for IPv6\n"
#define OSPF_STR   "OSPF information\n"
#define OUT_STR   "Filter outgoing routing updates\n"
#define PREFIX_LIST_STR   "Build a prefix list\n"
#define RIP_STR   "RIP information\n"
#define ROUTE_STR   "Routing Table\n"
#define ROUTER_STR   "Enable a routing process\n"
#define SECONDS_STR   "<1-65535> Seconds\n"
#define SET_STR   "Set values in destination routing protocol\n"
#define SHOW_STR   "Show running system information\n"
#define STATE_ADDR   4
#define STATE_COLON   2
#define STATE_DOT   5
#define STATE_DOUBLE   3
#define STATE_MASK   7
#define STATE_SLASH   6
#define STATE_START   1
#define UNDEBUG_STR   "Disable debugging functions (see also 'debug')\n"
#define V4NOTATION_STR   "specify by IPv4 address notation(e.g. 0.0.0.0)\n"

Enumeration Type Documentation

anonymous enum

Attributes (flags) for cmd_element.

Enumerator
CMD_ATTR_DEPRECATED 
CMD_ATTR_HIDDEN 
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 
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.

RESERVED3_NODE 

Reserved for later extensions.

_LAST_OSMOVTY_NODE 

Function Documentation

ALIAS ( config_write_file  ,
config_write_cmd  ,
"write"  ,
"Write running configuration to  memory,
network  ,
or terminal\n  
)
ALIAS ( config_write_terminal  ,
show_running_config_cmd  ,
"show running-config ,
SHOW_STR"running configuration\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  
)
char * argv_concat ( const char **  argv,
int  argc,
int  shift 
)

References len(), and tall_vty_cmd_ctx.

Referenced by DEFUN_HIDDEN(), and gDEFUN().

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

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

Referenced by install_element().

char** cmd_complete_command ( )

Referenced by vty_complete_command().

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

References len().

Referenced by cmd_match(), and is_cmd_ambiguous().

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

Fetch next description.

Used in cmd_make_descvec().

References cmd_element::string, and tall_vty_cmd_ctx.

Referenced by cmd_make_descvec().

vector cmd_describe_command ( )

Referenced by vty_describe_command().

static const char* cmd_entry_function ( const char *  src,
const char *  dst 
)
static
static const char* cmd_entry_function_desc ( const char *  src,
const char *  dst 
)
static
int cmd_execute_command ( vector  vline,
struct vty vty,
struct cmd_element **  cmd,
int  vtysh 
)
static enum match_type cmd_filter ( char *  command,
vector  v,
unsigned int  index,
enum match_type  level 
)
static
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().

static enum match_type cmd_ipv4_match ( const char *  str)
static
static enum match_type cmd_ipv4_prefix_match ( const char *  str)
static
static int cmd_lcd ( char **  matched)
static
static vector cmd_make_descvec ( const char *  string,
const char *  descstr 
)
static
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().

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, 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().

const char * cmd_prompt ( enum node_type  node)

Return prompt character of specified node.

References cmd_node::prompt, and vector_slot.

Referenced by vty_prompt().

static int cmd_range_match ( const char *  range,
const char *  str 
)
static
static int cmd_try_do_shortcut ( enum node_type  node,
char *  first_word 
)
static
static int cmd_unique_string ( vector  v,
const char *  str 
)
static

References vector_active, and vector_slot.

Referenced by cmd_complete_command_real().

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

References desc::cmd.

Referenced by sort_node().

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

References cmd_element::string.

Referenced by sort_node().

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)
void config_replace_string ( struct cmd_element ,
char *  ,
  ... 
)
DEFUN ( config_terminal  ,
config_terminal_cmd  ,
"configure terminal ,
"Configuration from vty interface\n""Configuration terminal\n  
)
DEFUN ( enable  ,
config_enable_cmd  ,
"enable"  ,
"Turn on privileged mode command\n  
)
DEFUN ( disable  ,
config_disable_cmd  ,
"disable"  ,
"Turn off privileged mode command\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  
)

References CMD_SUCCESS, and vty_dump_nodes().

DEFUN ( config_write_file  ,
config_write_file_cmd  ,
"write file ,
"Write running configuration to  memory,
network  ,
or terminal\n" "Write to configuration file\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  
)

References CMD_SUCCESS, and host::name.

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 ( 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  
)

References CMD_SUCCESS, and vty::lines.

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  
)

References CMD_SUCCESS, and host::lines.

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  
)

References CMD_SUCCESS, default_motd, and host::motd.

DEFUN ( no_banner_motd  ,
no_banner_motd_cmd  ,
"no banner motd"  ,
NO_STR"Set banner string\n""Strings for motd\n  
)
DEFUN_HIDDEN ( do_echo  ,
echo_cmd  ,
"echo .MESSAGE"  ,
"Echo a message back to the vty\n""The message to echo\n  
)
static int desc_unique_string ( vector  v,
const char *  str 
)
static
write Write running configuration to or terminal n Write configuration to the file ( same as write  file)
for ( )
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."   
)
gDEFUN ( config_help  ,
config_help_cmd  ,
"help"  ,
"Description of the interactive help system\n  
)

References CMD_SUCCESS, VTY_NEWLINE, and vty_out().

char* host_config_file ( )
void host_config_set ( const char *  filename)

References host::config, and tall_vty_cmd_ctx.

Referenced by vty_read_config_file().

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().

static void install_basic_node_commands ( int  node)
static
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.

void install_node ( struct cmd_node node,
int(*)(struct vty *)  func 
)
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, cmd_node::func, cmd_node::name, cmd_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().

static int is_config_child ( struct vty vty)
static
static const char* node_name_from_prompt ( const char *  prompt,
char *  name_buf,
size_t  name_buf_size 
)
static

Referenced by install_node_bare().

enum node_type node_parent ( enum  node_type)
char * osmo_asciidoc_escape ( const char *  inp)

escape all special asciidoc symbols

Parameters
unsafestring
Returns
a new talloc char *

References ADD, 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().

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().

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().

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.

void sort_node ( void  )

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

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

static void vty_clear_parents ( struct vty vty)
static

References vty_pop_parent().

Referenced by vty_go_parent().

static bool vty_command_is_common ( 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().

static int vty_dump_element ( struct cmd_element cmd,
struct vty vty 
)
static
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  ,
"end%s"  ,
VTY_NEWLINE   
)
static struct vty_parent_node* vty_parent ( struct vty vty)
static
static char* xml_escape ( const char *  inp)
static

References ADD, len(), and tall_vty_cmd_ctx.

Referenced by vty_dump_element().

Variable Documentation

struct cmd_node auth_enable_node
Initial value:
= {
"Password: ",
.name = "auth-enable",
}
Authentication mode for change enable.
Definition: command.h:74
struct cmd_node auth_node
Initial value:
= {
"Password: ",
.name = "auth",
}
Authentication mode of vty interface.
Definition: command.h:72
vector cmdvec
write Write running configuration to or terminal n Write configuration to the copy running config startup config
struct cmd_element config_end_cmd
struct cmd_element config_help_cmd
struct cmd_element config_list_cmd
struct cmd_node config_node
Initial value:
= {
"%s(config)# ",
1
}
Config node.
Definition: command.h:76
config_write_memory_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
write Write running configuration to or terminal n Write configuration to the copy_runningconfig_startupconfig_cmd

Referenced by cmd_init().

const char* default_motd = ""

Referenced by cmd_init(), and DEFUN().

else
Initial value:
{
vty_out(vty, "%sCurrent configuration:%s", VTY_NEWLINE,
Internal representation of a single VTY.
Definition: vty.h:65
#define VTY_NEWLINE
Definition: vty.h:163
vty_out(vty,"!%s", VTY_NEWLINE)
struct cmd_node enable_node
Initial value:
= {
"%s# ",
.name = "enable",
}
Enable node.
Definition: command.h:75
struct host host
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
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
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
struct cmd_node* node

Referenced by write_config_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 write terminal
struct cmd_node view_node
Initial value:
= {
"%s> ",
.name = "view",
}
View node.
Definition: command.h:73