\doxysection{Rate counters}
\label{group__rate__ctr}\index{Rate counters@{Rate counters}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ vty\+\_\+out\+\_\+context}
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef int($\ast$ \textbf{ rate\+\_\+ctr\+\_\+handler\+\_\+t}) (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$, struct \textbf{ rate\+\_\+ctr} $\ast$, const struct \textbf{ rate\+\_\+ctr\+\_\+desc} $\ast$, void $\ast$)
\item 
typedef int($\ast$ \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+handler\+\_\+t}) (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$, void $\ast$)
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum {\bfseries rate\+\_\+ctr\+\_\+intv} 
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+alloc} (void $\ast$ctx, const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} $\ast$\textbf{ desc}, unsigned int idx)
\item 
static void \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+upd\+\_\+idx} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$grp, unsigned int idx)
\item 
void \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+set\+\_\+name} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$grp, const char $\ast$\textbf{ name})
\item 
struct \textbf{ rate\+\_\+ctr} $\ast$ \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$grp, unsigned int idx)
\item 
void \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$grp)
\item 
void \textbf{ rate\+\_\+ctr\+\_\+add} (struct \textbf{ rate\+\_\+ctr} $\ast$ctr, int inc)
\item 
static void \textbf{ rate\+\_\+ctr\+\_\+add2} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, unsigned int idx, int inc)
\item 
static void \textbf{ rate\+\_\+ctr\+\_\+inc} (struct \textbf{ rate\+\_\+ctr} $\ast$ctr)
\item 
static void \textbf{ rate\+\_\+ctr\+\_\+inc2} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, unsigned int idx)
\item 
int64\+\_\+t \textbf{ rate\+\_\+ctr\+\_\+difference} (struct \textbf{ rate\+\_\+ctr} $\ast$ctr)
\item 
int \textbf{ rate\+\_\+ctr\+\_\+init} (void $\ast$tall\+\_\+ctx)
\item 
struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ \textbf{ rate\+\_\+ctr\+\_\+get\+\_\+group\+\_\+by\+\_\+name\+\_\+idx} (const char $\ast$\textbf{ name}, const unsigned int idx)
\item 
const struct \textbf{ rate\+\_\+ctr} $\ast$ \textbf{ rate\+\_\+ctr\+\_\+get\+\_\+by\+\_\+name} (const struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, const char $\ast$\textbf{ name})
\item 
int \textbf{ rate\+\_\+ctr\+\_\+for\+\_\+each\+\_\+counter} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, \textbf{ rate\+\_\+ctr\+\_\+handler\+\_\+t} \textbf{ handle\+\_\+counter}, void $\ast$\textbf{ data})
\item 
int \textbf{ rate\+\_\+ctr\+\_\+for\+\_\+each\+\_\+group} (\textbf{ rate\+\_\+ctr\+\_\+group\+\_\+handler\+\_\+t} handle\+\_\+group, void $\ast$\textbf{ data})
\item 
void \textbf{ rate\+\_\+ctr\+\_\+reset} (struct \textbf{ rate\+\_\+ctr} $\ast$ctr)
\item 
void \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+reset} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg)
\item 
static \textbf{ LLIST\+\_\+\+HEAD} (rate\+\_\+ctr\+\_\+groups)
\item 
static bool \textbf{ rate\+\_\+ctrl\+\_\+group\+\_\+desc\+\_\+validate} (const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} $\ast$\textbf{ desc})
\item 
static char $\ast$ \textbf{ mangle\+\_\+identifier\+\_\+ifneeded} (const void $\ast$ctx, const char $\ast$in)
\item 
static struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} $\ast$ \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc\+\_\+mangle} (void $\ast$ctx, const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} $\ast$\textbf{ desc})
\item 
static unsigned int \textbf{ rate\+\_\+ctr\+\_\+get\+\_\+unused\+\_\+name\+\_\+idx} (const char $\ast$\textbf{ name})
\item 
static void \textbf{ interval\+\_\+expired} (struct \textbf{ rate\+\_\+ctr} $\ast$ctr, enum \textbf{ rate\+\_\+ctr\+\_\+intv} intv)
\item 
static void \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+intv} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$grp)
\item 
static int \textbf{ rate\+\_\+ctr\+\_\+timer\+\_\+cb} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd, unsigned int what)
\item 
static int \textbf{ rate\+\_\+ctr\+\_\+handler} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, struct \textbf{ rate\+\_\+ctr} $\ast$ctr, const struct \textbf{ rate\+\_\+ctr\+\_\+desc} $\ast$\textbf{ desc}, void $\ast$vctx\+\_\+)
\item 
void \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group2} (struct \textbf{ vty} $\ast$\textbf{ vty}, const char $\ast$prefix, struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, bool skip\+\_\+zero)
\begin{DoxyCompactList}\small\item\em print a rate counter group to given VTY \end{DoxyCompactList}\item 
void \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group} (struct \textbf{ vty} $\ast$\textbf{ vty}, const char $\ast$prefix, struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg)
\item 
static char $\ast$ \textbf{ pad\+\_\+append\+\_\+str} (char $\ast$s, const char $\ast$a, int minwidth)
\item 
static char $\ast$ \textbf{ pad\+\_\+append\+\_\+ctr} (char $\ast$s, uint64\+\_\+t ctr, int minwidth)
\item 
static int \textbf{ rate\+\_\+ctr\+\_\+handler\+\_\+fmt} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, struct \textbf{ rate\+\_\+ctr} $\ast$ctr, const struct \textbf{ rate\+\_\+ctr\+\_\+desc} $\ast$\textbf{ desc}, void $\ast$vctx\+\_\+)
\item 
void \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt2} (struct \textbf{ vty} $\ast$\textbf{ vty}, const char $\ast$fmt, struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, bool skip\+\_\+zero)
\begin{DoxyCompactList}\small\item\em print a rate counter group to given VTY, formatting the line for each counter according to a format string. \end{DoxyCompactList}\item 
void \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt} (struct \textbf{ vty} $\ast$\textbf{ vty}, const char $\ast$fmt, struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg)
\item 
static int \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+handler} (struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$ctrg, void $\ast$vctx\+\_\+)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+SEC}
\item 
\textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+MIN}
\item 
\textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+HOUR}
\item 
\textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+DAY}
\item 
static void $\ast$ \textbf{ tall\+\_\+rate\+\_\+ctr\+\_\+ctx}
\item 
static struct \textbf{ osmo\+\_\+fd} \textbf{ rate\+\_\+ctr\+\_\+timer}
\item 
static uint64\+\_\+t \textbf{ timer\+\_\+ticks}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}


