libosmovty
0.9.6-12.20170220git32ee5af8.fc32
Osmocom VTY library
|
#include <stdio.h>
#include <sys/types.h>
#include "vector.h"
#include "vty.h"
Go to the source code of this file.
|
#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. 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" |
|
|
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,
RESERVED1_NODE,
RESERVED2_NODE,
RESERVED3_NODE,
_LAST_OSMOVTY_NODE
} |
| There are some command levels which called from command node. More...
|
|
enum | { CMD_ATTR_DEPRECATED = 1,
CMD_ATTR_HIDDEN
} |
|
|
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. More...
|
|
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 *) |
|
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...
|
|
void * index
For current referencing point of interface, route-map, access-list etc...
Definition: vty.h:95
size_t sb_len
How many subnegotiation characters have we received?
Definition: vty.h:124
int vty_shell(struct vty *vty)
Return if this VTY is a shell or not.
Definition: vty.c:231
#define gDEFUN(funcname, cmdname, cmdstr, helpstr)
Macro for defining a non-static (global) VTY node and function.
Definition: command.h:209
void * tall_ctx
talloc context
Definition: vty.h:157
int node
Node index.
Definition: command.h:105
struct log_target * dbg
logging target associated with this telnet connection
Definition: telnet_interface.h:45
int advanced
Flags for services.
Definition: command.h:57
int length
Command length.
Definition: vty.h:79
int(* func)(struct vty *)
Node's configuration write function.
Definition: command.h:114
const char * name
name of the application
Definition: vty.h:151
void vty_out_stat_item_group(struct vty *vty, const char *prefix, struct osmo_stat_item_group *statg)
print a stat item group to given VTY
Definition: utils.c:107
char * vty_cmd_string_from_valstr(void *ctx, const struct value_string *vals, const char *prefix, const char *sep, const char *end, int do_lower)
Generate a VTY command string from value_string.
Definition: utils.c:191
const char * doc
Documentation of this command.
Definition: command.h:129
char * hist[VTY_MAXHIST]
Histry of command.
Definition: vty.h:85
void * priv
private data pointer passed through
Definition: telnet_interface.h:39
unsigned char iac_sb_in_progress
IAC SB (option subnegotiation) handling.
Definition: vty.h:114
const char * cmd
Command string.
Definition: command.h:140
void cmd_free_strvec(vector)
Free allocated string vector.
Definition: command.c:243
Structure of a command element.
Definition: command.h:126
node_type
There are some command levels which called from command node.
Definition: command.h:69
int osmo_vty_write_config_file(const char *filename)
Write the current running config to a given file.
Definition: command.c:3417
struct llist_head entry
linked list header for internal management
Definition: telnet_interface.h:37
int cp
Command cursor point.
Definition: vty.h:76
char * password
Password for vty interface.
Definition: command.h:40
int vty_config_unlock(struct vty *)
Unlock the configuration from a given VTY.
Definition: vty.c:336
int telnet_close_client(struct osmo_fd *fd)
close a telnet connection
Definition: telnet_interface.c:102
unsigned int cmdsize
Command index count.
Definition: command.h:132
@ CFG_STATS_NODE
Configure the statistics.
Definition: command.h:78
void vty_out_rate_ctr_group(struct vty *vty, const char *prefix, struct rate_ctr_group *ctrg)
print a rate counter group to given VTY
Definition: utils.c:75
struct vty * vty_new(void)
Allocate a new vty interface structure.
Definition: vty.c:97
int lines
Configure lines.
Definition: vty.h:132
void vty_event(enum event event, int sock, struct vty *vty)
callback from core VTY code about VTY related events
Definition: telnet_interface.c:180
int fd
File descripter of this vty.
Definition: vty.h:58
Node which has some commands and prompt string and configuration function pointer .
Definition: command.h:103
char * osmo_asciidoc_escape(const char *inp)
escape all special asciidoc symbols
Definition: command.c:410
void * priv
private data, specified by creator
Definition: vty.h:55
int max
Command max length.
Definition: vty.h:82
int osmo_vty_save_config_file(void)
Save the current state to the config file.
Definition: command.c:3435
@ AUTH_ENABLE_NODE
Authentication mode for change enable.
Definition: command.h:72
void install_node(struct cmd_node *, int(*)(struct vty *))
Install top node of command vector.
Definition: command.c:126
@ CONFIG_NODE
Config node. Default mode of config file.
Definition: command.h:74
A telnet connection.
Definition: telnet_interface.h:35
vector strvec
Pointing out each description vector.
Definition: command.h:131
vector cmd_make_strvec(const char *)
Definition: command.c:195
const char * version
version string of the application
Definition: vty.h:153
@ CFG_LOG_NODE
Configure the logging.
Definition: command.h:77
int telnet_init(void *tall_ctx, void *priv, int port)
Initialize telnet based VTY interface listening to 127.0.0.1.
Definition: telnet_interface.c:63
struct osmo_fd fd
filedsecriptor (socket )
Definition: telnet_interface.h:41
int width
Window width.
Definition: vty.h:127
void vty_close(struct vty *)
Close a given vty interface.
Definition: vty.c:190
unsigned char sb_buf[TELNET_NAWS_SB_LEN]
sub-negotiation buffer
Definition: vty.h:120
enum vty_type type
Is this vty connect to file or not.
Definition: vty.h:61
int hindex
History insert end point.
Definition: vty.h:91
void * vty_current_index(struct vty *vty)
return the current index of a given VTY
Definition: vty.c:306
const char * cmd_prompt(enum node_type)
Return prompt character of specified node.
Definition: command.c:397
static vector cmd_make_descvec(const char *string, const char *descstr)
New string vector.
Definition: command.c:294
int telnet_init_dynif(void *tall_ctx, void *priv, const char *ip, int port)
Initialize telnet based VTY interface.
Definition: telnet_interface.c:74
int lines
System wide terminal lines.
Definition: command.h:48
void vty_reset(void)
Reset all VTY status.
Definition: vty.c:1696
char * buf
Command input buffer.
Definition: vty.h:73
@ ENABLE_NODE
Enable node.
Definition: command.h:73
int(* is_config_node)(struct vty *vty, int node)
call-back to determine if node is config node
Definition: vty.h:161
int node
Node status of this vty.
Definition: vty.h:64
@ AUTH_NODE
Authentication mode of vty interface.
Definition: command.h:70
const char * string
Command specification by string.
Definition: command.h:127
int daemon
Daemon to which this command belong.
Definition: command.h:130
unsigned char attr
Command attributes.
Definition: command.h:135
const struct vty_app_info * app_info
VTY application information.
Definition: command.h:65
int(* go_parent_cb)(struct vty *vty)
call-back for returning to parent n ode
Definition: vty.h:159
char * enable
Enable password.
Definition: command.h:44
int(* config_is_consistent)(struct vty *vty)
Check if the config is consistent before write.
Definition: vty.h:163
void install_element(int node_type, struct cmd_element *)
Install a command into a node.
Definition: command.c:617
int vty_read_config_file(const char *file_name, void *priv)
Read the configuration file using the VTY code.
Definition: vty.c:1794
event
VTY events.
Definition: vty.h:29
int fail
Failure count.
Definition: vty.h:67
@ VIEW_NODE
View node. Default mode of vty interface.
Definition: command.h:71
void print_version(int print_copyright)
print the version (and optionally copyright) information
Definition: command.c:93
enum vty::@1 status
Current vty status.
char * name
Host name of this router.
Definition: command.h:37
char * config
config file name of this host
Definition: command.h:54
int vty_current_node(struct vty *vty)
return the current node of a given VTY
Definition: vty.c:312
int vty_out(struct vty *vty, const char *format,...)
VTY standard output function.
Definition: vty.c:241
unsigned char escape
For escape character.
Definition: vty.h:101
struct vty * vty
VTY instance associated with telnet connection.
Definition: telnet_interface.h:43
Command description structure.
Definition: command.h:139
Host configuration variable.
Definition: command.h:35
struct buffer * obuf
Output buffer.
Definition: vty.h:70
void * index_sub
For multiple level index treatment such as key chain and key.
Definition: vty.h:98
char * logfile
Log filename.
Definition: command.h:51
struct vty * vty_create(int vty_sock, void *priv)
Create new vty structure.
Definition: vty.c:1487
int config
In configure mode.
Definition: vty.h:137
#define DEFUN(funcname, cmdname, cmdstr, helpstr)
Macro for defining a VTY node and function.
Definition: command.h:198
@ VTY_NODE
Vty node.
Definition: command.h:80
unsigned char iac
IAC handling.
Definition: vty.h:111
const char * motd
Banner configuration.
Definition: command.h:61
int vty_config_lock(struct vty *)
Lock the configuration to a given VTY.
Definition: vty.c:323
int hp
History lookup current point.
Definition: vty.h:88
static char * cmd_desc_str(const char **string)
Fetch next description. Used in cmd_make_descvec().
Definition: command.c:259
vector cmd_vector
Vector of this node's command list.
Definition: command.h:117
int height
Widnow height.
Definition: vty.h:129
int vty_read(struct vty *vty)
Read data via vty socket.
Definition: vty.c:1266
int vty_out_newline(struct vty *vty)
print a newline on the given VTY
Definition: vty.c:298
void sort_node(void)
Sort each node's command element according to command string.
Definition: command.c:163
const char * prompt
Prompt character at vty interface.
Definition: command.h:108
void vty_init(struct vty_app_info *app_info)
Initialize VTY layer.
Definition: vty.c:1757
const char * str
Command's description.
Definition: command.h:141
const char * copyright
copyright string of the application
Definition: vty.h:155
#define CMD_SUCCESS
Return value of the commands.
Definition: command.h:145