\doxysection{src/gb/frame\+\_\+relay.c File Reference}
\label{frame__relay_8c}\index{src/gb/frame\_relay.c@{src/gb/frame\_relay.c}}


Implement frame relay/\+PVC by Q.\+933.  


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$unistd.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/frame\+\_\+relay.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/endian.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/tdef.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/vty/vty.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/vty/tdef\+\_\+vty.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ q933\+\_\+a\+\_\+hdr}
\item 
struct \textbf{ q933\+\_\+a\+\_\+pvc\+\_\+sts}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ LOGPFRL}(frl,  lvl,  fmt,  args ...)~ \textbf{ LOGP}(\textbf{ DFR}, lvl, \char`\"{}\%s\+: \char`\"{} fmt, (frl)-\/$>$\textbf{ name}, \#\# args)
\item 
\#define \textbf{ DFR}~\textbf{ DLNS}
\item 
\#define \textbf{ LAPF\+\_\+\+UI}~0x03 /$\ast$ UI control word $\ast$/
\item 
\#define \textbf{ Q931\+\_\+\+PDISC\+\_\+\+CC}~0x08 /$\ast$ protocol discriminator $\ast$/
\item 
\#define \textbf{ LMI\+\_\+\+Q933\+A\+\_\+\+CALLREF}~0x00 /$\ast$ NULL call-\/ref $\ast$/
\item 
\#define \textbf{ LMI\+\_\+\+Q933\+A\+\_\+\+DLCI}~0 /$\ast$ Q.\+933A DLCI $\ast$/
\item 
\#define \textbf{ LMI\+\_\+\+CISCO\+\_\+\+DLCI}~1023 /$\ast$ Cisco DLCI $\ast$/
\item 
\#define \textbf{ MAX\+\_\+\+SUPPORTED\+\_\+\+PVC}~10
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ q931\+\_\+msgtype} \{ \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+ALERTING} = 0x01
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+CALL\+\_\+\+PROCEEDING} = 0x02
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+CONNECT} = 0x07
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+CONNECT\+\_\+\+ACK} = 0x0f
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+PROGRESS} = 0x03
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+SETUP} = 0x05
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+SETUP\+\_\+\+ACK} = 0x0d
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RESUME} = 0x26
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RESUME\+\_\+\+ACK} = 0x2e
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RESUME\+\_\+\+REJ} = 0x22
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+SUSPEND} = 0x25
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+SUSPEND\+\_\+\+ACK} = 0x2d
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+USER\+\_\+\+INFO} = 0x20
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+DISCONNECT} = 0x45
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RELEASE} = 0x4d
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RELEASE\+\_\+\+COMPLETE} = 0x5a
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RESTART} = 0x46
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+RESTART\+\_\+\+ACK} = 0x4e
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+SEGMENT} = 0x60
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+CONGESTION\+\_\+\+CONTROL} = 0x79
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+IFORMATION} = 0x7b
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+NOTIFY} = 0x6e
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+STATUS} = 0x7d
, \newline
\textbf{ Q931\+\_\+\+MSGT\+\_\+\+STATUS\+\_\+\+ENQUIRY} = 0x75
 \}
\item 
enum \textbf{ q933\+\_\+type\+\_\+of\+\_\+report} \{ \newline
\textbf{ Q933\+\_\+\+REPT\+\_\+\+FULL\+\_\+\+STATUS} = 0x00
, \newline
\textbf{ Q933\+\_\+\+REPT\+\_\+\+LINK\+\_\+\+INTEGRITY\+\_\+\+VERIF} = 0x01
, \newline
\textbf{ Q933\+\_\+\+REPT\+\_\+\+SINGLE\+\_\+\+PVC\+\_\+\+ASYNC\+\_\+\+STS} = 0x02
 \}
\item 
enum \textbf{ q933\+\_\+iei} \{ \newline
\textbf{ Q933\+\_\+\+IEI\+\_\+\+REPORT\+\_\+\+TYPE} = 0x51
, \newline
\textbf{ Q933\+\_\+\+IEI\+\_\+\+LINK\+\_\+\+INT\+\_\+\+VERIF} = 0x53
, \newline
\textbf{ Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS} = 0x57
 \}
