\doxysection{src/gb/gprs\+\_\+ns2\+\_\+vc\+\_\+fsm.c File Reference}
\label{gprs__ns2__vc__fsm_8c}\index{src/gb/gprs\_ns2\_vc\_fsm.c@{src/gb/gprs\_ns2\_vc\_fsm.c}}


NS virtual circuit FSM implementation 3GPP TS 08.\+16 version 8.\+0.\+1 Release 1999 / ETSI TS 101 299 V8.\+0.\+1 (2002-\/05) as well as its successor 3GPP TS 48.\+016.  


{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$netinet/in.\+h$>$}\newline
{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/rate\+\_\+ctr.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/socket.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/stat\+\_\+item.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/protocol/gsm\+\_\+08\+\_\+16.\+h$>$}\newline
{\ttfamily \#include \char`\"{}gprs\+\_\+ns2\+\_\+internal.\+h\char`\"{}}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ S}(\textbf{ x})~(1 $<$$<$ (\textbf{ x}))
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+state} \{ \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNCONFIGURED}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING}
 \}
\item 
enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+event} \{ \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+START}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET\+\_\+\+ACK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK\+\_\+\+ACK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+ACK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE\+\_\+\+ACK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+STATUS}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNITDATA}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FORCE\+\_\+\+UNCONFIGURED}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+RESET}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+BLOCK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+UNBLOCK}
, \newline
\textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+FOREIGN}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$ \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi)
\item 
static void \textbf{ start\+\_\+test\+\_\+procedure} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, bool start\+\_\+tx\+\_\+alive)
\item 
static void \textbf{ stop\+\_\+test\+\_\+procedure} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv} $\ast$priv)
\item 
static int \textbf{ alive\+\_\+timer\+\_\+elapsed\+\_\+ms} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv} $\ast$priv)
\item 
static void \textbf{ recv\+\_\+test\+\_\+procedure} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi)
\item 
static void \textbf{ alive\+\_\+timeout\+\_\+handler} (void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+st\+\_\+unconfigured\+\_\+onenter} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static void \textbf{ ns2\+\_\+st\+\_\+unconfigured} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+st\+\_\+reset\+\_\+onenter} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static void \textbf{ ns2\+\_\+st\+\_\+reset} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+st\+\_\+blocked\+\_\+onenter} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static void \textbf{ ns2\+\_\+st\+\_\+blocked} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+st\+\_\+unblocked\+\_\+on\+\_\+enter} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static void \textbf{ ns2\+\_\+st\+\_\+unblocked} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+st\+\_\+alive} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+st\+\_\+alive\+\_\+onenter} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static int \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+timer\+\_\+cb} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi)
\item 
static void \textbf{ ns2\+\_\+recv\+\_\+unitdata} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static void \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+clean} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, enum \textbf{ osmo\+\_\+fsm\+\_\+term\+\_\+cause} \textbf{ cause})
\item 
struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, const char $\ast$id, bool initiator)
\begin{DoxyCompactList}\small\item\em gprs\+\_\+ns2\+\_\+vc\+\_\+fsm\+\_\+alloc \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+start} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Start a NS-\/\+VC FSM. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+force\+\_\+unconfigured} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Reset a NS-\/\+VC FSM. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+block} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Block a NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+unblock} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Unblock a NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+reset} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Reset a NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+rx} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\begin{DoxyCompactList}\small\item\em entry point for messages from the driver/\+VL \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em is the given NS-\/\+VC unblocked? \end{DoxyCompactList}\item 
static \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((constructor))
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ ns2\+\_\+vc\+\_\+event\+\_\+names} [$\,$]
\item 
static const struct \textbf{ osmo\+\_\+fsm\+\_\+state} \textbf{ ns2\+\_\+vc\+\_\+states} [$\,$]
\item 
static struct \textbf{ osmo\+\_\+fsm} \textbf{ ns2\+\_\+vc\+\_\+fsm}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
NS virtual circuit FSM implementation 3GPP TS 08.\+16 version 8.\+0.\+1 Release 1999 / ETSI TS 101 299 V8.\+0.\+1 (2002-\/05) as well as its successor 3GPP TS 48.\+016. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{gprs__ns2__vc__fsm_8c_ac4a3ed3432929804c708f7760fb79e28}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!S@{S}}
\index{S@{S}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{S}
{\footnotesize\ttfamily \#define S(\begin{DoxyParamCaption}\item[{}]{\textbf{ x} }\end{DoxyParamCaption})~(1 $<$$<$ (\textbf{ x}))}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!gprs\_ns2\_vc\_event@{gprs\_ns2\_vc\_event}}
\index{gprs\_ns2\_vc\_event@{gprs\_ns2\_vc\_event}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{gprs\_ns2\_vc\_event}
{\footnotesize\ttfamily enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+event}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_REQ\_START@{GPRS\_NS2\_EV\_REQ\_START}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_REQ\_START@{GPRS\_NS2\_EV\_REQ\_START}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a39dd60de73cd5c73cada6e2dc5806c1a}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+START&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_RESET@{GPRS\_NS2\_EV\_RX\_RESET}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_RESET@{GPRS\_NS2\_EV\_RX\_RESET}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592abdf1e76b287f3120bde870c1728769ec}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_RESET\_ACK@{GPRS\_NS2\_EV\_RX\_RESET\_ACK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_RESET\_ACK@{GPRS\_NS2\_EV\_RX\_RESET\_ACK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a06c1d6fb21a37f2941be086836fc919d}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_UNBLOCK@{GPRS\_NS2\_EV\_RX\_UNBLOCK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_UNBLOCK@{GPRS\_NS2\_EV\_RX\_UNBLOCK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a53f17c57c5c3412263f8f3f91b2a82c1}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_UNBLOCK\_ACK@{GPRS\_NS2\_EV\_RX\_UNBLOCK\_ACK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_UNBLOCK\_ACK@{GPRS\_NS2\_EV\_RX\_UNBLOCK\_ACK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592ad00d281988b5bfc448a63fc221969328}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_BLOCK@{GPRS\_NS2\_EV\_RX\_BLOCK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_BLOCK@{GPRS\_NS2\_EV\_RX\_BLOCK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a47badc606566eb1d8d1737038aa4c69f}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_BLOCK\_ACK@{GPRS\_NS2\_EV\_RX\_BLOCK\_ACK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_BLOCK\_ACK@{GPRS\_NS2\_EV\_RX\_BLOCK\_ACK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a047c94fe3dad184e57cfb373c3297367}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_ALIVE@{GPRS\_NS2\_EV\_RX\_ALIVE}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_ALIVE@{GPRS\_NS2\_EV\_RX\_ALIVE}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a5afa2034c5e99d12ae7b1773196197d3}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_ALIVE\_ACK@{GPRS\_NS2\_EV\_RX\_ALIVE\_ACK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_ALIVE\_ACK@{GPRS\_NS2\_EV\_RX\_ALIVE\_ACK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a25d072550e9a2d2ca208c0eb594925f0}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_STATUS@{GPRS\_NS2\_EV\_RX\_STATUS}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_STATUS@{GPRS\_NS2\_EV\_RX\_STATUS}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592ab620c1a3d702605f59c2e3f387f947c4}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+STATUS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_UNITDATA@{GPRS\_NS2\_EV\_RX\_UNITDATA}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_UNITDATA@{GPRS\_NS2\_EV\_RX\_UNITDATA}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592aaedb859ff40bcf8b5860c3ee03ad3fc4}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNITDATA&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_REQ\_FORCE\_UNCONFIGURED@{GPRS\_NS2\_EV\_REQ\_FORCE\_UNCONFIGURED}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_REQ\_FORCE\_UNCONFIGURED@{GPRS\_NS2\_EV\_REQ\_FORCE\_UNCONFIGURED}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a7eabdb5f331d31296d0c3a13e6ff57a8}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FORCE\+\_\+\+UNCONFIGURED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_REQ\_OM\_RESET@{GPRS\_NS2\_EV\_REQ\_OM\_RESET}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_REQ\_OM\_RESET@{GPRS\_NS2\_EV\_REQ\_OM\_RESET}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592a9acd1b3d92a479d3f81103f339edb304}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_REQ\_OM\_BLOCK@{GPRS\_NS2\_EV\_REQ\_OM\_BLOCK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_REQ\_OM\_BLOCK@{GPRS\_NS2\_EV\_REQ\_OM\_BLOCK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592abb9246b3280269086e98f5908cf5f85d}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+BLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_REQ\_OM\_UNBLOCK@{GPRS\_NS2\_EV\_REQ\_OM\_UNBLOCK}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_REQ\_OM\_UNBLOCK@{GPRS\_NS2\_EV\_REQ\_OM\_UNBLOCK}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592ad041e1bcc7d006903833c77f696e5cd2}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+UNBLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_EV\_RX\_BLOCK\_FOREIGN@{GPRS\_NS2\_EV\_RX\_BLOCK\_FOREIGN}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_EV\_RX\_BLOCK\_FOREIGN@{GPRS\_NS2\_EV\_RX\_BLOCK\_FOREIGN}}}\mbox{\label{gprs__ns2__vc__fsm_8c_ae3a36a501480dfdfe74864bc9ceb4592ab2145d15bde01dac040d766e07bb5edb}} 
GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+FOREIGN&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__vc__fsm_8c_a48fccfc0a370f83155c3b0a4b3a985e6}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!gprs\_ns2\_vc\_state@{gprs\_ns2\_vc\_state}}
\index{gprs\_ns2\_vc\_state@{gprs\_ns2\_vc\_state}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{gprs\_ns2\_vc\_state}
{\footnotesize\ttfamily enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+state}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_ST\_UNCONFIGURED@{GPRS\_NS2\_ST\_UNCONFIGURED}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_ST\_UNCONFIGURED@{GPRS\_NS2\_ST\_UNCONFIGURED}}}\mbox{\label{gprs__ns2__vc__fsm_8c_a48fccfc0a370f83155c3b0a4b3a985e6a99847fd587e2a7d51f37924f6bd7a423}} 
GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNCONFIGURED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_ST\_RESET@{GPRS\_NS2\_ST\_RESET}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_ST\_RESET@{GPRS\_NS2\_ST\_RESET}}}\mbox{\label{gprs__ns2__vc__fsm_8c_a48fccfc0a370f83155c3b0a4b3a985e6ae80cb90b2f4a7e1c70b9fe4d255744bb}} 
GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_ST\_BLOCKED@{GPRS\_NS2\_ST\_BLOCKED}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_ST\_BLOCKED@{GPRS\_NS2\_ST\_BLOCKED}}}\mbox{\label{gprs__ns2__vc__fsm_8c_a48fccfc0a370f83155c3b0a4b3a985e6a365aef5ca4b3c994797ec9de3b327459}} 
GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_ST\_UNBLOCKED@{GPRS\_NS2\_ST\_UNBLOCKED}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_ST\_UNBLOCKED@{GPRS\_NS2\_ST\_UNBLOCKED}}}\mbox{\label{gprs__ns2__vc__fsm_8c_a48fccfc0a370f83155c3b0a4b3a985e6a54448e0491d3c99a1b26ca5fd6fc0ee5}} 
GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GPRS\_NS2\_ST\_RECOVERING@{GPRS\_NS2\_ST\_RECOVERING}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!GPRS\_NS2\_ST\_RECOVERING@{GPRS\_NS2\_ST\_RECOVERING}}}\mbox{\label{gprs__ns2__vc__fsm_8c_a48fccfc0a370f83155c3b0a4b3a985e6a8d528a49d3442fbc322e374afb5348a5}} 
GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{gprs__ns2__vc__fsm_8c_a9ed16867a9394d9ccf1132194edae298}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{\_\_attribute\_\_()}
{\footnotesize\ttfamily static \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(constructor)}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ns2\+\_\+vc\+\_\+fsm}, \textbf{ OSMO\+\_\+\+ASSERT}, and \textbf{ osmo\+\_\+fsm\+\_\+register()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a941eb69179248eade2fe304362e17501}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!alive\_timeout\_handler@{alive\_timeout\_handler}}
\index{alive\_timeout\_handler@{alive\_timeout\_handler}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{alive\_timeout\_handler()}
{\footnotesize\ttfamily static void alive\+\_\+timeout\+\_\+handler (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ data}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::mode}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::mode}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::N}, \textbf{ ns2\+\_\+tx\+\_\+alive()}, \textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+clock\+\_\+gettime()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INC\+\_\+\+NS}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer\+\_\+started}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a56329ac7447379d40a532afda1d32816}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!alive\_timer\_elapsed\_ms@{alive\_timer\_elapsed\_ms}}
\index{alive\_timer\_elapsed\_ms@{alive\_timer\_elapsed\_ms}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{alive\_timer\_elapsed\_ms()}
{\footnotesize\ttfamily static int alive\+\_\+timer\+\_\+elapsed\+\_\+ms (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv} $\ast$}]{priv }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ osmo\+\_\+clock\+\_\+gettime()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer\+\_\+started}, and \textbf{ timespecsub}.



