\doxysection{src/ss7\+\_\+as.c File Reference}
\label{ss7__as_8c}\index{src/ss7\_as.c@{src/ss7\_as.c}}
{\ttfamily \#include \char`\"{}config.\+h\char`\"{}}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$unistd.\+h$>$}\newline
{\ttfamily \#include $<$inttypes.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/hashtable.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/mtp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+as.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+asp.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+route.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+route\+\_\+table.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+as\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+asp\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+msg.\+h\char`\"{}}\newline
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ SS7\+\_\+\+AS\+\_\+\+CTR\+\_\+\+RX\+\_\+\+MSU\+\_\+\+SLS\+\_\+\+STR}~\char`\"{}Number of MSU received on SLS \char`\"{}
\item 
\#define \textbf{ SS7\+\_\+\+AS\+\_\+\+CTR\+\_\+\+TX\+\_\+\+MSU\+\_\+\+SLS\+\_\+\+STR}~\char`\"{}Number of MSU transmitted on SLS \char`\"{}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$ \textbf{ ss7\+\_\+as\+\_\+alloc} (struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$inst, const char $\ast$name, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} proto)
\begin{DoxyCompactList}\small\item\em Allocate an Application Server. \end{DoxyCompactList}\item 
enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+get\+\_\+asp\+\_\+protocol} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\begin{DoxyCompactList}\small\item\em Get asp\+\_\+protocol configuration of a given AS. \end{DoxyCompactList}\item 
int \textbf{ ss7\+\_\+as\+\_\+add\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\begin{DoxyCompactList}\small\item\em Add given ASP to given AS. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const char $\ast$asp\+\_\+name)
\begin{DoxyCompactList}\small\item\em Add given ASP to given AS. \end{DoxyCompactList}\item 
int \textbf{ ss7\+\_\+as\+\_\+del\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\begin{DoxyCompactList}\small\item\em Delete given ASP from given AS. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+del\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const char $\ast$asp\+\_\+name)
\begin{DoxyCompactList}\small\item\em Delete given ASP from given AS. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+destroy} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\begin{DoxyCompactList}\small\item\em Destroy given Application Server. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\begin{DoxyCompactList}\small\item\em Determine if given AS contains ASP. \end{DoxyCompactList}\item 
unsigned int \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+count\+\_\+asp} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\begin{DoxyCompactList}\small\item\em Determine amount of ASPs associated to an AS. \end{DoxyCompactList}\item 
int \textbf{ ss7\+\_\+as\+\_\+get\+\_\+local\+\_\+role} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
bool \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+active} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\begin{DoxyCompactList}\small\item\em Determine if given AS is in the active state. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+down} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\begin{DoxyCompactList}\small\item\em Determine if given AS is in the down state. \end{DoxyCompactList}\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+override} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ ss7\+\_\+as\+\_\+assign\+\_\+asp\+\_\+roundrobin} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
void \textbf{ ss7\+\_\+as\+\_\+loadshare\+\_\+binding\+\_\+table\+\_\+reset} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static \textbf{ as\+\_\+ext\+\_\+sls\+\_\+t} \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+calc\+\_\+itu\+\_\+as\+\_\+ext\+\_\+sls} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, uint32\+\_\+t \textbf{ opc}, uint8\+\_\+t \textbf{ sls})
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ current\+\_\+asp} (const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry} $\ast$aeslse)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$mtp)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+broadcast} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ xua\+\_\+msg} $\ast$xua)
\begin{DoxyCompactList}\small\item\em Select an AS to transmit a message, according to AS configuration and ASP availability. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+select\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\begin{DoxyCompactList}\small\item\em Select an AS to transmit a message, according to AS configuration and ASP availability. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+tmode\+\_\+compatible\+\_\+xua} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, uint32\+\_\+t m3ua\+\_\+tmt)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
struct value\+\_\+string \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode\+\_\+vals} [$\,$]
\item 
static const struct rate\+\_\+ctr\+\_\+desc \textbf{ ss7\+\_\+as\+\_\+rcd} [$\,$]
\item 
static const struct rate\+\_\+ctr\+\_\+group\+\_\+desc \textbf{ ss7\+\_\+as\+\_\+rcgd}
\item 
static unsigned int \textbf{ g\+\_\+ss7\+\_\+as\+\_\+rcg\+\_\+idx}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{ss7__as_8c_a904875bcdc55c3888458ee81e95b4356}} 
\index{ss7\_as.c@{ss7\_as.c}!SS7\_AS\_CTR\_RX\_MSU\_SLS\_STR@{SS7\_AS\_CTR\_RX\_MSU\_SLS\_STR}}
\index{SS7\_AS\_CTR\_RX\_MSU\_SLS\_STR@{SS7\_AS\_CTR\_RX\_MSU\_SLS\_STR}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{SS7\_AS\_CTR\_RX\_MSU\_SLS\_STR}
{\footnotesize\ttfamily \#define SS7\+\_\+\+AS\+\_\+\+CTR\+\_\+\+RX\+\_\+\+MSU\+\_\+\+SLS\+\_\+\+STR~\char`\"{}Number of MSU received on SLS \char`\"{}}

\mbox{\label{ss7__as_8c_a12894d9a21723bc77d503e333835c938}} 
\index{ss7\_as.c@{ss7\_as.c}!SS7\_AS\_CTR\_TX\_MSU\_SLS\_STR@{SS7\_AS\_CTR\_TX\_MSU\_SLS\_STR}}
\index{SS7\_AS\_CTR\_TX\_MSU\_SLS\_STR@{SS7\_AS\_CTR\_TX\_MSU\_SLS\_STR}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{SS7\_AS\_CTR\_TX\_MSU\_SLS\_STR}
{\footnotesize\ttfamily \#define SS7\+\_\+\+AS\+\_\+\+CTR\+\_\+\+TX\+\_\+\+MSU\+\_\+\+SLS\+\_\+\+STR~\char`\"{}Number of MSU transmitted on SLS \char`\"{}}



\doxysubsection{Function Documentation}
\mbox{\label{ss7__as_8c_a44491c8b5526b058d8b74afb244b50c7}} 
\index{ss7\_as.c@{ss7\_as.c}!current\_asp@{current\_asp}}
\index{current\_asp@{current\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{current\_asp()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ current\+\_\+asp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry} $\ast$}]{aeslse }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry\+::alt\+\_\+asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry\+::normal\+\_\+asp}, \textbf{ NULL}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+active()}.



Referenced by \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}.

\mbox{\label{ss7__as_8c_a6eb76a8a7db795844115a5b6feb5e426}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_active@{osmo\_ss7\_as\_active}}
\index{osmo\_ss7\_as\_active@{osmo\_ss7\_as\_active}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_active()}
{\footnotesize\ttfamily bool osmo\+\_\+ss7\+\_\+as\+\_\+active (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



Determine if given AS is in the active state. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true in case as is active; false otherwise. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, and \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+ACTIVE}.



Referenced by \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ show\+\_\+as()}, and \textbf{ ss7\+\_\+route\+\_\+dest\+\_\+is\+\_\+available()}.

\mbox{\label{ss7__as_8c_a01392ccbfd2fd93d962dcd7bd8037526}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_add\_asp@{osmo\_ss7\_as\_add\_asp}}
\index{osmo\_ss7\_as\_add\_asp@{osmo\_ss7\_as\_add\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_add\_asp()}
{\footnotesize\ttfamily int osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const char $\ast$}]{asp\+\_\+name }\end{DoxyParamCaption})}



