\doxysection{src/xua\+\_\+as\+\_\+fsm.c File Reference}
\label{xua__as__fsm_8c}\index{src/xua\_as\_fsm.c@{src/xua\_as\_fsm.c}}
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+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/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 $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline
{\ttfamily \#include $<$sys/types.\+h$>$}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+as.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+asp.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+combined\+\_\+linkset.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+route.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+route\+\_\+table.\+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\+\_\+as\+\_\+fsm\+\_\+priv}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ S}(x)~(1 $<$$<$ (x))
\item 
\#define \textbf{ MSEC\+\_\+\+TO\+\_\+\+S\+\_\+\+US}(x)~(x/1000), ((x\%1000)$\ast$10)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static struct msgb $\ast$ \textbf{ encode\+\_\+notify} (const struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static int \textbf{ fill\+\_\+notify\+\_\+route\+\_\+ctx} (const struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static void \textbf{ tx\+\_\+notify} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static void \textbf{ as\+\_\+tx\+\_\+duna\+\_\+during\+\_\+asp\+\_\+act} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\item 
static int \textbf{ as\+\_\+notify\+\_\+all\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static struct msgb $\ast$ \textbf{ xua\+\_\+as\+\_\+encode\+\_\+msg} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
int \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
int \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
static void \textbf{ fill\+\_\+notify\+\_\+statchg\+\_\+pars} (const struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static bool \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp\+\_\+cmp)
\item 
static bool \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp\+\_\+cmp)
\item 
static void \textbf{ notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp\+\_\+cmp)
\item 
static void \textbf{ t\+\_\+r\+\_\+callback} (void $\ast$\+\_\+fi)
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+down} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ as\+\_\+snm\+\_\+pc\+\_\+unavailable} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static void \textbf{ as\+\_\+snm\+\_\+pc\+\_\+available} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+inactive} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+cleanup} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum osmo\+\_\+fsm\+\_\+term\+\_\+cause cause)
\item 
struct osmo\+\_\+fsm\+\_\+inst $\ast$ \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, int log\+\_\+level)
\begin{DoxyCompactList}\small\item\em Start an AS FSM for a given Application Server. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct value\+\_\+string \textbf{ xua\+\_\+as\+\_\+event\+\_\+names} [$\,$]
\item 
static const struct osmo\+\_\+fsm\+\_\+state \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+states} [$\,$]
\item 
struct osmo\+\_\+fsm \textbf{ xua\+\_\+as\+\_\+fsm}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{xua__as__fsm_8c_a5f423b301845bef33386d5f889e279ba}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!MSEC\_TO\_S\_US@{MSEC\_TO\_S\_US}}
\index{MSEC\_TO\_S\_US@{MSEC\_TO\_S\_US}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{MSEC\_TO\_S\_US}
{\footnotesize\ttfamily \#define MSEC\+\_\+\+TO\+\_\+\+S\+\_\+\+US(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~(x/1000), ((x\%1000)$\ast$10)}

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



\doxysubsection{Function Documentation}
\mbox{\label{xua__as__fsm_8c_a97104403abbba1543c90e718dd59bd69}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!as\_notify\_all\_asp@{as\_notify\_all\_asp}}
\index{as\_notify\_all\_asp@{as\_notify\_all\_asp}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{as\_notify\_all\_asp()}
{\footnotesize\ttfamily static int as\+\_\+notify\+\_\+all\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ encode\+\_\+notify()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ fill\+\_\+notify\+\_\+route\+\_\+ctx()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::info\+\_\+string}, \textbf{ LOGPASP}, \textbf{ m3ua\+\_\+ntfy\+\_\+info\+\_\+name()}, \textbf{ m3ua\+\_\+ntfy\+\_\+type\+\_\+names}, \textbf{ NOTIFY\+\_\+\+PAR\+\_\+\+P\+\_\+\+ASP\+\_\+\+ID}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+PROT\+\_\+\+IPA}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::presence}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::proto}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+info}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}.



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