\doxysubsection{Function Documentation}
\mbox{\label{group__rate__ctr_ga3b3d2c93d8d370bcb477fab06acbb2ef}} 
\index{Rate counters@{Rate counters}!pad\_append\_ctr@{pad\_append\_ctr}}
\index{pad\_append\_ctr@{pad\_append\_ctr}!Rate counters@{Rate counters}}
\doxysubsubsection{pad\_append\_ctr()}
{\footnotesize\ttfamily static char $\ast$ pad\+\_\+append\+\_\+ctr (\begin{DoxyParamCaption}\item[{char $\ast$}]{s,  }\item[{uint64\+\_\+t}]{ctr,  }\item[{int}]{minwidth }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+ASSERT}.



Referenced by \textbf{ rate\+\_\+ctr\+\_\+handler\+\_\+fmt()}.

\mbox{\label{group__rate__ctr_ga57b15de928c5af802726cfa83e49dac2}} 
\index{Rate counters@{Rate counters}!pad\_append\_str@{pad\_append\_str}}
\index{pad\_append\_str@{pad\_append\_str}!Rate counters@{Rate counters}}
\doxysubsubsection{pad\_append\_str()}
{\footnotesize\ttfamily static char $\ast$ pad\+\_\+append\+\_\+str (\begin{DoxyParamCaption}\item[{char $\ast$}]{s,  }\item[{const char $\ast$}]{a,  }\item[{int}]{minwidth }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+ASSERT}.



Referenced by \textbf{ rate\+\_\+ctr\+\_\+handler\+\_\+fmt()}.

\mbox{\label{group__rate__ctr_ga68121962f975edf4cc9a5b3d1bf7af46}} 
\index{Rate counters@{Rate counters}!rate\_ctr\_group\_handler@{rate\_ctr\_group\_handler}}
\index{rate\_ctr\_group\_handler@{rate\_ctr\_group\_handler}!Rate counters@{Rate counters}}
\doxysubsubsection{rate\_ctr\_group\_handler()}
{\footnotesize\ttfamily static int rate\+\_\+ctr\+\_\+group\+\_\+handler (\begin{DoxyParamCaption}\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg,  }\item[{void $\ast$}]{vctx\+\_\+ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc\+::class\+\_\+id}, \textbf{ rate\+\_\+ctr\+\_\+group\+::desc}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc\+::group\+\_\+description}, \textbf{ rate\+\_\+ctr\+\_\+group\+::idx}, \textbf{ vty\+\_\+out\+\_\+context\+::max\+\_\+level}, \textbf{ rate\+\_\+ctr\+\_\+group\+::name}, \textbf{ vty\+\_\+out\+\_\+context\+::prefix}, \textbf{ rate\+\_\+ctr\+\_\+for\+\_\+each\+\_\+counter()}, \textbf{ rate\+\_\+ctr\+\_\+handler()}, \textbf{ vty\+\_\+out\+\_\+context\+::vty}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ vty\+\_\+out\+\_\+statistics\+\_\+partial2()}.

\mbox{\label{group__rate__ctr_gad40ce0111a2cde64e9c8cd4d2fb8d2f5}} 
\index{Rate counters@{Rate counters}!rate\_ctr\_handler@{rate\_ctr\_handler}}
\index{rate\_ctr\_handler@{rate\_ctr\_handler}!Rate counters@{Rate counters}}
\doxysubsubsection{rate\_ctr\_handler()}
{\footnotesize\ttfamily static int rate\+\_\+ctr\+\_\+handler (\begin{DoxyParamCaption}\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg,  }\item[{struct \textbf{ rate\+\_\+ctr} $\ast$}]{ctr,  }\item[{const struct \textbf{ rate\+\_\+ctr\+\_\+desc} $\ast$}]{desc,  }\item[{void $\ast$}]{vctx\+\_\+ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ current}, \textbf{ intv}, \textbf{ vty\+\_\+out\+\_\+context\+::prefix}, \textbf{ rate\+\_\+ctr\+\_\+per\+\_\+intv\+::rate}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+DAY}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+HOUR}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+MIN}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+SEC}, \textbf{ vty\+\_\+out\+\_\+context\+::skip\+\_\+zero}, \textbf{ vty\+\_\+out\+\_\+context\+::vty}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+handler()}, and \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group2()}.

