\doxysection{src/xua\+\_\+asp\+\_\+fsm.c File Reference}
\label{xua__asp__fsm_8c}\index{src/xua\_asp\_fsm.c@{src/xua\_asp\_fsm.c}}
{\ttfamily \#include \char`\"{}config.\+h\char`\"{}}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/select.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/ipa.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/netif/stream.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/netif/ipa.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sigtran\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+msg.\+h\char`\"{}}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+as.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+asp.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+xua\+\_\+srv.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+asp\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+as\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv}
\item 
struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ S}(x)~(1 $<$$<$ (x))
\item 
\#define \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi,  event,  cond)
\item 
\#define \textbf{ ENSURE\+\_\+\+IPSP}(fi,  event)~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})
\item 
\#define \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}(fi,  event)~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP} $\vert$$\vert$ \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})
\item 
\#define \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}(fi,  event)~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG} $\vert$$\vert$ \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ ipa\+\_\+asp\+\_\+state} \{ \newline
\textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN} = XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN
, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+INACTIVE} = XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+INACTIVE
, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE} = XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE
, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+RESP}
, \newline
\textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+GET}
, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK}
, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK2}
 \}
\item 
enum \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+t} \{ \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+RESP} = 1
, \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK}
, \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+GET}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$ \textbf{ xua\+\_\+xlm\+\_\+prim\+\_\+alloc} (enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type} prim\+\_\+type, enum osmo\+\_\+prim\+\_\+operation op)
\item 
void \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$prim)
\item 
void \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type} prim\+\_\+type, enum osmo\+\_\+prim\+\_\+operation op)
\item 
static void \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type} prim\+\_\+type, enum osmo\+\_\+prim\+\_\+operation op)
\item 
static void \textbf{ xua\+\_\+asp\+\_\+tx\+\_\+snm\+\_\+daud\+\_\+address\+\_\+book} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\item 
static int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx} (struct \textbf{ xua\+\_\+msg} $\ast$xua, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\item 
static int \textbf{ peer\+\_\+send} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, int out\+\_\+event, struct \textbf{ xua\+\_\+msg} $\ast$in)
\item 
static int \textbf{ peer\+\_\+send\+\_\+error} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t err\+\_\+code)
\item 
static void \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb} (void $\ast$\textbf{ data})
\item 
static int \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, int out\+\_\+event)
\item 
static void \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event)
\item 
static void \textbf{ xua\+\_\+t\+\_\+beat\+\_\+stop} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ xua\+\_\+t\+\_\+beat\+\_\+send} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ xua\+\_\+t\+\_\+beat\+\_\+cb} (void $\ast$\+\_\+fi)
\item 
static void \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+asp\+\_\+allstate} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static int \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+cleanup} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum osmo\+\_\+fsm\+\_\+term\+\_\+cause cause)
\item 
static int \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, int log\+\_\+level)
\begin{DoxyCompactList}\small\item\em Start a new ASP finite state machine for given ASP (stored on asp-\/$>$fi) \end{DoxyCompactList}\item 
int \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, int log\+\_\+level)
\begin{DoxyCompactList}\small\item\em Start a new ASP finite state machine for given ASP (stored in asp-\/$>$fi) \end{DoxyCompactList}\item 
static int \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp} (struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv} $\ast$iafp)
\item 
static void \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+stop} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+send} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+cb} (void $\ast$\+\_\+fi)
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+down} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+inactive} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ \+\_\+ipa\+\_\+asp\+\_\+pick\+\_\+unused\+\_\+sls} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+allstate} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static int \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+cleanup} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum osmo\+\_\+fsm\+\_\+term\+\_\+cause cause)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct value\+\_\+string \textbf{ xua\+\_\+asp\+\_\+event\+\_\+names} [$\,$]
\item 
static const uint32\+\_\+t \textbf{ evt\+\_\+ack\+\_\+map} [\textbf{ \+\_\+\+NUM\+\_\+\+XUA\+\_\+\+ASP\+\_\+E}]
\item 
static const struct osmo\+\_\+fsm\+\_\+state \textbf{ xua\+\_\+asp\+\_\+states} [$\,$]
\item 
struct osmo\+\_\+fsm \textbf{ xua\+\_\+asp\+\_\+fsm}
\item 
static const struct osmo\+\_\+fsm\+\_\+state \textbf{ ipa\+\_\+asp\+\_\+states} [$\,$]
\item 
struct osmo\+\_\+fsm \textbf{ ipa\+\_\+asp\+\_\+fsm}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{xua__asp__fsm_8c_a6f0bea36823d7b9199d1ec06798ffd5a}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ENSURE\_ASP\_OR\_IPSP@{ENSURE\_ASP\_OR\_IPSP}}
\index{ENSURE\_ASP\_OR\_IPSP@{ENSURE\_ASP\_OR\_IPSP}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ENSURE\_ASP\_OR\_IPSP}
{\footnotesize\ttfamily \#define ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP(\begin{DoxyParamCaption}\item[{}]{fi,  }\item[{}]{event }\end{DoxyParamCaption})~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP} $\vert$$\vert$ \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})}

\mbox{\label{xua__asp__fsm_8c_a06792c2e7f953e45d07b1677dde2e217}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ENSURE\_IPSP@{ENSURE\_IPSP}}
\index{ENSURE\_IPSP@{ENSURE\_IPSP}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ENSURE\_IPSP}
{\footnotesize\ttfamily \#define ENSURE\+\_\+\+IPSP(\begin{DoxyParamCaption}\item[{}]{fi,  }\item[{}]{event }\end{DoxyParamCaption})~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})}

\mbox{\label{xua__asp__fsm_8c_a0f192364e4cfc2849cd174f905b1802b}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ENSURE\_ROLE\_COND@{ENSURE\_ROLE\_COND}}
\index{ENSURE\_ROLE\_COND@{ENSURE\_ROLE\_COND}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ENSURE\_ROLE\_COND}
{\footnotesize\ttfamily \#define ENSURE\+\_\+\+ROLE\+\_\+\+COND(\begin{DoxyParamCaption}\item[{}]{fi,  }\item[{}]{event,  }\item[{}]{cond }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{                                                            \(\backslash\)}
\DoxyCodeLine{                struct xua\_asp\_fsm\_priv *\_xafp = fi-\/>priv;              \(\backslash\)}
\DoxyCodeLine{                enum osmo\_ss7\_asp\_role \_role = \_xafp-\/>asp-\/>cfg.role; \(\backslash\)}
\DoxyCodeLine{                if (!(cond)) \{          \(\backslash\)}
\DoxyCodeLine{                        LOGPFSML(fi, LOGL\_ERROR, \textcolor{stringliteral}{"{}event \%s not permitted "{}} \(\backslash\)}
\DoxyCodeLine{                                 \textcolor{stringliteral}{"{}in role \%s\(\backslash\)n"{}},                        \(\backslash\)}
\DoxyCodeLine{                                 osmo\_fsm\_event\_name(fi-\/>fsm, event),   \(\backslash\)}
\DoxyCodeLine{                                 get\_value\_string(osmo\_ss7\_asp\_role\_names, \_role));\(\backslash\)}
\DoxyCodeLine{                        return;                                         \(\backslash\)}
\DoxyCodeLine{                \}                                                       \(\backslash\)}
\DoxyCodeLine{        \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
\mbox{\label{xua__asp__fsm_8c_ade512cf6f73ff0227729e90437daa8f3}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ENSURE\_SG\_OR\_IPSP@{ENSURE\_SG\_OR\_IPSP}}
\index{ENSURE\_SG\_OR\_IPSP@{ENSURE\_SG\_OR\_IPSP}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ENSURE\_SG\_OR\_IPSP}
{\footnotesize\ttfamily \#define ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP(\begin{DoxyParamCaption}\item[{}]{fi,  }\item[{}]{event }\end{DoxyParamCaption})~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG} $\vert$$\vert$ \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})}

\mbox{\label{xua__asp__fsm_8c_ac4a3ed3432929804c708f7760fb79e28}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!S@{S}}
\index{S@{S}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{S}
{\footnotesize\ttfamily \#define S(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~(1 $<$$<$ (x))}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64db}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_t@{ipa\_asp\_fsm\_t}}
\index{ipa\_asp\_fsm\_t@{ipa\_asp\_fsm\_t}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_t}
{\footnotesize\ttfamily enum \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+t}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{T\_WAIT\_ID\_RESP@{T\_WAIT\_ID\_RESP}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!T\_WAIT\_ID\_RESP@{T\_WAIT\_ID\_RESP}}}\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64dba29c024648f3cc7364de8f0997dfa3c92}} 
T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+RESP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{T\_WAIT\_ID\_ACK@{T\_WAIT\_ID\_ACK}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!T\_WAIT\_ID\_ACK@{T\_WAIT\_ID\_ACK}}}\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64dba1978f36ad9d62c623305bc51590a534c}} 
T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{T\_WAIT\_ID\_GET@{T\_WAIT\_ID\_GET}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!T\_WAIT\_ID\_GET@{T\_WAIT\_ID\_GET}}}\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64dba2b8856dc98cbb9b47e0005fecbf5df88}} 
T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+GET&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_state@{ipa\_asp\_state}}
\index{ipa\_asp\_state@{ipa\_asp\_state}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_state}
{\footnotesize\ttfamily enum \textbf{ ipa\+\_\+asp\+\_\+state}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_DOWN@{IPA\_ASP\_S\_DOWN}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_DOWN@{IPA\_ASP\_S\_DOWN}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a5c0501f7db40cfa2912f1507e26c7777}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_INACTIVE@{IPA\_ASP\_S\_INACTIVE}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_INACTIVE@{IPA\_ASP\_S\_INACTIVE}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a32dee80d08964ccfbc056e25139e28a4}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+INACTIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_ACTIVE@{IPA\_ASP\_S\_ACTIVE}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_ACTIVE@{IPA\_ASP\_S\_ACTIVE}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a60d7c4e2a52482b4805512eb543ea8e9}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_WAIT\_ID\_RESP@{IPA\_ASP\_S\_WAIT\_ID\_RESP}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_WAIT\_ID\_RESP@{IPA\_ASP\_S\_WAIT\_ID\_RESP}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a76e19b993886f0a79cd2883fc2447195}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+RESP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_WAIT\_ID\_GET@{IPA\_ASP\_S\_WAIT\_ID\_GET}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_WAIT\_ID\_GET@{IPA\_ASP\_S\_WAIT\_ID\_GET}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a628747e4a354e5aecca2de83c8d77fbc}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+GET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_WAIT\_ID\_ACK@{IPA\_ASP\_S\_WAIT\_ID\_ACK}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_WAIT\_ID\_ACK@{IPA\_ASP\_S\_WAIT\_ID\_ACK}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924aa82bfa254fd7a9a1d583cb4877c0037d}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IPA\_ASP\_S\_WAIT\_ID\_ACK2@{IPA\_ASP\_S\_WAIT\_ID\_ACK2}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!IPA\_ASP\_S\_WAIT\_ID\_ACK2@{IPA\_ASP\_S\_WAIT\_ID\_ACK2}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a6203a404bd2dfa790947903fed1f17d4}} 
IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK2&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{xua__asp__fsm_8c_a5887c906e88f072cd6ffa1948529b764}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!\_ipa\_asp\_pick\_unused\_sls@{\_ipa\_asp\_pick\_unused\_sls}}
\index{\_ipa\_asp\_pick\_unused\_sls@{\_ipa\_asp\_pick\_unused\_sls}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{\_ipa\_asp\_pick\_unused\_sls()}
{\footnotesize\ttfamily static void \+\_\+ipa\+\_\+asp\+\_\+pick\+\_\+unused\+\_\+sls (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::as}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::as\+\_\+entry}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::assoc\+\_\+asp\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::ipa}, \textbf{ LOGPASP}, \textbf{ sls}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::sls}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+::sls\+\_\+assigned}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+allstate()}, and \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start()}.

