\doxysection{src/ss7\+\_\+as\+\_\+loadshare\+\_\+tcap.c File Reference}
\label{ss7__as__loadshare__tcap_8c}\index{src/ss7\_as\_loadshare\_tcap.c@{src/ss7\_as\_loadshare\_tcap.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/byteswap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/netif/ipa.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sccp/sccp\+\_\+types.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/mtp.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/tcap/\+OCTET\+\_\+\+STRING.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/tcap/\+TCAP\+\_\+\+TCMessage.\+h$>$}\newline
{\ttfamily \#include "{}ss7\+\_\+as.\+h"{}}\newline
{\ttfamily \#include "{}ss7\+\_\+as\+\_\+loadshare\+\_\+tcap.\+h"{}}\newline
{\ttfamily \#include "{}tcap\+\_\+transaction\+\_\+tracking.\+h"{}}\newline
{\ttfamily \#include "{}ss7\+\_\+asp.\+h"{}}\newline
{\ttfamily \#include "{}ss7\+\_\+internal.\+h"{}}\newline
{\ttfamily \#include "{}xua\+\_\+internal.\+h"{}}\newline
\doxysubsubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ tcap\+\_\+parsed}
\item 
struct \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr}
\item 
struct \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range}
\item 
struct \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+nack}
\end{DoxyCompactItemize}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ OTID\+\_\+\+SET}~1 $<$$<$ 0
\item 
\#define \textbf{ DTID\+\_\+\+SET}~1 $<$$<$ 1
\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+msg\+\_\+types} \{ \textbf{ MT\+\_\+\+TID\+\_\+\+ADD\+\_\+\+RANGE} = 0x01
, \textbf{ MT\+\_\+\+TID\+\_\+\+ACK} = 0x02
, \textbf{ MT\+\_\+\+TID\+\_\+\+NACK} = 0x03
 \}
\item 
enum \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+nack\+\_\+error} \{ \textbf{ NACK\+\_\+\+ERR\+\_\+\+SYS\+\_\+\+FAILURE} = 0x01
, \textbf{ NACK\+\_\+\+ERR\+\_\+\+EALREADY} = 0x72
 \}