\item 
enum \textbf{ q933\+\_\+pvc\+\_\+status} \{ \newline
\textbf{ Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+ACTIVE} = 0x02
, \newline
\textbf{ Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+DELETE} = 0x04
, \newline
\textbf{ Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+NEW} = 0x08
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ q933\+\_\+a\+\_\+hdr} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((packed))
\item 
static void \textbf{ check\+\_\+link\+\_\+state} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, bool valid)
\item 
static uint16\+\_\+t \textbf{ q922\+\_\+to\+\_\+dlci} (const uint8\+\_\+t $\ast$\textbf{ hdr})
\item 
static void \textbf{ dlci\+\_\+to\+\_\+q922} (uint8\+\_\+t $\ast$\textbf{ hdr}, uint16\+\_\+t dlci)
\item 
static void \textbf{ dlc\+\_\+set\+\_\+active} (struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$dlc, bool active)
\item 
static struct \textbf{ msgb} $\ast$ \textbf{ q933\+\_\+msgb\+\_\+alloc} (uint16\+\_\+t dlci, uint8\+\_\+t \textbf{ prot\+\_\+disc}, uint8\+\_\+t \textbf{ msg\+\_\+type})
\item 
static uint8\+\_\+t \textbf{ link\+\_\+get\+\_\+tx\+\_\+seq} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link)
\item 
static void \textbf{ msgb\+\_\+put\+\_\+link\+\_\+int\+\_\+verif} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link)
\item 
static void \textbf{ dlc\+\_\+destroy} (struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$dlc)
\item 
static void \textbf{ msgb\+\_\+put\+\_\+pvc\+\_\+status} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$dlc)
\item 
static int \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, uint8\+\_\+t rep\+\_\+type)
\item 
static int \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, uint8\+\_\+t rep\+\_\+type)
\item 
static void \textbf{ link\+\_\+set\+\_\+failed} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link)
\item 
static int \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\item 
static int \textbf{ validate\+\_\+pvc\+\_\+status} (struct \textbf{ tlv\+\_\+parsed} $\ast$tp, size\+\_\+t tp\+\_\+len)
\item 
static int \textbf{ parse\+\_\+full\+\_\+pvc\+\_\+status} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, size\+\_\+t tp\+\_\+len)
\item 
static int \textbf{ parse\+\_\+link\+\_\+pvc\+\_\+status} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, size\+\_\+t tp\+\_\+len)
\item 
static size\+\_\+t \textbf{ count\+\_\+pvc\+\_\+status} (struct \textbf{ tlv\+\_\+parsed} $\ast$tp, size\+\_\+t tp\+\_\+len)
\item 
static int \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\item 
static int \textbf{ rx\+\_\+lmi\+\_\+q922} (struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ osmo\+\_\+fr\+\_\+rx} (struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ osmo\+\_\+fr\+\_\+tx\+\_\+dlc} (struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static void \textbf{ fr\+\_\+t391\+\_\+cb} (void $\ast$\textbf{ data})
\item 
static void \textbf{ fr\+\_\+t392\+\_\+cb} (void $\ast$\textbf{ data})
\item 
struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$ \textbf{ osmo\+\_\+fr\+\_\+network\+\_\+alloc} (void $\ast$ctx)
\item 
void \textbf{ osmo\+\_\+fr\+\_\+network\+\_\+free} (struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$\textbf{ net})
\item 
struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$ \textbf{ osmo\+\_\+fr\+\_\+link\+\_\+alloc} (struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$\textbf{ net}, enum \textbf{ osmo\+\_\+fr\+\_\+role} role, const char $\ast$\textbf{ name})
\item 
void \textbf{ osmo\+\_\+fr\+\_\+link\+\_\+free} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link)
\item 
struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$ \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+alloc} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, uint16\+\_\+t dlci)
\item 
void \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+free} (struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$dlc)
\item 
struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$ \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+by\+\_\+dlci} (struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link, uint16\+\_\+t dlci)
\item 
static void \textbf{ fr\+\_\+dlc\+\_\+dump\+\_\+vty} (struct \textbf{ vty} $\ast$\textbf{ vty}, const struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$dlc)
\item 
static void \textbf{ fr\+\_\+link\+\_\+dump\+\_\+vty} (struct \textbf{ vty} $\ast$\textbf{ vty}, const struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$link)
\item 
void \textbf{ osmo\+\_\+fr\+\_\+network\+\_\+dump\+\_\+vty} (struct \textbf{ vty} $\ast$\textbf{ vty}, const struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$\textbf{ net})
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
uint8\+\_\+t \textbf{ prot\+\_\+disc}
\item 
uint8\+\_\+t \textbf{ call\+\_\+ref}
\item 
uint8\+\_\+t \textbf{ msg\+\_\+type}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ osmo\+\_\+fr\+\_\+role\+\_\+names} [$\,$]
\item 
struct \textbf{ osmo\+\_\+tdef} \textbf{ fr\+\_\+tdefs} [$\,$]
\item 
static const struct \textbf{ tlv\+\_\+definition} \textbf{ q933\+\_\+att\+\_\+tlvdef}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Implement frame relay/\+PVC by Q.\+933. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{frame__relay_8c_a1e4ce1e3f0471f0a02f13336c1636da5}} 
\index{frame\_relay.c@{frame\_relay.c}!DFR@{DFR}}
\index{DFR@{DFR}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{DFR}
{\footnotesize\ttfamily \#define DFR~\textbf{ DLNS}}

\mbox{\label{frame__relay_8c_a9731ef736491cce02970be5b96eef166}} 
\index{frame\_relay.c@{frame\_relay.c}!LAPF\_UI@{LAPF\_UI}}
\index{LAPF\_UI@{LAPF\_UI}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{LAPF\_UI}
{\footnotesize\ttfamily \#define LAPF\+\_\+\+UI~0x03 /$\ast$ UI control word $\ast$/}

\mbox{\label{frame__relay_8c_af2fdf4bb3dd214634e3e6d678a0cee74}} 
\index{frame\_relay.c@{frame\_relay.c}!LMI\_CISCO\_DLCI@{LMI\_CISCO\_DLCI}}
\index{LMI\_CISCO\_DLCI@{LMI\_CISCO\_DLCI}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{LMI\_CISCO\_DLCI}
{\footnotesize\ttfamily \#define LMI\+\_\+\+CISCO\+\_\+\+DLCI~1023 /$\ast$ Cisco DLCI $\ast$/}

\mbox{\label{frame__relay_8c_afccc61f496a49936db981ec1dd821a78}} 
\index{frame\_relay.c@{frame\_relay.c}!LMI\_Q933A\_CALLREF@{LMI\_Q933A\_CALLREF}}
\index{LMI\_Q933A\_CALLREF@{LMI\_Q933A\_CALLREF}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{LMI\_Q933A\_CALLREF}
{\footnotesize\ttfamily \#define LMI\+\_\+\+Q933\+A\+\_\+\+CALLREF~0x00 /$\ast$ NULL call-\/ref $\ast$/}

\mbox{\label{frame__relay_8c_afb8f77e51db46f92c8539474f76ec503}} 
\index{frame\_relay.c@{frame\_relay.c}!LMI\_Q933A\_DLCI@{LMI\_Q933A\_DLCI}}
\index{LMI\_Q933A\_DLCI@{LMI\_Q933A\_DLCI}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{LMI\_Q933A\_DLCI}
{\footnotesize\ttfamily \#define LMI\+\_\+\+Q933\+A\+\_\+\+DLCI~0 /$\ast$ Q.\+933A DLCI $\ast$/}

\mbox{\label{frame__relay_8c_aa93e027eb43918df5bf8df7a1ef91f61}} 
\index{frame\_relay.c@{frame\_relay.c}!LOGPFRL@{LOGPFRL}}
\index{LOGPFRL@{LOGPFRL}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{LOGPFRL}
{\footnotesize\ttfamily \#define LOGPFRL(\begin{DoxyParamCaption}\item[{}]{frl,  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ LOGP}(\textbf{ DFR}, lvl, \char`\"{}\%s\+: \char`\"{} fmt, (frl)-\/$>$\textbf{ name}, \#\# args)}

\mbox{\label{frame__relay_8c_a77774cafe06c3969b34313950bc33e49}} 
\index{frame\_relay.c@{frame\_relay.c}!MAX\_SUPPORTED\_PVC@{MAX\_SUPPORTED\_PVC}}
\index{MAX\_SUPPORTED\_PVC@{MAX\_SUPPORTED\_PVC}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{MAX\_SUPPORTED\_PVC}
{\footnotesize\ttfamily \#define MAX\+\_\+\+SUPPORTED\+\_\+\+PVC~10}

\mbox{\label{frame__relay_8c_a1976d56cbb8c86467a36f995d3195ab9}} 
\index{frame\_relay.c@{frame\_relay.c}!Q931\_PDISC\_CC@{Q931\_PDISC\_CC}}
\index{Q931\_PDISC\_CC@{Q931\_PDISC\_CC}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{Q931\_PDISC\_CC}
{\footnotesize\ttfamily \#define Q931\+\_\+\+PDISC\+\_\+\+CC~0x08 /$\ast$ protocol discriminator $\ast$/}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3}} 
\index{frame\_relay.c@{frame\_relay.c}!q931\_msgtype@{q931\_msgtype}}
\index{q931\_msgtype@{q931\_msgtype}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q931\_msgtype}
{\footnotesize\ttfamily enum \textbf{ q931\+\_\+msgtype}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_ALERTING@{Q931\_MSGT\_ALERTING}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_ALERTING@{Q931\_MSGT\_ALERTING}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3aa866069703d51807695e56bebf5c7dcd}} 
Q931\+\_\+\+MSGT\+\_\+\+ALERTING&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_CALL\_PROCEEDING@{Q931\_MSGT\_CALL\_PROCEEDING}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_CALL\_PROCEEDING@{Q931\_MSGT\_CALL\_PROCEEDING}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a81c05382d9619e0324309b87f81f15c5}} 
Q931\+\_\+\+MSGT\+\_\+\+CALL\+\_\+\+PROCEEDING&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_CONNECT@{Q931\_MSGT\_CONNECT}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_CONNECT@{Q931\_MSGT\_CONNECT}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3aa9bde39ee2d28fb56960c4653bc3e884}} 
Q931\+\_\+\+MSGT\+\_\+\+CONNECT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_CONNECT\_ACK@{Q931\_MSGT\_CONNECT\_ACK}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_CONNECT\_ACK@{Q931\_MSGT\_CONNECT\_ACK}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a076e2c80af31746f620486759ca895fb}} 
Q931\+\_\+\+MSGT\+\_\+\+CONNECT\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_PROGRESS@{Q931\_MSGT\_PROGRESS}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_PROGRESS@{Q931\_MSGT\_PROGRESS}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3af5d24be296ab5ec2cfc186b7f71abed9}} 
Q931\+\_\+\+MSGT\+\_\+\+PROGRESS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_SETUP@{Q931\_MSGT\_SETUP}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_SETUP@{Q931\_MSGT\_SETUP}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a009363246cdcd1b751540fda2ba77517}} 
Q931\+\_\+\+MSGT\+\_\+\+SETUP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_SETUP\_ACK@{Q931\_MSGT\_SETUP\_ACK}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_SETUP\_ACK@{Q931\_MSGT\_SETUP\_ACK}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a36461141428ac753e557d2ee3dac5806}} 
Q931\+\_\+\+MSGT\+\_\+\+SETUP\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RESUME@{Q931\_MSGT\_RESUME}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RESUME@{Q931\_MSGT\_RESUME}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a78dae9a3918c4f24a3c2e4c47b78d928}} 
Q931\+\_\+\+MSGT\+\_\+\+RESUME&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RESUME\_ACK@{Q931\_MSGT\_RESUME\_ACK}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RESUME\_ACK@{Q931\_MSGT\_RESUME\_ACK}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a03f4c7c6b276ee06dd13f409b2ead6f3}} 
Q931\+\_\+\+MSGT\+\_\+\+RESUME\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RESUME\_REJ@{Q931\_MSGT\_RESUME\_REJ}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RESUME\_REJ@{Q931\_MSGT\_RESUME\_REJ}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3af93feaba651c400de549052bef8b414e}} 
Q931\+\_\+\+MSGT\+\_\+\+RESUME\+\_\+\+REJ&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_SUSPEND@{Q931\_MSGT\_SUSPEND}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_SUSPEND@{Q931\_MSGT\_SUSPEND}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a056cb988a931558e6e59c85a39c36909}} 
Q931\+\_\+\+MSGT\+\_\+\+SUSPEND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_SUSPEND\_ACK@{Q931\_MSGT\_SUSPEND\_ACK}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_SUSPEND\_ACK@{Q931\_MSGT\_SUSPEND\_ACK}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a961e51e935b8c2dbf77c8ca63200fb88}} 
Q931\+\_\+\+MSGT\+\_\+\+SUSPEND\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_USER\_INFO@{Q931\_MSGT\_USER\_INFO}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_USER\_INFO@{Q931\_MSGT\_USER\_INFO}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a7549553b9bb3f51f851838ab51de09e0}} 
Q931\+\_\+\+MSGT\+\_\+\+USER\+\_\+\+INFO&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_DISCONNECT@{Q931\_MSGT\_DISCONNECT}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_DISCONNECT@{Q931\_MSGT\_DISCONNECT}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3ac024a6460d93cedf20f68bfab6ecc983}} 
Q931\+\_\+\+MSGT\+\_\+\+DISCONNECT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RELEASE@{Q931\_MSGT\_RELEASE}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RELEASE@{Q931\_MSGT\_RELEASE}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a81fab65f9372533b4f228e139c13d833}} 
Q931\+\_\+\+MSGT\+\_\+\+RELEASE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RELEASE\_COMPLETE@{Q931\_MSGT\_RELEASE\_COMPLETE}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RELEASE\_COMPLETE@{Q931\_MSGT\_RELEASE\_COMPLETE}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a6fcbdbab1c60ce2a262a7b3c734afa40}} 
Q931\+\_\+\+MSGT\+\_\+\+RELEASE\+\_\+\+COMPLETE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RESTART@{Q931\_MSGT\_RESTART}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RESTART@{Q931\_MSGT\_RESTART}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3ab8a5475e4dd7dfe865ca5b2ca22c2704}} 
Q931\+\_\+\+MSGT\+\_\+\+RESTART&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_RESTART\_ACK@{Q931\_MSGT\_RESTART\_ACK}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_RESTART\_ACK@{Q931\_MSGT\_RESTART\_ACK}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a68fa14b7889e5f65638ceb67de4cbb2b}} 
Q931\+\_\+\+MSGT\+\_\+\+RESTART\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_SEGMENT@{Q931\_MSGT\_SEGMENT}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_SEGMENT@{Q931\_MSGT\_SEGMENT}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3aafcebde7509e7bf90413bd2898507a3a}} 
Q931\+\_\+\+MSGT\+\_\+\+SEGMENT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_CONGESTION\_CONTROL@{Q931\_MSGT\_CONGESTION\_CONTROL}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_CONGESTION\_CONTROL@{Q931\_MSGT\_CONGESTION\_CONTROL}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3aea7a33dd4a938dabd558907b0404675c}} 
Q931\+\_\+\+MSGT\+\_\+\+CONGESTION\+\_\+\+CONTROL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_IFORMATION@{Q931\_MSGT\_IFORMATION}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_IFORMATION@{Q931\_MSGT\_IFORMATION}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3acb38629aaf29f4cc2b03614828b5f066}} 
Q931\+\_\+\+MSGT\+\_\+\+IFORMATION&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_NOTIFY@{Q931\_MSGT\_NOTIFY}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_NOTIFY@{Q931\_MSGT\_NOTIFY}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a274edb60b44d654d1ec89d5f843962f7}} 
Q931\+\_\+\+MSGT\+\_\+\+NOTIFY&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_STATUS@{Q931\_MSGT\_STATUS}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_STATUS@{Q931\_MSGT\_STATUS}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3a0d873a6f26d3716e606e5faa98ac3d64}} 
Q931\+\_\+\+MSGT\+\_\+\+STATUS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q931\_MSGT\_STATUS\_ENQUIRY@{Q931\_MSGT\_STATUS\_ENQUIRY}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q931\_MSGT\_STATUS\_ENQUIRY@{Q931\_MSGT\_STATUS\_ENQUIRY}}}\mbox{\label{frame__relay_8c_a1df8f2daeffd615d7ead5bcb47e66ea3ab1a2fdc1776a16fd0921584cbb3b706b}} 
Q931\+\_\+\+MSGT\+\_\+\+STATUS\+\_\+\+ENQUIRY&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{frame__relay_8c_a6fb914fcc4491586d96feb86bd3a3737}} 
\index{frame\_relay.c@{frame\_relay.c}!q933\_iei@{q933\_iei}}
\index{q933\_iei@{q933\_iei}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q933\_iei}
{\footnotesize\ttfamily enum \textbf{ q933\+\_\+iei}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_IEI\_REPORT\_TYPE@{Q933\_IEI\_REPORT\_TYPE}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_IEI\_REPORT\_TYPE@{Q933\_IEI\_REPORT\_TYPE}}}\mbox{\label{frame__relay_8c_a6fb914fcc4491586d96feb86bd3a3737a03913ff2b5e9bd703d6fc6f76406cc11}} 
Q933\+\_\+\+IEI\+\_\+\+REPORT\+\_\+\+TYPE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_IEI\_LINK\_INT\_VERIF@{Q933\_IEI\_LINK\_INT\_VERIF}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_IEI\_LINK\_INT\_VERIF@{Q933\_IEI\_LINK\_INT\_VERIF}}}\mbox{\label{frame__relay_8c_a6fb914fcc4491586d96feb86bd3a3737a3de1a39bdec0f7109be7b4a905e3d9ad}} 
Q933\+\_\+\+IEI\+\_\+\+LINK\+\_\+\+INT\+\_\+\+VERIF&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_IEI\_PVC\_STATUS@{Q933\_IEI\_PVC\_STATUS}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_IEI\_PVC\_STATUS@{Q933\_IEI\_PVC\_STATUS}}}\mbox{\label{frame__relay_8c_a6fb914fcc4491586d96feb86bd3a3737a9eea3a4ea501a6a6b17e462d3d57b2f2}} 
Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{frame__relay_8c_a27ddb6a995e8a7477d82f28233dba330}} 
\index{frame\_relay.c@{frame\_relay.c}!q933\_pvc\_status@{q933\_pvc\_status}}
\index{q933\_pvc\_status@{q933\_pvc\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q933\_pvc\_status}
{\footnotesize\ttfamily enum \textbf{ q933\+\_\+pvc\+\_\+status}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_PVC\_STATUS\_DLC\_ACTIVE@{Q933\_PVC\_STATUS\_DLC\_ACTIVE}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_PVC\_STATUS\_DLC\_ACTIVE@{Q933\_PVC\_STATUS\_DLC\_ACTIVE}}}\mbox{\label{frame__relay_8c_a27ddb6a995e8a7477d82f28233dba330af9285f2ea2f4843c6b3ce61d523b2f46}} 
Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+ACTIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_PVC\_STATUS\_DLC\_DELETE@{Q933\_PVC\_STATUS\_DLC\_DELETE}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_PVC\_STATUS\_DLC\_DELETE@{Q933\_PVC\_STATUS\_DLC\_DELETE}}}\mbox{\label{frame__relay_8c_a27ddb6a995e8a7477d82f28233dba330a149e4a4a973f2ddd3067f79f922491bc}} 
Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+DELETE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_PVC\_STATUS\_DLC\_NEW@{Q933\_PVC\_STATUS\_DLC\_NEW}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_PVC\_STATUS\_DLC\_NEW@{Q933\_PVC\_STATUS\_DLC\_NEW}}}\mbox{\label{frame__relay_8c_a27ddb6a995e8a7477d82f28233dba330a52cf1ddaeacfd1556a26ccd720aeb990}} 
Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+NEW&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{frame__relay_8c_aae28d562492d50040dd8072602756bd3}} 
\index{frame\_relay.c@{frame\_relay.c}!q933\_type\_of\_report@{q933\_type\_of\_report}}
\index{q933\_type\_of\_report@{q933\_type\_of\_report}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q933\_type\_of\_report}
{\footnotesize\ttfamily enum \textbf{ q933\+\_\+type\+\_\+of\+\_\+report}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_REPT\_FULL\_STATUS@{Q933\_REPT\_FULL\_STATUS}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_REPT\_FULL\_STATUS@{Q933\_REPT\_FULL\_STATUS}}}\mbox{\label{frame__relay_8c_aae28d562492d50040dd8072602756bd3acb81f36f9f1702f6803e4e20999aee2b}} 
Q933\+\_\+\+REPT\+\_\+\+FULL\+\_\+\+STATUS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_REPT\_LINK\_INTEGRITY\_VERIF@{Q933\_REPT\_LINK\_INTEGRITY\_VERIF}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_REPT\_LINK\_INTEGRITY\_VERIF@{Q933\_REPT\_LINK\_INTEGRITY\_VERIF}}}\mbox{\label{frame__relay_8c_aae28d562492d50040dd8072602756bd3a1ee4065bfb8e4f5ee8d41ab23401da87}} 
Q933\+\_\+\+REPT\+\_\+\+LINK\+\_\+\+INTEGRITY\+\_\+\+VERIF&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Q933\_REPT\_SINGLE\_PVC\_ASYNC\_STS@{Q933\_REPT\_SINGLE\_PVC\_ASYNC\_STS}!frame\_relay.c@{frame\_relay.c}}\index{frame\_relay.c@{frame\_relay.c}!Q933\_REPT\_SINGLE\_PVC\_ASYNC\_STS@{Q933\_REPT\_SINGLE\_PVC\_ASYNC\_STS}}}\mbox{\label{frame__relay_8c_aae28d562492d50040dd8072602756bd3a1b38c1e53a01d17a4131127848355a77}} 
Q933\+\_\+\+REPT\+\_\+\+SINGLE\+\_\+\+PVC\+\_\+\+ASYNC\+\_\+\+STS&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{frame__relay_8c_a5a668a1ab3cd322474d1a45e497919ae}} 
\index{frame\_relay.c@{frame\_relay.c}!check\_link\_state@{check\_link\_state}}
\index{check\_link\_state@{check\_link\_state}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{check\_link\_state()}
{\footnotesize\ttfamily static void check\+\_\+link\+\_\+state (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{bool}]{valid }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+link\+::cb\+\_\+data}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ dlc\+\_\+set\+\_\+active()}, \textbf{ FR\+\_\+\+ROLE\+\_\+\+USER\+\_\+\+EQUIPMENT}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ link\+\_\+set\+\_\+failed()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, \textbf{ osmo\+\_\+fr\+\_\+network\+::n392}, \textbf{ osmo\+\_\+fr\+\_\+network\+::n393}, \textbf{ osmo\+\_\+fr\+\_\+link\+::net}, \textbf{ osmo\+\_\+fr\+\_\+link\+::polling\+\_\+count}, \textbf{ osmo\+\_\+fr\+\_\+link\+::role}, \textbf{ osmo\+\_\+fr\+\_\+link\+::state}, \textbf{ osmo\+\_\+fr\+\_\+link\+::status\+\_\+cb}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::succeed}.