\mbox{\label{xua__asp__fsm_8c_ab6db634aa1be05caf59623fd99d72e97}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!check\_stop\_t\_ack@{check\_stop\_t\_ack}}
\index{check\_stop\_t\_ack@{check\_stop\_t\_ack}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{check\_stop\_t\_ack()}
{\footnotesize\ttfamily static void check\+\_\+stop\+\_\+t\+\_\+ack (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ evt\+\_\+ack\+\_\+map}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}.

\mbox{\label{xua__asp__fsm_8c_a79f5b0161bf2be0c56b13fbf170b6501}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!common\_asp\_fsm\_down\_onenter@{common\_asp\_fsm\_down\_onenter}}
\index{common\_asp\_fsm\_down\_onenter@{common\_asp\_fsm\_down\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{common\_asp\_fsm\_down\_onenter()}
{\footnotesize\ttfamily static void common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::as}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp\+\_\+entry}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::assoc\+\_\+as\+\_\+list}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::rkm\+\_\+dyn\+\_\+allocated}, \textbf{ ss7\+\_\+as\+\_\+del\+\_\+asp()}, \textbf{ tcap\+\_\+as\+\_\+del\+\_\+asp()}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+IND}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}.

\mbox{\label{xua__asp__fsm_8c_aedf0ebdb1fe70c839f82edf448300263}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!dispatch\_to\_all\_as@{dispatch\_to\_all\_as}}
\index{dispatch\_to\_all\_as@{dispatch\_to\_all\_as}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{dispatch\_to\_all\_as()}
{\footnotesize\ttfamily static void dispatch\+\_\+to\+\_\+all\+\_\+as (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::as}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp\+\_\+entry}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::assoc\+\_\+as\+\_\+list}, \textbf{ data}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}.