Add given ASP to given AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server to which asp is added \\
\hline
\mbox{\texttt{ in}}  & {\em asp\+\_\+name} & Name of Application Server Process to be added to as \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ ss7\+\_\+as\+\_\+add\+\_\+asp()}, and \textbf{ ss7\+\_\+initialized}.



Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}.

\mbox{\label{ss7__as_8c_ae2ba35bd7b47ceab3d3036fc4e5f5b4e}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_count\_asp@{osmo\_ss7\_as\_count\_asp}}
\index{osmo\_ss7\_as\_count\_asp@{osmo\_ss7\_as\_count\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_count\_asp()}
{\footnotesize\ttfamily unsigned int osmo\+\_\+ss7\+\_\+as\+\_\+count\+\_\+asp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



Determine amount of ASPs associated to an AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of ASPs associated to as 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}.



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

\mbox{\label{ss7__as_8c_aca9bfa652d15609a904653398e17c5e9}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_del\_asp@{osmo\_ss7\_as\_del\_asp}}
\index{osmo\_ss7\_as\_del\_asp@{osmo\_ss7\_as\_del\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_del\_asp()}
{\footnotesize\ttfamily int osmo\+\_\+ss7\+\_\+as\+\_\+del\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const char $\ast$}]{asp\+\_\+name }\end{DoxyParamCaption})}