\mbox{\label{xua__as__fsm_8c_a0e379adc18c9e47f354cbc4d27d218f2}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!as\_snm\_pc\_available@{as\_snm\_pc\_available}}
\index{as\_snm\_pc\_available@{as\_snm\_pc\_available}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{as\_snm\_pc\_available()}
{\footnotesize\ttfamily static void as\+\_\+snm\+\_\+pc\+\_\+available (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::addr}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::as}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::clset}, \textbf{ osmo\+\_\+ss7\+\_\+route\+\_\+table\+::combined\+\_\+linksets}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::dest}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::list}, \textbf{ LOGPAS}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+local()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+ss7\+\_\+combined\+\_\+linkset\+::routes}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::rtable\+\_\+system}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::sccp\+\_\+address\+\_\+book}, \textbf{ ss7\+\_\+route\+\_\+is\+\_\+summary()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+dpc\+\_\+is\+\_\+accessible()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+dpc\+\_\+is\+\_\+accessible\+\_\+skip\+\_\+as()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+dpc\+\_\+is\+\_\+accessible\+\_\+via\+\_\+as()}, and \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available()}.



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

\mbox{\label{xua__as__fsm_8c_a2a152119a911c4c735f07e33c3e4691c}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!as\_snm\_pc\_unavailable@{as\_snm\_pc\_unavailable}}
\index{as\_snm\_pc\_unavailable@{as\_snm\_pc\_unavailable}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{as\_snm\_pc\_unavailable()}
{\footnotesize\ttfamily static void as\+\_\+snm\+\_\+pc\+\_\+unavailable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::addr}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::as}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::clset}, \textbf{ osmo\+\_\+ss7\+\_\+route\+\_\+table\+::combined\+\_\+linksets}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::dest}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+entry\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::list}, \textbf{ LOGPAS}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+local()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print()}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ROUTE\+\_\+\+STATUS\+\_\+\+UNAVAILABLE}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+ss7\+\_\+combined\+\_\+linkset\+::routes}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::rtable\+\_\+system}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::sccp\+\_\+address\+\_\+book}, \textbf{ ss7\+\_\+route\+\_\+is\+\_\+summary()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+dpc\+\_\+is\+\_\+accessible()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+dpc\+\_\+is\+\_\+accessible\+\_\+skip\+\_\+as()}, \textbf{ osmo\+\_\+ss7\+\_\+route\+::status}, and \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available()}.



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

\mbox{\label{xua__as__fsm_8c_a44728dd23629dcac536eac448f47888d}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!as\_tx\_duna\_during\_asp\_act@{as\_tx\_duna\_during\_asp\_act}}
\index{as\_tx\_duna\_during\_asp\_act@{as\_tx\_duna\_during\_asp\_act}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{as\_tx\_duna\_during\_asp\_act()}
{\footnotesize\ttfamily static void as\+\_\+tx\+\_\+duna\+\_\+during\+\_\+asp\+\_\+act (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\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\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+route\+\_\+table\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::rtable\+\_\+system}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+dpc\+\_\+is\+\_\+accessible\+\_\+skip\+\_\+as()}, and \textbf{ xua\+\_\+tx\+\_\+snm\+\_\+available()}.



Referenced by \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+inactive()}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending()}.

\mbox{\label{xua__as__fsm_8c_a54316903eb0af8cb93fb8f7d1e380d6b}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!check\_any\_other\_asp\_in\_active@{check\_any\_other\_asp\_in\_active}}
\index{check\_any\_other\_asp\_in\_active@{check\_any\_other\_asp\_in\_active}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{check\_any\_other\_asp\_in\_active()}
{\footnotesize\ttfamily static bool check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp\+\_\+cmp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+ACTIVE}.



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

\mbox{\label{xua__as__fsm_8c_a07a8376c2bacba0552b59ac979960412}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!check\_any\_other\_asp\_not\_down@{check\_any\_other\_asp\_not\_down}}
\index{check\_any\_other\_asp\_not\_down@{check\_any\_other\_asp\_not\_down}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{check\_any\_other\_asp\_not\_down()}
{\footnotesize\ttfamily static bool check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp\+\_\+cmp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+DOWN}.



Referenced by \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+inactive()}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending()}.