Referenced by \textbf{ recv\+\_\+test\+\_\+procedure()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a941d1dd6181d8a63e70e2e85e8b0d57a}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_recv\_unitdata@{ns2\_recv\_unitdata}}
\index{ns2\_recv\_unitdata@{ns2\_recv\_unitdata}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_recv\_unitdata()}
{\footnotesize\ttfamily static void ns2\+\_\+recv\+\_\+unitdata (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ msg}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a78025f6c573937fbc0d82869222e898d}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_alive@{ns2\_st\_alive}}
\index{ns2\_st\_alive@{ns2\_st\_alive}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_alive()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+alive (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_ae7eca0bf6aa237301fc492b85ff096b4}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_alive\_onenter@{ns2\_st\_alive\_onenter}}
\index{ns2\_st\_alive\_onenter@{ns2\_st\_alive\_onenter}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_alive\_onenter()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+alive\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{old\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::mode}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::N}, \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ start\+\_\+test\+\_\+procedure()}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a22f80c7067a2b47d103e0f279c9f2df9}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_blocked@{ns2\_st\_blocked}}
\index{ns2\_st\_blocked@{ns2\_st\_blocked}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_blocked()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+blocked (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::accept\+\_\+unitdata}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+FOREIGN}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+block}, \textbf{ ns2\+\_\+tx\+\_\+block()}, \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+unblock\+\_\+ack()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+timer\+\_\+add()}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::timer}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a47c22fa2ea89718be46315ae7374b5e4}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_blocked\_onenter@{ns2\_st\_blocked\_onenter}}
\index{ns2\_st\_blocked\_onenter@{ns2\_st\_blocked\_onenter}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_blocked\_onenter()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+blocked\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{old\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+block}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::N}, \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ ns2\+\_\+tx\+\_\+block()}, \textbf{ ns2\+\_\+tx\+\_\+unblock()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INC\+\_\+\+NS}, \textbf{ start\+\_\+test\+\_\+procedure()}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::timer}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a15a4f1eec0c59b1e700b1036dd423c26}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_reset@{ns2\_st\_reset}}
\index{ns2\_st\_reset@{ns2\_st\_reset}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_reset()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+reset}, \textbf{ ns2\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_aa88f2f41bf1cac054267baa8e2f2f8d4}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_reset\_onenter@{ns2\_st\_reset\_onenter}}
\index{ns2\_st\_reset\_onenter@{ns2\_st\_reset\_onenter}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_reset\_onenter()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+reset\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{old\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::accept\+\_\+unitdata}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+reset}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::N}, \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ ns2\+\_\+tx\+\_\+reset()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ stop\+\_\+test\+\_\+procedure()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a18dc3931a3d065618eaf6e33945aba81}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_unblocked@{ns2\_st\_unblocked}}
\index{ns2\_st\_unblocked@{ns2\_st\_unblocked}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_unblocked()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+unblocked (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::accept\+\_\+unitdata}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+FOREIGN}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+block}, \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+unblock\+\_\+ack()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.