Referenced by \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter()}.

\mbox{\label{xua__asp__fsm_8c_af444752508bfdb04bf012ba62b7faaa7}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!get\_fd\_from\_iafp@{get\_fd\_from\_iafp}}
\index{get\_fd\_from\_iafp@{get\_fd\_from\_iafp}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{get\_fd\_from\_iafp()}
{\footnotesize\ttfamily static int get\+\_\+fd\+\_\+from\+\_\+iafp (\begin{DoxyParamCaption}\item[{struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv} $\ast$}]{iafp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::client}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+::server}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+allstate()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+down()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get()}, and \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp()}.

\mbox{\label{xua__asp__fsm_8c_a7ba5ff56028325c04717ba9f1bf26d6c}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_allstate@{ipa\_asp\_allstate}}
\index{ipa\_asp\_allstate@{ipa\_asp\_allstate}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_allstate()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+allstate (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+ipa\+\_\+asp\+\_\+pick\+\_\+unused\+\_\+sls()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ data}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp()}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+AS\+\_\+\+ASSIGNED}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+SCTP\+\_\+\+COMM\+\_\+\+DOWN\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+SCTP\+\_\+\+RESTART\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_a5aa5de6b1ee15cd960ecd9034624217a}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_active@{ipa\_asp\_fsm\_active}}
\index{ipa\_asp\_fsm\_active@{ipa\_asp\_fsm\_active}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_active()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+active (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+REQ}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+REQ}.

\mbox{\label{xua__asp__fsm_8c_a3493aa83ed00543b4d634c34667e9e65}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_active\_onenter@{ipa\_asp\_fsm\_active\_onenter}}
\index{ipa\_asp\_fsm\_active\_onenter@{ipa\_asp\_fsm\_active\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_active\_onenter()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+as\+\_\+event\+\_\+asp\+\_\+inactive\+\_\+ind\+\_\+pars\+::asp}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+send()}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_add7d89c220c0d4d7942d3d253343e92b}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_cleanup@{ipa\_asp\_fsm\_cleanup}}
\index{ipa\_asp\_fsm\_cleanup@{ipa\_asp\_fsm\_cleanup}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_cleanup()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+cleanup (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{enum osmo\+\_\+fsm\+\_\+term\+\_\+cause}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+stop()}, and \textbf{ NULL}.

\mbox{\label{xua__asp__fsm_8c_a7f2eb9dcdf561afbd99e1e7606e7f1f4}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_down@{ipa\_asp\_fsm\_down}}
\index{ipa\_asp\_fsm\_down@{ipa\_asp\_fsm\_down}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_down()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+down (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp()}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+GET}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+RESP}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+GET}, \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+RESP}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP\+\_\+\+REQ}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+SCTP\+\_\+\+EST\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_ae0157a624b9fb41195428418f794000a}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_down\_onenter@{ipa\_asp\_fsm\_down\_onenter}}
\index{ipa\_asp\_fsm\_down\_onenter@{ipa\_asp\_fsm\_down\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_down\_onenter()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, and \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+stop()}.

\mbox{\label{xua__asp__fsm_8c_a5e9b73af709418cfa5b15c1ff4dc3d55}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_inactive@{ipa\_asp\_fsm\_inactive}}
\index{ipa\_asp\_fsm\_inactive@{ipa\_asp\_fsm\_inactive}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_inactive()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+inactive (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+REQ}.

\mbox{\label{xua__asp__fsm_8c_a5f4d807252c91cb5ea2b92f365d7b31f}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_inactive\_onenter@{ipa\_asp\_fsm\_inactive\_onenter}}
\index{ipa\_asp\_fsm\_inactive\_onenter@{ipa\_asp\_fsm\_inactive\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_inactive\_onenter()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+as\+\_\+event\+\_\+asp\+\_\+inactive\+\_\+ind\+\_\+pars\+::asp}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_ac1c0cd3e4fe8e38bc99abb00b5c0a289}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_start@{ipa\_asp\_fsm\_start}}
\index{ipa\_asp\_fsm\_start@{ipa\_asp\_fsm\_start}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_start()}
{\footnotesize\ttfamily static int ipa\+\_\+asp\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Start a new ASP finite state machine for given ASP (stored on asp-\/$>$fi) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process for which to start FSM \\
\hline
\mbox{\texttt{ in}}  & {\em log\+\_\+level} & Logging Level for ASP FSM logging \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+ipa\+\_\+asp\+\_\+pick\+\_\+unused\+\_\+sls()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::dyn\+\_\+allocated}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ ipa\+\_\+asp\+\_\+fsm}, \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+cb()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ ss7\+\_\+asp\+\_\+get\+\_\+first\+\_\+as()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP\+\_\+\+REQ}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+start()}.

