libosmovty  0.9.3
Osmocom VTY library
VTY Command

Files

file  command.h
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.
#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_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.
#define gDEFUN(funcname, cmdname, cmdstr, helpstr)
 Macro for defining a non-static (global) VTY node and function.
#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, RESERVED1_NODE, RESERVED2_NODE,
  RESERVED3_NODE, RESERVED4_NODE, _LAST_OSMOVTY_NODE
}
 There are some command levels which called from command node. More...
enum  { CMD_ATTR_DEPRECATED = 1, CMD_ATTR_HIDDEN }
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.
void install_default (int node_type)
void install_element (int ntype, struct cmd_element *cmd)
 Install a command into a node.
void install_element_ve (struct cmd_element *cmd)
void sort_node (void)
 Sort each node's command element according to command string.
void vty_install_default (int node_type)
char * argv_concat (const char **argv, int argc, int shift)
vector cmd_make_strvec (const char *)
void cmd_free_strvec (vector v)
 Free allocated string vector.
vector cmd_describe_command ()
char ** cmd_complete_command ()
const char * cmd_prompt (enum node_type node)
 Return prompt character of specified node.
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 *)
void print_version (int print_copyright)
 print the version (and optionally copyright) information
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. Used in cmd_make_descvec().
static vector cmd_make_descvec (const char *string, const char *descstr)
 New string vector.
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 int vty_dump_nodes (struct vty *vty)
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 (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)
int vty_go_parent (struct vty *vty)
static int cmd_execute_command_real (vector vline, struct vty *vty, struct cmd_element **cmd)
 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

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

Detailed Description

Macro Definition Documentation

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

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_FUNC_DECL(funcname) \
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0) \
DEFUN_CMD_FUNC_TEXT(funcname)
#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, \
};
#define DEFUN_CMD_FUNC_TEXT (   funcname)
Value:
static int funcname \
(struct cmd_element *self, struct vty *vty, int argc, const char *argv[])
#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)
#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)
#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
#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, \
};

Enumeration Type Documentation

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.

RESERVED1_NODE 

Reserved for later extensions.

RESERVED2_NODE 

Reserved for later extensions.

RESERVED3_NODE 

Reserved for later extensions.

RESERVED4_NODE 

Reserved for later extensions.

Function Documentation

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_element::string, and cmd_element::strvec.

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 cmd_make_descvec(), cmd_node::cmd_vector, cmd_element::cmdsize, cmd_element::doc, cmd_element::string, and cmd_element::strvec.

Referenced by vty_init().

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.

Variable Documentation

struct cmd_node auth_enable_node
Initial value:
{
"Password: ",
}
struct cmd_node auth_node
Initial value:
{
"Password: ",
}
struct cmd_node config_node
Initial value:
{
"%s(config)# ",
1
}
struct cmd_node enable_node
Initial value:
{
"%s# ",
}
struct cmd_node view_node
Initial value:
{
"%s> ",
}