\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static uint32\+\_\+t \textbf{ tcap\+\_\+id\+\_\+from\+\_\+octet\+\_\+str} (const OCTET\+\_\+\+STRING\+\_\+t $\ast$src)
\item 
static int \textbf{ parse\+\_\+tcap} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const uint8\+\_\+t $\ast$\textbf{ data}, size\+\_\+t \textbf{ len}, struct \textbf{ tcap\+\_\+parsed} $\ast$ids)
\item 
static uint32\+\_\+t \textbf{ tcap\+\_\+gen\+\_\+hash} (uint32\+\_\+t \textbf{ pc}, uint8\+\_\+t \textbf{ ssn})
\item 
static uint64\+\_\+t \textbf{ tcap\+\_\+gen\+\_\+hash\+\_\+addr} (const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ tcap\+\_\+hlist\+\_\+get} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, uint32\+\_\+t \textbf{ pc}, uint8\+\_\+t \textbf{ ssn}, uint32\+\_\+t tid)
\item 
struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ find\+\_\+asp\+\_\+by\+\_\+tcap\+\_\+id} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$calling\+\_\+addr, struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$called\+\_\+addr, uint32\+\_\+t otid)
\item 
static struct tcap\+\_\+range $\ast$ \textbf{ tcap\+\_\+overlap\+\_\+tid} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, uint32\+\_\+t \textbf{ pc}, uint8\+\_\+t \textbf{ ssn}, uint32\+\_\+t \textbf{ tid\+\_\+start}, uint32\+\_\+t \textbf{ tid\+\_\+end})
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ find\+\_\+asp\+\_\+no\+\_\+tcap\+\_\+range} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static bool \textbf{ ssn\+\_\+contains\+\_\+tcap} (uint8\+\_\+t \textbf{ ssn})
\item 
int \textbf{ ss7\+\_\+asp\+\_\+tcap\+\_\+rx\+\_\+sccp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, uint32\+\_\+t \textbf{ opc}, uint32\+\_\+t \textbf{ dpc}, struct msgb $\ast$sccp\+\_\+msg)
\begin{DoxyCompactList}\small\item\em Traffic from the TCAP ASP -\/$>$ AS -\/$>$ osmo-\/stp, only used to update transaction tracking. \end{DoxyCompactList}\item 
static int \textbf{ sent\+\_\+back\+\_\+utds} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ xua\+\_\+msg} $\ast$old\+\_\+xua, const struct \textbf{ xua\+\_\+msg} $\ast$old\+\_\+sua, uint8\+\_\+t cause\+\_\+code)
\item 
static int \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$$\ast$rasp, struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, uint32\+\_\+t \textbf{ opc}, uint32\+\_\+t \textbf{ dpc}, struct \textbf{ xua\+\_\+msg} $\ast$xua, struct msgb $\ast$sccp\+\_\+msg)
\begin{DoxyCompactList}\small\item\em Traffic STP -\/$>$ AS -\/$>$ ASP (Tx path) Loadshare towards the TCAP routing AS. \end{DoxyCompactList}\item 
int \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare\+\_\+tcap} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$$\ast$asp, struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\begin{DoxyCompactList}\small\item\em Entrypoint for M3\+UA messages towards the TCAP nodes. \end{DoxyCompactList}\item 
struct \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((packed))
\item 
static struct msgb $\ast$ \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+alloc} (uint32\+\_\+t seq\+\_\+nr, uint8\+\_\+t \textbf{ mt})
\item 
static int \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+ack} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, uint32\+\_\+t seq\+\_\+nr)
\item 
static int \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+nack} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, uint32\+\_\+t seq\+\_\+nr, uint8\+\_\+t err\+\_\+code)
\item 
int \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct msgb $\ast$msg)
\begin{DoxyCompactList}\small\item\em Entrypoint for IPA TCAP Routing messages, parses and handles those. \end{DoxyCompactList}\item 
bool \textbf{ tcap\+\_\+range\+\_\+matches} (const struct tcap\+\_\+range $\ast$tcrng, uint32\+\_\+t tid)
\begin{DoxyCompactList}\small\item\em Checks if a tid matches to a specific range. \end{DoxyCompactList}\item 
bool \textbf{ tcap\+\_\+range\+\_\+overlaps} (const struct tcap\+\_\+range $\ast$a, uint32\+\_\+t \textbf{ tid\+\_\+start}, uint32\+\_\+t \textbf{ tid\+\_\+end})
\begin{DoxyCompactList}\small\item\em Checks if a tid rnage overlaps with another range. \end{DoxyCompactList}\item 
struct tcap\+\_\+range $\ast$ \textbf{ tcap\+\_\+range\+\_\+alloc} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, uint32\+\_\+t \textbf{ tid\+\_\+start}, uint32\+\_\+t \textbf{ tid\+\_\+end}, uint32\+\_\+t \textbf{ pc}, uint8\+\_\+t \textbf{ ssn})
\begin{DoxyCompactList}\small\item\em Create and alloc a new TCAP range entry. \end{DoxyCompactList}\item 
void \textbf{ tcap\+\_\+range\+\_\+free} (struct tcap\+\_\+range $\ast$tcrng)
\begin{DoxyCompactList}\small\item\em Remove and free a single TCAP range entry. \end{DoxyCompactList}\item 
static void \textbf{ tcap\+\_\+range\+\_\+as\+\_\+update\+\_\+pc\+\_\+ssn} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static void \textbf{ \+\_\+tcap\+\_\+range\+\_\+asp\+\_\+down} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\item 
void \textbf{ tcap\+\_\+asp\+\_\+down} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp)
\begin{DoxyCompactList}\small\item\em Called when the ASP is going down or free\textquotesingle{}d. \end{DoxyCompactList}\item 
void \textbf{ tcap\+\_\+enable} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
void \textbf{ tcap\+\_\+disable} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\end{DoxyCompactItemize}
\doxysubsubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
uint8\+\_\+t \textbf{ mt}
\item 
uint32\+\_\+t \textbf{ seq}
\item 
uint8\+\_\+t \textbf{ data} [0]
\item 
uint32\+\_\+t \textbf{ tid\+\_\+start}
\item 
uint32\+\_\+t \textbf{ tid\+\_\+end}
\item 
uint32\+\_\+t \textbf{ pc}
\item 
uint8\+\_\+t \textbf{ ssn}
\item 
uint8\+\_\+t \textbf{ err}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\label{ss7__as__loadshare__tcap_8c_a349a140fe55ed86b0497651f3fe7d858} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!DTID\_SET@{DTID\_SET}}
\index{DTID\_SET@{DTID\_SET}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{DTID\_SET}
{\footnotesize\ttfamily \#define DTID\+\_\+\+SET~1 $<$$<$ 1}

\label{ss7__as__loadshare__tcap_8c_aabea942d4d033cfb031216ebced5b032} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!OTID\_SET@{OTID\_SET}}
\index{OTID\_SET@{OTID\_SET}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{OTID\_SET}
{\footnotesize\ttfamily \#define OTID\+\_\+\+SET~1 $<$$<$ 0}



\doxysubsection{Enumeration Type Documentation}
\label{ss7__as__loadshare__tcap_8c_a50f05d3490e4b716d11533e93f3c1e1c} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ipa\_tcap\_routing\_msg\_types@{ipa\_tcap\_routing\_msg\_types}}
\index{ipa\_tcap\_routing\_msg\_types@{ipa\_tcap\_routing\_msg\_types}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ipa\_tcap\_routing\_msg\_types}
{\footnotesize\ttfamily enum \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+msg\+\_\+types}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{MT\_TID\_ADD\_RANGE@{MT\_TID\_ADD\_RANGE}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!MT\_TID\_ADD\_RANGE@{MT\_TID\_ADD\_RANGE}}}\label{ss7__as__loadshare__tcap_8c_a50f05d3490e4b716d11533e93f3c1e1ca80e760b63d95983d0f7d1049cbd3c2cf} 
MT\+\_\+\+TID\+\_\+\+ADD\+\_\+\+RANGE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{MT\_TID\_ACK@{MT\_TID\_ACK}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!MT\_TID\_ACK@{MT\_TID\_ACK}}}\label{ss7__as__loadshare__tcap_8c_a50f05d3490e4b716d11533e93f3c1e1caa3e2801f351c84d837765ab740c87d29} 
MT\+\_\+\+TID\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{MT\_TID\_NACK@{MT\_TID\_NACK}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!MT\_TID\_NACK@{MT\_TID\_NACK}}}\label{ss7__as__loadshare__tcap_8c_a50f05d3490e4b716d11533e93f3c1e1ca50d9082bb600b24568062f911b19dbcd} 
MT\+\_\+\+TID\+\_\+\+NACK&\\
\hline