\mbox{\label{xua__asp__fsm_8c_ac02a60ab319840f331b83658bddbe3b6}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_timer\_cb@{ipa\_asp\_fsm\_timer\_cb}}
\index{ipa\_asp\_fsm\_timer\_cb@{ipa\_asp\_fsm\_timer\_cb}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_timer\_cb()}
{\footnotesize\ttfamily static int ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+disconnect()}.

\mbox{\label{xua__asp__fsm_8c_a6b8808a7e827b2eaac2bc6dabf1a04f0}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_wait\_id\_ack@{ipa\_asp\_fsm\_wait\_id\_ack}}
\index{ipa\_asp\_fsm\_wait\_id\_ack@{ipa\_asp\_fsm\_wait\_id\_ack}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_wait\_id\_ack()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp()}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ID\+\_\+\+ACK}, and \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE}.

\mbox{\label{xua__asp__fsm_8c_ad20858fae065ad7990193de7943ef852}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_wait\_id\_ack2@{ipa\_asp\_fsm\_wait\_id\_ack2}}
\index{ipa\_asp\_fsm\_wait\_id\_ack2@{ipa\_asp\_fsm\_wait\_id\_ack2}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_wait\_id\_ack2()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2 (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ IPA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ID\+\_\+\+ACK}, and \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE}.

\mbox{\label{xua__asp__fsm_8c_aec91e2dc9b479f444abb3dc2d44fd546}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_wait\_id\_get@{ipa\_asp\_fsm\_wait\_id\_get}}
\index{ipa\_asp\_fsm\_wait\_id\_get@{ipa\_asp\_fsm\_wait\_id\_get}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_wait\_id\_get()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ data}, \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp()}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ID\+\_\+\+ACK}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ID\+\_\+\+GET}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, and \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK}.

\mbox{\label{xua__asp__fsm_8c_a4e109acdce110b7c471ad8eafc0a42b9}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm\_wait\_id\_resp@{ipa\_asp\_fsm\_wait\_id\_resp}}
\index{ipa\_asp\_fsm\_wait\_id\_resp@{ipa\_asp\_fsm\_wait\_id\_resp}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm\_wait\_id\_resp()}
{\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ data}, \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ID\+\_\+\+ACK}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ID\+\_\+\+RESP}, \textbf{ IPA\+\_\+\+ASP\+\_\+\+S\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK2}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+id\+\_\+ack\+\_\+rcvd}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ NULL}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+disconnect()}, \textbf{ ss7\+\_\+as\+\_\+add\+\_\+asp()}, and \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK}.

\mbox{\label{xua__asp__fsm_8c_a821454b6bbdaac1d7c98cade36c71a9c}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_t\_beat\_cb@{ipa\_t\_beat\_cb}}
\index{ipa\_t\_beat\_cb@{ipa\_t\_beat\_cb}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_t\_beat\_cb()}
{\footnotesize\ttfamily static void ipa\+\_\+t\+\_\+beat\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+send()}, \textbf{ ss7\+\_\+asp\+\_\+disconnect\+\_\+stream()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, and \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start()}.

\mbox{\label{xua__asp__fsm_8c_a465a4c83b1e6bb8d7434c1065209a0a8}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_t\_beat\_send@{ipa\_t\_beat\_send}}
\index{ipa\_t\_beat\_send@{ipa\_t\_beat\_send}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_t\_beat\_send()}
{\footnotesize\ttfamily static void ipa\+\_\+t\+\_\+beat\+\_\+send (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ ipa\+\_\+gen\+\_\+ping()}, \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+stop()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+XUA\+\_\+\+T\+\_\+\+BEAT}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::\+T\+\_\+defs\+\_\+xua}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()}, and \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+cb()}.

\mbox{\label{xua__asp__fsm_8c_adcb24be4e8a6c1b5f673c1e95fd0239b}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_t\_beat\_stop@{ipa\_t\_beat\_stop}}
\index{ipa\_t\_beat\_stop@{ipa\_t\_beat\_stop}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_t\_beat\_stop()}
{\footnotesize\ttfamily static void ipa\+\_\+t\+\_\+beat\+\_\+stop (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+cleanup()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, and \textbf{ ipa\+\_\+t\+\_\+beat\+\_\+send()}.

\mbox{\label{xua__asp__fsm_8c_a8cc4230ac64b40f6a4010c3403ab3725}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!peer\_send@{peer\_send}}
\index{peer\_send@{peer\_send}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{peer\_send()}
{\footnotesize\ttfamily static int peer\+\_\+send (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{int}]{out\+\_\+event,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{in }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::local\+\_\+asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::local\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+HEARDBT\+\_\+\+DATA}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+TRAF\+\_\+\+MODE\+\_\+\+TYP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ osmo\+\_\+ss7\+\_\+tmode\+\_\+to\+\_\+xua()}, \textbf{ ss7\+\_\+asp\+\_\+determine\+\_\+traf\+\_\+mode()}, \textbf{ SUA\+\_\+\+ASPSM\+\_\+\+BEAT}, \textbf{ SUA\+\_\+\+ASPSM\+\_\+\+BEAT\+\_\+\+ACK}, \textbf{ SUA\+\_\+\+ASPSM\+\_\+\+DOWN}, \textbf{ SUA\+\_\+\+ASPSM\+\_\+\+DOWN\+\_\+\+ACK}, \textbf{ SUA\+\_\+\+ASPSM\+\_\+\+UP}, \textbf{ SUA\+\_\+\+ASPSM\+\_\+\+UP\+\_\+\+ACK}, \textbf{ SUA\+\_\+\+ASPTM\+\_\+\+ACTIVE}, \textbf{ SUA\+\_\+\+ASPTM\+\_\+\+ACTIVE\+\_\+\+ACK}, \textbf{ SUA\+\_\+\+ASPTM\+\_\+\+INACTIVE}, \textbf{ SUA\+\_\+\+ASPTM\+\_\+\+INACTIVE\+\_\+\+ACK}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ASP\+\_\+\+ID}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+ASPSM}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+ASPTM}, \textbf{ SUA\+\_\+\+VERSION}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPAC}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPAC\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPIA}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPIA\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, \textbf{ xua\+\_\+msg\+\_\+copy\+\_\+part()}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+to\+\_\+msg()}.