Referenced by \textbf{ fr\+\_\+t392\+\_\+cb()}, \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status()}, and \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.

\mbox{\label{frame__relay_8c_a5b15cef25cde2b59ecdd7d085ab0fca7}} 
\index{frame\_relay.c@{frame\_relay.c}!count\_pvc\_status@{count\_pvc\_status}}
\index{count\_pvc\_status@{count\_pvc\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{count\_pvc\_status()}
{\footnotesize\ttfamily static size\+\_\+t count\+\_\+pvc\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{size\+\_\+t}]{tp\+\_\+len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS}, and \textbf{ TLVP\+\_\+\+PRESENT}.



Referenced by \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status()}.

\mbox{\label{frame__relay_8c_a539debaf7c1deaa9749a43d2a117ad77}} 
\index{frame\_relay.c@{frame\_relay.c}!dlc\_destroy@{dlc\_destroy}}
\index{dlc\_destroy@{dlc\_destroy}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{dlc\_destroy()}
{\footnotesize\ttfamily static void dlc\+\_\+destroy (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$}]{dlc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::list}, and \textbf{ llist\+\_\+del()}.



Referenced by \textbf{ msgb\+\_\+put\+\_\+pvc\+\_\+status()}.

\mbox{\label{frame__relay_8c_a9e51c6588513a0bf3283fe6ff9094f40}} 
\index{frame\_relay.c@{frame\_relay.c}!dlc\_set\_active@{dlc\_set\_active}}
\index{dlc\_set\_active@{dlc\_set\_active}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{dlc\_set\_active()}
{\footnotesize\ttfamily static void dlc\+\_\+set\+\_\+active (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$}]{dlc,  }\item[{bool}]{active }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::active}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::cb\+\_\+data}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, and \textbf{ osmo\+\_\+fr\+\_\+dlc\+::status\+\_\+cb}.



Referenced by \textbf{ check\+\_\+link\+\_\+state()}, \textbf{ link\+\_\+set\+\_\+failed()}, \textbf{ parse\+\_\+full\+\_\+pvc\+\_\+status()}, \textbf{ parse\+\_\+link\+\_\+pvc\+\_\+status()}, and \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.

\mbox{\label{frame__relay_8c_a89d33bb9eb4a790c2262a031e09d2a48}} 
\index{frame\_relay.c@{frame\_relay.c}!dlci\_to\_q922@{dlci\_to\_q922}}
\index{dlci\_to\_q922@{dlci\_to\_q922}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{dlci\_to\_q922()}
{\footnotesize\ttfamily static void dlci\+\_\+to\+\_\+q922 (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{hdr,  }\item[{uint16\+\_\+t}]{dlci }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ hdr}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+tx\+\_\+dlc()}, and \textbf{ q933\+\_\+msgb\+\_\+alloc()}.

\mbox{\label{frame__relay_8c_af419f62083bdc354dfa2cbcaf3427ef3}} 
\index{frame\_relay.c@{frame\_relay.c}!fr\_dlc\_dump\_vty@{fr\_dlc\_dump\_vty}}
\index{fr\_dlc\_dump\_vty@{fr\_dlc\_dump\_vty}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{fr\_dlc\_dump\_vty()}
{\footnotesize\ttfamily static void fr\+\_\+dlc\+\_\+dump\+\_\+vty (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$}]{dlc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::active}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ fr\+\_\+link\+\_\+dump\+\_\+vty()}.

\mbox{\label{frame__relay_8c_a9c18d8fede60ed427d9d3799242e5219}} 
\index{frame\_relay.c@{frame\_relay.c}!fr\_link\_dump\_vty@{fr\_link\_dump\_vty}}
\index{fr\_link\_dump\_vty@{fr\_link\_dump\_vty}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{fr\_link\_dump\_vty()}
{\footnotesize\ttfamily static void fr\+\_\+link\+\_\+dump\+\_\+vty (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ fr\+\_\+dlc\+\_\+dump\+\_\+vty()}, \textbf{ FR\+\_\+\+ROLE\+\_\+\+USER\+\_\+\+EQUIPMENT}, \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+rx\+\_\+seq}, \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+tx\+\_\+seq}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ osmo\+\_\+fr\+\_\+link\+::name}, \textbf{ osmo\+\_\+fr\+\_\+link\+::role}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+network\+\_\+dump\+\_\+vty()}.