Delete given ASP from given AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server from which asp is deleted \\
\hline
\mbox{\texttt{ in}}  & {\em asp\+\_\+name} & Name of the Application Server Process to delete from as \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ ss7\+\_\+as\+\_\+del\+\_\+asp()}, and \textbf{ ss7\+\_\+initialized}.



Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}.

\mbox{\label{ss7__as_8c_afe830a3d827c8c9ff36bf04e0428ad79}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_destroy@{osmo\_ss7\_as\_destroy}}
\index{osmo\_ss7\_as\_destroy@{osmo\_ss7\_as\_destroy}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_destroy()}
{\footnotesize\ttfamily void osmo\+\_\+ss7\+\_\+as\+\_\+destroy (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



Destroy given Application Server. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server to destroy \\
\hline
\end{DoxyParams}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::ctrg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ LOGPAS}, \textbf{ NULL}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::rtable\+\_\+system}, \textbf{ ss7\+\_\+initialized}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+del\+\_\+routes\+\_\+by\+\_\+as()}, and \textbf{ tcap\+\_\+disable()}.



Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ handle\+\_\+rkey\+\_\+reg()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+destroy()}, and \textbf{ ss7\+\_\+as\+\_\+del\+\_\+asp()}.

\mbox{\label{ss7__as_8c_a73e6d3f8129ec492e6c59b7bc4ac7fe3}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_down@{osmo\_ss7\_as\_down}}
\index{osmo\_ss7\_as\_down@{osmo\_ss7\_as\_down}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_down()}
{\footnotesize\ttfamily bool osmo\+\_\+ss7\+\_\+as\+\_\+down (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



Determine if given AS is in the down state. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true in case as is down; false otherwise. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, and \textbf{ XUA\+\_\+\+AS\+\_\+\+S\+\_\+\+DOWN}.

\mbox{\label{ss7__as_8c_ab5ce9a09100b1085fd10f7495056f4c9}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_get\_asp\_protocol@{osmo\_ss7\_as\_get\_asp\_protocol}}
\index{osmo\_ss7\_as\_get\_asp\_protocol@{osmo\_ss7\_as\_get\_asp\_protocol}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_get\_asp\_protocol()}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} osmo\+\_\+ss7\+\_\+as\+\_\+get\+\_\+asp\+\_\+protocol (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



Get asp\+\_\+protocol configuration of a given AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server in which to look for asp\+\_\+protocol \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The asp\+\_\+protocol this AS is configured with 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::proto}.

\mbox{\label{ss7__as_8c_abffb76cffe93aa6421b2e41dcce2fe7f}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_has\_asp@{osmo\_ss7\_as\_has\_asp}}
\index{osmo\_ss7\_as\_has\_asp@{osmo\_ss7\_as\_has\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_has\_asp()}
{\footnotesize\ttfamily bool osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})}



Determine if given AS contains ASP. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server in which to look for asp \\
\hline
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process to look for in as \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true in case asp is part of as; false otherwise 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, and \textbf{ ss7\+\_\+initialized}.



Referenced by \textbf{ \+\_\+ss7\+\_\+asp\+\_\+get\+\_\+all\+\_\+rctx()}, \textbf{ as\+\_\+list\+\_\+for\+\_\+asp()}, \textbf{ asp\+\_\+serves\+\_\+some\+\_\+as()}, \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ find\+\_\+single\+\_\+as\+\_\+for\+\_\+asp()}, \textbf{ handle\+\_\+rkey\+\_\+dereg()}, \textbf{ ipa\+\_\+find\+\_\+as\+\_\+for\+\_\+asp()}, \textbf{ ss7\+\_\+as\+\_\+add\+\_\+asp()}, \textbf{ ss7\+\_\+asp\+\_\+determine\+\_\+traf\+\_\+mode()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}, \textbf{ xua\+\_\+find\+\_\+as\+\_\+for\+\_\+asp()}, and \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available()}.

