\doxysection{src/xua\+\_\+default\+\_\+lm\+\_\+fsm.c File Reference}
\label{xua__default__lm__fsm_8c}\index{src/xua\_default\_lm\_fsm.c@{src/xua\_default\_lm\_fsm.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+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 $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+asp\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+as.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+asp.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+xua\+\_\+srv.\+h\char`\"{}}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ S}(x)~(1 $<$$<$ (x))
\item 
\#define \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}(fi,  NEXT\+\_\+\+STATE)
\item 
\#define \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi,  event,  cond)
\item 
\#define \textbf{ ENSURE\+\_\+\+IPSP}(fi,  event)~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})
\item 
\#define \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}(fi,  event)~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP} $\vert$$\vert$ \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})
\item 
\#define \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}(fi,  event)~ \textbf{ ENSURE\+\_\+\+ROLE\+\_\+\+COND}(fi, event, \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG} $\vert$$\vert$ \+\_\+role == \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP})
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ lm\+\_\+state} \{ \newline
\textbf{ S\+\_\+\+IDLE}
, \textbf{ S\+\_\+\+WAIT\+\_\+\+ASP\+\_\+\+UP}
, \textbf{ S\+\_\+\+WAIT\+\_\+\+NOTIFY}
, \textbf{ S\+\_\+\+RKM\+\_\+\+REG}
, \newline
\textbf{ S\+\_\+\+ACTIVE}
 \}
\item 
enum \textbf{ lm\+\_\+event} \{ \newline
\textbf{ LM\+\_\+\+E\+\_\+\+SCTP\+\_\+\+EST\+\_\+\+IND}
, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+CONF}
, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+IND}
, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+ACT\+\_\+\+IND}
, \newline
\textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+INACT\+\_\+\+IND}
, \textbf{ LM\+\_\+\+E\+\_\+\+NOTIFY\+\_\+\+IND}
, \textbf{ LM\+\_\+\+E\+\_\+\+AS\+\_\+\+INACTIVE\+\_\+\+IND}
, \textbf{ LM\+\_\+\+E\+\_\+\+AS\+\_\+\+ACTIVE\+\_\+\+IND}
, \newline
\textbf{ LM\+\_\+\+E\+\_\+\+AS\+\_\+\+STATUS\+\_\+\+IND}
, \textbf{ LM\+\_\+\+E\+\_\+\+RKM\+\_\+\+REG\+\_\+\+CONF}
, \textbf{ LM\+\_\+\+E\+\_\+\+SCTP\+\_\+\+DISC\+\_\+\+IND}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\textbf{ osmo\+\_\+static\+\_\+assert} (ARRAY\+\_\+\+SIZE(\textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+defaults})==(\textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+TIMERS\+\_\+\+LEN}) \&\&ARRAY\+\_\+\+SIZE(\textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+names})==(\textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+TIMERS\+\_\+\+LEN}), assert\+\_\+ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+count)
\item 
static int \textbf{ handle\+\_\+reg\+\_\+conf} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t l\+\_\+rk\+\_\+id, uint32\+\_\+t rctx)
\item 
static void \textbf{ reg\+\_\+req\+\_\+all\+\_\+assoc\+\_\+as} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\item 
static void \textbf{ lm\+\_\+idle} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ lm\+\_\+wait\+\_\+asp\+\_\+up} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ lm\+\_\+wait\+\_\+notify} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ lm\+\_\+rkm\+\_\+reg} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ lm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ lm\+\_\+allstate} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static int \textbf{ lm\+\_\+timer\+\_\+cb} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static int \textbf{ default\+\_\+lm\+\_\+prim\+\_\+cb} (struct osmo\+\_\+prim\+\_\+hdr $\ast$oph, void $\ast$\+\_\+asp)
\item 
void \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+free} (struct \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager} $\ast$lm)
\item 
struct \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager} $\ast$ \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+alloc} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct value\+\_\+string \textbf{ lm\+\_\+event\+\_\+names} [$\,$]
\item 
const struct osmo\+\_\+tdef \textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+defaults} [\textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+TIMERS\+\_\+\+LEN}]
\item 
const struct value\+\_\+string \textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+names} [$\,$]
\item 
static const struct osmo\+\_\+tdef\+\_\+state\+\_\+timeout \textbf{ lm\+\_\+fsm\+\_\+timeouts} [32]
\item 
static const struct osmo\+\_\+fsm\+\_\+state \textbf{ lm\+\_\+states} [$\,$]
\item 
static const struct osmo\+\_\+prim\+\_\+event\+\_\+map \textbf{ lm\+\_\+event\+\_\+map} [$\,$]
\item 
struct osmo\+\_\+fsm \textbf{ xua\+\_\+default\+\_\+lm\+\_\+fsm}
\end{DoxyCompactItemize}


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

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

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

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

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

\mbox{\label{xua__default__lm__fsm_8c_a1a0f40e6045770a57d26af0292def642}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_fsm\_state\_chg@{lm\_fsm\_state\_chg}}
\index{lm\_fsm\_state\_chg@{lm\_fsm\_state\_chg}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_fsm\_state\_chg}
{\footnotesize\ttfamily \#define lm\+\_\+fsm\+\_\+state\+\_\+chg(\begin{DoxyParamCaption}\item[{}]{fi,  }\item[{}]{NEXT\+\_\+\+STATE }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        osmo\_tdef\_fsm\_inst\_state\_chg(fi, NEXT\_STATE, \(\backslash\)}
\DoxyCodeLine{                                     lm\_fsm\_timeouts, \(\backslash\)}
\DoxyCodeLine{                                    ((\textcolor{keyword}{struct} xua\_layer\_manager\_default\_priv *)(fi-\/>priv))-\/>asp-\/>cfg.T\_defs\_lm, \(\backslash\)}
\DoxyCodeLine{                                     -\/1)}

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



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_event@{lm\_event}}
\index{lm\_event@{lm\_event}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_event}
{\footnotesize\ttfamily enum \textbf{ lm\+\_\+event}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_SCTP\_EST\_IND@{LM\_E\_SCTP\_EST\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_SCTP\_EST\_IND@{LM\_E\_SCTP\_EST\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487aca8485a5cf00262252dd2e37cbd4da9e}} 
LM\+\_\+\+E\+\_\+\+SCTP\+\_\+\+EST\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_ASP\_UP\_CONF@{LM\_E\_ASP\_UP\_CONF}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_ASP\_UP\_CONF@{LM\_E\_ASP\_UP\_CONF}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487acf09c39a066012d2f91c588bb5ab4ec5}} 
LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+CONF&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_ASP\_UP\_IND@{LM\_E\_ASP\_UP\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_ASP\_UP\_IND@{LM\_E\_ASP\_UP\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a1cd3d0753eabb01178a5e852ccf856a1}} 
LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_ASP\_ACT\_IND@{LM\_E\_ASP\_ACT\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_ASP\_ACT\_IND@{LM\_E\_ASP\_ACT\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487af3815f81df3a6baf6f738d85ca30cff9}} 
LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+ACT\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_ASP\_INACT\_IND@{LM\_E\_ASP\_INACT\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_ASP\_INACT\_IND@{LM\_E\_ASP\_INACT\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a697db04cddcb6742d6c8f50334e6c454}} 
LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+INACT\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_NOTIFY\_IND@{LM\_E\_NOTIFY\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_NOTIFY\_IND@{LM\_E\_NOTIFY\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a4af6794192a2e0421afc38db3958c0cf}} 
LM\+\_\+\+E\+\_\+\+NOTIFY\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_AS\_INACTIVE\_IND@{LM\_E\_AS\_INACTIVE\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_AS\_INACTIVE\_IND@{LM\_E\_AS\_INACTIVE\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a019205de8d24118e33ea6d97b8862a4e}} 
LM\+\_\+\+E\+\_\+\+AS\+\_\+\+INACTIVE\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_AS\_ACTIVE\_IND@{LM\_E\_AS\_ACTIVE\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_AS\_ACTIVE\_IND@{LM\_E\_AS\_ACTIVE\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487ac8f3fe6992409ed2ff1059a52b2df98f}} 
LM\+\_\+\+E\+\_\+\+AS\+\_\+\+ACTIVE\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_AS\_STATUS\_IND@{LM\_E\_AS\_STATUS\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_AS\_STATUS\_IND@{LM\_E\_AS\_STATUS\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a5a65105156a8f7b33e68e1845307761a}} 
LM\+\_\+\+E\+\_\+\+AS\+\_\+\+STATUS\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_RKM\_REG\_CONF@{LM\_E\_RKM\_REG\_CONF}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_RKM\_REG\_CONF@{LM\_E\_RKM\_REG\_CONF}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a97a1effa823524fa3aed22efb3dc9e82}} 
LM\+\_\+\+E\+\_\+\+RKM\+\_\+\+REG\+\_\+\+CONF&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LM\_E\_SCTP\_DISC\_IND@{LM\_E\_SCTP\_DISC\_IND}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!LM\_E\_SCTP\_DISC\_IND@{LM\_E\_SCTP\_DISC\_IND}}}\mbox{\label{xua__default__lm__fsm_8c_acdbd3ea7ab611b8d2f6ae7b9effec487a7198a4dd65c936f5e759185dd32b2b6a}} 
LM\+\_\+\+E\+\_\+\+SCTP\+\_\+\+DISC\+\_\+\+IND&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{xua__default__lm__fsm_8c_abd45524893fe80bbf126182e53674795}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_state@{lm\_state}}
\index{lm\_state@{lm\_state}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_state}
{\footnotesize\ttfamily enum \textbf{ lm\+\_\+state}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_IDLE@{S\_IDLE}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!S\_IDLE@{S\_IDLE}}}\mbox{\label{xua__default__lm__fsm_8c_abd45524893fe80bbf126182e53674795a86e3fc319fdf083afe88308950abab44}} 
S\+\_\+\+IDLE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_WAIT\_ASP\_UP@{S\_WAIT\_ASP\_UP}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!S\_WAIT\_ASP\_UP@{S\_WAIT\_ASP\_UP}}}\mbox{\label{xua__default__lm__fsm_8c_abd45524893fe80bbf126182e53674795a3a58465c97398f25c91014bdf6679380}} 
S\+\_\+\+WAIT\+\_\+\+ASP\+\_\+\+UP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_WAIT\_NOTIFY@{S\_WAIT\_NOTIFY}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!S\_WAIT\_NOTIFY@{S\_WAIT\_NOTIFY}}}\mbox{\label{xua__default__lm__fsm_8c_abd45524893fe80bbf126182e53674795a8609cdd264328299ba619e0c10d88600}} 
S\+\_\+\+WAIT\+\_\+\+NOTIFY&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_RKM\_REG@{S\_RKM\_REG}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!S\_RKM\_REG@{S\_RKM\_REG}}}\mbox{\label{xua__default__lm__fsm_8c_abd45524893fe80bbf126182e53674795ac79e06fa211a2f5a09129ca9082de3f5}} 
S\+\_\+\+RKM\+\_\+\+REG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_ACTIVE@{S\_ACTIVE}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!S\_ACTIVE@{S\_ACTIVE}}}\mbox{\label{xua__default__lm__fsm_8c_abd45524893fe80bbf126182e53674795aced5990aa7e8f86cb70f6bde9b6c5314}} 
S\+\_\+\+ACTIVE&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{xua__default__lm__fsm_8c_ad618f521d9e0a42c7c237d5133145edf}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!default\_lm\_prim\_cb@{default\_lm\_prim\_cb}}
\index{default\_lm\_prim\_cb@{default\_lm\_prim\_cb}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{default\_lm\_prim\_cb()}
{\footnotesize\ttfamily static int default\+\_\+lm\+\_\+prim\+\_\+cb (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+prim\+\_\+hdr $\ast$}]{oph,  }\item[{void $\ast$}]{\+\_\+asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



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



Referenced by \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+alloc()}.

\mbox{\label{xua__default__lm__fsm_8c_a6c119bb8074d53fa355e57e8dd491ae1}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!handle\_reg\_conf@{handle\_reg\_conf}}
\index{handle\_reg\_conf@{handle\_reg\_conf}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{handle\_reg\_conf()}
{\footnotesize\ttfamily static int handle\+\_\+reg\+\_\+conf (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{l\+\_\+rk\+\_\+id,  }\item[{uint32\+\_\+t}]{rctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::context}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+l\+\_\+rk\+\_\+id()}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key}.



Referenced by \textbf{ lm\+\_\+rkm\+\_\+reg()}.

\mbox{\label{xua__default__lm__fsm_8c_a1205f9d457be0d11432ba4a9c5c3bece}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_active@{lm\_active}}
\index{lm\_active@{lm\_active}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_active()}
{\footnotesize\ttfamily static void lm\+\_\+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\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ LM\+\_\+\+E\+\_\+\+AS\+\_\+\+INACTIVE\+\_\+\+IND}, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+ACT\+\_\+\+IND}, \textbf{ LM\+\_\+\+E\+\_\+\+NOTIFY\+\_\+\+IND}, \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+I\+\_\+\+AS\+\_\+\+ACT}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+T\+\_\+\+STATCHG}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::notify}, \textbf{ NULL}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+NOTIFY}, \textbf{ S\+\_\+\+IDLE}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+info}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::u}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+REQ}.

\mbox{\label{xua__default__lm__fsm_8c_a20d50feab8e3eaa837d5df03c84e2c34}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_allstate@{lm\_allstate}}
\index{lm\_allstate@{lm\_allstate}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_allstate()}
{\footnotesize\ttfamily static void lm\+\_\+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{ LM\+\_\+\+E\+\_\+\+SCTP\+\_\+\+DISC\+\_\+\+IND}, \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}, and \textbf{ S\+\_\+\+IDLE}.

\mbox{\label{xua__default__lm__fsm_8c_a60dd2d52f2badc355ea435930a165b48}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_idle@{lm\_idle}}
\index{lm\_idle@{lm\_idle}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_idle()}
{\footnotesize\ttfamily static void lm\+\_\+idle (\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\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ LM\+\_\+\+E\+\_\+\+SCTP\+\_\+\+EST\+\_\+\+IND}, \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+ASP}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ S\+\_\+\+WAIT\+\_\+\+ASP\+\_\+\+UP}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+UP\+\_\+\+REQ}.

\mbox{\label{xua__default__lm__fsm_8c_a2090e10df8659ac3000aad5d36b60fcd}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_rkm\_reg@{lm\_rkm\_reg}}
\index{lm\_rkm\_reg@{lm\_rkm\_reg}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_rkm\_reg()}
{\footnotesize\ttfamily static void lm\+\_\+rkm\+\_\+reg (\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\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::context}, \textbf{ data}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ handle\+\_\+reg\+\_\+conf()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+rk\+\_\+reg\+::key}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::l\+\_\+rk\+\_\+id}, \textbf{ LM\+\_\+\+E\+\_\+\+RKM\+\_\+\+REG\+\_\+\+CONF}, \textbf{ M3\+UA\+\_\+\+RKM\+\_\+\+REG\+\_\+\+SUCCESS}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::rk\+\_\+reg}, \textbf{ S\+\_\+\+WAIT\+\_\+\+NOTIFY}, \textbf{ ss7\+\_\+asp\+\_\+disconnect\+\_\+stream()}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+T\+\_\+\+WAIT\+\_\+\+NOTIY\+\_\+\+RKM}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+rk\+\_\+reg\+::status}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::\+T\+\_\+defs\+\_\+lm}, and \textbf{ osmo\+\_\+xlm\+\_\+prim\+::u}.

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



References \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ LM\+\_\+\+E\+\_\+\+AS\+\_\+\+INACTIVE\+\_\+\+IND}, \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+QUIRK\+\_\+\+NO\+\_\+\+NOTIFY}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::quirks}, \textbf{ reg\+\_\+req\+\_\+all\+\_\+assoc\+\_\+as()}, \textbf{ S\+\_\+\+RKM\+\_\+\+REG}, \textbf{ ss7\+\_\+asp\+\_\+disconnect\+\_\+stream()}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+T\+\_\+\+WAIT\+\_\+\+ASP\+\_\+\+UP}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+T\+\_\+\+WAIT\+\_\+\+NOTIFY}, \textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+T\+\_\+\+WAIT\+\_\+\+NOTIY\+\_\+\+RKM}, and \textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+T\+\_\+\+WAIT\+\_\+\+RK\+\_\+\+REG\+\_\+\+RESP}.

\mbox{\label{xua__default__lm__fsm_8c_a6fabb7152bb688864bff87aaa3ec82dc}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_wait\_asp\_up@{lm\_wait\_asp\_up}}
\index{lm\_wait\_asp\_up@{lm\_wait\_asp\_up}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_wait\_asp\_up()}
{\footnotesize\ttfamily static void lm\+\_\+wait\+\_\+asp\+\_\+up (\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{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+CONF}, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+IND}, \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}, and \textbf{ S\+\_\+\+WAIT\+\_\+\+NOTIFY}.

\mbox{\label{xua__default__lm__fsm_8c_a387d93798384a435bebd88338f8306b9}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_wait\_notify@{lm\_wait\_notify}}
\index{lm\_wait\_notify@{lm\_wait\_notify}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_wait\_notify()}
{\footnotesize\ttfamily static void lm\+\_\+wait\+\_\+notify (\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\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ data}, \textbf{ ENSURE\+\_\+\+ASP\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ ENSURE\+\_\+\+SG\+\_\+\+OR\+\_\+\+IPSP}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ LM\+\_\+\+E\+\_\+\+AS\+\_\+\+INACTIVE\+\_\+\+IND}, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+ACT\+\_\+\+IND}, \textbf{ LM\+\_\+\+E\+\_\+\+ASP\+\_\+\+UP\+\_\+\+CONF}, \textbf{ LM\+\_\+\+E\+\_\+\+NOTIFY\+\_\+\+IND}, \textbf{ lm\+\_\+fsm\+\_\+state\+\_\+chg}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+I\+\_\+\+AS\+\_\+\+ACT}, \textbf{ M3\+UA\+\_\+\+NOTIFY\+\_\+\+T\+\_\+\+STATCHG}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::notify}, \textbf{ NULL}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+NOTIFY}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}, \textbf{ S\+\_\+\+ACTIVE}, \textbf{ ss7\+\_\+asp\+\_\+determine\+\_\+traf\+\_\+mode()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+info}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::u}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+M\+\_\+\+ASP\+\_\+\+ACTIVE\+\_\+\+REQ}.

\mbox{\label{xua__default__lm__fsm_8c_a9da1b9f1f79d9611e742421014440196}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!osmo\_static\_assert@{osmo\_static\_assert}}
\index{osmo\_static\_assert@{osmo\_static\_assert}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{osmo\_static\_assert()}
{\footnotesize\ttfamily osmo\+\_\+static\+\_\+assert (\begin{DoxyParamCaption}\item[{ARRAY\+\_\+\+SIZE(\textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+defaults})}]{ = {\ttfamily =(\textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+TIMERS\+\_\+\+LEN})~\&\&ARRAY\+\_\+SIZE(\textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+names})==(\textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+TIMERS\+\_\+\+LEN})},  }\item[{assert\+\_\+ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+count}]{ }\end{DoxyParamCaption})}

\mbox{\label{xua__default__lm__fsm_8c_a3ee57eee74ead665d96b9afc634501e0}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!reg\_req\_all\_assoc\_as@{reg\_req\_all\_assoc\_as}}
\index{reg\_req\_all\_assoc\_as@{reg\_req\_all\_assoc\_as}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{reg\_req\_all\_assoc\_as()}
{\footnotesize\ttfamily static void reg\+\_\+req\+\_\+all\+\_\+assoc\+\_\+as (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::as}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp}, \textbf{ ss7\+\_\+as\+\_\+asp\+\_\+assoc\+::asp\+\_\+entry}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::assoc\+\_\+as\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+rk\+\_\+reg\+::key}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+XLM\+\_\+\+PRIM\+\_\+\+M\+\_\+\+RK\+\_\+\+REG}, \textbf{ osmo\+\_\+xlm\+\_\+sap\+\_\+down()}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::rk\+\_\+reg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+rk\+\_\+reg\+::traf\+\_\+mode}, \textbf{ osmo\+\_\+xlm\+\_\+prim\+::u}, and \textbf{ xua\+\_\+xlm\+\_\+prim\+\_\+alloc()}.



Referenced by \textbf{ lm\+\_\+timer\+\_\+cb()}.

\mbox{\label{xua__default__lm__fsm_8c_a6d78145375f6b7478188cf287dac15b9}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!xua\_layer\_manager\_default\_alloc@{xua\_layer\_manager\_default\_alloc}}
\index{xua\_layer\_manager\_default\_alloc@{xua\_layer\_manager\_default\_alloc}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{xua\_layer\_manager\_default\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager} $\ast$ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ default\+\_\+lm\+\_\+prim\+\_\+cb()}, \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager\+::free\+\_\+func}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ NULL}, \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager\+::prim\+\_\+cb}, \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager\+::priv}, \textbf{ xua\+\_\+default\+\_\+lm\+\_\+fsm}, and \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+free()}.



Referenced by \textbf{ ss7\+\_\+asp\+\_\+xua\+\_\+layer\+\_\+manager\+\_\+start()}.

\mbox{\label{xua__default__lm__fsm_8c_a6bb210c097ca5cd47b3007a46d7175e8}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!xua\_layer\_manager\_default\_free@{xua\_layer\_manager\_default\_free}}
\index{xua\_layer\_manager\_default\_free@{xua\_layer\_manager\_default\_free}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{xua\_layer\_manager\_default\_free()}
{\footnotesize\ttfamily void xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager} $\ast$}]{lm }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+priv\+::fi}, \textbf{ NULL}, and \textbf{ osmo\+\_\+xua\+\_\+layer\+\_\+manager\+::priv}.



Referenced by \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+alloc()}.



\doxysubsection{Variable Documentation}
\mbox{\label{xua__default__lm__fsm_8c_a51949de02d1451a339c030bfa04e58f0}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_event\_map@{lm\_event\_map}}
\index{lm\_event\_map@{lm\_event\_map}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_event\_map}
{\footnotesize\ttfamily const struct osmo\+\_\+prim\+\_\+event\+\_\+map lm\+\_\+event\+\_\+map[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_SCTP\_ESTABLISH, PRIM\_OP\_INDICATION, LM\_E\_SCTP\_EST\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_SCTP\_RELEASE, PRIM\_OP\_INDICATION, LM\_E\_SCTP\_DISC\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_ASP\_UP, PRIM\_OP\_CONFIRM, LM\_E\_ASP\_UP\_CONF \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_ASP\_UP, PRIM\_OP\_INDICATION, LM\_E\_ASP\_UP\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_ASP\_ACTIVE, PRIM\_OP\_INDICATION, LM\_E\_ASP\_ACT\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_ASP\_INACTIVE, PRIM\_OP\_INDICATION, LM\_E\_ASP\_INACT\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_AS\_STATUS, PRIM\_OP\_INDICATION, LM\_E\_AS\_STATUS\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_NOTIFY, PRIM\_OP\_INDICATION, LM\_E\_NOTIFY\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_AS\_INACTIVE, PRIM\_OP\_INDICATION, LM\_E\_AS\_INACTIVE\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_AS\_ACTIVE, PRIM\_OP\_INDICATION, LM\_E\_AS\_ACTIVE\_IND \},}
\DoxyCodeLine{        \{ XUA\_SAP\_LM, OSMO\_XLM\_PRIM\_M\_RK\_REG, PRIM\_OP\_CONFIRM, LM\_E\_RKM\_REG\_CONF \},}
\DoxyCodeLine{        \{ 0, 0, 0, OSMO\_NO\_EVENT \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ default\+\_\+lm\+\_\+prim\+\_\+cb()}.

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

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ LM\_E\_SCTP\_EST\_IND,   \textcolor{stringliteral}{"{}SCTP-\/ESTABLISH.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_ASP\_UP\_CONF,     \textcolor{stringliteral}{"{}ASP-\/UP.conf"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_ASP\_UP\_IND,       \textcolor{stringliteral}{"{}ASP-\/UP.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_ASP\_ACT\_IND,     \textcolor{stringliteral}{"{}ASP-\/ACT.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_ASP\_INACT\_IND, \textcolor{stringliteral}{"{}ASP-\/INACT.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_NOTIFY\_IND,       \textcolor{stringliteral}{"{}NOTIFY.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_AS\_INACTIVE\_IND,     \textcolor{stringliteral}{"{}AS-\/INACTIVE.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_AS\_ACTIVE\_IND, \textcolor{stringliteral}{"{}AS-\/ACTIVE.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_AS\_STATUS\_IND, \textcolor{stringliteral}{"{}AS-\/STATUS.ind"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_RKM\_REG\_CONF,   \textcolor{stringliteral}{"{}RKM\_REG.conf"{}} \},}
\DoxyCodeLine{        \{ LM\_E\_SCTP\_DISC\_IND, \textcolor{stringliteral}{"{}SCTP-\/RELEASE.ind"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{xua__default__lm__fsm_8c_aefee762447a8747f1ce02b2078cebe93}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_fsm\_timeouts@{lm\_fsm\_timeouts}}
\index{lm\_fsm\_timeouts@{lm\_fsm\_timeouts}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_fsm\_timeouts}
{\footnotesize\ttfamily const struct osmo\+\_\+tdef\+\_\+state\+\_\+timeout lm\+\_\+fsm\+\_\+timeouts[32]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [S\_IDLE]  = \{ \},}
\DoxyCodeLine{        [S\_WAIT\_ASP\_UP]    = \{ .T = SS7\_ASP\_LM\_T\_WAIT\_ASP\_UP \},}
\DoxyCodeLine{        [S\_WAIT\_NOTIFY]    = \{ .T = SS7\_ASP\_LM\_T\_WAIT\_NOTIFY \}, }
\DoxyCodeLine{        [S\_RKM\_REG]    = \{ .T = SS7\_ASP\_LM\_T\_WAIT\_RK\_REG\_RESP \},}
\DoxyCodeLine{        [S\_ACTIVE]      = \{ \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{xua__default__lm__fsm_8c_a57c9b8d5dc3d987500e141df6154a822}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!lm\_states@{lm\_states}}
\index{lm\_states@{lm\_states}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{lm\_states}
{\footnotesize\ttfamily const struct osmo\+\_\+fsm\+\_\+state lm\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{xua__default__lm__fsm_8c_a4fd3a2164089040052bb12b1363b18d7}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!ss7\_asp\_lm\_timer\_defaults@{ss7\_asp\_lm\_timer\_defaults}}
\index{ss7\_asp\_lm\_timer\_defaults@{ss7\_asp\_lm\_timer\_defaults}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{ss7\_asp\_lm\_timer\_defaults}
{\footnotesize\ttfamily const struct osmo\+\_\+tdef ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+defaults[\textbf{ SS7\+\_\+\+ASP\+\_\+\+LM\+\_\+\+TIMERS\+\_\+\+LEN}]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ .T = SS7\_ASP\_LM\_T\_WAIT\_ASP\_UP,        .default\_val = 20,      .unit = OSMO\_TDEF\_S,}
\DoxyCodeLine{          .desc = \textcolor{stringliteral}{"{}Restart ASP after timeout waiting for ASP UP (SG role) / ASP UP ACK (ASP role) (s)"{}} \},}
\DoxyCodeLine{        \{ .T = SS7\_ASP\_LM\_T\_WAIT\_NOTIFY,        .default\_val = 2,       .unit = OSMO\_TDEF\_S,}
\DoxyCodeLine{          .desc = \textcolor{stringliteral}{"{}Restart ASP after timeout waiting for NOTIFY (s)"{}} \},}
\DoxyCodeLine{        \{ .T = SS7\_ASP\_LM\_T\_WAIT\_NOTIY\_RKM,  .default\_val = 20,      .unit = OSMO\_TDEF\_S,}
\DoxyCodeLine{          .desc = \textcolor{stringliteral}{"{}Restart ASP after timeout waiting for NOTIFY after RKM registration (s)"{}} \},}
\DoxyCodeLine{        \{ .T = SS7\_ASP\_LM\_T\_WAIT\_RK\_REG\_RESP,      .default\_val = 10,      .unit = OSMO\_TDEF\_S,}
\DoxyCodeLine{          .desc = \textcolor{stringliteral}{"{}Restart ASP after timeout waiting for RK\_REG\_RESP (s)"{}} \},}
\DoxyCodeLine{        \{\}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gen\+\_\+asp\+\_\+timer\+\_\+lm\+\_\+cmd\+\_\+strs()}, and \textbf{ ss7\+\_\+asp\+\_\+alloc()}.

\mbox{\label{xua__default__lm__fsm_8c_a9978fc0fc7f45342d5df6d439ef0d4cc}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!ss7\_asp\_lm\_timer\_names@{ss7\_asp\_lm\_timer\_names}}
\index{ss7\_asp\_lm\_timer\_names@{ss7\_asp\_lm\_timer\_names}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{ss7\_asp\_lm\_timer\_names}
{\footnotesize\ttfamily const struct value\+\_\+string ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ SS7\_ASP\_LM\_T\_WAIT\_ASP\_UP, \textcolor{stringliteral}{"{}wait\_asp\_up"{}} \},}
\DoxyCodeLine{        \{ SS7\_ASP\_LM\_T\_WAIT\_NOTIFY, \textcolor{stringliteral}{"{}wait\_notify"{}} \},}
\DoxyCodeLine{        \{ SS7\_ASP\_LM\_T\_WAIT\_NOTIY\_RKM, \textcolor{stringliteral}{"{}wait\_notify\_rkm"{}} \},}
\DoxyCodeLine{        \{ SS7\_ASP\_LM\_T\_WAIT\_RK\_REG\_RESP, \textcolor{stringliteral}{"{}wait\_rk\_reg\_resp"{}} \},}
\DoxyCodeLine{        \{\}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ gen\+\_\+asp\+\_\+timer\+\_\+lm\+\_\+cmd\+\_\+strs()}, \textbf{ ss7\+\_\+asp\+\_\+lm\+\_\+timer\+\_\+name()}, and \textbf{ write\+\_\+asp\+\_\+timers\+\_\+lm()}.

\mbox{\label{xua__default__lm__fsm_8c_a6440967ba56751bd7b6913c0bc6402e9}} 
\index{xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}!xua\_default\_lm\_fsm@{xua\_default\_lm\_fsm}}
\index{xua\_default\_lm\_fsm@{xua\_default\_lm\_fsm}!xua\_default\_lm\_fsm.c@{xua\_default\_lm\_fsm.c}}
\doxysubsubsection{xua\_default\_lm\_fsm}
{\footnotesize\ttfamily struct osmo\+\_\+fsm xua\+\_\+default\+\_\+lm\+\_\+fsm}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}xua\_default\_lm"{}},}
\DoxyCodeLine{        .states = lm\_states,}
\DoxyCodeLine{        .num\_states = ARRAY\_SIZE(lm\_states),}
\DoxyCodeLine{        .timer\_cb = lm\_timer\_cb,}
\DoxyCodeLine{        .event\_names = lm\_event\_names,}
\DoxyCodeLine{        .allstate\_event\_mask = S(LM\_E\_SCTP\_DISC\_IND),}
\DoxyCodeLine{        .allstate\_action = lm\_allstate,}
\DoxyCodeLine{        .log\_subsys = DLSS7,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+ss7\+\_\+init()}, and \textbf{ xua\+\_\+layer\+\_\+manager\+\_\+default\+\_\+alloc()}.