Referenced by \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()}, \textbf{ xua\+\_\+asp\+\_\+allstate()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}, \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb()}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+send()}.

\mbox{\label{xua__asp__fsm_8c_a2c31298d7f7f97a543b3c9bc0d864133}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!peer\_send\_and\_start\_t\_ack@{peer\_send\_and\_start\_t\_ack}}
\index{peer\_send\_and\_start\_t\_ack@{peer\_send\_and\_start\_t\_ack}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{peer\_send\_and\_start\_t\_ack()}
{\footnotesize\ttfamily static int peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{int}]{out\+\_\+event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ NULL}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event}, \textbf{ peer\+\_\+send()}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+XUA\+\_\+\+T\+\_\+\+ACK}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::\+T\+\_\+defs\+\_\+xua}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb()}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}.

\mbox{\label{xua__asp__fsm_8c_ab6b18767fb476d09a98a92aa449d9bfe}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!peer\_send\_error@{peer\_send\_error}}
\index{peer\_send\_error@{peer\_send\_error}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{peer\_send\_error()}
{\footnotesize\ttfamily static int peer\+\_\+send\+\_\+error (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{err\+\_\+code }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ m3ua\+\_\+err\+\_\+names}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ERR\+\_\+\+CODE}, \textbf{ SUA\+\_\+\+MGMT\+\_\+\+ERR}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+MGMT}, \textbf{ SUA\+\_\+\+VERSION}, \textbf{ xua\+\_\+common\+\_\+hdr\+::version}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+to\+\_\+msg()}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}.

\mbox{\label{xua__asp__fsm_8c_a5a296eb3bb0dd036c640ae26384b52e1}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!send\_xlm\_prim\_simple@{send\_xlm\_prim\_simple}}
\index{send\_xlm\_prim\_simple@{send\_xlm\_prim\_simple}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{send\_xlm\_prim\_simple()}
{\footnotesize\ttfamily static void send\+\_\+xlm\+\_\+prim\+\_\+simple (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type}}]{prim\+\_\+type,  }\item[{enum osmo\+\_\+prim\+\_\+operation}]{op }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, and \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple()}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+allstate()}, \textbf{ xua\+\_\+asp\+\_\+allstate()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}.

\mbox{\label{xua__asp__fsm_8c_a557d143b3528af6ed3e63cfe4740e13f}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_allstate@{xua\_asp\_allstate}}
\index{xua\_asp\_allstate@{xua\_asp\_allstate}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_allstate()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+allstate (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN}, \textbf{ peer\+\_\+send()}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+AS\+\_\+\+ASSIGNED}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+SCTP\+\_\+\+COMM\+\_\+\+DOWN\+\_\+\+IND}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+SCTP\+\_\+\+RESTART\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}.

\mbox{\label{xua__asp__fsm_8c_aae60da3d9e5488d86440d8573c656923}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_active@{xua\_asp\_fsm\_active}}
\index{xua\_asp\_fsm\_active@{xua\_asp\_fsm\_active}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_active()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+active (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack()}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+UNEXPECTED\+\_\+\+MSG}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+ACTIVE}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+INACTIVE}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()}, \textbf{ peer\+\_\+send\+\_\+error()}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPAC}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPAC\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPIA}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPIA\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+INACTIVE}.

\mbox{\label{xua__asp__fsm_8c_abcc71c602d7421510057486011382d06}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_active\_onenter@{xua\_asp\_fsm\_active\_onenter}}
\index{xua\_asp\_fsm\_active\_onenter@{xua\_asp\_fsm\_active\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_active\_onenter()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::daud\+\_\+act}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ xua\+\_\+asp\+\_\+tx\+\_\+snm\+\_\+daud\+\_\+address\+\_\+book()}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_a840521b95422bc2ad709fabcb646e7c0}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_cleanup@{xua\_asp\_fsm\_cleanup}}
\index{xua\_asp\_fsm\_cleanup@{xua\_asp\_fsm\_cleanup}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_cleanup()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+cleanup (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{enum osmo\+\_\+fsm\+\_\+term\+\_\+cause}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ NULL}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+stop()}.

\mbox{\label{xua__asp__fsm_8c_ac39e7772fbda3ae74d35eed1543da980}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_down@{xua\_asp\_fsm\_down}}
\index{xua\_asp\_fsm\_down@{xua\_asp\_fsm\_down}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_down()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+down (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack()}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::local\+\_\+asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::local\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+ASP\+\_\+\+ID\+\_\+\+REQD}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+INVAL\+\_\+\+ASP\+\_\+\+ID}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()}, \textbf{ peer\+\_\+send\+\_\+error()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \textbf{ ss7\+\_\+asp\+\_\+check\+\_\+remote\+\_\+asp\+\_\+id\+\_\+unique()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ASP\+\_\+\+ID}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+SCTP\+\_\+\+EST\+\_\+\+IND}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+INACTIVE}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32()}.