\end{DoxyEnumFields}
\label{ss7__as__loadshare__tcap_8c_acc8a4c926265cd8b2b1f88b1783e0005} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ipa\_tcap\_routing\_nack\_error@{ipa\_tcap\_routing\_nack\_error}}
\index{ipa\_tcap\_routing\_nack\_error@{ipa\_tcap\_routing\_nack\_error}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ipa\_tcap\_routing\_nack\_error}
{\footnotesize\ttfamily enum \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+nack\+\_\+error}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NACK\_ERR\_SYS\_FAILURE@{NACK\_ERR\_SYS\_FAILURE}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!NACK\_ERR\_SYS\_FAILURE@{NACK\_ERR\_SYS\_FAILURE}}}\label{ss7__as__loadshare__tcap_8c_acc8a4c926265cd8b2b1f88b1783e0005a473e6d69c5e07521520ce5d56257cd4e} 
NACK\+\_\+\+ERR\+\_\+\+SYS\+\_\+\+FAILURE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NACK\_ERR\_EALREADY@{NACK\_ERR\_EALREADY}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!NACK\_ERR\_EALREADY@{NACK\_ERR\_EALREADY}}}\label{ss7__as__loadshare__tcap_8c_acc8a4c926265cd8b2b1f88b1783e0005ac324cacf310f2470ec4de673861900cb} 
NACK\+\_\+\+ERR\+\_\+\+EALREADY&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\label{ss7__as__loadshare__tcap_8c_a9e1e6f338fa7f5fb08779b084c9b8ebf} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{\_\_attribute\_\_()}
{\footnotesize\ttfamily struct \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr} \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(packed)}]{ }\end{DoxyParamCaption})}



References \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}, \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ data\+\_\+hdr\+\_\+from\+\_\+m3ua()}, \textbf{ m3ua\+\_\+data\+\_\+hdr\+::dpc}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ LOGPAS}, \textbf{ M3\+UA\+\_\+\+IEI\+\_\+\+PROT\+\_\+\+DATA}, \textbf{ M3\+UA\+\_\+\+MSGC\+\_\+\+XFER}, \textbf{ M3\+UA\+\_\+\+XFER\+\_\+\+DATA}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ MTP\+\_\+\+SI\+\_\+\+SCCP}, \textbf{ NULL}, \textbf{ m3ua\+\_\+data\+\_\+hdr\+::opc}, \textbf{ m3ua\+\_\+data\+\_\+hdr\+::si}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}.

\label{ss7__as__loadshare__tcap_8c_ac90e0a52014ab8d3f303b80da068ac9a} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!\_tcap\_range\_asp\_down@{\_tcap\_range\_asp\_down}}
\index{\_tcap\_range\_asp\_down@{\_tcap\_range\_asp\_down}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{\_tcap\_range\_asp\_down()}
{\footnotesize\ttfamily static void \+\_\+tcap\+\_\+range\+\_\+asp\+\_\+down (\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\+\_\+as\+::tcap}, \textbf{ tcap\+\_\+range\+\_\+free()}, and \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+free\+\_\+asp\+\_\+entries()}.



Referenced by \textbf{ tcap\+\_\+asp\+\_\+down()}.

\label{ss7__as__loadshare__tcap_8c_ab874326eaa65a036f7ad908f7abb4b31} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!asp\_loadshare\_tcap\_sccp@{asp\_loadshare\_tcap\_sccp}}
\index{asp\_loadshare\_tcap\_sccp@{asp\_loadshare\_tcap\_sccp}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{asp\_loadshare\_tcap\_sccp()}
{\footnotesize\ttfamily static int asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$$\ast$}]{rasp,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{uint32\+\_\+t}]{opc,  }\item[{uint32\+\_\+t}]{dpc,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{struct msgb $\ast$}]{sccp\+\_\+msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Traffic STP -\/$>$ AS -\/$>$ ASP (Tx path) Loadshare towards the TCAP routing AS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em rasp} & the selected ASP if any, can be NULL \\
\hline
\mbox{\texttt{ in}}  & {\em as} & \\
\hline
\mbox{\texttt{ in}}  & {\em opc} & the OPC from MTP \\
\hline
\mbox{\texttt{ in}}  & {\em dpc} & the DPC from MTP \\
\hline
\mbox{\texttt{ in}}  & {\em sccp\+\_\+msg} & the SCCP message. Callee takes ownership. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\end{DoxyReturn}


References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ dpc}, \textbf{ tcap\+\_\+parsed\+::dtid}, \textbf{ DTID\+\_\+\+SET}, \textbf{ find\+\_\+asp\+\_\+by\+\_\+tcap\+\_\+id()}, \textbf{ find\+\_\+asp\+\_\+no\+\_\+tcap\+\_\+range()}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ LOGPAS}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ NULL}, \textbf{ opc}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}, \textbf{ tcap\+\_\+parsed\+::otid}, \textbf{ OTID\+\_\+\+SET}, \textbf{ parse\+\_\+tcap()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ tcap\+\_\+parsed\+::present}, \textbf{ sent\+\_\+back\+\_\+utds()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ ssn\+\_\+contains\+\_\+tcap()}, \textbf{ sua\+\_\+addr\+\_\+parse()}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDT}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CL}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+begin()}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+continue()}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+end()}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+()}.

\label{ss7__as__loadshare__tcap_8c_af3e0bbc11daa87ffb3dfdd7d9d3666be} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!find\_asp\_by\_tcap\_id@{find\_asp\_by\_tcap\_id}}
\index{find\_asp\_by\_tcap\_id@{find\_asp\_by\_tcap\_id}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{find\_asp\_by\_tcap\_id()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ find\+\_\+asp\+\_\+by\+\_\+tcap\+\_\+id (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{calling\+\_\+addr,  }\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{called\+\_\+addr,  }\item[{uint32\+\_\+t}]{otid }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+ssn}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ tcap\+\_\+hlist\+\_\+get()}, \textbf{ TCAP\+\_\+\+PC\+\_\+\+WILDCARD}, and \textbf{ TCAP\+\_\+\+SSN\+\_\+\+WILDCARD}.



Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}.