\mbox{\label{frame__relay_8c_a6d25a679da539313cfe13f6c40b094fc}} 
\index{frame\_relay.c@{frame\_relay.c}!fr\_t391\_cb@{fr\_t391\_cb}}
\index{fr\_t391\_cb@{fr\_t391\_cb}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{fr\_t391\_cb()}
{\footnotesize\ttfamily static void fr\+\_\+t391\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, \textbf{ osmo\+\_\+fr\+\_\+network\+::n391}, \textbf{ osmo\+\_\+fr\+\_\+link\+::net}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+tdef\+\_\+get()}, \textbf{ OSMO\+\_\+\+TDEF\+\_\+S}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::polling\+\_\+count}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+FULL\+\_\+\+STATUS}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+LINK\+\_\+\+INTEGRITY\+\_\+\+VERIF}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t391}, \textbf{ osmo\+\_\+fr\+\_\+network\+::\+T\+\_\+defs}, and \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+link\+\_\+alloc()}.

\mbox{\label{frame__relay_8c_a51d18faf7e6e8da4c0f1283d4387c669}} 
\index{frame\_relay.c@{frame\_relay.c}!fr\_t392\_cb@{fr\_t392\_cb}}
\index{fr\_t392\_cb@{fr\_t392\_cb}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{fr\_t392\_cb()}
{\footnotesize\ttfamily static void fr\+\_\+t392\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ check\+\_\+link\+\_\+state()}, \textbf{ data}, \textbf{ osmo\+\_\+fr\+\_\+link\+::err\+\_\+count}, \textbf{ osmo\+\_\+fr\+\_\+link\+::net}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+tdef\+\_\+get()}, \textbf{ OSMO\+\_\+\+TDEF\+\_\+S}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t392}, and \textbf{ osmo\+\_\+fr\+\_\+network\+::\+T\+\_\+defs}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+link\+\_\+alloc()}.