\mbox{\label{gprs__ns2__vc__fsm_8c_ab0657faecb2699bd1e45605739904949}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_unblocked\_on\_enter@{ns2\_st\_unblocked\_on\_enter}}
\index{ns2\_st\_unblocked\_on\_enter@{ns2\_st\_unblocked\_on\_enter}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_unblocked\_on\_enter()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+unblocked\+\_\+on\+\_\+enter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{old\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::accept\+\_\+unitdata}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+AFF\+\_\+\+CAUSE\+\_\+\+VC\+\_\+\+RECOVERY}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}, \textbf{ NS\+\_\+\+CTR\+\_\+\+UNBLOCKED}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ osmo\+\_\+clock\+\_\+gettime()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::priv}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INC\+\_\+\+NS}, and \textbf{ start\+\_\+test\+\_\+procedure()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a4980649a340260c75b902f6fc012998c}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_unconfigured@{ns2\_st\_unconfigured}}
\index{ns2\_st\_unconfigured@{ns2\_st\_unconfigured}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_unconfigured()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+unconfigured (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+SNS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+START}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+ALIVE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+block}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+reset}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiator}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::mode}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a9553161d47235fef5656012735d03925}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_st\_unconfigured\_onenter@{ns2\_st\_unconfigured\_onenter}}
\index{ns2\_st\_unconfigured\_onenter@{ns2\_st\_unconfigured\_onenter}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_st\_unconfigured\_onenter()}
{\footnotesize\ttfamily static void ns2\+\_\+st\+\_\+unconfigured\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{old\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ stop\+\_\+test\+\_\+procedure()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_ad70d7d94bd162da15e45feb7baf677e6}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_block@{ns2\_vc\_block}}
\index{ns2\_vc\_block@{ns2\_vc\_block}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_block()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+block (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Block a NS-\/\+VC. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+BLOCK}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_ac902d44031c2e069dbff891a17ade203}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_force\_unconfigured@{ns2\_vc\_force\_unconfigured}}
\index{ns2\_vc\_force\_unconfigured@{ns2\_vc\_force\_unconfigured}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_force\_unconfigured()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+force\+\_\+unconfigured (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Reset a NS-\/\+VC FSM. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FORCE\+\_\+\+UNCONFIGURED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}.



Referenced by \textbf{ fr\+\_\+dlci\+\_\+status\+\_\+cb()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+sgsn()}, and \textbf{ nsvc\+\_\+force\+\_\+unconf\+\_\+cb()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_abf70b87c58d83a035808b46e995c9fda}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_fsm\_alloc@{ns2\_vc\_fsm\_alloc}}
\index{ns2\_vc\_fsm\_alloc@{ns2\_vc\_fsm\_alloc}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_fsm\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{const char $\ast$}]{id,  }\item[{bool}]{initiator }\end{DoxyParamCaption})}



