\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 $<$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 $<$osmocom/sigtran/xua\+\_\+msg.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\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{ XUA\+\_\+\+T\+\_\+\+ACK\+\_\+\+SEC}~2
\item 
\#define \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}(fi,  event)
\item 
\#define \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}(fi,  event)
\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 int \textbf{ determine\+\_\+traf\+\_\+mode} (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)
\item 
static void \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event)
\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 struct osmo\+\_\+fsm\+\_\+inst $\ast$ \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role} role, int log\+\_\+level)
\begin{DoxyCompactList}\small\item\em Start a new ASP finite state machine for given ASP. \end{DoxyCompactList}\item 
struct osmo\+\_\+fsm\+\_\+inst $\ast$ \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role} role, int log\+\_\+level)
\begin{DoxyCompactList}\small\item\em Start a new ASP finite stae machine for given ASP. \end{DoxyCompactList}\item 
static int \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp} (struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv} $\ast$iafp)
\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\+\_\+allstate} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ ipa\+\_\+pong\+\_\+timer\+\_\+cb} (void $\ast$\+\_\+fi)
\item 
static int \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\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})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{                                                            \(\backslash\)}
\DoxyCodeLine{                struct xua\_asp\_fsm\_priv *\_xafp = fi-\/>priv;              \(\backslash\)}
\DoxyCodeLine{                if (\_xafp-\/>role != OSMO\_SS7\_ASP\_ROLE\_ASP \&\&                \(\backslash\)}
\DoxyCodeLine{                    \_xafp-\/>role != OSMO\_SS7\_ASP\_ROLE\_IPSP) \{              \(\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, \_xafp-\/>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})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{                                                            \(\backslash\)}
\DoxyCodeLine{                struct xua\_asp\_fsm\_priv *\_xafp = fi-\/>priv;              \(\backslash\)}
\DoxyCodeLine{                if (\_xafp-\/>role != OSMO\_SS7\_ASP\_ROLE\_SG \&\&          \(\backslash\)}
\DoxyCodeLine{                    \_xafp-\/>role != OSMO\_SS7\_ASP\_ROLE\_IPSP) \{              \(\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, \_xafp-\/>role));\(\backslash\)}
\DoxyCodeLine{                        return;                                         \(\backslash\)}
\DoxyCodeLine{                \}                                                       \(\backslash\)}
\DoxyCodeLine{        \} \textcolor{keywordflow}{while}(0)}

\end{DoxyCode}
\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))}

\mbox{\label{xua__asp__fsm_8c_a3a33f192c03bfbec4ea3e32d1549d10d}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!XUA\_T\_ACK\_SEC@{XUA\_T\_ACK\_SEC}}
\index{XUA\_T\_ACK\_SEC@{XUA\_T\_ACK\_SEC}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{XUA\_T\_ACK\_SEC}
{\footnotesize\ttfamily \#define XUA\+\_\+\+T\+\_\+\+ACK\+\_\+\+SEC~2}



\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_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_ab8787dfdfd8f5e677def561608ac739d}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!determine\_traf\_mode@{determine\_traf\_mode}}
\index{determine\_traf\_mode@{determine\_traf\_mode}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{determine\_traf\_mode()}
{\footnotesize\ttfamily static int determine\+\_\+traf\+\_\+mode (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+vty}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}.



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

\mbox{\label{xua__asp__fsm_8c_a97a8823eba209caf2b123b82f0e5b85e}} 
\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 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}.



Referenced by \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+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{ osmo\+\_\+ss7\+\_\+as\+::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{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+DOWN}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::pong\+\_\+timer}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::role}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \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{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\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{ 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{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::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_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{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_a203a0afaa7c406b38c3ee52ca27bbcc2}} 
\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 struct osmo\+\_\+fsm\+\_\+inst $\ast$ ipa\+\_\+asp\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role}}]{role,  }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Start a new ASP finite state machine for given ASP. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process for which to start FSM \\
\hline
\mbox{\texttt{ in}}  & {\em role} & Role (ASP, SG, IPSP) of this FSM \\
\hline
\mbox{\texttt{ in}}  & {\em log\+\_\+level} & Logging Level for ASP FSM logging \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
FSM instance on success; NULL on error 
\end{DoxyReturn}