\mbox{\label{group__rate__ctr_gaf690d0cd1df574b7ffe608378876be4b}} 
\index{Rate counters@{Rate counters}!rate\_ctr\_handler\_fmt@{rate\_ctr\_handler\_fmt}}
\index{rate\_ctr\_handler\_fmt@{rate\_ctr\_handler\_fmt}!Rate counters@{Rate counters}}
\doxysubsubsection{rate\_ctr\_handler\_fmt()}
{\footnotesize\ttfamily static int rate\+\_\+ctr\+\_\+handler\+\_\+fmt (\begin{DoxyParamCaption}\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg,  }\item[{struct \textbf{ rate\+\_\+ctr} $\ast$}]{ctr,  }\item[{const struct \textbf{ rate\+\_\+ctr\+\_\+desc} $\ast$}]{desc,  }\item[{void $\ast$}]{vctx\+\_\+ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ current}, \textbf{ intv}, \textbf{ len()}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ pad\+\_\+append\+\_\+ctr()}, \textbf{ pad\+\_\+append\+\_\+str()}, \textbf{ vty\+\_\+out\+\_\+context\+::prefix}, \textbf{ previous}, \textbf{ rate\+\_\+ctr\+\_\+per\+\_\+intv\+::rate}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+DAY}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+HOUR}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+MIN}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INTV\+\_\+\+SEC}, \textbf{ vty\+\_\+out\+\_\+context\+::skip\+\_\+zero}, \textbf{ vty\+\_\+out\+\_\+context\+::vty}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt2()}.

\mbox{\label{group__rate__ctr_ga5de8cf4406811512b069c9862c131a32}} 
\index{Rate counters@{Rate counters}!vty\_out\_rate\_ctr\_group@{vty\_out\_rate\_ctr\_group}}
\index{vty\_out\_rate\_ctr\_group@{vty\_out\_rate\_ctr\_group}!Rate counters@{Rate counters}}
\doxysubsubsection{vty\_out\_rate\_ctr\_group()}
{\footnotesize\ttfamily void vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const char $\ast$}]{prefix,  }\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg }\end{DoxyParamCaption})}



References \textbf{ vty\+\_\+out\+\_\+context\+::prefix}, and \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group2()}.

\mbox{\label{group__rate__ctr_ga9b507cc7330e223c7e002ee596a9f46c}} 
\index{Rate counters@{Rate counters}!vty\_out\_rate\_ctr\_group2@{vty\_out\_rate\_ctr\_group2}}
\index{vty\_out\_rate\_ctr\_group2@{vty\_out\_rate\_ctr\_group2}!Rate counters@{Rate counters}}
\doxysubsubsection{vty\_out\_rate\_ctr\_group2()}
{\footnotesize\ttfamily void vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group2 (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const char $\ast$}]{prefix,  }\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg,  }\item[{bool}]{skip\+\_\+zero }\end{DoxyParamCaption})}



