libosmovty  0.9.6-9.20170220git32ee5af8.fc29
Osmocom VTY library
command.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <syslog.h>
#include <errno.h>
#include <unistd.h>
#include <ctype.h>
#include <time.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <osmocom/vty/vector.h>
#include <osmocom/vty/vty.h>
#include <osmocom/vty/command.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/utils.h>

Macros

#define _XOPEN_SOURCE
 
#define CONFIGFILE_MASK   022
 
#define ADD(out, str)
 
#define ADD(out, str)
 
#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
 
#define INIT_MATCHVEC_SIZE   10
 
#define INIT_MATCHVEC_SIZE   10
 

Enumerations

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 print_version (int print_copyright)
 print the version (and optionally copyright) information More...
 
char * argv_concat (const char **argv, int argc, int shift)
 
void install_node (struct cmd_node *node, int(*func)(struct vty *))
 Install top node of command vector.
 
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)
 
void sort_node (void)
 Sort each node's command element according to command string.
 
vector cmd_make_strvec (const char *)
 
void cmd_free_strvec (vector v)
 Free allocated string vector.
 
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)
 
const char * cmd_prompt (enum node_type node)
 Return prompt character of specified node.
 
char * osmo_asciidoc_escape (const char *inp)
 escape all special asciidoc symbols More...
 
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 check_element_exists (struct cmd_node *cnode, const char *cmdstring)
 
void install_element (int ntype, struct cmd_element *cmd)
 Install a command into a node. More...
 
void install_element_ve (struct cmd_element *cmd)
 
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)
 
int cmd_execute_command (vector, struct vty *, struct cmd_element **, int)
 
int cmd_execute_command_strict (vector, struct vty *, struct cmd_element **)
 
int config_from_file (struct vty *, FILE *)
 
 DEFUN (config_terminal, config_terminal_cmd, "configure terminal", "Configuration from vty interface\ "Configuration terminal\")
 
 DEFUN (enable, config_enable_cmd, "enable", "Turn on privileged mode command\)
 
 DEFUN (disable, config_disable_cmd, "disable", "Turn off privileged mode command\)
 
 gDEFUN (config_exit, config_exit_cmd, "exit", "Exit current mode and down to previous mode\)
 
 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\)
 
 DEFUN (show_online_help, show_online_help_cmd, "show online-help", SHOW_STR "Online help\)
 
 gDEFUN (config_help, config_help_cmd, "help", "Description of the interactive help system\)
 
 gDEFUN (config_list, config_list_cmd, "list", "Print command list\)
 
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\ "Write to configuration file\")
 
 ALIAS (config_write_file, config_write_cmd, "write", "Write running configuration to memory, network, or terminal\) 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\
 
 DEFUN (config_hostname, hostname_cmd, "hostname WORD", "Set system's network name\ "This system 's network name\")
 
 DEFUN (config_no_hostname, no_hostname_cmd, "no hostname [HOSTNAME]", NO_STR "Reset system's network name\ "Host name of this router\")
 
 DEFUN (config_password, password_cmd, "password (8|) WORD", "Assign the terminal connection password\ "Specifies a HIDDEN password will follow\" "dummy string \" "The HIDDEN line password string\")
 
 ALIAS (config_password, password_text_cmd, "password LINE", "Assign the terminal connection password\he UNENCRYPTED(cleartext) line password\
 
 ALIAS (config_enable_password, enable_password_text_cmd, "enable password LINE", "Modify enable password parameters\ssign the privileged level password\"The UNENCRYPTED(cleartext) 'enable' password\")
 
 DEFUN (config_terminal_length, config_terminal_length_cmd, "terminal length <0-512>", "Set terminal line parameters\ "Set number of lines on a screen\" "Number of lines on screen(0 for no pausing)\")
 
 DEFUN (config_terminal_no_length, config_terminal_no_length_cmd, "terminal no length", "Set terminal line parameters\ NO_STR "Set number of lines on a screen\")
 
 DEFUN (service_terminal_length, service_terminal_length_cmd, "service terminal-length <0-512>", "Set up miscellaneous service\ "System wide terminal length configuration\" "Number of lines of VTY(0 means no line control)\")
 
 DEFUN (no_service_terminal_length, no_service_terminal_length_cmd, "no service terminal-length [<0-512>]", NO_STR "Set up miscellaneous service\ "System wide terminal length configuration\" "Number of lines of VTY(0 means no line control)\")
 
 DEFUN_HIDDEN (do_echo, echo_cmd, "echo .MESSAGE", "Echo a message back to the vty\ "The message to echo\")
 
 DEFUN (banner_motd_file, banner_motd_file_cmd, "banner motd file [FILE]", "Set banner\ "Banner for motd\" "Banner from a file\" "Filename\")
 
 DEFUN (banner_motd_default, banner_motd_default_cmd, "banner motd default", "Set banner string\ "Strings for motd\" "Default string\")
 
 DEFUN (no_banner_motd, no_banner_motd_cmd, "no banner motd", NO_STR "Set banner string\ "Strings for motd\")
 
void host_config_set (const char *)
 
void install_default (int node_type)
 
void vty_install_default (int node_type)
 
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...
 
void cmd_init (int)
 

Variables

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
 

Macro Definition Documentation

◆ ADD [1/2]

#define ADD (   out,
  str 
)
Value:
for (j = 0; j < strlen(str); ++j) \
*(out++) = str[j];

◆ ADD [2/2]

#define ADD (   out,
  str 
)
Value:
for (j = 0; j < strlen(str); ++j) \
*(out++) = str[j];