gprs\+\_\+ns2\+\_\+vc\+\_\+fsm\+\_\+alloc 


\begin{DoxyParams}{Parameters}
{\em ctx} & \\
\hline
{\em vc} & \\
\hline
{\em id} & a char representation of the virtual curcuit \\
\hline
{\em initiator} & initiator is the site which starts the connection. Usually the BSS. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
NULL on error, otherwise the fsm 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ alive\+\_\+timeout\+\_\+handler()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiator}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ ns2\+\_\+vc\+\_\+fsm}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+alloc()}, \textbf{ osmo\+\_\+timer\+\_\+setup()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+alloc()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a128920dad2d37b925b41ee4079733a51}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_fsm\_allstate\_action@{ns2\_vc\_fsm\_allstate\_action}}
\index{ns2\_vc\_fsm\_allstate\_action@{ns2\_vc\_fsm\_allstate\_action}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_fsm\_allstate\_action()}
{\footnotesize\ttfamily static void ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::accept\+\_\+unitdata}, \textbf{ cause}, \textbf{ data}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FORCE\+\_\+\+UNCONFIGURED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+BLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+UNBLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+STATUS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNITDATA}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNCONFIGURED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+block}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+reset}, \textbf{ LOG\+\_\+\+NS\+\_\+\+DATA}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::mode}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ ns2\+\_\+recv\+\_\+unitdata()}, \textbf{ ns2\+\_\+st\+\_\+alive()}, \textbf{ ns2\+\_\+st\+\_\+reset()}, \textbf{ ns2\+\_\+tx\+\_\+alive\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+status()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNITDATA}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ recv\+\_\+test\+\_\+procedure()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}, and \textbf{ tlvp\+\_\+val8()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a1f3f8846849eadc59cb08b90e8a64a56}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_fsm\_clean@{ns2\_vc\_fsm\_clean}}
\index{ns2\_vc\_fsm\_clean@{ns2\_vc\_fsm\_clean}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_fsm\_clean()}
{\footnotesize\ttfamily static void ns2\+\_\+vc\+\_\+fsm\+\_\+clean (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{enum \textbf{ osmo\+\_\+fsm\+\_\+term\+\_\+cause}}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}.

\mbox{\label{gprs__ns2__vc__fsm_8c_ae977d9683f6c393c6778a7b9a1c8ec5b}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_fsm\_start@{ns2\_vc\_fsm\_start}}
\index{ns2\_vc\_fsm\_start@{ns2\_vc\_fsm\_start}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_fsm\_start()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Start a NS-\/\+VC FSM. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+START}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNCONFIGURED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}.



