\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 \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`\"{}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]}}