\label{ss7__as__loadshare__tcap_8c_ada752806b6dfb13697edf6a80fe26cbd} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!find\_asp\_no\_tcap\_range@{find\_asp\_no\_tcap\_range}}
\index{find\_asp\_no\_tcap\_range@{find\_asp\_no\_tcap\_range}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{find\_asp\_no\_tcap\_range()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ find\+\_\+asp\+\_\+no\+\_\+tcap\+\_\+range (\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\+\_\+asp\+::enabled}, \textbf{ NULL}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+::tcap}.



Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}.

\label{ss7__as__loadshare__tcap_8c_aecaf1a049ad8d7fc1a09c59bde0b3068} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ipa\_rx\_msg\_osmo\_ext\_tcap\_routing@{ipa\_rx\_msg\_osmo\_ext\_tcap\_routing}}
\index{ipa\_rx\_msg\_osmo\_ext\_tcap\_routing@{ipa\_rx\_msg\_osmo\_ext\_tcap\_routing}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ipa\_rx\_msg\_osmo\_ext\_tcap\_routing()}
{\footnotesize\ttfamily int ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



Entrypoint for IPA TCAP Routing messages, parses and handles those. 


\begin{DoxyParams}{Parameters}
{\em asp} & \\
\hline
{\em msg} & the message buffer. Callee takes ownership! \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+ssn}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::enabled}, \textbf{ ipa\+\_\+find\+\_\+as\+\_\+for\+\_\+asp()}, \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+ack()}, \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+nack()}, \textbf{ LOGPASP}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr\+::mt}, \textbf{ MT\+\_\+\+TID\+\_\+\+ACK}, \textbf{ MT\+\_\+\+TID\+\_\+\+ADD\+\_\+\+RANGE}, \textbf{ MT\+\_\+\+TID\+\_\+\+NACK}, \textbf{ NACK\+\_\+\+ERR\+\_\+\+EALREADY}, \textbf{ NACK\+\_\+\+ERR\+\_\+\+SYS\+\_\+\+FAILURE}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::pc}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr\+::seq}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::tcap}, \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ TCAP\+\_\+\+PC\+\_\+\+WILDCARD}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, \textbf{ TCAP\+\_\+\+SSN\+\_\+\+WILDCARD}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::tid\+\_\+end}, and \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::tid\+\_\+start}.



Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg()}.

\label{ss7__as__loadshare__tcap_8c_ad38f62e1b9a6d39cedc503c3640d51f4} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ipa\_tcap\_routing\_alloc@{ipa\_tcap\_routing\_alloc}}
\index{ipa\_tcap\_routing\_alloc@{ipa\_tcap\_routing\_alloc}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ipa\_tcap\_routing\_alloc()}
{\footnotesize\ttfamily static struct msgb $\ast$ ipa\+\_\+tcap\+\_\+routing\+\_\+alloc (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{seq\+\_\+nr,  }\item[{uint8\+\_\+t}]{mt }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ mt}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr\+::mt}, and \textbf{ NULL}.



Referenced by \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+ack()}, and \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+nack()}.

\label{ss7__as__loadshare__tcap_8c_a139a10f6b6377aed2bccfa707c10391c} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ipa\_tx\_tcap\_routing\_ack@{ipa\_tx\_tcap\_routing\_ack}}
\index{ipa\_tx\_tcap\_routing\_ack@{ipa\_tx\_tcap\_routing\_ack}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ipa\_tx\_tcap\_routing\_ack()}
{\footnotesize\ttfamily static int ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{uint32\+\_\+t}]{seq\+\_\+nr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+alloc()}, \textbf{ MT\+\_\+\+TID\+\_\+\+ACK}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}.



Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing()}.

\label{ss7__as__loadshare__tcap_8c_a35784baa9e6e28308ba3a134286844f1} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ipa\_tx\_tcap\_routing\_nack@{ipa\_tx\_tcap\_routing\_nack}}
\index{ipa\_tx\_tcap\_routing\_nack@{ipa\_tx\_tcap\_routing\_nack}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ipa\_tx\_tcap\_routing\_nack()}
{\footnotesize\ttfamily static int ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+nack (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{uint32\+\_\+t}]{seq\+\_\+nr,  }\item[{uint8\+\_\+t}]{err\+\_\+code }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+alloc()}, \textbf{ MT\+\_\+\+TID\+\_\+\+NACK}, and \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}.



Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing()}.

\label{ss7__as__loadshare__tcap_8c_a53302ebe3aab9861167512c6f615ef27} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!parse\_tcap@{parse\_tcap}}
\index{parse\_tcap@{parse\_tcap}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{parse\_tcap()}
{\footnotesize\ttfamily static int parse\+\_\+tcap (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{len,  }\item[{struct \textbf{ tcap\+\_\+parsed} $\ast$}]{ids }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, \textbf{ tcap\+\_\+parsed\+::dtid}, \textbf{ DTID\+\_\+\+SET}, \textbf{ len}, \textbf{ LOGPAS}, \textbf{ tcap\+\_\+parsed\+::otid}, \textbf{ OTID\+\_\+\+SET}, \textbf{ tcap\+\_\+parsed\+::present}, and \textbf{ tcap\+\_\+id\+\_\+from\+\_\+octet\+\_\+str()}.



Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}, and \textbf{ ss7\+\_\+asp\+\_\+tcap\+\_\+rx\+\_\+sccp()}.

\label{ss7__as__loadshare__tcap_8c_af52f9ffd3f26a9fabd39f01b1833d780} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!sent\_back\_utds@{sent\_back\_utds}}
\index{sent\_back\_utds@{sent\_back\_utds}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{sent\_back\_utds()}
{\footnotesize\ttfamily static int sent\+\_\+back\+\_\+utds (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{old\+\_\+xua,  }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{old\+\_\+sua,  }\item[{uint8\+\_\+t}]{cause\+\_\+code }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data\+\_\+hdr\+\_\+from\+\_\+m3ua()}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ m3ua\+\_\+data\+\_\+hdr\+::dpc}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ m3ua\+\_\+hmdc\+\_\+rx\+\_\+from\+\_\+l2()}, \textbf{ m3ua\+\_\+xfer\+\_\+from\+\_\+data()}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ NULL}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ m3ua\+\_\+data\+\_\+hdr\+::opc}, \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDR}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDT}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CL}, \textbf{ SUA\+\_\+\+VERSION}, \textbf{ xua\+\_\+common\+\_\+hdr\+::version}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, \textbf{ xua\+\_\+msg\+\_\+copy\+\_\+part()}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32p()}.



Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}.

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



