\doxysection{include/osmocom/vty/command.h File Reference}
\label{command_8h}\index{include/osmocom/vty/command.h@{include/osmocom/vty/command.h}}


Zebra configuration command interface routine.  


{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$sys/types.\+h$>$}\newline
{\ttfamily \#include \char`\"{}vector.\+h\char`\"{}}\newline
{\ttfamily \#include $<$osmocom/core/defs.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include \char`\"{}vty.\+h\char`\"{}}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ host}
\begin{DoxyCompactList}\small\item\em Host configuration variable. \end{DoxyCompactList}\item 
struct \textbf{ cmd\+\_\+node}
\begin{DoxyCompactList}\small\item\em Node which has some commands and prompt string and configuration function pointer . \end{DoxyCompactList}\item 
struct \textbf{ cmd\+\_\+element}
\begin{DoxyCompactList}\small\item\em Structure of a command element. \end{DoxyCompactList}\item 
struct \textbf{ desc}
\begin{DoxyCompactList}\small\item\em Command description structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ CMD\+\_\+\+SUCCESS}~0
\begin{DoxyCompactList}\small\item\em Return value of the commands. \end{DoxyCompactList}\item 
\#define \textbf{ CMD\+\_\+\+WARNING}~1
\item 
\#define \textbf{ CMD\+\_\+\+ERR\+\_\+\+NO\+\_\+\+MATCH}~2
\item 
\#define \textbf{ CMD\+\_\+\+ERR\+\_\+\+AMBIGUOUS}~3
\item 
\#define \textbf{ CMD\+\_\+\+ERR\+\_\+\+INCOMPLETE}~4
\item 
\#define \textbf{ CMD\+\_\+\+ERR\+\_\+\+EXEED\+\_\+\+ARGC\+\_\+\+MAX}~5
\item 
\#define \textbf{ CMD\+\_\+\+ERR\+\_\+\+NOTHING\+\_\+\+TODO}~6
\item 
\#define \textbf{ CMD\+\_\+\+COMPLETE\+\_\+\+FULL\+\_\+\+MATCH}~7
\item 
\#define \textbf{ CMD\+\_\+\+COMPLETE\+\_\+\+MATCH}~8
\item 
\#define \textbf{ CMD\+\_\+\+COMPLETE\+\_\+\+LIST\+\_\+\+MATCH}~9
\item 
\#define \textbf{ CMD\+\_\+\+SUCCESS\+\_\+\+DAEMON}~10
\item 
\#define \textbf{ CMD\+\_\+\+ERR\+\_\+\+INVALID\+\_\+\+INDENT}~11
\item 
\#define \textbf{ CMD\+\_\+\+ARGC\+\_\+\+MAX}~256
\item 
\#define \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname,  cmdname,  cmdstr,  helpstr,  attrs,  dnum)
\item 
\#define \textbf{ g\+DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname,  cmdname,  cmdstr,  helpstr,  attrs,  dnum)
\item 
\#define \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT\+\_\+\+ATTR\+\_\+\+USRATTR}(funcname,  cmdname,  cmdstr,  helpstr,  attrs,  usrattrs)
\item 
\#define \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+FUNC\+\_\+\+DECL}(funcname)~  static int funcname (struct \textbf{ cmd\+\_\+element} $\ast$, struct \textbf{ vty} $\ast$, int, const char $\ast$[$\,$]); \textbackslash{}
\item 
\#define \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+FUNC\+\_\+\+TEXT}(funcname)
\item 
\#define \textbf{ DEFUN}(funcname,  cmdname,  cmdstr,  helpstr)
\begin{DoxyCompactList}\small\item\em Macro for defining a VTY node and function. \end{DoxyCompactList}\item 
\#define \textbf{ g\+DEFUN}(funcname,  cmdname,  cmdstr,  helpstr)
\begin{DoxyCompactList}\small\item\em Macro for defining a non-\/static (global) VTY node and function. \end{DoxyCompactList}\item 
\#define \textbf{ DEFUN\+\_\+\+ATTR}(funcname,  cmdname,  cmdstr,  helpstr,  attr)
\item 
\#define \textbf{ DEFUN\+\_\+\+HIDDEN}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+ATTR} (funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+HIDDEN})
\item 
\#define \textbf{ DEFUN\+\_\+\+DEPRECATED}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+ATTR} (funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+DEPRECATED})
\item 
\#define \textbf{ DEFUN\+\_\+\+ATTR\+\_\+\+USRATTR}(funcname,  cmdname,  attr,  usrattr,  cmdstr,  helpstr)
\begin{DoxyCompactList}\small\item\em Macro for defining a VTY node and function with global \& program specific attributes. \end{DoxyCompactList}\item 
\#define \textbf{ DEFUN\+\_\+\+USRATTR}(funcname,  cmdname,  usrattr,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+ATTR\+\_\+\+USRATTR}(funcname, cmdname, 0, usrattr, cmdstr, helpstr)
\item 
\#define \textbf{ DEFUN\+\_\+\+NOSH}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN}(funcname, cmdname, cmdstr, helpstr)
\item 
\#define \textbf{ DEFSH}(daemon,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(NULL, cmdname, cmdstr, helpstr, 0, daemon) \textbackslash{}
\item 
\#define \textbf{ DEFUNSH}(daemon,  funcname,  cmdname,  cmdstr,  helpstr)
\item 
\#define \textbf{ DEFUNSH\+\_\+\+ATTR}(daemon,  funcname,  cmdname,  cmdstr,  helpstr,  attr)
\item 
\#define \textbf{ DEFUNSH\+\_\+\+HIDDEN}(daemon,  funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUNSH\+\_\+\+ATTR} (daemon, funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+HIDDEN})
\item 
\#define \textbf{ DEFUNSH\+\_\+\+DEPRECATED}(daemon,  funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUNSH\+\_\+\+ATTR} (daemon, funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+DEPRECATED})
\item 
\#define \textbf{ ALIAS}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, 0, 0)
\item 
\#define \textbf{ g\+ALIAS}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ g\+DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, 0, 0)
\item 
\#define \textbf{ ALIAS\+\_\+\+ATTR}(funcname,  cmdname,  cmdstr,  helpstr,  attr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, attr, 0)
\item 
\#define \textbf{ ALIAS\+\_\+\+HIDDEN}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+HIDDEN}, 0)
\item 
\#define \textbf{ ALIAS\+\_\+\+DEPRECATED}(funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+DEPRECATED}, 0)
\item 
\#define \textbf{ ALIAS\+\_\+\+SH}(daemon,  funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, 0, daemon)
\item 
\#define \textbf{ ALIAS\+\_\+\+SH\+\_\+\+HIDDEN}(daemon,  funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+HIDDEN}, daemon)
\item 
\#define \textbf{ ALIAS\+\_\+\+SH\+\_\+\+DEPRECATED}(daemon,  funcname,  cmdname,  cmdstr,  helpstr)~  \textbf{ DEFUN\+\_\+\+CMD\+\_\+\+ELEMENT}(funcname, cmdname, cmdstr, helpstr, \textbf{ CMD\+\_\+\+ATTR\+\_\+\+DEPRECATED}, daemon)
\item 
\#define \textbf{ CMD\+\_\+\+OPTION}(\textbf{ S})~((\textbf{ S}[0]) == \textquotesingle{}[\textquotesingle{})
\item 
\#define \textbf{ CMD\+\_\+\+VARIABLE}(\textbf{ S})~(((\textbf{ S}[0]) $>$= \textquotesingle{}A\textquotesingle{} \&\& (\textbf{ S}[0]) $<$= \textquotesingle{}Z\textquotesingle{}) $\vert$$\vert$ ((\textbf{ S}[0]) == \textquotesingle{}$<$\textquotesingle{}))
\item 
\#define \textbf{ CMD\+\_\+\+VARARG}(\textbf{ S})~((\textbf{ S}[0]) == \textquotesingle{}.\textquotesingle{})
\item 
\#define \textbf{ CMD\+\_\+\+RANGE}(\textbf{ S})~((\textbf{ S}[0] == \textquotesingle{}$<$\textquotesingle{}))
\item 
\#define \textbf{ CMD\+\_\+\+IPV4}(\textbf{ S})~((strcmp ((\textbf{ S}), \char`\"{}A.\+B.\+C.\+D\char`\"{}) == 0))
\item 
\#define \textbf{ CMD\+\_\+\+IPV4\+\_\+\+PREFIX}(\textbf{ S})~((strcmp ((\textbf{ S}), \char`\"{}A.\+B.\+C.\+D/M\char`\"{}) == 0))
\item 
\#define \textbf{ CMD\+\_\+\+IPV6}(\textbf{ S})~((strcmp ((\textbf{ S}), \char`\"{}X\+:\+X\+::\+X\+:X\char`\"{}) == 0))
\item 
\#define \textbf{ CMD\+\_\+\+IPV6\+\_\+\+PREFIX}(\textbf{ S})~((strcmp ((\textbf{ S}), \char`\"{}X\+:\+X\+::\+X\+:X/M\char`\"{}) == 0))
\item 
\#define \textbf{ VTY\+\_\+\+IPV4\+\_\+\+CMD}~\char`\"{}A.\+B.\+C.\+D\char`\"{}
\item 
\#define \textbf{ VTY\+\_\+\+IPV6\+\_\+\+CMD}~\char`\"{}X\+:\+X\+::\+X\+:X\char`\"{}
\item 
\#define \textbf{ VTY\+\_\+\+IPV46\+\_\+\+CMD}~\char`\"{}(\char`\"{} \textbf{ VTY\+\_\+\+IPV4\+\_\+\+CMD} \char`\"{}$\vert$\char`\"{} \textbf{ VTY\+\_\+\+IPV6\+\_\+\+CMD} \char`\"{})\char`\"{}
\item 
\#define \textbf{ SHOW\+\_\+\+STR}~\char`\"{}Show running system \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ IP\+\_\+\+STR}~\char`\"{}IP \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ IPV6\+\_\+\+STR}~\char`\"{}IPv6 \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ NO\+\_\+\+STR}~\char`\"{}Negate a command or set its \textbf{ defaults\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ CLEAR\+\_\+\+STR}~\char`\"{}Reset \textbf{ functions\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ RIP\+\_\+\+STR}~\char`\"{}RIP \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ BGP\+\_\+\+STR}~\char`\"{}BGP \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ OSPF\+\_\+\+STR}~\char`\"{}OSPF \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ NEIGHBOR\+\_\+\+STR}~\char`\"{}Specify neighbor \textbf{ router\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ DEBUG\+\_\+\+STR}~\char`\"{}Debugging functions (see also \textquotesingle{}undebug\textquotesingle{})\textbackslash{}\textbf{ n}\char`\"{}
\item 
\#define \textbf{ UNDEBUG\+\_\+\+STR}~\char`\"{}Disable debugging functions (see also \textquotesingle{}debug\textquotesingle{})\textbackslash{}\textbf{ n}\char`\"{}
\item 
\#define \textbf{ ROUTER\+\_\+\+STR}~\char`\"{}Enable a routing \textbf{ process\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ AS\+\_\+\+STR}~\char`\"{}AS \textbf{ number\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ MBGP\+\_\+\+STR}~\char`\"{}MBGP \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ MATCH\+\_\+\+STR}~\char`\"{}Match values from routing \textbf{ table\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ SET\+\_\+\+STR}~\char`\"{}Set values in destination routing \textbf{ protocol\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ OUT\+\_\+\+STR}~\char`\"{}Filter outgoing routing \textbf{ updates\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ IN\+\_\+\+STR}~\char`\"{}Filter incoming routing \textbf{ updates\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ V4\+NOTATION\+\_\+\+STR}~\char`\"{}specify by IPv4 address notation(e.\+g. 0.\+0.\+0.\+0)\textbackslash{}\textbf{ n}\char`\"{}
\item 
\#define \textbf{ OSPF6\+\_\+\+NUMBER\+\_\+\+STR}~\char`\"{}Specify by \textbf{ number\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ INTERFACE\+\_\+\+STR}~\char`\"{}Interface \textbf{ infomation\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ IFNAME\+\_\+\+STR}~\char`\"{}Interface \textbf{ name}(e.\+g. ep0)\textbackslash{}\textbf{ n}\char`\"{}
\item 
\#define \textbf{ IP6\+\_\+\+STR}~\char`\"{}IPv6 \textbf{ Information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ OSPF6\+\_\+\+STR}~\char`\"{}Open Shortest Path First (OSPF) \textbf{ for} \textbf{ IPv6\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ OSPF6\+\_\+\+ROUTER\+\_\+\+STR}~\char`\"{}Enable a routing \textbf{ process\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ OSPF6\+\_\+\+INSTANCE\+\_\+\+STR}~\char`\"{}$<$1-\/65535$>$ Instance \textbf{ ID\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ SECONDS\+\_\+\+STR}~\char`\"{}$<$1-\/65535$>$ Seconds\textbackslash{}n\char`\"{}
\item 
\#define \textbf{ ROUTE\+\_\+\+STR}~\char`\"{}Routing \textbf{ Table\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ PREFIX\+\_\+\+LIST\+\_\+\+STR}~\char`\"{}Build a prefix \textbf{ list\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ OSPF6\+\_\+\+DUMP\+\_\+\+TYPE\+\_\+\+LIST}~\char`\"{}(neighbor$\vert$interface$\vert$area$\vert$lsa$\vert$zebra$\vert$\textbf{ config}$\vert$dbex$\vert$spf$\vert$route$\vert$lsdb$\vert$redistribute$\vert$hook$\vert$asbr$\vert$prefix$\vert$abr)\char`\"{}
\item 
\#define \textbf{ ISIS\+\_\+\+STR}~\char`\"{}IS-\/IS \textbf{ information\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ AREA\+\_\+\+TAG\+\_\+\+STR}~\char`\"{}[area tag]\textbackslash{}\textbf{ n}\char`\"{}
\item 
\#define \textbf{ CONF\+\_\+\+BACKUP\+\_\+\+EXT}~\char`\"{}.sav\char`\"{}
\item 
\#define \textbf{ NEIGHBOR\+\_\+\+CMD}~\char`\"{}neighbor A.\+B.\+C.\+D \char`\"{}
\item 
\#define \textbf{ NO\+\_\+\+NEIGHBOR\+\_\+\+CMD}~\char`\"{}no neighbor A.\+B.\+C.\+D \char`\"{}
\item 
\#define \textbf{ NEIGHBOR\+\_\+\+ADDR\+\_\+\+STR}~\char`\"{}Neighbor \textbf{ address\textbackslash{}n}\char`\"{}
\item 
\#define \textbf{ NEIGHBOR\+\_\+\+CMD2}~\char`\"{}neighbor (A.\+B.\+C.\+D$\vert$WORD) \char`\"{}
\item 
\#define \textbf{ NO\+\_\+\+NEIGHBOR\+\_\+\+CMD2}~\char`\"{}no neighbor (A.\+B.\+C.\+D$\vert$WORD) \char`\"{}
\item 
\#define \textbf{ NEIGHBOR\+\_\+\+ADDR\+\_\+\+STR2}~\char`\"{}Neighbor address\textbackslash{}n\+Neighbor \textbf{ tag\textbackslash{}n}\char`\"{}
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ node\+\_\+type} \{ \newline
\textbf{ AUTH\+\_\+\+NODE}
, \newline
\textbf{ VIEW\+\_\+\+NODE}
, \newline
\textbf{ AUTH\+\_\+\+ENABLE\+\_\+\+NODE}
, \newline
\textbf{ ENABLE\+\_\+\+NODE}
, \newline
\textbf{ CONFIG\+\_\+\+NODE}
, \newline
\textbf{ SERVICE\+\_\+\+NODE}
, \newline
\textbf{ DEBUG\+\_\+\+NODE}
, \newline
\textbf{ CFG\+\_\+\+LOG\+\_\+\+NODE}
, \newline
\textbf{ CFG\+\_\+\+STATS\+\_\+\+NODE}
, \newline
\textbf{ VTY\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+E1\+INP\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+IPA\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+NS\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+BSSGP\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CTRL\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+AS\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+ASP\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+XUA\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+RTABLE\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+LINK\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+LINKSET\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+SCCPADDR\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CS7\+\_\+\+SCCPADDR\+\_\+\+GT\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+CPU\+\_\+\+SCHED\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+NS\+\_\+\+BIND\+\_\+\+NODE}
, \newline
\textbf{ L\+\_\+\+NS\+\_\+\+NSE\+\_\+\+NODE}
, \newline
\textbf{ RESERVED1\+\_\+\+NODE}
, \newline
\textbf{ RESERVED2\+\_\+\+NODE}
, \newline
\textbf{ RESERVED3\+\_\+\+NODE}
, \newline
\textbf{ RESERVED4\+\_\+\+NODE}
, \newline
\textbf{ RESERVED5\+\_\+\+NODE}
, \newline
\textbf{ RESERVED6\+\_\+\+NODE}
, \newline
\textbf{ RESERVED7\+\_\+\+NODE}
, \newline
\textbf{ RESERVED8\+\_\+\+NODE}
, \newline
\textbf{ \+\_\+\+LAST\+\_\+\+OSMOVTY\+\_\+\+NODE}
 \}