\mbox{\label{frame__relay_8c_a3d4ad6a83eddc0b8ac7c222dc15e0c2e}} 
\index{frame\_relay.c@{frame\_relay.c}!link\_get\_tx\_seq@{link\_get\_tx\_seq}}
\index{link\_get\_tx\_seq@{link\_get\_tx\_seq}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{link\_get\_tx\_seq()}
{\footnotesize\ttfamily static uint8\+\_\+t link\+\_\+get\+\_\+tx\+\_\+seq (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+tx\+\_\+seq}.



Referenced by \textbf{ msgb\+\_\+put\+\_\+link\+\_\+int\+\_\+verif()}.

\mbox{\label{frame__relay_8c_a96eed662abc840f9e372007c341a5821}} 
\index{frame\_relay.c@{frame\_relay.c}!link\_set\_failed@{link\_set\_failed}}
\index{link\_set\_failed@{link\_set\_failed}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{link\_set\_failed()}
{\footnotesize\ttfamily static void link\+\_\+set\+\_\+failed (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::cb\+\_\+data}, \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ dlc\+\_\+set\+\_\+active()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, \textbf{ osmo\+\_\+fr\+\_\+link\+::state}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::status\+\_\+cb}.



Referenced by \textbf{ check\+\_\+link\+\_\+state()}, and \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.

\mbox{\label{frame__relay_8c_a71c24f399d065eed87459c601a8f815e}} 
\index{frame\_relay.c@{frame\_relay.c}!msgb\_put\_link\_int\_verif@{msgb\_put\_link\_int\_verif}}
\index{msgb\_put\_link\_int\_verif@{msgb\_put\_link\_int\_verif}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{msgb\_put\_link\_int\_verif()}
{\footnotesize\ttfamily static void msgb\+\_\+put\+\_\+link\+\_\+int\+\_\+verif (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+rx\+\_\+seq}, \textbf{ link\+\_\+get\+\_\+tx\+\_\+seq()}, \textbf{ msg}, \textbf{ msgb\+\_\+tlv\+\_\+put()}, and \textbf{ Q933\+\_\+\+IEI\+\_\+\+LINK\+\_\+\+INT\+\_\+\+VERIF}.



Referenced by \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status()}, and \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.

\mbox{\label{frame__relay_8c_aa0e783070987ba7a2deab75bf018b4ba}} 
\index{frame\_relay.c@{frame\_relay.c}!msgb\_put\_pvc\_status@{msgb\_put\_pvc\_status}}
\index{msgb\_put\_pvc\_status@{msgb\_put\_pvc\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{msgb\_put\_pvc\_status()}
{\footnotesize\ttfamily static void msgb\+\_\+put\+\_\+pvc\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$}]{dlc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::active}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ dlc\+\_\+destroy()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ msg}, \textbf{ msgb\+\_\+tlv\+\_\+put()}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS}, \textbf{ Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+ACTIVE}, \textbf{ Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+DELETE}, and \textbf{ Q933\+\_\+\+PVC\+\_\+\+STATUS\+\_\+\+DLC\+\_\+\+NEW}.



Referenced by \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status()}.

\mbox{\label{frame__relay_8c_a01800b646f871bab7e32fc489111f93a}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_dlc\_alloc@{osmo\_fr\_dlc\_alloc}}
\index{osmo\_fr\_dlc\_alloc@{osmo\_fr\_dlc\_alloc}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_dlc\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$ osmo\+\_\+fr\+\_\+dlc\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{uint16\+\_\+t}]{dlci }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::active}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::list}, \textbf{ llist\+\_\+add\+\_\+tail()}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+SINGLE\+\_\+\+PVC\+\_\+\+ASYNC\+\_\+\+STS}, and \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status()}.



Referenced by \textbf{ fr\+\_\+alloc\+\_\+vc()}, \textbf{ parse\+\_\+full\+\_\+pvc\+\_\+status()}, and \textbf{ parse\+\_\+link\+\_\+pvc\+\_\+status()}.

\mbox{\label{frame__relay_8c_ac41b5316fd736925013464db29acd7ee}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_dlc\_by\_dlci@{osmo\_fr\_dlc\_by\_dlci}}
\index{osmo\_fr\_dlc\_by\_dlci@{osmo\_fr\_dlc\_by\_dlci}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_dlc\_by\_dlci()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$ osmo\+\_\+fr\+\_\+dlc\+\_\+by\+\_\+dlci (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{uint16\+\_\+t}]{dlci }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ list}, and \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+rx()}, \textbf{ parse\+\_\+full\+\_\+pvc\+\_\+status()}, and \textbf{ parse\+\_\+link\+\_\+pvc\+\_\+status()}.

\mbox{\label{frame__relay_8c_a3c50da2c7ad055b10b7d940a69098298}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_dlc\_free@{osmo\_fr\_dlc\_free}}
\index{osmo\_fr\_dlc\_free@{osmo\_fr\_dlc\_free}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_dlc\_free()}
{\footnotesize\ttfamily void osmo\+\_\+fr\+\_\+dlc\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+dlc} $\ast$}]{dlc }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::list}, and \textbf{ llist\+\_\+del()}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+link\+\_\+free()}.