Entrypoint for M3\+UA messages towards the TCAP nodes. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em asp} & Result pointer of the selected asp. Set to NULL if return code is != 0 \\
\hline
\mbox{\texttt{ in}}  & {\em as} & \\
\hline
\mbox{\texttt{ in}}  & {\em xua} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success 
\end{DoxyReturn}


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

\label{ss7__as__loadshare__tcap_8c_a61d1c144c9941ab3d5fcd4beaf5c4ed3} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ss7\_asp\_tcap\_rx\_sccp@{ss7\_asp\_tcap\_rx\_sccp}}
\index{ss7\_asp\_tcap\_rx\_sccp@{ss7\_asp\_tcap\_rx\_sccp}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ss7\_asp\_tcap\_rx\_sccp()}
{\footnotesize\ttfamily int ss7\+\_\+asp\+\_\+tcap\+\_\+rx\+\_\+sccp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{uint32\+\_\+t}]{opc,  }\item[{uint32\+\_\+t}]{dpc,  }\item[{struct msgb $\ast$}]{sccp\+\_\+msg }\end{DoxyParamCaption})}



Traffic from the TCAP ASP -\/$>$ AS -\/$>$ osmo-\/stp, only used to update transaction tracking. 


\begin{DoxyParams}{Parameters}
{\em as} & \\
\hline
{\em asp} & asp sent the sccp\+\_\+msg message towards osmo-\/stp \\
\hline
{\em opc} & M3\+UA opc \\
\hline
{\em dpc} & M3\+UA DPC \\
\hline
{\em sccp\+\_\+msg} & pointer to a msg. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on successful handling, $<$ 0 on error cases (missing IE, decoding errors) 
\end{DoxyReturn}


References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ dpc}, \textbf{ tcap\+\_\+parsed\+::dtid}, \textbf{ DTID\+\_\+\+SET}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ LOGPAS}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ NULL}, \textbf{ opc}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}, \textbf{ tcap\+\_\+parsed\+::otid}, \textbf{ OTID\+\_\+\+SET}, \textbf{ parse\+\_\+tcap()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ tcap\+\_\+parsed\+::present}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ ssn\+\_\+contains\+\_\+tcap()}, \textbf{ sua\+\_\+addr\+\_\+parse()}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDT}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CL}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+continue()}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+create\+\_\+entry()}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+end()}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}.



Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+sccp()}.

\label{ss7__as__loadshare__tcap_8c_a20e6d734d9edfb7e44ae25e0de4c4631} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ssn\_contains\_tcap@{ssn\_contains\_tcap}}
\index{ssn\_contains\_tcap@{ssn\_contains\_tcap}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ssn\_contains\_tcap()}
{\footnotesize\ttfamily static bool ssn\+\_\+contains\+\_\+tcap (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{ssn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+AUC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+CAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+EIR}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+GGSN\+\_\+\+MAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+GMLC\+\_\+\+MAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+gsm\+SCF\+\_\+\+MAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+HLR}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+MAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+MSC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+SGSN\+\_\+\+MAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+SIWF\+\_\+\+MAP}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+TC\+\_\+\+TEST}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+VLR}, and \textbf{ ssn}.



Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}, and \textbf{ ss7\+\_\+asp\+\_\+tcap\+\_\+rx\+\_\+sccp()}.

\label{ss7__as__loadshare__tcap_8c_ae997685f3ef6bcb0fa0a6381c49f36dc} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_asp\_down@{tcap\_asp\_down}}
\index{tcap\_asp\_down@{tcap\_asp\_down}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_asp\_down()}
{\footnotesize\ttfamily void tcap\+\_\+asp\+\_\+down (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})}



Called when the ASP is going down or free\textquotesingle{}d. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em asp} & the asp which is going to be destroyed \\
\hline
\end{DoxyParams}


References \textbf{ \+\_\+tcap\+\_\+range\+\_\+asp\+\_\+down()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::enabled}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::enabled}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::inst}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \textbf{ LOGPASP}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::tcap}, and \textbf{ tcap\+\_\+range\+\_\+as\+\_\+update\+\_\+pc\+\_\+ssn()}.



Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+del\+\_\+asp()}, \textbf{ ss7\+\_\+asp\+\_\+xua\+\_\+srv\+\_\+conn\+\_\+closed\+\_\+cb()}, and \textbf{ xua\+\_\+cli\+\_\+close()}.

\label{ss7__as__loadshare__tcap_8c_a04f4d9a175722f22aac9572f9c9baa79} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_disable@{tcap\_disable}}
\index{tcap\_disable@{tcap\_disable}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_disable()}
{\footnotesize\ttfamily void tcap\+\_\+disable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::enabled}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+free\+\_\+all\+\_\+entries()}, and \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+garbage\+\_\+collect\+\_\+stop()}.



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