\mbox{\label{xua__as__fsm_8c_a013ec4a744c97a2961173d3bb4df503f}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!encode\_notify@{encode\_notify}}
\index{encode\_notify@{encode\_notify}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{encode\_notify()}
{\footnotesize\ttfamily static struct msgb $\ast$ encode\+\_\+notify (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ m3ua\+\_\+encode\+\_\+notify()}, \textbf{ M3\+UA\+\_\+\+VERSION}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+to\+\_\+msg()}.



Referenced by \textbf{ as\+\_\+notify\+\_\+all\+\_\+asp()}, \textbf{ notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive()}, and \textbf{ tx\+\_\+notify()}.

\mbox{\label{xua__as__fsm_8c_abe289ae47fc0d024841cc32a96968456}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!fill\_notify\_route\_ctx@{fill\_notify\_route\_ctx}}
\index{fill\_notify\_route\_ctx@{fill\_notify\_route\_ctx}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{fill\_notify\_route\_ctx()}
{\footnotesize\ttfamily static int fill\+\_\+notify\+\_\+route\+\_\+ctx (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ NOTIFY\+\_\+\+PAR\+\_\+\+P\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ NULL}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::presence}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::route\+\_\+ctx}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::route\+\_\+ctx\+\_\+count}, and \textbf{ ss7\+\_\+asp\+\_\+get\+\_\+all\+\_\+rctx()}.



Referenced by \textbf{ as\+\_\+notify\+\_\+all\+\_\+asp()}, and \textbf{ tx\+\_\+notify()}.

\mbox{\label{xua__as__fsm_8c_ac44904e458152a6662d4c0a654bf9a0f}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!fill\_notify\_statchg\_pars@{fill\_notify\_statchg\_pars}}
\index{fill\_notify\_statchg\_pars@{fill\_notify\_statchg\_pars}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{fill\_notify\_statchg\_pars()}
{\footnotesize\ttfamily static void fill\+\_\+notify\+\_\+statchg\+\_\+pars (\begin{DoxyParamCaption}\item[{const struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+I\+\_\+\+AS\+\_\+\+ACT}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+I\+\_\+\+AS\+\_\+\+INACT}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+I\+\_\+\+AS\+\_\+\+PEND}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+T\+\_\+\+STATCHG}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+info}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+ACTIVE}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+DOWN}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+INACTIVE}, and \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+PENDING}.



Referenced by \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+inactive()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+onenter()}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending()}.

\mbox{\label{xua__as__fsm_8c_a5b8baeaee767042fc6e5248032950355}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!notify\_any\_other\_active\_asp\_as\_inactive@{notify\_any\_other\_active\_asp\_as\_inactive}}
\index{notify\_any\_other\_active\_asp\_as\_inactive@{notify\_any\_other\_active\_asp\_as\_inactive}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{notify\_any\_other\_active\_asp\_as\_inactive()}
{\footnotesize\ttfamily static void notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp\+\_\+cmp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ encode\+\_\+notify()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+I\+\_\+\+OT\+\_\+\+ALT\+\_\+\+ASP\+\_\+\+ACT}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+T\+\_\+\+OTHER}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+active()}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+PROT\+\_\+\+IPA}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::proto}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::remote\+\_\+asp\+\_\+id\+\_\+present}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+S\+\_\+\+INACTIVE}.



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

\mbox{\label{xua__as__fsm_8c_adf70a84b85d00e2b36a7e12adcffa235}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!t\_r\_callback@{t\_r\_callback}}
\index{t\_r\_callback@{t\_r\_callback}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{t\_r\_callback()}
{\footnotesize\ttfamily static void t\+\_\+r\+\_\+callback (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ NULL}, and \textbf{ XUA\+\_\+\+AS\+\_\+\+E\+\_\+\+RECOVERY\+\_\+\+EXPD}.



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

\mbox{\label{xua__as__fsm_8c_a0c1a1151a64c42db832bf4090ccac721}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!tx\_notify@{tx\_notify}}
\index{tx\_notify@{tx\_notify}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{tx\_notify()}
{\footnotesize\ttfamily static void tx\+\_\+notify (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ encode\+\_\+notify()}, \textbf{ fill\+\_\+notify\+\_\+route\+\_\+ctx()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::info\+\_\+string}, \textbf{ LOGPASP}, \textbf{ m3ua\+\_\+ntfy\+\_\+info\+\_\+name()}, \textbf{ m3ua\+\_\+ntfy\+\_\+type\+\_\+names}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+info}, and \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type}.



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

\mbox{\label{xua__as__fsm_8c_a38582ce8b80e715908b9d446e7fe8f24}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_encode\_msg@{xua\_as\_encode\_msg}}
\index{xua\_as\_encode\_msg@{xua\_as\_encode\_msg}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_encode\_msg()}
{\footnotesize\ttfamily static struct msgb $\ast$ xua\+\_\+as\+\_\+encode\+\_\+msg (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ ipa\+\_\+to\+\_\+msg()}, \textbf{ m3ua\+\_\+to\+\_\+msg()}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+PROT\+\_\+\+IPA}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+PROT\+\_\+\+M3\+UA}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::proto}.