\mbox{\label{frame__relay_8c_aa1fb3d9049f75ae0bac69574e426357c}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_link\_alloc@{osmo\_fr\_link\_alloc}}
\index{osmo\_fr\_link\_alloc@{osmo\_fr\_link\_alloc}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_link\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$ osmo\+\_\+fr\+\_\+link\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$}]{net,  }\item[{enum \textbf{ osmo\+\_\+fr\+\_\+role}}]{role,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ FR\+\_\+\+ROLE\+\_\+\+NETWORK\+\_\+\+EQUIPMENT}, \textbf{ FR\+\_\+\+ROLE\+\_\+\+USER\+\_\+\+EQUIPMENT}, \textbf{ fr\+\_\+t391\+\_\+cb()}, \textbf{ fr\+\_\+t392\+\_\+cb()}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ osmo\+\_\+fr\+\_\+link\+::list}, \textbf{ llist\+\_\+add\+\_\+tail()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGPFRL}, \textbf{ name}, \textbf{ osmo\+\_\+fr\+\_\+link\+::name}, \textbf{ net}, \textbf{ osmo\+\_\+fr\+\_\+link\+::net}, \textbf{ osmo\+\_\+fr\+\_\+role\+\_\+str()}, \textbf{ osmo\+\_\+tdef\+\_\+get()}, \textbf{ OSMO\+\_\+\+TDEF\+\_\+S}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+timer\+\_\+setup()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::role}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t391}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t392}, and \textbf{ osmo\+\_\+fr\+\_\+network\+::\+T\+\_\+defs}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+bind()}.

\mbox{\label{frame__relay_8c_aa64cf661d63a8fb5405ba2475f2708b6}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_link\_free@{osmo\_fr\_link\_free}}
\index{osmo\_fr\_link\_free@{osmo\_fr\_link\_free}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_link\_free()}
{\footnotesize\ttfamily void osmo\+\_\+fr\+\_\+link\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ list}, \textbf{ osmo\+\_\+fr\+\_\+link\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry\+\_\+safe}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+free()}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t391}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::t392}.



Referenced by \textbf{ free\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+bind()}, and \textbf{ osmo\+\_\+fr\+\_\+network\+\_\+free()}.

\mbox{\label{frame__relay_8c_a8372e8211744d6cad0c9a8c219b38275}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_network\_alloc@{osmo\_fr\_network\_alloc}}
\index{osmo\_fr\_network\_alloc@{osmo\_fr\_network\_alloc}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_network\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$ osmo\+\_\+fr\+\_\+network\+\_\+alloc (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}



References \textbf{ fr\+\_\+tdefs}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ net}, and \textbf{ osmo\+\_\+tdefs\+\_\+reset()}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+vty\+\_\+init\+\_\+reduced()}.

\mbox{\label{frame__relay_8c_a2e521648caaa714c621bc790aa32418c}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_network\_dump\_vty@{osmo\_fr\_network\_dump\_vty}}
\index{osmo\_fr\_network\_dump\_vty@{osmo\_fr\_network\_dump\_vty}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_network\_dump\_vty()}
{\footnotesize\ttfamily void osmo\+\_\+fr\+\_\+network\+\_\+dump\+\_\+vty (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$}]{net }\end{DoxyParamCaption})}



References \textbf{ fr\+\_\+link\+\_\+dump\+\_\+vty()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ net}, \textbf{ osmo\+\_\+tdef\+\_\+vty\+\_\+out\+\_\+all()}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ DEFUN\+\_\+\+HIDDEN()}.

\mbox{\label{frame__relay_8c_aae696c1d6c6715342fd50f8a78b16ac6}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_network\_free@{osmo\_fr\_network\_free}}
\index{osmo\_fr\_network\_free@{osmo\_fr\_network\_free}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_network\_free()}
{\footnotesize\ttfamily void osmo\+\_\+fr\+\_\+network\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+network} $\ast$}]{net }\end{DoxyParamCaption})}



References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry\+\_\+safe}, \textbf{ net}, and \textbf{ osmo\+\_\+fr\+\_\+link\+\_\+free()}.

\mbox{\label{frame__relay_8c_ae2e93052b9e36bf116e394f7578214a1}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_rx@{osmo\_fr\_rx}}
\index{osmo\_fr\_rx@{osmo\_fr\_rx}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_rx()}
{\footnotesize\ttfamily int osmo\+\_\+fr\+\_\+rx (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::active}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::cb\+\_\+data}, \textbf{ LMI\+\_\+\+CISCO\+\_\+\+DLCI}, \textbf{ LMI\+\_\+\+Q933\+A\+\_\+\+DLCI}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, \textbf{ msg}, \textbf{ msgb\+\_\+data()}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+length()}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+by\+\_\+dlci()}, \textbf{ q922\+\_\+to\+\_\+dlci()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::rx\+\_\+cb}, \textbf{ rx\+\_\+lmi\+\_\+q922()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::state}, \textbf{ osmo\+\_\+fr\+\_\+link\+::unknown\+\_\+dlc\+\_\+rx\+\_\+cb}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::unknown\+\_\+dlc\+\_\+rx\+\_\+cb\+\_\+data}.



Referenced by \textbf{ fr\+\_\+netif\+\_\+ofd\+\_\+cb()}.

\mbox{\label{frame__relay_8c_a5aef782a8787b0d0f1cd4a67cdf7bc83}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_tx\_dlc@{osmo\_fr\_tx\_dlc}}
\index{osmo\_fr\_tx\_dlc@{osmo\_fr\_tx\_dlc}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_tx\_dlc()}
{\footnotesize\ttfamily int osmo\+\_\+fr\+\_\+tx\+\_\+dlc (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::active}, \textbf{ osmo\+\_\+fr\+\_\+link\+::cb\+\_\+data}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ dlci\+\_\+to\+\_\+q922()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+headroom()}, \textbf{ msgb\+\_\+push()}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fr\+\_\+link\+::state}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::tx\+\_\+cb}.



Referenced by \textbf{ fr\+\_\+vc\+\_\+sendmsg()}.

\mbox{\label{frame__relay_8c_accf2e26fc41a989604de1bb1b0437ba3}} 
\index{frame\_relay.c@{frame\_relay.c}!parse\_full\_pvc\_status@{parse\_full\_pvc\_status}}
\index{parse\_full\_pvc\_status@{parse\_full\_pvc\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{parse\_full\_pvc\_status()}
{\footnotesize\ttfamily static int parse\+\_\+full\+\_\+pvc\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{size\+\_\+t}]{tp\+\_\+len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ dlc\+\_\+set\+\_\+active()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry\+\_\+safe}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGPFRL}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+alloc()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+by\+\_\+dlci()}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS}, \textbf{ TLVP\+\_\+\+PRESENT}, \textbf{ TLVP\+\_\+\+VAL\+\_\+\+MINLEN}, and \textbf{ validate\+\_\+pvc\+\_\+status()}.



Referenced by \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status()}.

\mbox{\label{frame__relay_8c_a00c32f40af2c35387140aa47eaa130c9}} 
\index{frame\_relay.c@{frame\_relay.c}!parse\_link\_pvc\_status@{parse\_link\_pvc\_status}}
\index{parse\_link\_pvc\_status@{parse\_link\_pvc\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{parse\_link\_pvc\_status()}
{\footnotesize\ttfamily static int parse\+\_\+link\+\_\+pvc\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{size\+\_\+t}]{tp\+\_\+len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ dlc\+\_\+set\+\_\+active()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::dlci}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGPFRL}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+alloc()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+by\+\_\+dlci()}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS}, \textbf{ TLVP\+\_\+\+PRESENT}, \textbf{ TLVP\+\_\+\+VAL\+\_\+\+MINLEN}, and \textbf{ validate\+\_\+pvc\+\_\+status()}.



Referenced by \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status()}.