Referenced by \textbf{ fr\+\_\+dlci\+\_\+status\+\_\+cb()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect()}, \textbf{ gprs\+\_\+ns2\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs()}, \textbf{ handle\+\_\+nsfrgre\+\_\+read()}, \textbf{ handle\+\_\+nsip\+\_\+recvfrom()}, and \textbf{ nsvc\+\_\+force\+\_\+unconf\+\_\+cb()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_aa53db86c4ab175818b8056a854b81319}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_fsm\_timer\_cb@{ns2\_vc\_fsm\_timer\_cb}}
\index{ns2\_vc\_fsm\_timer\_cb@{ns2\_vc\_fsm\_timer\_cb}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_fsm\_timer\_cb()}
{\footnotesize\ttfamily static int ns2\+\_\+vc\+\_\+fsm\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::accept\+\_\+unitdata}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+BLOCKED}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RECOVERING}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+block}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiate\+\_\+reset}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::N}, \textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET\+\_\+\+RETRIES}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ RATE\+\_\+\+CTR\+\_\+\+INC\+\_\+\+NS}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}, and \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}.

\mbox{\label{gprs__ns2__vc__fsm_8c_af8aef72b70ff1417147064845df03430}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_is\_unblocked@{ns2\_vc\_is\_unblocked}}
\index{ns2\_vc\_is\_unblocked@{ns2\_vc\_is\_unblocked}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_is\_unblocked()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+is\+\_\+unblocked (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



is the given NS-\/\+VC unblocked? 



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}.



Referenced by \textbf{ ns2\+\_\+count\+\_\+transfer\+\_\+cap()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+first()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+modulo()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+signal()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+weight\+\_\+modulo()}, \textbf{ ns2\+\_\+nse\+\_\+data\+\_\+sum()}, \textbf{ ns2\+\_\+sns\+\_\+notify\+\_\+alive()}, \textbf{ ns2\+\_\+sns\+\_\+replace\+\_\+nsvc()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+onenter()}, and \textbf{ ns2\+\_\+vty\+\_\+dump\+\_\+nsvc()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a0dc6760a6294bbb0ac05a3d85e6b68db}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_reset@{ns2\_vc\_reset}}
\index{ns2\_vc\_reset@{ns2\_vc\_reset}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_reset()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Reset a NS-\/\+VC. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a1de00620baa57622669440ee18b7532f}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_rx@{ns2\_vc\_rx}}
\index{ns2\_vc\_rx@{ns2\_vc\_rx}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_rx()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+rx (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})}