\begin{DoxyCompactList}\small\item\em There are some command levels which called from command node. \end{DoxyCompactList}\item 
enum \{ \newline
\textbf{ CMD\+\_\+\+ATTR\+\_\+\+DEPRECATED} = (1 $<$$<$ 0)
, \newline
\textbf{ CMD\+\_\+\+ATTR\+\_\+\+HIDDEN} = (1 $<$$<$ 1)
, \newline
\textbf{ CMD\+\_\+\+ATTR\+\_\+\+IMMEDIATE} = (1 $<$$<$ 2)
, \newline
\textbf{ CMD\+\_\+\+ATTR\+\_\+\+NODE\+\_\+\+EXIT} = (1 $<$$<$ 3)
, \newline
\textbf{ CMD\+\_\+\+ATTR\+\_\+\+LIB\+\_\+\+COMMAND} = (1 $<$$<$ 4)
 \}
\begin{DoxyCompactList}\small\item\em Attributes (flags) for \doxyref{cmd\+\_\+element}{p.}{structcmd__element}. \end{DoxyCompactList}\item 
enum \{ \newline
\textbf{ OSMO\+\_\+\+SCCP\+\_\+\+LIB\+\_\+\+ATTR\+\_\+\+RSTRT\+\_\+\+ASP}
, \newline
\textbf{ OSMO\+\_\+\+ABIS\+\_\+\+LIB\+\_\+\+ATTR\+\_\+\+IPA\+\_\+\+NEW\+\_\+\+LNK}
, \newline
\textbf{ OSMO\+\_\+\+ABIS\+\_\+\+LIB\+\_\+\+ATTR\+\_\+\+LINE\+\_\+\+UPD}
, \newline
\textbf{ \+\_\+\+OSMO\+\_\+\+CORE\+\_\+\+LIB\+\_\+\+ATTR\+\_\+\+COUNT}
 \}