\mbox{\label{xua__asp__fsm_8c_a205fa0b07787a9aa47b1e884cfc4ce92}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_down\_onenter@{xua\_asp\_fsm\_down\_onenter}}
\index{xua\_asp\_fsm\_down\_onenter@{xua\_asp\_fsm\_down\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_down\_onenter()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+stop()}.

\mbox{\label{xua__asp__fsm_8c_aaaff6da426fc0389544a02926e430f55}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_inactive@{xua\_asp\_fsm\_inactive}}
\index{xua\_asp\_fsm\_inactive@{xua\_asp\_fsm\_inactive}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_inactive()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+inactive (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::as}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp\+\_\+entry}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::assoc\+\_\+as\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack()}, \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ LOGPAS}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+INVAL\+\_\+\+ASP\+\_\+\+ID}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+INVAL\+\_\+\+ROUT\+\_\+\+CTX}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+UNSUPP\+\_\+\+TRAF\+\_\+\+MOD\+\_\+\+TYP}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+TRAF\+\_\+\+MODE\+\_\+\+TYP}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+LOADSHARE}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+peer}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+vty}, \textbf{ NULL}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+rctx()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+tmode\+\_\+compatible\+\_\+xua()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+tmode\+\_\+from\+\_\+xua()}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+ACTIVE}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()}, \textbf{ peer\+\_\+send\+\_\+error()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \textbf{ ss7\+\_\+asp\+\_\+check\+\_\+remote\+\_\+asp\+\_\+id\+\_\+unique()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ASP\+\_\+\+ID}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPDN\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+ASPUP\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPAC}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPAC\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPIA}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPTM\+\_\+\+ASPIA\+\_\+\+ACK}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32()}.

\mbox{\label{xua__asp__fsm_8c_a430de9931db0dbb76d57b56482a552dd}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_inactive\_onenter@{xua\_asp\_fsm\_inactive\_onenter}}
\index{xua\_asp\_fsm\_inactive\_onenter@{xua\_asp\_fsm\_inactive\_onenter}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_inactive\_onenter()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+as\+\_\+event\+\_\+asp\+\_\+inactive\+\_\+ind\+\_\+pars\+::asp}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+send()}.

\mbox{\label{xua__asp__fsm_8c_a7f535208bb18410f78fb1ab3e443c57a}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_start@{xua\_asp\_fsm\_start}}
\index{xua\_asp\_fsm\_start@{xua\_asp\_fsm\_start}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_start()}
{\footnotesize\ttfamily int xua\+\_\+asp\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})}



Start a new ASP finite state machine for given ASP (stored in asp-\/$>$fi) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process for which to start FSM \\
\hline
\mbox{\texttt{ in}}  & {\em log\+\_\+level} & Logging Level for ASP FSM logging \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+PROT\+\_\+\+IPA}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::proto}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, \textbf{ xua\+\_\+asp\+\_\+fsm}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+cb()}.



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+restart()}, and \textbf{ xua\+\_\+accept\+\_\+cb()}.

\mbox{\label{xua__asp__fsm_8c_a4a6754d2c135137e5b782786129c8f82}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm\_timer\_cb@{xua\_asp\_fsm\_timer\_cb}}
\index{xua\_asp\_fsm\_timer\_cb@{xua\_asp\_fsm\_timer\_cb}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm\_timer\_cb()}
{\footnotesize\ttfamily static int xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{xua__asp__fsm_8c_a65ed2433ab5f6146c201c56823b96509}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_send\_xlm\_prim@{xua\_asp\_send\_xlm\_prim}}
\index{xua\_asp\_send\_xlm\_prim@{xua\_asp\_send\_xlm\_prim}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_send\_xlm\_prim()}
{\footnotesize\ttfamily void xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$}]{prim }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::lm}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+name()}, and \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager\+::prim\+\_\+cb}.



Referenced by \textbf{ handle\+\_\+rkey\+\_\+dereg\+\_\+resp()}, \textbf{ handle\+\_\+rkey\+\_\+reg\+\_\+resp()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+err()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+ntfy()}, and \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple()}.

\mbox{\label{xua__asp__fsm_8c_ae2c4024524aae252f01907024a2560c0}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_send\_xlm\_prim\_simple@{xua\_asp\_send\_xlm\_prim\_simple}}
\index{xua\_asp\_send\_xlm\_prim\_simple@{xua\_asp\_send\_xlm\_prim\_simple}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_send\_xlm\_prim\_simple()}
{\footnotesize\ttfamily void xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type}}]{prim\+\_\+type,  }\item[{enum osmo\+\_\+prim\+\_\+operation}]{op }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim()}, and \textbf{ xua\+\_\+xlm\+\_\+prim\+\_\+alloc()}.



Referenced by \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \textbf{ ss7\+\_\+asp\+\_\+xua\+\_\+srv\+\_\+conn\+\_\+closed\+\_\+cb()}, \textbf{ ss7\+\_\+asp\+\_\+xua\+\_\+srv\+\_\+conn\+\_\+rx\+\_\+cb()}, \textbf{ xua\+\_\+accept\+\_\+cb()}, \textbf{ xua\+\_\+cli\+\_\+close()}, \textbf{ xua\+\_\+cli\+\_\+connect\+\_\+cb()}, and \textbf{ xua\+\_\+cli\+\_\+read\+\_\+cb()}.

\mbox{\label{xua__asp__fsm_8c_aab7e0e0eb849cf53228b783c3bd9d7c2}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_tx\_snm\_daud\_address\_book@{xua\_asp\_tx\_snm\_daud\_address\_book}}
\index{xua\_asp\_tx\_snm\_daud\_address\_book@{xua\_asp\_tx\_snm\_daud\_address\_book}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_tx\_snm\_daud\_address\_book()}
{\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+tx\+\_\+snm\+\_\+daud\+\_\+address\+\_\+book (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::addr}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::cfg}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::list}, \textbf{ LOGPASP}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+MAX\+\_\+\+RCTX\+\_\+\+COUNT}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+local()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print2()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::sccp\+\_\+address\+\_\+book}, \textbf{ ss7\+\_\+asp\+\_\+get\+\_\+all\+\_\+rctx\+\_\+be()}, and \textbf{ xua\+\_\+tx\+\_\+snm\+\_\+daud()}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()}.

\mbox{\label{xua__asp__fsm_8c_aa56c62169f5d9cb0836bbd96027306a2}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_msg\_add\_asp\_rctx@{xua\_msg\_add\_asp\_rctx}}
\index{xua\_msg\_add\_asp\_rctx@{xua\_msg\_add\_asp\_rctx}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_msg\_add\_asp\_rctx()}
{\footnotesize\ttfamily static int xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+MAX\+\_\+\+RCTX\+\_\+\+COUNT}, \textbf{ ss7\+\_\+asp\+\_\+get\+\_\+all\+\_\+rctx\+\_\+be()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}.