entry point for messages from the driver/\+VL 


\begin{DoxyParams}{Parameters}
{\em nsvc} & virtual circuit on which the message was received \\
\hline
{\em msg} & message that was received \\
\hline
{\em tp} & parsed TLVs of the received message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ cause}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+FOREIGN}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+STATUS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNITDATA}, \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+nsvci()}, \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ if()}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGPFSML}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+status()}, \textbf{ ns2\+\_\+validate()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNITDATA}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ TLVP\+\_\+\+PRESENT}, and \textbf{ tlvp\+\_\+val16be()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a994ec40d741138b5b9ab544cdf9d0505}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_unblock@{ns2\_vc\_unblock}}
\index{ns2\_vc\_unblock@{ns2\_vc\_unblock}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_unblock()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+unblock (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Unblock a NS-\/\+VC. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+UNBLOCK}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a591aaded93da268c05036e684c24e461}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns\_inst\_from\_fi@{ns\_inst\_from\_fi}}
\index{ns\_inst\_from\_fi@{ns\_inst\_from\_fi}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns\_inst\_from\_fi()}
{\footnotesize\ttfamily static struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$ ns\+\_\+inst\+\_\+from\+\_\+fi (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.



Referenced by \textbf{ alive\+\_\+timeout\+\_\+handler()}, \textbf{ ns2\+\_\+recv\+\_\+unitdata()}, \textbf{ ns2\+\_\+st\+\_\+alive\+\_\+onenter()}, \textbf{ ns2\+\_\+st\+\_\+reset()}, \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}, \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+timer\+\_\+cb()}, and \textbf{ recv\+\_\+test\+\_\+procedure()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_aad139b72f6d276300f0eb33375e9de6a}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!recv\_test\_procedure@{recv\_test\_procedure}}
\index{recv\_test\_procedure@{recv\_test\_procedure}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{recv\_test\_procedure()}
{\footnotesize\ttfamily static void recv\+\_\+test\+\_\+procedure (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ alive\+\_\+timer\+\_\+elapsed\+\_\+ms()}, \textbf{ ns\+\_\+inst\+\_\+from\+\_\+fi()}, \textbf{ NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+get\+\_\+item()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+set()}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::priv}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::statg}, and \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a118a3e36037f95c9287cb5df3ae06371}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!start\_test\_procedure@{start\_test\_procedure}}
\index{start\_test\_procedure@{start\_test\_procedure}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{start\_test\_procedure()}
{\footnotesize\ttfamily static void start\+\_\+test\+\_\+procedure (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{bool}]{start\+\_\+tx\+\_\+alive }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGPFSML}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::mode}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::N}, \textbf{ ns2\+\_\+tx\+\_\+alive()}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+clock\+\_\+gettime()}, \textbf{ osmo\+\_\+timer\+\_\+pending()}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer\+\_\+started}.