\begin{DoxyCompactList}\small\item\em Attributes shared between libraries (up to 32 entries). \end{DoxyCompactList}\item 
enum \textbf{ vty\+\_\+ref\+\_\+gen\+\_\+mode} \{ \newline
\textbf{ VTY\+\_\+\+REF\+\_\+\+GEN\+\_\+\+MODE\+\_\+\+DEFAULT} = 0
, \newline
\textbf{ VTY\+\_\+\+REF\+\_\+\+GEN\+\_\+\+MODE\+\_\+\+EXPERT}
, \newline
\textbf{ VTY\+\_\+\+REF\+\_\+\+GEN\+\_\+\+MODE\+\_\+\+HIDDEN}
 \}
\begin{DoxyCompactList}\small\item\em VTY reference generation mode. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ install\+\_\+node} (struct \textbf{ cmd\+\_\+node} $\ast$\textbf{ node}, int($\ast$func)(struct \textbf{ vty} $\ast$))
\begin{DoxyCompactList}\small\item\em Install top node of command vector. \end{DoxyCompactList}\item 
void \textbf{ install\+\_\+default} (int \textbf{ node})
\begin{DoxyCompactList}\small\item\em Deprecated, now happens implicitly when calling \doxyref{install\+\_\+node()}{p.}{group__command_ga7ee8a7c258e1e5a6e3ff6173dd1658e3}. \end{DoxyCompactList}\item 
void \textbf{ install\+\_\+element} (int ntype, struct \textbf{ cmd\+\_\+element} $\ast$cmd)
\begin{DoxyCompactList}\small\item\em Install a command into a node. \end{DoxyCompactList}\item 
void \textbf{ install\+\_\+lib\+\_\+element} (int ntype, struct \textbf{ cmd\+\_\+element} $\ast$cmd)
\begin{DoxyCompactList}\small\item\em Install a library command into a node. \end{DoxyCompactList}\item 
void \textbf{ install\+\_\+element\+\_\+ve} (struct \textbf{ cmd\+\_\+element} $\ast$cmd)
\item 
void \textbf{ install\+\_\+lib\+\_\+element\+\_\+ve} (struct \textbf{ cmd\+\_\+element} $\ast$cmd)
\item 
void \textbf{ sort\+\_\+node} (void)
\begin{DoxyCompactList}\small\item\em Sort each node\textquotesingle{}s command element according to command string. \end{DoxyCompactList}\item 
void \textbf{ vty\+\_\+install\+\_\+default} (int \textbf{ node})
\begin{DoxyCompactList}\small\item\em Deprecated, now happens implicitly when calling \doxyref{install\+\_\+node()}{p.}{group__command_ga7ee8a7c258e1e5a6e3ff6173dd1658e3}. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ argv\+\_\+concat} (const char $\ast$$\ast$\textbf{ argv}, int \textbf{ argc}, int shift)
\item 
\textbf{ vector} \textbf{ cmd\+\_\+make\+\_\+strvec} (const char $\ast$string)
\begin{DoxyCompactList}\small\item\em Breaking up string into each command piece. \end{DoxyCompactList}\item 
int \textbf{ cmd\+\_\+make\+\_\+strvec2} (const char $\ast$string, char $\ast$$\ast$indent, \textbf{ vector} $\ast$strvec\+\_\+p)
\begin{DoxyCompactList}\small\item\em Break up string in command tokens. \end{DoxyCompactList}\item 
void \textbf{ cmd\+\_\+free\+\_\+strvec} (\textbf{ vector} v)
\begin{DoxyCompactList}\small\item\em Free allocated string vector. \end{DoxyCompactList}\item 
\textbf{ vector} \textbf{ cmd\+\_\+describe\+\_\+command} (\textbf{ vector} vline, struct \textbf{ vty} $\ast$\textbf{ vty}, int $\ast$status)
\item 
char $\ast$$\ast$ \textbf{ cmd\+\_\+complete\+\_\+command} (\textbf{ vector} vline, struct \textbf{ vty} $\ast$\textbf{ vty}, int $\ast$status)
\item 
const char $\ast$ \textbf{ cmd\+\_\+prompt} (enum \textbf{ node\+\_\+type} \textbf{ node})
\begin{DoxyCompactList}\small\item\em Return prompt character of specified node. \end{DoxyCompactList}\item 
int \textbf{ config\+\_\+from\+\_\+file} (struct \textbf{ vty} $\ast$, FILE $\ast$)
\item 
enum \textbf{ node\+\_\+type} \textbf{ node\+\_\+parent} (enum \textbf{ node\+\_\+type})
\item 
int \textbf{ cmd\+\_\+execute\+\_\+command} (\textbf{ vector}, struct \textbf{ vty} $\ast$, struct \textbf{ cmd\+\_\+element} $\ast$$\ast$, int)
\item 
int \textbf{ cmd\+\_\+execute\+\_\+command\+\_\+strict} (\textbf{ vector}, struct \textbf{ vty} $\ast$, struct \textbf{ cmd\+\_\+element} $\ast$$\ast$)
\item 
void \textbf{ config\+\_\+replace\+\_\+string} (struct \textbf{ cmd\+\_\+element} $\ast$, char $\ast$,...)
\item 
void \textbf{ cmd\+\_\+init} (int)
\item 
const char $\ast$ \textbf{ host\+\_\+config\+\_\+file} (void)
\item 
void \textbf{ host\+\_\+config\+\_\+set} (const char $\ast$)
\item 
char $\ast$ \textbf{ osmo\+\_\+asciidoc\+\_\+escape} (const char $\ast$inp)
\begin{DoxyCompactList}\small\item\em escape all special asciidoc symbols \end{DoxyCompactList}\item 
void \textbf{ print\+\_\+version} (int print\+\_\+copyright)
\begin{DoxyCompactList}\small\item\em print the version (and optionally copyright) information \end{DoxyCompactList}\item 
int \textbf{ vty\+\_\+dump\+\_\+xml\+\_\+ref\+\_\+mode} (FILE $\ast$stream, enum \textbf{ vty\+\_\+ref\+\_\+gen\+\_\+mode} \textbf{ mode})
\begin{DoxyCompactList}\small\item\em Print the XML reference of all VTY nodes to the given stream. \end{DoxyCompactList}\item 
int \textbf{ vty\+\_\+dump\+\_\+xml\+\_\+ref} (FILE $\ast$stream)
\begin{DoxyCompactList}\small\item\em Print the XML reference of all VTY nodes to the given stream. \end{DoxyCompactList}\item 
int \textbf{ vty\+\_\+cmd\+\_\+range\+\_\+match} (const char $\ast$range, const char $\ast$str)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ cmd\+\_\+element} \textbf{ config\+\_\+exit\+\_\+cmd}
\item 
struct \textbf{ cmd\+\_\+element} \textbf{ config\+\_\+help\+\_\+cmd}
\item 
struct \textbf{ cmd\+\_\+element} \textbf{ config\+\_\+list\+\_\+cmd}
\item 
struct \textbf{ cmd\+\_\+element} \textbf{ config\+\_\+end\+\_\+cmd}
\item 
void $\ast$ \textbf{ tall\+\_\+vty\+\_\+cmd\+\_\+ctx}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ vty\+\_\+ref\+\_\+gen\+\_\+mode\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ vty\+\_\+ref\+\_\+gen\+\_\+mode\+\_\+desc} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Zebra configuration command interface routine. 