\label{ss7__as__loadshare__tcap_8c_a1cc1e1a23c01d06a5552c9b0398003b0} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_enable@{tcap\_enable}}
\index{tcap\_enable@{tcap\_enable}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_enable()}
{\footnotesize\ttfamily void tcap\+\_\+enable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::enabled}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, and \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+garbage\+\_\+collect\+\_\+start()}.



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

\label{ss7__as__loadshare__tcap_8c_a22eefaf2c61c37cc9d56605ba8655057} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_gen\_hash@{tcap\_gen\_hash}}
\index{tcap\_gen\_hash@{tcap\_gen\_hash}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_gen\_hash()}
{\footnotesize\ttfamily static uint32\+\_\+t tcap\+\_\+gen\+\_\+hash (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{pc,  }\item[{uint8\+\_\+t}]{ssn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ pc}, and \textbf{ ssn}.



Referenced by \textbf{ tcap\+\_\+gen\+\_\+hash\+\_\+addr()}, \textbf{ tcap\+\_\+hlist\+\_\+get()}, \textbf{ tcap\+\_\+overlap\+\_\+tid()}, and \textbf{ tcap\+\_\+range\+\_\+alloc()}.

\label{ss7__as__loadshare__tcap_8c_a2b66e48b2e0daa94a15f9811fc24c6d3} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_gen\_hash\_addr@{tcap\_gen\_hash\_addr}}
\index{tcap\_gen\_hash\_addr@{tcap\_gen\_hash\_addr}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_gen\_hash\_addr()}
{\footnotesize\ttfamily static uint64\+\_\+t tcap\+\_\+gen\+\_\+hash\+\_\+addr (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ ssn}, and \textbf{ tcap\+\_\+gen\+\_\+hash()}.

\label{ss7__as__loadshare__tcap_8c_aa175f2b55ec74a0936a17bb0d31cd4e1} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_hlist\_get@{tcap\_hlist\_get}}
\index{tcap\_hlist\_get@{tcap\_hlist\_get}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_hlist\_get()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ tcap\+\_\+hlist\+\_\+get (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{uint32\+\_\+t}]{pc,  }\item[{uint8\+\_\+t}]{ssn,  }\item[{uint32\+\_\+t}]{tid }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+asp\+::list}, \textbf{ NULL}, \textbf{ pc}, \textbf{ ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, and \textbf{ tcap\+\_\+range\+\_\+matches()}.



Referenced by \textbf{ find\+\_\+asp\+\_\+by\+\_\+tcap\+\_\+id()}.

\label{ss7__as__loadshare__tcap_8c_a0323064116fc4609d09c8f5ebfc2f893} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_id\_from\_octet\_str@{tcap\_id\_from\_octet\_str}}
\index{tcap\_id\_from\_octet\_str@{tcap\_id\_from\_octet\_str}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_id\_from\_octet\_str()}
{\footnotesize\ttfamily static uint32\+\_\+t tcap\+\_\+id\+\_\+from\+\_\+octet\+\_\+str (\begin{DoxyParamCaption}\item[{const OCTET\+\_\+\+STRING\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Referenced by \textbf{ parse\+\_\+tcap()}.

\label{ss7__as__loadshare__tcap_8c_a5861c90b1da5e6c76d3e4492b987ece3} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_overlap\_tid@{tcap\_overlap\_tid}}
\index{tcap\_overlap\_tid@{tcap\_overlap\_tid}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_overlap\_tid()}
{\footnotesize\ttfamily static struct tcap\+\_\+range $\ast$ tcap\+\_\+overlap\+\_\+tid (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{uint32\+\_\+t}]{pc,  }\item[{uint8\+\_\+t}]{ssn,  }\item[{uint32\+\_\+t}]{tid\+\_\+start,  }\item[{uint32\+\_\+t}]{tid\+\_\+end }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ NULL}, \textbf{ pc}, \textbf{ ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, \textbf{ tcap\+\_\+range\+\_\+overlaps()}, \textbf{ tid\+\_\+end}, and \textbf{ tid\+\_\+start}.



Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing()}.

\label{ss7__as__loadshare__tcap_8c_ab643244d59fec50d266f106caf31b9ca} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_range\_alloc@{tcap\_range\_alloc}}
\index{tcap\_range\_alloc@{tcap\_range\_alloc}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_range\_alloc()}
{\footnotesize\ttfamily struct tcap\+\_\+range $\ast$ tcap\+\_\+range\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp,  }\item[{uint32\+\_\+t}]{tid\+\_\+start,  }\item[{uint32\+\_\+t}]{tid\+\_\+end,  }\item[{uint32\+\_\+t}]{pc,  }\item[{uint8\+\_\+t}]{ssn }\end{DoxyParamCaption})}



Create and alloc a new TCAP range entry. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em as} & \\
\hline
\mbox{\texttt{ in}}  & {\em asp} & \\
\hline
\mbox{\texttt{ in}}  & {\em tid\+\_\+start} & \\
\hline
\mbox{\texttt{ in}}  & {\em tid\+\_\+end} & \\
\hline
\mbox{\texttt{ in}}  & {\em pc} & \\
\hline
\mbox{\texttt{ in}}  & {\em ssn} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the TCAP range entry or NULL 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+ss7\+\_\+as\+::list}, \textbf{ NULL}, \textbf{ pc}, \textbf{ ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, \textbf{ tid\+\_\+end}, and \textbf{ tid\+\_\+start}.



Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing()}.

\label{ss7__as__loadshare__tcap_8c_aac2391d320bdcec39e09cae1f1362c18} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_range\_as\_update\_pc\_ssn@{tcap\_range\_as\_update\_pc\_ssn}}
\index{tcap\_range\_as\_update\_pc\_ssn@{tcap\_range\_as\_update\_pc\_ssn}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_range\_as\_update\_pc\_ssn()}
{\footnotesize\ttfamily static void tcap\+\_\+range\+\_\+as\+\_\+update\+\_\+pc\+\_\+ssn (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+pc}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::contains\+\_\+ssn}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::tcap}, \textbf{ TCAP\+\_\+\+PC\+\_\+\+WILDCARD}, and \textbf{ TCAP\+\_\+\+SSN\+\_\+\+WILDCARD}.