Referenced by \textbf{ peer\+\_\+send()}.

\mbox{\label{xua__asp__fsm_8c_aca6739a78491b1fd6be14693d6bdfb15}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_t\_ack\_cb@{xua\_t\_ack\_cb}}
\index{xua\_t\_ack\_cb@{xua\_t\_ack\_cb}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_t\_ack\_cb()}
{\footnotesize\ttfamily static void xua\+\_\+t\+\_\+ack\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ data}, \textbf{ NULL}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event}, \textbf{ peer\+\_\+send()}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+XUA\+\_\+\+T\+\_\+\+ACK}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::\+T\+\_\+defs\+\_\+xua}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}.



Referenced by \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()}.

\mbox{\label{xua__asp__fsm_8c_a4bec4726682383954446bee2d7289979}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_t\_beat\_cb@{xua\_t\_beat\_cb}}
\index{xua\_t\_beat\_cb@{xua\_t\_beat\_cb}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_t\_beat\_cb()}
{\footnotesize\ttfamily static void xua\+\_\+t\+\_\+beat\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ ss7\+\_\+asp\+\_\+disconnect\+\_\+stream()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+send()}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+start()}.

\mbox{\label{xua__asp__fsm_8c_ab985516da8760c1c8e5393eaa637a4ed}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_t\_beat\_send@{xua\_t\_beat\_send}}
\index{xua\_t\_beat\_send@{xua\_t\_beat\_send}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_t\_beat\_send()}
{\footnotesize\ttfamily static void xua\+\_\+t\+\_\+beat\+\_\+send (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ NULL}, \textbf{ peer\+\_\+send()}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+XUA\+\_\+\+T\+\_\+\+BEAT}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::\+T\+\_\+defs\+\_\+xua}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}, \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+ASPSM\+\_\+\+BEAT}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+stop()}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter()}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+cb()}.

\mbox{\label{xua__asp__fsm_8c_abf6a568ad55d7ec3d8b5087f95946765}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_t\_beat\_stop@{xua\_t\_beat\_stop}}
\index{xua\_t\_beat\_stop@{xua\_t\_beat\_stop}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_t\_beat\_stop()}
{\footnotesize\ttfamily static void xua\+\_\+t\+\_\+beat\+\_\+stop (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+beat}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::unacked\+\_\+beats}.



Referenced by \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+cleanup()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, and \textbf{ xua\+\_\+t\+\_\+beat\+\_\+send()}.

\mbox{\label{xua__asp__fsm_8c_a1df6e93c5065b3a5441ff60d4cf5fb8c}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_xlm\_prim\_alloc@{xua\_xlm\_prim\_alloc}}
\index{xua\_xlm\_prim\_alloc@{xua\_xlm\_prim\_alloc}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_xlm\_prim\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$ xua\+\_\+xlm\+\_\+prim\+\_\+alloc (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type}}]{prim\+\_\+type,  }\item[{enum osmo\+\_\+prim\+\_\+operation}]{op }\end{DoxyParamCaption})}



References \textbf{ NULL}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::oph}, and \textbf{ XUA\+\_\+\+SAP\+\_\+\+LM}.



Referenced by \textbf{ handle\+\_\+rkey\+\_\+dereg\+\_\+resp()}, \textbf{ handle\+\_\+rkey\+\_\+reg\+\_\+resp()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+err()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+ntfy()}, \textbf{ reg\+\_\+req\+\_\+all\+\_\+assoc\+\_\+as()}, and \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple()}.



\doxysubsection{Variable Documentation}
\mbox{\label{xua__asp__fsm_8c_a34912c3b074c85d6db88aad66fbd499f}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!evt\_ack\_map@{evt\_ack\_map}}
\index{evt\_ack\_map@{evt\_ack\_map}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{evt\_ack\_map}
{\footnotesize\ttfamily const uint32\+\_\+t evt\+\_\+ack\+\_\+map[\textbf{ \+\_\+\+NUM\+\_\+\+XUA\+\_\+\+ASP\+\_\+E}]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [XUA\_ASP\_E\_ASPSM\_ASPUP] = XUA\_ASP\_E\_ASPSM\_ASPUP\_ACK,}
\DoxyCodeLine{        [XUA\_ASP\_E\_ASPTM\_ASPAC] = XUA\_ASP\_E\_ASPTM\_ASPAC\_ACK,}
\DoxyCodeLine{        [XUA\_ASP\_E\_ASPSM\_ASPDN] = XUA\_ASP\_E\_ASPSM\_ASPDN\_ACK,}
\DoxyCodeLine{        [XUA\_ASP\_E\_ASPTM\_ASPIA] = XUA\_ASP\_E\_ASPTM\_ASPIA\_ACK,}
\DoxyCodeLine{        [XUA\_ASP\_E\_ASPSM\_BEAT] = XUA\_ASP\_E\_ASPSM\_BEAT\_ACK,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack()}.

\mbox{\label{xua__asp__fsm_8c_a43e75ddbe7932fe493cb59d8248e0c98}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_fsm@{ipa\_asp\_fsm}}
\index{ipa\_asp\_fsm@{ipa\_asp\_fsm}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_fsm}
{\footnotesize\ttfamily struct osmo\+\_\+fsm ipa\+\_\+asp\+\_\+fsm}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}IPA\_ASP"{}},}
\DoxyCodeLine{        .states = ipa\_asp\_states,}
\DoxyCodeLine{        .num\_states = ARRAY\_SIZE(ipa\_asp\_states),}
\DoxyCodeLine{        .timer\_cb = ipa\_asp\_fsm\_timer\_cb,}
\DoxyCodeLine{        .log\_subsys = DLSS7,}
\DoxyCodeLine{        .event\_names = xua\_asp\_event\_names,}
\DoxyCodeLine{        .allstate\_event\_mask = S(XUA\_ASP\_E\_SCTP\_COMM\_DOWN\_IND) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_SCTP\_RESTART\_IND) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_ASPSM\_BEAT) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_ASPSM\_BEAT\_ACK) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_AS\_ASSIGNED),}
\DoxyCodeLine{        .allstate\_action = ipa\_asp\_allstate,}
\DoxyCodeLine{        .cleanup = ipa\_asp\_fsm\_cleanup,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start()}, and \textbf{ osmo\+\_\+ss7\+\_\+init()}.