\mbox{\label{frame__relay_8c_ab1f55d5b12ff1fa595cf301238f2dee4}} 
\index{frame\_relay.c@{frame\_relay.c}!q922\_to\_dlci@{q922\_to\_dlci}}
\index{q922\_to\_dlci@{q922\_to\_dlci}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q922\_to\_dlci()}
{\footnotesize\ttfamily static uint16\+\_\+t q922\+\_\+to\+\_\+dlci (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{hdr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ hdr}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+rx()}.

\mbox{\label{frame__relay_8c_a29eb83b2ae0af944fbd7b586b0f0728b}} 
\index{frame\_relay.c@{frame\_relay.c}!q933\_msgb\_alloc@{q933\_msgb\_alloc}}
\index{q933\_msgb\_alloc@{q933\_msgb\_alloc}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q933\_msgb\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ msgb} $\ast$ q933\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{dlci,  }\item[{uint8\+\_\+t}]{prot\+\_\+disc,  }\item[{uint8\+\_\+t}]{msg\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ q933\+\_\+a\+\_\+hdr\+::call\+\_\+ref}, \textbf{ dlci\+\_\+to\+\_\+q922()}, \textbf{ LAPF\+\_\+\+UI}, \textbf{ LMI\+\_\+\+Q933\+A\+\_\+\+CALLREF}, \textbf{ msg}, \textbf{ msg\+\_\+type}, \textbf{ q933\+\_\+a\+\_\+hdr\+::msg\+\_\+type}, \textbf{ msgb\+\_\+alloc\+\_\+headroom()}, \textbf{ msgb\+\_\+put()}, \textbf{ prot\+\_\+disc}, and \textbf{ q933\+\_\+a\+\_\+hdr\+::prot\+\_\+disc}.



Referenced by \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status()}, and \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.

\mbox{\label{frame__relay_8c_a25059cf93fec42bfb059c800db3db973}} 
\index{frame\_relay.c@{frame\_relay.c}!rx\_lmi\_q922@{rx\_lmi\_q922}}
\index{rx\_lmi\_q922@{rx\_lmi\_q922}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{rx\_lmi\_q922()}
{\footnotesize\ttfamily static int rx\+\_\+lmi\+\_\+q922 (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LAPF\+\_\+\+UI}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, \textbf{ MAX\+\_\+\+SUPPORTED\+\_\+\+PVC}, \textbf{ msg}, \textbf{ q933\+\_\+a\+\_\+hdr\+::msg\+\_\+type}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+l3}, \textbf{ msgb\+\_\+l3len()}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ q933\+\_\+a\+\_\+hdr\+::prot\+\_\+disc}, \textbf{ Q931\+\_\+\+MSGT\+\_\+\+STATUS}, \textbf{ Q931\+\_\+\+MSGT\+\_\+\+STATUS\+\_\+\+ENQUIRY}, \textbf{ Q931\+\_\+\+PDISC\+\_\+\+CC}, \textbf{ q933\+\_\+att\+\_\+tlvdef}, \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status()}, \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}, and \textbf{ tlv\+\_\+parse2()}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+rx()}.

\mbox{\label{frame__relay_8c_aa54cb6b091e6733d98477a8c28bcc35d}} 
\index{frame\_relay.c@{frame\_relay.c}!rx\_lmi\_q933\_status@{rx\_lmi\_q933\_status}}
\index{rx\_lmi\_q933\_status@{rx\_lmi\_q933\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{rx\_lmi\_q933\_status()}
{\footnotesize\ttfamily static int rx\+\_\+lmi\+\_\+q933\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ check\+\_\+link\+\_\+state()}, \textbf{ count\+\_\+pvc\+\_\+status()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::expected\+\_\+rep}, \textbf{ FR\+\_\+\+ROLE\+\_\+\+NETWORK\+\_\+\+EQUIPMENT}, \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+rx\+\_\+seq}, \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+tx\+\_\+seq}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFRL}, \textbf{ MAX\+\_\+\+SUPPORTED\+\_\+\+PVC}, \textbf{ msg}, \textbf{ osmo\+\_\+fr\+\_\+link\+::net}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+tdef\+\_\+get()}, \textbf{ OSMO\+\_\+\+TDEF\+\_\+S}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ parse\+\_\+full\+\_\+pvc\+\_\+status()}, \textbf{ parse\+\_\+link\+\_\+pvc\+\_\+status()}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+LINK\+\_\+\+INT\+\_\+\+VERIF}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+REPORT\+\_\+\+TYPE}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+FULL\+\_\+\+STATUS}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+LINK\+\_\+\+INTEGRITY\+\_\+\+VERIF}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+SINGLE\+\_\+\+PVC\+\_\+\+ASYNC\+\_\+\+STS}, \textbf{ osmo\+\_\+fr\+\_\+link\+::role}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t392}, \textbf{ osmo\+\_\+fr\+\_\+network\+::\+T\+\_\+defs}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, and \textbf{ TLVP\+\_\+\+VAL}.



Referenced by \textbf{ rx\+\_\+lmi\+\_\+q922()}.

\mbox{\label{frame__relay_8c_a1502011eeb0993dbb448c654282a60da}} 
\index{frame\_relay.c@{frame\_relay.c}!rx\_lmi\_q933\_status\_enq@{rx\_lmi\_q933\_status\_enq}}
\index{rx\_lmi\_q933\_status\_enq@{rx\_lmi\_q933\_status\_enq}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{rx\_lmi\_q933\_status\_enq()}
{\footnotesize\ttfamily static int rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ check\+\_\+link\+\_\+state()}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ dlc\+\_\+set\+\_\+active()}, \textbf{ osmo\+\_\+fr\+\_\+link\+::err\+\_\+count}, \textbf{ FR\+\_\+\+ROLE\+\_\+\+USER\+\_\+\+EQUIPMENT}, \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+rx\+\_\+seq}, \textbf{ osmo\+\_\+fr\+\_\+link\+::last\+\_\+tx\+\_\+seq}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::link}, \textbf{ link\+\_\+set\+\_\+failed()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGPFRL}, \textbf{ msg}, \textbf{ osmo\+\_\+fr\+\_\+link\+::net}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+tdef\+\_\+get()}, \textbf{ OSMO\+\_\+\+TDEF\+\_\+S}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+LINK\+\_\+\+INT\+\_\+\+VERIF}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+REPORT\+\_\+\+TYPE}, \textbf{ osmo\+\_\+fr\+\_\+link\+::role}, \textbf{ osmo\+\_\+fr\+\_\+link\+::state}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::state\+\_\+send}, \textbf{ osmo\+\_\+fr\+\_\+link\+::t392}, \textbf{ osmo\+\_\+fr\+\_\+network\+::\+T\+\_\+defs}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ tx\+\_\+lmi\+\_\+q933\+\_\+status()}.



Referenced by \textbf{ rx\+\_\+lmi\+\_\+q922()}.

\mbox{\label{frame__relay_8c_a0ad3f61fae03c150170080c2b7b37e01}} 
\index{frame\_relay.c@{frame\_relay.c}!tx\_lmi\_q933\_status@{tx\_lmi\_q933\_status}}
\index{tx\_lmi\_q933\_status@{tx\_lmi\_q933\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{tx\_lmi\_q933\_status()}
{\footnotesize\ttfamily static int tx\+\_\+lmi\+\_\+q933\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{uint8\+\_\+t}]{rep\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+dlc\+::add}, \textbf{ osmo\+\_\+fr\+\_\+link\+::cb\+\_\+data}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::del}, \textbf{ osmo\+\_\+fr\+\_\+link\+::dlc\+\_\+list}, \textbf{ msgb\+::dst}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ msgb\+\_\+put\+\_\+link\+\_\+int\+\_\+verif()}, \textbf{ msgb\+\_\+put\+\_\+pvc\+\_\+status()}, \textbf{ msgb\+\_\+tlv\+\_\+put()}, \textbf{ Q931\+\_\+\+MSGT\+\_\+\+STATUS}, \textbf{ Q931\+\_\+\+PDISC\+\_\+\+CC}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+REPORT\+\_\+\+TYPE}, \textbf{ q933\+\_\+msgb\+\_\+alloc()}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+FULL\+\_\+\+STATUS}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+LINK\+\_\+\+INTEGRITY\+\_\+\+VERIF}, \textbf{ Q933\+\_\+\+REPT\+\_\+\+SINGLE\+\_\+\+PVC\+\_\+\+ASYNC\+\_\+\+STS}, \textbf{ osmo\+\_\+fr\+\_\+dlc\+::state\+\_\+send}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::tx\+\_\+cb}.