Referenced by \textbf{ tcap\+\_\+asp\+\_\+down()}.

\label{ss7__as__loadshare__tcap_8c_ac0e210fb3d24794616e4e0ccaeea2929} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_range\_free@{tcap\_range\_free}}
\index{tcap\_range\_free@{tcap\_range\_free}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_range\_free()}
{\footnotesize\ttfamily void tcap\+\_\+range\+\_\+free (\begin{DoxyParamCaption}\item[{struct tcap\+\_\+range $\ast$}]{tcrng }\end{DoxyParamCaption})}



Remove and free a single TCAP range entry. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em tcrng} & \\
\hline
\end{DoxyParams}


Referenced by \textbf{ \+\_\+tcap\+\_\+range\+\_\+asp\+\_\+down()}.

\label{ss7__as__loadshare__tcap_8c_a96504b368fdaba977ee3f3af39e25b00} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_range\_matches@{tcap\_range\_matches}}
\index{tcap\_range\_matches@{tcap\_range\_matches}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_range\_matches()}
{\footnotesize\ttfamily bool tcap\+\_\+range\+\_\+matches (\begin{DoxyParamCaption}\item[{const struct tcap\+\_\+range $\ast$}]{tcrng,  }\item[{uint32\+\_\+t}]{tid }\end{DoxyParamCaption})}



Checks if a tid matches to a specific range. 


\begin{DoxyParams}{Parameters}
{\em tcrng} & \\
\hline
{\em tid} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if tid is included in the range 
\end{DoxyReturn}


Referenced by \textbf{ tcap\+\_\+hlist\+\_\+get()}, and \textbf{ tcap\+\_\+range\+\_\+overlaps()}.

\label{ss7__as__loadshare__tcap_8c_a2ff86506863f50d808dc264693c13dea} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tcap\_range\_overlaps@{tcap\_range\_overlaps}}
\index{tcap\_range\_overlaps@{tcap\_range\_overlaps}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tcap\_range\_overlaps()}
{\footnotesize\ttfamily bool tcap\+\_\+range\+\_\+overlaps (\begin{DoxyParamCaption}\item[{const struct tcap\+\_\+range $\ast$}]{a,  }\item[{uint32\+\_\+t}]{tid\+\_\+start,  }\item[{uint32\+\_\+t}]{tid\+\_\+end }\end{DoxyParamCaption})}



Checks if a tid rnage overlaps with another range. 


\begin{DoxyParams}{Parameters}
{\em a} & \\
\hline
{\em tid\+\_\+start} & \\
\hline
{\em tid\+\_\+end} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\end{DoxyReturn}


References \textbf{ tcap\+\_\+range\+\_\+matches()}, \textbf{ tid\+\_\+end}, and \textbf{ tid\+\_\+start}.



Referenced by \textbf{ tcap\+\_\+overlap\+\_\+tid()}.



\doxysubsection{Variable Documentation}
\label{ss7__as__loadshare__tcap_8c_ab0c873a3738c31ba573548faa50188bc} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!data@{data}}
\index{data@{data}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{data}
{\footnotesize\ttfamily uint8\+\_\+t data}



Referenced by \textbf{ conn\+\_\+tmr\+\_\+cb()}, \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as()}, \textbf{ int\+\_\+tmr\+\_\+cb()}, \textbf{ ipa\+\_\+asp\+\_\+allstate()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get()}, \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp()}, \textbf{ lm\+\_\+active()}, \textbf{ lm\+\_\+rkm\+\_\+reg()}, \textbf{ lm\+\_\+wait\+\_\+notify()}, \textbf{ load\+\_\+24be()}, \textbf{ m3ua\+\_\+xfer\+\_\+from\+\_\+data()}, \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt()}, \textbf{ msgb\+\_\+t16l16vp\+\_\+put()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+disconn\+\_\+data()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+ranap()}, \textbf{ parse\+\_\+tcap()}, \textbf{ rel\+\_\+tmr\+\_\+cb()}, \textbf{ rep\+\_\+rel\+\_\+tmr\+\_\+cb()}, \textbf{ rx\+\_\+inact\+\_\+tmr\+\_\+cb()}, \textbf{ sccp\+\_\+longptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ scoc\+\_\+fsm\+\_\+conn\+\_\+pend\+\_\+in()}, \textbf{ scoc\+\_\+fsm\+\_\+conn\+\_\+pend\+\_\+out()}, \textbf{ scoc\+\_\+fsm\+\_\+idle()}, \textbf{ scoc\+\_\+fsm\+\_\+wait\+\_\+conn\+\_\+conf()}, \textbf{ sua\+\_\+parse\+\_\+gt()}, \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+garbage\+\_\+collect\+\_\+cb()}, \textbf{ tx\+\_\+inact\+\_\+tmr\+\_\+cb()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+inactive()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending()}, \textbf{ xua\+\_\+asp\+\_\+allstate()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}, \textbf{ xua\+\_\+from\+\_\+msg()}, \textbf{ xua\+\_\+from\+\_\+msg\+\_\+common()}, and \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb()}.