Referenced by \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg()}, and \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast()}.

\mbox{\label{xua__as__fsm_8c_ab3c12f9923a54ef33c0f44c0c28f7a7c}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_fsm\_active@{xua\_as\_fsm\_active}}
\index{xua\_as\_fsm\_active@{xua\_as\_fsm\_active}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_fsm\_active()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+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{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active()}, \textbf{ data}, \textbf{ fill\+\_\+notify\+\_\+statchg\+\_\+pars()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ MSEC\+\_\+\+TO\+\_\+\+S\+\_\+\+US}, \textbf{ notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive()}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::recovery\+\_\+timeout\+\_\+msec}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r}, \textbf{ tx\+\_\+notify()}, \textbf{ XUA\+\_\+\+AS\+\_\+\+E\+\_\+\+TRANSFER\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+PENDING}, \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg()}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+IND}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\mbox{\label{xua__as__fsm_8c_a1e9a4dc4b1fb0e295c0063ff3d970fe5}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_fsm\_cleanup@{xua\_as\_fsm\_cleanup}}
\index{xua\_as\_fsm\_cleanup@{xua\_as\_fsm\_cleanup}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_fsm\_cleanup()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+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\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r}.

\mbox{\label{xua__as__fsm_8c_a6d1cf31b1ae7406db45fa44cabe7c848}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_fsm\_down@{xua\_as\_fsm\_down}}
\index{xua\_as\_fsm\_down@{xua\_as\_fsm\_down}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_fsm\_down()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+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\+\_\+\+AS\+\_\+\+S\+\_\+\+INACTIVE}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

\mbox{\label{xua__as__fsm_8c_ab8a4beaf8bffacb63e6a06ed6aa3e578}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_fsm\_inactive@{xua\_as\_fsm\_inactive}}
\index{xua\_as\_fsm\_inactive@{xua\_as\_fsm\_inactive}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_fsm\_inactive()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+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{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as}, \textbf{ as\+\_\+tx\+\_\+duna\+\_\+during\+\_\+asp\+\_\+act()}, \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down()}, \textbf{ data}, \textbf{ fill\+\_\+notify\+\_\+statchg\+\_\+pars()}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ tx\+\_\+notify()}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+ACTIVE}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+DOWN}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+IND}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+IND}, and \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}.

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



References \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as}, \textbf{ as\+\_\+notify\+\_\+all\+\_\+asp()}, \textbf{ as\+\_\+snm\+\_\+pc\+\_\+available()}, \textbf{ as\+\_\+snm\+\_\+pc\+\_\+unavailable()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ fill\+\_\+notify\+\_\+statchg\+\_\+pars()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+peer}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+vty}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key}, \textbf{ ss7\+\_\+as\+\_\+get\+\_\+local\+\_\+role()}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+ACTIVE}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+DOWN}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+INACTIVE}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+PENDING}, and \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available()}.

\mbox{\label{xua__as__fsm_8c_a20344c0f2735db91f2aca9522e9f0762}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_fsm\_pending@{xua\_as\_fsm\_pending}}
\index{xua\_as\_fsm\_pending@{xua\_as\_fsm\_pending}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_fsm\_pending()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+pending (\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\+\_\+as\+\_\+fsm\+\_\+priv\+::as}, \textbf{ as\+\_\+tx\+\_\+duna\+\_\+during\+\_\+asp\+\_\+act()}, \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down()}, \textbf{ data}, \textbf{ xua\+\_\+msg\+::entry}, \textbf{ fill\+\_\+notify\+\_\+statchg\+\_\+pars()}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::queued\+\_\+xua\+\_\+msgs}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r}, \textbf{ tx\+\_\+notify()}, \textbf{ XUA\+\_\+\+AS\+\_\+\+E\+\_\+\+RECOVERY\+\_\+\+EXPD}, \textbf{ XUA\+\_\+\+AS\+\_\+\+E\+\_\+\+TRANSFER\+\_\+\+REQ}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+ACTIVE}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+DOWN}, \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+INACTIVE}, \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg()}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+IND}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+DOWN\+\_\+\+IND}, \textbf{ XUA\+\_\+\+ASPAS\+\_\+\+ASP\+\_\+\+INACTIVE\+\_\+\+IND}, and \textbf{ xua\+\_\+msg\+\_\+free()}.

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