Referenced by \textbf{ ns2\+\_\+st\+\_\+alive\+\_\+onenter()}, \textbf{ ns2\+\_\+st\+\_\+blocked\+\_\+onenter()}, and \textbf{ ns2\+\_\+st\+\_\+unblocked\+\_\+on\+\_\+enter()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_aca152bf0ec7a37d665ed37dc3af931eb}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!stop\_test\_procedure@{stop\_test\_procedure}}
\index{stop\_test\_procedure@{stop\_test\_procedure}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{stop\_test\_procedure()}
{\footnotesize\ttfamily static void stop\+\_\+test\+\_\+procedure (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv} $\ast$}]{priv }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+get\+\_\+item()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+set()}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::statg}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}.



Referenced by \textbf{ ns2\+\_\+st\+\_\+reset\+\_\+onenter()}, and \textbf{ ns2\+\_\+st\+\_\+unconfigured\+\_\+onenter()}.



\doxysubsection{Variable Documentation}
\mbox{\label{gprs__ns2__vc__fsm_8c_a55899a4b7434ed9a5d46856b0d692a23}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_event\_names@{ns2\_vc\_event\_names}}
\index{ns2\_vc\_event\_names@{ns2\_vc\_event\_names}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_event\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} ns2\+\_\+vc\+\_\+event\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_REQ\_START,           \textcolor{stringliteral}{"{}REQ-\/START"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_RESET,                     \textcolor{stringliteral}{"{}RX-\/RESET"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_RESET\_ACK,             \textcolor{stringliteral}{"{}RX-\/RESET\_ACK"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_UNBLOCK,         \textcolor{stringliteral}{"{}RX-\/UNBLOCK"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_UNBLOCK\_ACK,         \textcolor{stringliteral}{"{}RX-\/UNBLOCK\_ACK"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_BLOCK,                     \textcolor{stringliteral}{"{}RX-\/BLOCK"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_BLOCK\_FOREIGN,             \textcolor{stringliteral}{"{}RX-\/BLOCK\_FOREIGN"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_BLOCK\_ACK,             \textcolor{stringliteral}{"{}RX-\/BLOCK\_ACK"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_ALIVE,                     \textcolor{stringliteral}{"{}RX-\/ALIVE"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_ALIVE\_ACK,             \textcolor{stringliteral}{"{}RX-\/ALIVE\_ACK"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_STATUS,           \textcolor{stringliteral}{"{}RX-\/STATUS"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_RX\_UNITDATA,               \textcolor{stringliteral}{"{}RX-\/UNITDATA"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_REQ\_FORCE\_UNCONFIGURED, \textcolor{stringliteral}{"{}REQ-\/FORCE\_UNCONFIGURED"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_REQ\_OM\_RESET,             \textcolor{stringliteral}{"{}REQ-\/O\&M-\/RESET"{}}\},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_REQ\_OM\_BLOCK,             \textcolor{stringliteral}{"{}REQ-\/O\&M-\/BLOCK"{}}\},}
\DoxyCodeLine{        \{ GPRS\_NS2\_EV\_REQ\_OM\_UNBLOCK,         \textcolor{stringliteral}{"{}REQ-\/O\&M-\/UNBLOCK"{}}\},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{gprs__ns2__vc__fsm_8c_a7a424b17651066bfd8dceccae0660d88}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_fsm@{ns2\_vc\_fsm}}
\index{ns2\_vc\_fsm@{ns2\_vc\_fsm}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_fsm}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fsm} ns2\+\_\+vc\+\_\+fsm\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}GPRS-\/NS2-\/VC"{}},}
\DoxyCodeLine{        .states = ns2\_vc\_states,}
\DoxyCodeLine{        .num\_states = ARRAY\_SIZE(ns2\_vc\_states),}
\DoxyCodeLine{        .allstate\_event\_mask = S(GPRS\_NS2\_EV\_RX\_UNITDATA) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_RX\_RESET) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_RX\_ALIVE) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_RX\_ALIVE\_ACK) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_RX\_STATUS) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_REQ\_FORCE\_UNCONFIGURED) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_REQ\_OM\_RESET) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_REQ\_OM\_BLOCK) |}
\DoxyCodeLine{                               S(GPRS\_NS2\_EV\_REQ\_OM\_UNBLOCK),}
\DoxyCodeLine{        .allstate\_action = ns2\_vc\_fsm\_allstate\_action,}
\DoxyCodeLine{        .cleanup = ns2\_vc\_fsm\_clean,}
\DoxyCodeLine{        .timer\_cb = ns2\_vc\_fsm\_timer\_cb,}
\DoxyCodeLine{        .event\_names = ns2\_vc\_event\_names,}
\DoxyCodeLine{        .pre\_term = NULL,}
\DoxyCodeLine{        .log\_subsys = DLNS,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+()}, and \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc()}.

\mbox{\label{gprs__ns2__vc__fsm_8c_a6baf2bc05d063829c8e127bb687d31d5}} 
\index{gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}!ns2\_vc\_states@{ns2\_vc\_states}}
\index{ns2\_vc\_states@{ns2\_vc\_states}!gprs\_ns2\_vc\_fsm.c@{gprs\_ns2\_vc\_fsm.c}}
\doxysubsubsection{ns2\_vc\_states}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+fsm\+\_\+state} ns2\+\_\+vc\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