\label{ss7__as__loadshare__tcap_8c_a4028993b4bc2c4b88683e7cffeb01429} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!err@{err}}
\index{err@{err}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{err}
{\footnotesize\ttfamily uint8\+\_\+t err}



Referenced by \textbf{ \+\_\+setsockopt\+\_\+peer\+\_\+primary\+\_\+addr()}, \textbf{ m3ua\+\_\+gen\+\_\+error\+\_\+msg()}, \textbf{ m3ua\+\_\+rx\+\_\+msg()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+parse()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+err()}, \textbf{ sua\+\_\+rx\+\_\+msg()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+err()}, and \textbf{ tcap\+\_\+trxn\+\_\+track\+\_\+create\+\_\+entry()}.

\label{ss7__as__loadshare__tcap_8c_a9ff2206afb13a8336a38b80bac7eb64a} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!mt@{mt}}
\index{mt@{mt}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{mt}
{\footnotesize\ttfamily uint8\+\_\+t mt}



Referenced by \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+alloc()}.

\label{ss7__as__loadshare__tcap_8c_afaa20335217fae16f0e22b466017dae1} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!pc@{pc}}
\index{pc@{pc}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{pc}
{\footnotesize\ttfamily uint32\+\_\+t pc}



Referenced by \textbf{ \+\_\+rout\+\_\+key()}, \textbf{ DEFUN()}, \textbf{ DEFUN()}, \textbf{ DEFUN()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ find\+\_\+asp\+\_\+by\+\_\+tcap\+\_\+id()}, \textbf{ format\+\_\+affected\+\_\+pcs\+\_\+c()}, \textbf{ gen\+\_\+hash()}, \textbf{ gen\+\_\+hash\+\_\+addr()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+find()}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+local()}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+valid()}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+normalize()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print2()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print\+\_\+buf()}, \textbf{ pc\+\_\+comp\+\_\+shift\+\_\+and\+\_\+mask()}, \textbf{ sccp\+\_\+scmg\+\_\+tx()}, \textbf{ sccp\+\_\+user\+\_\+alloc()}, \textbf{ sccp\+\_\+user\+\_\+bind\+\_\+pc()}, \textbf{ sccp\+\_\+user\+\_\+find()}, \textbf{ ss7\+\_\+combined\+\_\+linkset\+\_\+alloc()}, \textbf{ ss7\+\_\+linkset\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ ss7\+\_\+route\+\_\+alloc()}, \textbf{ ss7\+\_\+route\+\_\+create()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find\+\_\+or\+\_\+create\+\_\+combined\+\_\+linkset()}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, \textbf{ tcap\+\_\+gen\+\_\+hash\+\_\+addr()}, \textbf{ tcap\+\_\+hlist\+\_\+get()}, \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, \textbf{ tx\+\_\+daud\+\_\+pc()}, \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available\+\_\+to\+\_\+sccp()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+daud()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}, \textbf{ xua\+\_\+snm\+\_\+scon\+\_\+to\+\_\+sccp()}, \textbf{ xua\+\_\+snm\+\_\+srm\+\_\+pc\+\_\+available()}, and \textbf{ xua\+\_\+snm\+\_\+srm\+\_\+pc\+\_\+available\+\_\+single()}.

\label{ss7__as__loadshare__tcap_8c_aaf1b939170b82732448a965a5b33ad4e} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!seq@{seq}}
\index{seq@{seq}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{seq}
{\footnotesize\ttfamily uint32\+\_\+t seq}

\label{ss7__as__loadshare__tcap_8c_a69fe6cfeacf640032a3222345f3d6bf8} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!ssn@{ssn}}
\index{ssn@{ssn}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{ssn}
{\footnotesize\ttfamily uint8\+\_\+t ssn}



Referenced by \textbf{ \+\_\+rout\+\_\+key()}, \textbf{ DEFUN()}, \textbf{ find\+\_\+asp\+\_\+by\+\_\+tcap\+\_\+id()}, \textbf{ gen\+\_\+hash()}, \textbf{ gen\+\_\+hash\+\_\+addr()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+set\+\_\+ssn()}, \textbf{ osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+bind()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+find()}, \textbf{ sccp\+\_\+scmg\+\_\+rx\+\_\+ssn\+\_\+allowed()}, \textbf{ sccp\+\_\+scmg\+\_\+rx\+\_\+ssn\+\_\+prohibited()}, \textbf{ sccp\+\_\+scmg\+\_\+tx()}, \textbf{ sccp\+\_\+user\+\_\+alloc()}, \textbf{ sccp\+\_\+user\+\_\+bind\+\_\+pc()}, \textbf{ sccp\+\_\+user\+\_\+find()}, \textbf{ ssn\+\_\+contains\+\_\+tcap()}, \textbf{ sua\+\_\+encode\+\_\+daud()}, \textbf{ sua\+\_\+encode\+\_\+dava()}, \textbf{ sua\+\_\+encode\+\_\+duna()}, \textbf{ sua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, \textbf{ tcap\+\_\+gen\+\_\+hash\+\_\+addr()}, \textbf{ tcap\+\_\+hlist\+\_\+get()}, \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, and \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}.

\label{ss7__as__loadshare__tcap_8c_af89dc58f1c50b1fec1d263abca129b9f} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tid\_end@{tid\_end}}
\index{tid\_end@{tid\_end}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tid\_end}
{\footnotesize\ttfamily uint32\+\_\+t tid\+\_\+end}



Referenced by \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, and \textbf{ tcap\+\_\+range\+\_\+overlaps()}.

\label{ss7__as__loadshare__tcap_8c_a09293e754f0eb86bb2b031acd3501e14} 
\index{ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}!tid\_start@{tid\_start}}
\index{tid\_start@{tid\_start}!ss7\_as\_loadshare\_tcap.c@{ss7\_as\_loadshare\_tcap.c}}
\doxysubsubsection{tid\_start}
{\footnotesize\ttfamily uint32\+\_\+t tid\+\_\+start}



Referenced by \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, and \textbf{ tcap\+\_\+range\+\_\+overlaps()}.