\mbox{\label{ss7__as_8c_a45c297537854bcf084a1be70ef780069}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_select\_asp@{osmo\_ss7\_as\_select\_asp}}
\index{osmo\_ss7\_as\_select\_asp@{osmo\_ss7\_as\_select\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_select\_asp()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ osmo\+\_\+ss7\+\_\+as\+\_\+select\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



Select an AS to transmit a message, according to AS configuration and ASP availability. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
asp to send the message to, NULL if no possible asp found
\end{DoxyReturn}
This function returns NULL too if multiple ASPs would be selected, ie. AS is configured in broadcast mode and more than one ASP is configured. 

References \textbf{ \+\_\+\+NUM\+\_\+\+OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+TMOD}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \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{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+broadcast()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+override()}, and \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin()}.

\mbox{\label{ss7__as_8c_ae1ce394b6ad89efe1d723f0eda142333}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_tmode\_compatible\_xua@{osmo\_ss7\_as\_tmode\_compatible\_xua}}
\index{osmo\_ss7\_as\_tmode\_compatible\_xua@{osmo\_ss7\_as\_tmode\_compatible\_xua}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_tmode\_compatible\_xua()}
{\footnotesize\ttfamily bool osmo\+\_\+ss7\+\_\+as\+\_\+tmode\+\_\+compatible\+\_\+xua (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{uint32\+\_\+t}]{m3ua\+\_\+tmt }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \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\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+LOADSHARE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}, and \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+ROUNDROBIN}.



Referenced by \textbf{ handle\+\_\+rkey\+\_\+reg()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}.

\mbox{\label{ss7__as_8c_af957eee38b39fa0c1a74982a9b91c903}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_instance\_calc\_itu\_as\_ext\_sls@{osmo\_ss7\_instance\_calc\_itu\_as\_ext\_sls}}
\index{osmo\_ss7\_instance\_calc\_itu\_as\_ext\_sls@{osmo\_ss7\_instance\_calc\_itu\_as\_ext\_sls}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_instance\_calc\_itu\_as\_ext\_sls()}
{\footnotesize\ttfamily static \textbf{ as\+\_\+ext\+\_\+sls\+\_\+t} osmo\+\_\+ss7\+\_\+instance\+\_\+calc\+\_\+itu\+\_\+as\+\_\+ext\+\_\+sls (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{uint32\+\_\+t}]{opc,  }\item[{uint8\+\_\+t}]{sls }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \textbf{ NUM\+\_\+\+AS\+\_\+\+EXT\+\_\+\+SLS}, \textbf{ opc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::opc\+\_\+shift}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::opc\+\_\+sls}, \textbf{ sls}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::sls\+\_\+shift}.



Referenced by \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}.

\mbox{\label{ss7__as_8c_aa3217a7a843ab6681bdf26579de9533f}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_add\_asp@{ss7\_as\_add\_asp}}
\index{ss7\_as\_add\_asp@{ss7\_as\_add\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_add\_asp()}
{\footnotesize\ttfamily int ss7\+\_\+as\+\_\+add\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})}



Add given ASP to given AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server to which asp is added \\
\hline
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process to be added to as \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::fi}, \textbf{ LOGPAS}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}, and \textbf{ XUA\+\_\+\+ASP\+\_\+\+E\+\_\+\+AS\+\_\+\+ASSIGNED}.



Referenced by \textbf{ handle\+\_\+rkey\+\_\+reg()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt()}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp()}.

\mbox{\label{ss7__as_8c_ab5cd3d471c6ef8678829cee97c60014c}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_alloc@{ss7\_as\_alloc}}
\index{ss7\_as\_alloc@{ss7\_as\_alloc}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$ ss7\+\_\+as\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{inst,  }\item[{const char $\ast$}]{name,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol}}]{proto }\end{DoxyParamCaption})}



Allocate an Application Server. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em inst} & SS7 Instance on which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em name} & Name of Application Server \\
\hline
\mbox{\texttt{ in}}  & {\em proto} & Protocol of Application Server \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to Application Server on success; NULL otherwise 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::ctrg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ g\+\_\+ss7\+\_\+as\+\_\+rcg\+\_\+idx}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::l\+\_\+rk\+\_\+id}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::last\+\_\+asp\+\_\+idx\+\_\+assigned}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::proto}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::recovery\+\_\+timeout\+\_\+msec}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key}, \textbf{ ss7\+\_\+as\+\_\+rcgd}, \textbf{ ss7\+\_\+find\+\_\+free\+\_\+l\+\_\+rk\+\_\+id()}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+start()}.



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+or\+\_\+create()}.

\mbox{\label{ss7__as_8c_a351c71cb18eb0058d546c56e15a2bbde}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_assign\_asp\_roundrobin@{ss7\_as\_assign\_asp\_roundrobin}}
\index{ss7\_as\_assign\_asp\_roundrobin@{ss7\_as\_assign\_asp\_roundrobin}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_assign\_asp\_roundrobin()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ ss7\+\_\+as\+\_\+assign\+\_\+asp\+\_\+roundrobin (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::last\+\_\+asp\+\_\+idx\+\_\+assigned}.



Referenced by \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}.