print a rate counter group to given VTY 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em vty} & The VTY to which it should be printed \\
\hline
\mbox{\texttt{ in}}  & {\em prefix} & Any additional log prefix ahead of each line \\
\hline
\mbox{\texttt{ in}}  & {\em ctrg} & Rate counter group to be printed \\
\hline
\mbox{\texttt{ in}}  & {\em skip\+\_\+zero} & Skip all zero-\/valued counters \\
\hline
\end{DoxyParams}


References \textbf{ rate\+\_\+ctr\+\_\+group\+::desc}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc\+::group\+\_\+description}, \textbf{ vty\+\_\+out\+\_\+context\+::prefix}, \textbf{ rate\+\_\+ctr\+\_\+for\+\_\+each\+\_\+counter()}, \textbf{ rate\+\_\+ctr\+\_\+handler()}, \textbf{ vty\+\_\+out\+\_\+context\+::skip\+\_\+zero}, \textbf{ vty}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group()}.

\mbox{\label{group__rate__ctr_ga1f506094febaa7980ae804d66928903c}} 
\index{Rate counters@{Rate counters}!vty\_out\_rate\_ctr\_group\_fmt@{vty\_out\_rate\_ctr\_group\_fmt}}
\index{vty\_out\_rate\_ctr\_group\_fmt@{vty\_out\_rate\_ctr\_group\_fmt}!Rate counters@{Rate counters}}
\doxysubsubsection{vty\_out\_rate\_ctr\_group\_fmt()}
{\footnotesize\ttfamily void vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const char $\ast$}]{fmt,  }\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg }\end{DoxyParamCaption})}



References \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt2()}.

\mbox{\label{group__rate__ctr_gafbb6c23d50acf407984b02527ec22faf}} 
\index{Rate counters@{Rate counters}!vty\_out\_rate\_ctr\_group\_fmt2@{vty\_out\_rate\_ctr\_group\_fmt2}}
\index{vty\_out\_rate\_ctr\_group\_fmt2@{vty\_out\_rate\_ctr\_group\_fmt2}!Rate counters@{Rate counters}}
\doxysubsubsection{vty\_out\_rate\_ctr\_group\_fmt2()}
{\footnotesize\ttfamily void vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt2 (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const char $\ast$}]{fmt,  }\item[{struct \textbf{ rate\+\_\+ctr\+\_\+group} $\ast$}]{ctrg,  }\item[{bool}]{skip\+\_\+zero }\end{DoxyParamCaption})}



print a rate counter group to given VTY, formatting the line for each counter according to a format string. 

The following format string directives are supported\+:
\begin{DoxyItemize}
\item d\+: The description of the counter
\item n\+: The name of the counter
\item c\+: The current value of the counter
\item p\+: The previous value of the counter
\item S\+: The interval of the counter in seconds
\item M\+: The interval of the counter in minutes
\item H\+: The interval of the counter in hours
\item D\+: The interval of the counter in days
\item \%\%\+: Print a literal \%.
\end{DoxyItemize}

An optional number between \% and the letter in a format directive may be used to set a minimum field width. If the expanded format directive is smaller than this width (according to strlen()) the string will be left-\/padded (if the number is positive) or right-\/padded (if the number is negative) with spaces. For example, \char`\"{}\%25n\char`\"{} prints the counter name left-\/padded up to a minimum width of 25 columns.

VTY\+\_\+\+NEWLINE will be appended to the format string when it is printed.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em vty} & The VTY to which it should be printed \\
\hline
\mbox{\texttt{ in}}  & {\em ctrg} & Rate counter group to be printed \\
\hline
\mbox{\texttt{ in}}  & {\em fmt} & A format which may contain the above directives. \\
\hline
\mbox{\texttt{ in}}  & {\em skip\+\_\+zero} & Skip all zero-\/valued counters \\
\hline
\end{DoxyParams}


References \textbf{ rate\+\_\+ctr\+\_\+for\+\_\+each\+\_\+counter()}, \textbf{ rate\+\_\+ctr\+\_\+handler\+\_\+fmt()}, \textbf{ vty\+\_\+out\+\_\+context\+::skip\+\_\+zero}, and \textbf{ vty}.



Referenced by \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+handler()}, and \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group\+\_\+fmt()}.