Referenced by \textbf{ osmo\+\_\+fr\+\_\+dlc\+\_\+alloc()}, and \textbf{ rx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq()}.

\mbox{\label{frame__relay_8c_a79530a931d31521a4bb13920c1df243b}} 
\index{frame\_relay.c@{frame\_relay.c}!tx\_lmi\_q933\_status\_enq@{tx\_lmi\_q933\_status\_enq}}
\index{tx\_lmi\_q933\_status\_enq@{tx\_lmi\_q933\_status\_enq}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{tx\_lmi\_q933\_status\_enq()}
{\footnotesize\ttfamily static int tx\+\_\+lmi\+\_\+q933\+\_\+status\+\_\+enq (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fr\+\_\+link} $\ast$}]{link,  }\item[{uint8\+\_\+t}]{rep\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fr\+\_\+link\+::cb\+\_\+data}, \textbf{ msgb\+::dst}, \textbf{ osmo\+\_\+fr\+\_\+link\+::expected\+\_\+rep}, \textbf{ msgb\+\_\+put\+\_\+link\+\_\+int\+\_\+verif()}, \textbf{ msgb\+\_\+tlv\+\_\+put()}, \textbf{ Q931\+\_\+\+MSGT\+\_\+\+STATUS\+\_\+\+ENQUIRY}, \textbf{ Q931\+\_\+\+PDISC\+\_\+\+CC}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+REPORT\+\_\+\+TYPE}, \textbf{ q933\+\_\+msgb\+\_\+alloc()}, and \textbf{ osmo\+\_\+fr\+\_\+link\+::tx\+\_\+cb}.



Referenced by \textbf{ fr\+\_\+t391\+\_\+cb()}.

\mbox{\label{frame__relay_8c_ac7a1df3173bd3b5057152afe8ea5431d}} 
\index{frame\_relay.c@{frame\_relay.c}!validate\_pvc\_status@{validate\_pvc\_status}}
\index{validate\_pvc\_status@{validate\_pvc\_status}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{validate\_pvc\_status()}
{\footnotesize\ttfamily static int validate\+\_\+pvc\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{size\+\_\+t}]{tp\+\_\+len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ len()}, \textbf{ Q933\+\_\+\+IEI\+\_\+\+PVC\+\_\+\+STATUS}, \textbf{ TLVP\+\_\+\+LEN}, and \textbf{ TLVP\+\_\+\+PRESENT}.



Referenced by \textbf{ parse\+\_\+full\+\_\+pvc\+\_\+status()}, and \textbf{ parse\+\_\+link\+\_\+pvc\+\_\+status()}.



\doxysubsection{Variable Documentation}
\mbox{\label{frame__relay_8c_aab05b8b3fbbb3f7fd59302624f855c7a}} 
\index{frame\_relay.c@{frame\_relay.c}!call\_ref@{call\_ref}}
\index{call\_ref@{call\_ref}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{call\_ref}
{\footnotesize\ttfamily uint8\+\_\+t call\+\_\+ref}

\mbox{\label{frame__relay_8c_a869ab0018489d2308a683ea5c541e934}} 
\index{frame\_relay.c@{frame\_relay.c}!fr\_tdefs@{fr\_tdefs}}
\index{fr\_tdefs@{fr\_tdefs}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{fr\_tdefs}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+tdef} fr\+\_\+tdefs[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{}
\DoxyCodeLine{                .T=391,}
\DoxyCodeLine{                .default\_val = 10,}
\DoxyCodeLine{                .min\_val = 5,}
\DoxyCodeLine{                .max\_val = 30,}
\DoxyCodeLine{                .desc = \textcolor{stringliteral}{"{}Link integrity verification polling timer"{}},}
\DoxyCodeLine{                        .unit =  OSMO\_TDEF\_S,}
\DoxyCodeLine{        \}, \{}
\DoxyCodeLine{                .T=392,}
\DoxyCodeLine{                .default\_val = 15,}
\DoxyCodeLine{                .min\_val = 5,}
\DoxyCodeLine{                .max\_val = 30,}
\DoxyCodeLine{                .desc = \textcolor{stringliteral}{"{}Polling verification timer"{}},}
\DoxyCodeLine{                                .unit =  OSMO\_TDEF\_S,}
\DoxyCodeLine{        \},}
\DoxyCodeLine{        \{\}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+fr\+\_\+network\+\_\+alloc()}.

\mbox{\label{frame__relay_8c_af95f620c0e85b634c0caee87127b12a8}} 
\index{frame\_relay.c@{frame\_relay.c}!msg\_type@{msg\_type}}
\index{msg\_type@{msg\_type}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{msg\_type}
{\footnotesize\ttfamily uint8\+\_\+t msg\+\_\+type}



Referenced by \textbf{ q933\+\_\+msgb\+\_\+alloc()}.

\mbox{\label{frame__relay_8c_a8162b9511bf7ca7d137c9b76780589a7}} 
\index{frame\_relay.c@{frame\_relay.c}!osmo\_fr\_role\_names@{osmo\_fr\_role\_names}}
\index{osmo\_fr\_role\_names@{osmo\_fr\_role\_names}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{osmo\_fr\_role\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} osmo\+\_\+fr\+\_\+role\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ FR\_ROLE\_USER\_EQUIPMENT, \textcolor{stringliteral}{"{}USER"{}} \},}
\DoxyCodeLine{        \{ FR\_ROLE\_NETWORK\_EQUIPMENT,   \textcolor{stringliteral}{"{}NETWORK"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+fr\+\_\+role\+\_\+str()}.

\mbox{\label{frame__relay_8c_a3a2ab01ccd04158a13eb89a219edf843}} 
\index{frame\_relay.c@{frame\_relay.c}!prot\_disc@{prot\_disc}}
\index{prot\_disc@{prot\_disc}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{prot\_disc}
{\footnotesize\ttfamily uint8\+\_\+t prot\+\_\+disc}



Referenced by \textbf{ q933\+\_\+msgb\+\_\+alloc()}.

\mbox{\label{frame__relay_8c_acfd662f5c786c6b7ba5fb2314562793c}} 
\index{frame\_relay.c@{frame\_relay.c}!q933\_att\_tlvdef@{q933\_att\_tlvdef}}
\index{q933\_att\_tlvdef@{q933\_att\_tlvdef}!frame\_relay.c@{frame\_relay.c}}
\doxysubsubsection{q933\_att\_tlvdef}
{\footnotesize\ttfamily const struct \textbf{ tlv\+\_\+definition} q933\+\_\+att\+\_\+tlvdef\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .def = \{}
\DoxyCodeLine{                [Q933\_IEI\_REPORT\_TYPE] = \{ TLV\_TYPE\_TLV \},}
\DoxyCodeLine{                [Q933\_IEI\_LINK\_INT\_VERIF] = \{ TLV\_TYPE\_TLV \},}
\DoxyCodeLine{                [Q933\_IEI\_PVC\_STATUS] = \{ TLV\_TYPE\_TLV \},}
\DoxyCodeLine{        \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ rx\+\_\+lmi\+\_\+q922()}.