\mbox{\label{ss7__as_8c_aee504af16bf9d92abc8437c99185bdfb}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_del\_asp@{ss7\_as\_del\_asp}}
\index{ss7\_as\_del\_asp@{ss7\_as\_del\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_del\_asp()}
{\footnotesize\ttfamily int ss7\+\_\+as\+\_\+del\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})}



Delete given ASP from given AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server from which asp is deleted \\
\hline
\mbox{\texttt{ in}}  & {\em asp} & Application Server Process to delete from as \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error
\end{DoxyReturn}
as may be freed during the function call. 

References \textbf{ osmo\+\_\+ss7\+\_\+as\+::aesls\+\_\+table}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry\+::alt\+\_\+asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ LOGPAS}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry\+::normal\+\_\+asp}, \textbf{ NULL}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+count\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+destroy()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::rkm\+\_\+dyn\+\_\+allocated}, and \textbf{ tcap\+\_\+as\+\_\+del\+\_\+asp()}.



Referenced by \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, \textbf{ handle\+\_\+rkey\+\_\+dereg()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+del\+\_\+asp()}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+destroy()}.

\mbox{\label{ss7__as_8c_a90e1298a6f35ca4a066fb9c882f0e381}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_get\_local\_role@{ss7\_as\_get\_local\_role}}
\index{ss7\_as\_get\_local\_role@{ss7\_as\_get\_local\_role}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_get\_local\_role()}
{\footnotesize\ttfamily int ss7\+\_\+as\+\_\+get\+\_\+local\+\_\+role (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+::role}.



Referenced by \textbf{ ss7\+\_\+vty\+\_\+node\+\_\+as\+\_\+go\+\_\+parent()}, and \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+onenter()}.

\mbox{\label{ss7__as_8c_a0dcc24eec011d648c3f619ec30db2c3b}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_loadshare\_binding\_table\_reset@{ss7\_as\_loadshare\_binding\_table\_reset}}
\index{ss7\_as\_loadshare\_binding\_table\_reset@{ss7\_as\_loadshare\_binding\_table\_reset}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_loadshare\_binding\_table\_reset()}
{\footnotesize\ttfamily void ss7\+\_\+as\+\_\+loadshare\+\_\+binding\+\_\+table\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::aesls\+\_\+table}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+::last\+\_\+asp\+\_\+idx\+\_\+assigned}.



Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}.

\mbox{\label{ss7__as_8c_ac5635aa34daa59c62de01fd0ca18d2e0}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_select\_asp@{ss7\_as\_select\_asp}}
\index{ss7\_as\_select\_asp@{ss7\_as\_select\_asp}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_select\_asp()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ ss7\+\_\+as\+\_\+select\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})}



Select an AS to transmit a message, according to AS configuration and ASP availability. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & Application Server. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
asp to send the message to, NULL if no possible asp found
\end{DoxyReturn}
This function returns NULL too if multiple ASPs would be selected, ie. AS is configured in broadcast mode and more than one ASP is configured. 

References \textbf{ \+\_\+\+NUM\+\_\+\+OSMO\+\_\+\+SS7\+\_\+\+ASP\+\_\+\+TMOD}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::fi}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \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{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+broadcast()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+override()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin()}, and \textbf{ tcap\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}.



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

\mbox{\label{ss7__as_8c_ae30f78be9c2ccd192581a3438ff12ac6}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_select\_asp\_broadcast@{ss7\_as\_select\_asp\_broadcast}}
\index{ss7\_as\_select\_asp\_broadcast@{ss7\_as\_select\_asp\_broadcast}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_select\_asp\_broadcast()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+broadcast (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ NULL}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+active()}.



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+select\+\_\+asp()}, and \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp()}.

\mbox{\label{ss7__as_8c_a7290b5e3d96174f7edc885444a0d9068}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_select\_asp\_loadshare@{ss7\_as\_select\_asp\_loadshare}}
\index{ss7\_as\_select\_asp\_loadshare@{ss7\_as\_select\_asp\_loadshare}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_select\_asp\_loadshare()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$}]{mtp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::aesls\+\_\+table}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry\+::alt\+\_\+asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ current\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ LOGPAS}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+esls\+\_\+entry\+::normal\+\_\+asp}, \textbf{ NULL}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+active()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+calc\+\_\+itu\+\_\+as\+\_\+ext\+\_\+sls()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print()}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sls}, \textbf{ ss7\+\_\+as\+\_\+assign\+\_\+asp\+\_\+roundrobin()}, and \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin()}.



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+select\+\_\+asp()}, and \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp()}.