\mbox{\label{xua__asp__fsm_8c_ab5bd360ec117ebf15b8e5514e268fcab}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_asp\_states@{ipa\_asp\_states}}
\index{ipa\_asp\_states@{ipa\_asp\_states}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_asp\_states}
{\footnotesize\ttfamily const struct osmo\+\_\+fsm\+\_\+state ipa\+\_\+asp\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{xua__asp__fsm_8c_af176eecc69f63bb969d9dc136cd45559}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_event\_names@{xua\_asp\_event\_names}}
\index{xua\_asp\_event\_names@{xua\_asp\_event\_names}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_event\_names}
{\footnotesize\ttfamily const struct value\+\_\+string xua\+\_\+asp\+\_\+event\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_M\_ASP\_UP\_REQ, \textcolor{stringliteral}{"{}M-\/ASP\_UP.req"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_M\_ASP\_ACTIVE\_REQ, \textcolor{stringliteral}{"{}M-\/ASP\_ACTIVE.req"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_M\_ASP\_DOWN\_REQ,     \textcolor{stringliteral}{"{}M-\/ASP\_DOWN.req"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_M\_ASP\_INACTIVE\_REQ,     \textcolor{stringliteral}{"{}M-\/ASP\_INACTIVE.req"{}} \},}
\DoxyCodeLine{}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_SCTP\_COMM\_DOWN\_IND,     \textcolor{stringliteral}{"{}SCTP-\/COMM\_DOWN.ind"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_SCTP\_RESTART\_IND, \textcolor{stringliteral}{"{}SCTP-\/RESTART.ind"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_SCTP\_EST\_IND, \textcolor{stringliteral}{"{}SCTP-\/EST.ind"{}} \},}
\DoxyCodeLine{}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPSM\_ASPUP,   \textcolor{stringliteral}{"{}ASPSM-\/ASP\_UP"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPSM\_ASPUP\_ACK,   \textcolor{stringliteral}{"{}ASPSM-\/ASP\_UP\_ACK"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPTM\_ASPAC,   \textcolor{stringliteral}{"{}ASPTM-\/ASP\_AC"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPTM\_ASPAC\_ACK,   \textcolor{stringliteral}{"{}ASPTM-\/ASP\_AC\_ACK"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPSM\_ASPDN,   \textcolor{stringliteral}{"{}ASPSM-\/ASP\_DN"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPSM\_ASPDN\_ACK,   \textcolor{stringliteral}{"{}ASPSM-\/ASP\_DN\_ACK"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPTM\_ASPIA,   \textcolor{stringliteral}{"{}ASPTM-\/ASP\_IA"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPTM\_ASPIA\_ACK,   \textcolor{stringliteral}{"{}ASPTM\_ASP\_IA\_ACK"{}} \},}
\DoxyCodeLine{}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPSM\_BEAT,             \textcolor{stringliteral}{"{}ASPSM\_BEAT"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_ASPSM\_BEAT\_ACK,     \textcolor{stringliteral}{"{}ASPSM\_BEAT\_ACK"{}} \},}
\DoxyCodeLine{}
\DoxyCodeLine{        \{ XUA\_ASP\_E\_AS\_ASSIGNED,   \textcolor{stringliteral}{"{}AS\_ASSIGNED"{}} \},}
\DoxyCodeLine{}
\DoxyCodeLine{        \{ IPA\_ASP\_E\_ID\_RESP,           \textcolor{stringliteral}{"{}IPA\_CCM\_ID\_RESP"{}} \},}
\DoxyCodeLine{        \{ IPA\_ASP\_E\_ID\_GET,             \textcolor{stringliteral}{"{}IPA\_CCM\_ID\_GET"{}} \},}
\DoxyCodeLine{        \{ IPA\_ASP\_E\_ID\_ACK,             \textcolor{stringliteral}{"{}IPA\_CCM\_ID\_ACK"{}} \},}
\DoxyCodeLine{}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{xua__asp__fsm_8c_a14fb53dcfac1cdad274b0c88192517dd}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_fsm@{xua\_asp\_fsm}}
\index{xua\_asp\_fsm@{xua\_asp\_fsm}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_fsm}
{\footnotesize\ttfamily struct osmo\+\_\+fsm xua\+\_\+asp\+\_\+fsm}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}XUA\_ASP"{}},}
\DoxyCodeLine{        .states = xua\_asp\_states,}
\DoxyCodeLine{        .num\_states = ARRAY\_SIZE(xua\_asp\_states),}
\DoxyCodeLine{        .timer\_cb = xua\_asp\_fsm\_timer\_cb,}
\DoxyCodeLine{        .log\_subsys = DLSS7,}
\DoxyCodeLine{        .event\_names = xua\_asp\_event\_names,}
\DoxyCodeLine{        .allstate\_event\_mask = S(XUA\_ASP\_E\_SCTP\_COMM\_DOWN\_IND) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_SCTP\_RESTART\_IND) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_ASPSM\_BEAT) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_ASPSM\_BEAT\_ACK) |}
\DoxyCodeLine{                               S(XUA\_ASP\_E\_AS\_ASSIGNED),}
\DoxyCodeLine{        .allstate\_action = xua\_asp\_allstate,}
\DoxyCodeLine{        .cleanup = xua\_asp\_fsm\_cleanup,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+ss7\+\_\+init()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+start()}.

\mbox{\label{xua__asp__fsm_8c_ad09082ebb4ac6dff6ec2e7cf8e418437}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!xua\_asp\_states@{xua\_asp\_states}}
\index{xua\_asp\_states@{xua\_asp\_states}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{xua\_asp\_states}
{\footnotesize\ttfamily const struct osmo\+\_\+fsm\+\_\+state xua\+\_\+asp\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