Start an AS FSM for a given Application Server. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server for which to start the AS FSM \\
\hline
\mbox{\texttt{ in}}  & {\em log\+\_\+level} & Logging level for logging of this FSM \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
FSM instance in case of success; NULL in case of error 
\end{DoxyReturn}


References \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ NULL}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::queued\+\_\+xua\+\_\+msgs}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r}, \textbf{ t\+\_\+r\+\_\+callback()}, and \textbf{ xua\+\_\+as\+\_\+fsm}.



Referenced by \textbf{ ss7\+\_\+as\+\_\+alloc()}.

\mbox{\label{xua__as__fsm_8c_a168232152dc1bf36e3b8b071ef1a68e9}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_transmit\_msg@{xua\_as\_transmit\_msg}}
\index{xua\_as\_transmit\_msg@{xua\_as\_transmit\_msg}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_transmit\_msg()}
{\footnotesize\ttfamily int xua\+\_\+as\+\_\+transmit\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})}



References \textbf{ \+\_\+\+NUM\+\_\+\+OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+TMOD}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+LOADSHARE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+ROUNDROBIN}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp()}, \textbf{ xua\+\_\+as\+\_\+encode\+\_\+msg()}, \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ ipa\+\_\+tx\+\_\+xua\+\_\+as()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+active()}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending()}.

\mbox{\label{xua__as__fsm_8c_a65130c098aa2e53770f8790c9d6f751a}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_transmit\_msg\_broadcast@{xua\_as\_transmit\_msg\_broadcast}}
\index{xua\_as\_transmit\_msg\_broadcast@{xua\_as\_transmit\_msg\_broadcast}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_transmit\_msg\_broadcast()}
{\footnotesize\ttfamily int xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+active()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ xua\+\_\+as\+\_\+encode\+\_\+msg()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg()}.



\doxysubsection{Variable Documentation}
\mbox{\label{xua__as__fsm_8c_a307e97238e981dbc91bf5f16aa4398c5}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_event\_names@{xua\_as\_event\_names}}
\index{xua\_as\_event\_names@{xua\_as\_event\_names}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_event\_names}
{\footnotesize\ttfamily const struct value\+\_\+string xua\+\_\+as\+\_\+event\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ XUA\_ASPAS\_ASP\_INACTIVE\_IND,         \textcolor{stringliteral}{"{}ASPAS-\/ASP\_INACTIVE.ind"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASPAS\_ASP\_DOWN\_IND, \textcolor{stringliteral}{"{}ASPAS-\/ASP\_DOWN.ind"{}} \},}
\DoxyCodeLine{        \{ XUA\_ASPAS\_ASP\_ACTIVE\_IND,     \textcolor{stringliteral}{"{}ASPAS-\/ASP\_ACTIVE.ind"{}} \},}
\DoxyCodeLine{        \{ XUA\_AS\_E\_RECOVERY\_EXPD, \textcolor{stringliteral}{"{}AS-\/T\_REC\_EXPD.ind"{}} \},}
\DoxyCodeLine{        \{ XUA\_AS\_E\_TRANSFER\_REQ,   \textcolor{stringliteral}{"{}AS-\/TRANSFER.req"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{xua__as__fsm_8c_a4dda03cd65066f53f8b4b31af8fb24b6}} 
\index{xua\_as\_fsm.c@{xua\_as\_fsm.c}!xua\_as\_fsm@{xua\_as\_fsm}}
\index{xua\_as\_fsm@{xua\_as\_fsm}!xua\_as\_fsm.c@{xua\_as\_fsm.c}}
\doxysubsubsection{xua\_as\_fsm}
{\footnotesize\ttfamily struct osmo\+\_\+fsm xua\+\_\+as\+\_\+fsm}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}XUA\_AS"{}},}
\DoxyCodeLine{        .states = xua\_as\_fsm\_states,}
\DoxyCodeLine{        .num\_states = ARRAY\_SIZE(xua\_as\_fsm\_states),}
\DoxyCodeLine{        .log\_subsys = DLSS7,}
\DoxyCodeLine{        .event\_names = xua\_as\_event\_names,}
\DoxyCodeLine{        .cleanup = xua\_as\_fsm\_cleanup,}
\DoxyCodeLine{\}}

\end{DoxyCode}


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

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