\mbox{\label{ss7__as_8c_a1c47f4b1932408889db8a1587ed11aee}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_select\_asp\_override@{ss7\_as\_select\_asp\_override}}
\index{ss7\_as\_select\_asp\_override@{ss7\_as\_select\_asp\_override}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_select\_asp\_override()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+override (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



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



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+select\+\_\+asp()}, and \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp()}.

\mbox{\label{ss7__as_8c_a26482d10728032ad4192baafe7bdc2f7}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_select\_asp\_roundrobin@{ss7\_as\_select\_asp\_roundrobin}}
\index{ss7\_as\_select\_asp\_roundrobin@{ss7\_as\_select\_asp\_roundrobin}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_select\_asp\_roundrobin()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::asps}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::last\+\_\+asp\+\_\+idx\+\_\+sent}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+active()}.



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+select\+\_\+asp()}, \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp()}, and \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare()}.



\doxysubsection{Variable Documentation}
\mbox{\label{ss7__as_8c_aaadda9e298649caf18805f9fcd3a2039}} 
\index{ss7\_as.c@{ss7\_as.c}!g\_ss7\_as\_rcg\_idx@{g\_ss7\_as\_rcg\_idx}}
\index{g\_ss7\_as\_rcg\_idx@{g\_ss7\_as\_rcg\_idx}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{g\_ss7\_as\_rcg\_idx}
{\footnotesize\ttfamily unsigned int g\+\_\+ss7\+\_\+as\+\_\+rcg\+\_\+idx\hspace{0.3cm}{\ttfamily [static]}}



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

\mbox{\label{ss7__as_8c_a41be4c98feb2b819cbc41e9f378ef8e2}} 
\index{ss7\_as.c@{ss7\_as.c}!osmo\_ss7\_as\_traffic\_mode\_vals@{osmo\_ss7\_as\_traffic\_mode\_vals}}
\index{osmo\_ss7\_as\_traffic\_mode\_vals@{osmo\_ss7\_as\_traffic\_mode\_vals}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{osmo\_ss7\_as\_traffic\_mode\_vals}
{\footnotesize\ttfamily struct value\+\_\+string osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode\+\_\+vals[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ OSMO\_SS7\_AS\_TMOD\_BCAST, \textcolor{stringliteral}{"{}broadcast"{}} \},}
\DoxyCodeLine{        \{ OSMO\_SS7\_AS\_TMOD\_LOADSHARE, \textcolor{stringliteral}{"{}loadshare"{}} \},}
\DoxyCodeLine{        \{ OSMO\_SS7\_AS\_TMOD\_ROUNDROBIN,       \textcolor{stringliteral}{"{}roundrobin"{}} \},}
\DoxyCodeLine{        \{ OSMO\_SS7\_AS\_TMOD\_OVERRIDE,   \textcolor{stringliteral}{"{}override"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ DEFUN\+\_\+\+USRATTR()}, and \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode\+\_\+name()}.

\mbox{\label{ss7__as_8c_a52bafadf47672f3cbe10f1fe54c47c0c}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_rcd@{ss7\_as\_rcd}}
\index{ss7\_as\_rcd@{ss7\_as\_rcd}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_rcd}
{\footnotesize\ttfamily const struct rate\+\_\+ctr\+\_\+desc ss7\+\_\+as\+\_\+rcd[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{ss7__as_8c_a02583199ee14e9225a5d4086150bb8dd}} 
\index{ss7\_as.c@{ss7\_as.c}!ss7\_as\_rcgd@{ss7\_as\_rcgd}}
\index{ss7\_as\_rcgd@{ss7\_as\_rcgd}!ss7\_as.c@{ss7\_as.c}}
\doxysubsubsection{ss7\_as\_rcgd}
{\footnotesize\ttfamily const struct rate\+\_\+ctr\+\_\+group\+\_\+desc ss7\+\_\+as\+\_\+rcgd\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}sigtran\_as"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}SIGTRAN Application Server"{}},}
\DoxyCodeLine{        .num\_ctr = ARRAY\_SIZE(ss7\_as\_rcd),}
\DoxyCodeLine{        .ctr\_desc = ss7\_as\_rcd,}
\DoxyCodeLine{\}}

\end{DoxyCode}


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