References \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{ ipa\+\_\+asp\+\_\+fsm}, \textbf{ ipa\+\_\+find\+\_\+as\+\_\+for\+\_\+asp()}, \textbf{ ipa\+\_\+pong\+\_\+timer\+\_\+cb()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::pong\+\_\+timer}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::role}, 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\+\_\+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\+\_\+asp\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+disconnect()}, and \textbf{ T\+\_\+\+WAIT\+\_\+\+ID\+\_\+\+ACK}.

\mbox{\label{xua__asp__fsm_8c_a493826453c5aae6b51e6d4ceda8c93bb}} 
\index{xua\_asp\_fsm.c@{xua\_asp\_fsm.c}!ipa\_pong\_timer\_cb@{ipa\_pong\_timer\_cb}}
\index{ipa\_pong\_timer\_cb@{ipa\_pong\_timer\_cb}!xua\_asp\_fsm.c@{xua\_asp\_fsm.c}}
\doxysubsubsection{ipa\_pong\_timer\_cb()}
{\footnotesize\ttfamily static void ipa\+\_\+pong\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



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



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

\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\+::asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id\+\_\+present}, \textbf{ determine\+\_\+traf\+\_\+mode()}, \textbf{ xua\+\_\+msg\+::hdr}, \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{ 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()}, and \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb()}.

\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\+::out\+\_\+event}, \textbf{ peer\+\_\+send()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb()}, and \textbf{ XUA\+\_\+\+T\+\_\+\+ACK\+\_\+\+SEC}.



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()}, 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\+::timer}, \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\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ M3\+UA\+\_\+\+ERR\+\_\+\+UNEXPECTED\+\_\+\+MSG}, \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{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, 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\+::t\+\_\+ack}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}.

\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\+::asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id\+\_\+present}, \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack()}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::lm}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()}, \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple()}, \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\+\_\+\+ACTIVE\+\_\+\+REQ}, \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{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+IND}.

\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{ osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack()}, \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ LOGPAS}, \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{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+rctx()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}, \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{ 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\+\_\+\+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()}, and \textbf{ xua\+\_\+msg\+\_\+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{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\mbox{\label{xua__asp__fsm_8c_a2cfe3f3449787f8bd55184a2012126bb}} 
\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 struct osmo\+\_\+fsm\+\_\+inst $\ast$ xua\+\_\+asp\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role}}]{role,  }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})}



Start a new ASP finite stae machine for given ASP. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process for which to start FSM \\
\hline
\mbox{\texttt{ in}}  & {\em role} & Role (ASP, SG, IPSP) of this FSM \\
\hline
\mbox{\texttt{ in}}  & {\em log\+\_\+level} & Logging Level for ASP FSM logging \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
FSM instance on success; NULL on error 
\end{DoxyReturn}


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



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+restart()}.

\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_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{ osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::context}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key}, 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{ data}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event}, \textbf{ peer\+\_\+send()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer}, and \textbf{ XUA\+\_\+\+T\+\_\+\+ACK\+\_\+\+SEC}.



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

\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{ osmo\+\_\+xlm\+\_\+prim\+::oph}, and \textbf{ XUA\+\_\+\+SAP\+\_\+\+LM}.



Referenced by \textbf{ handle\+\_\+rkey\+\_\+dereg\+\_\+resp()}, \textbf{ handle\+\_\+rkey\+\_\+reg\+\_\+resp()}, \textbf{ lm\+\_\+timer\+\_\+cb()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+err()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+ntfy()}, 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{\}}

\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]}}

