\doxysection{src/tcap\+\_\+as\+\_\+loadshare.c File Reference} \label{tcap__as__loadshare_8c}\index{src/tcap\_as\_loadshare.c@{src/tcap\_as\_loadshare.c}} {\ttfamily \#include $<$errno.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/bit32gen.\+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/rate\+\_\+ctr.\+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 $<$osmocom/tcap/tcap.\+h$>$}\newline {\ttfamily \#include \char`\"{}mtp3\+\_\+hmrt.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+as.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+asp.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+vty.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}tcap\+\_\+as\+\_\+loadshare.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}tcap\+\_\+trans\+\_\+tracking.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline \doxysubsection*{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} \doxysubsection*{Macros} \begin{DoxyCompactItemize} \item \#define \textbf{ OTID\+\_\+\+SET}~1 $<$$<$ 0 \item \#define \textbf{ DTID\+\_\+\+SET}~1 $<$$<$ 1 \end{DoxyCompactItemize} \doxysubsection*{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} \doxysubsection*{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} (const 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{ tcap\+\_\+as\+\_\+asp\+\_\+find\+\_\+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 \textbf{ 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{ tcap\+\_\+as\+\_\+rx\+\_\+sccp\+\_\+asp} (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{ send\+\_\+back\+\_\+udts} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$orig\+\_\+mtp, const struct \textbf{ xua\+\_\+msg} $\ast$orig\+\_\+sua, uint8\+\_\+t cause\+\_\+code) \begin{DoxyCompactList}\small\item\em Send UDTS to indicate that the originating UDT could not be delivered to its destination. \end{DoxyCompactList}\item static int \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$$\ast$rasp, struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$mtp, 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{ tcap\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$$\ast$asp, struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, const 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 static void \textbf{ tcap\+\_\+range\+\_\+as\+\_\+update\+\_\+pc\+\_\+ssn} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as) \item struct \textbf{ 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 \textbf{ tcap\+\_\+range} $\ast$tcrng) \begin{DoxyCompactList}\small\item\em Remove and free a single TCAP range entry. \end{DoxyCompactList}\item bool \textbf{ tcap\+\_\+range\+\_\+matches} (const struct \textbf{ 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 \textbf{ 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 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\+\_\+as\+\_\+del\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp) \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} \doxysubsection*{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} \mbox{\label{tcap__as__loadshare_8c_a349a140fe55ed86b0497651f3fe7d858}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!DTID\_SET@{DTID\_SET}} \index{DTID\_SET@{DTID\_SET}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{DTID\_SET} {\footnotesize\ttfamily \#define DTID\+\_\+\+SET~1 $<$$<$ 1} \mbox{\label{tcap__as__loadshare_8c_aabea942d4d033cfb031216ebced5b032}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!OTID\_SET@{OTID\_SET}} \index{OTID\_SET@{OTID\_SET}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{OTID\_SET} {\footnotesize\ttfamily \#define OTID\+\_\+\+SET~1 $<$$<$ 0} \doxysubsection{Enumeration Type Documentation} \mbox{\label{tcap__as__loadshare_8c_a50f05d3490e4b716d11533e93f3c1e1c}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ipa\_tcap\_routing\_msg\_types@{ipa\_tcap\_routing\_msg\_types}} \index{ipa\_tcap\_routing\_msg\_types@{ipa\_tcap\_routing\_msg\_types}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}}\index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!MT\_TID\_ADD\_RANGE@{MT\_TID\_ADD\_RANGE}}}\mbox{\label{tcap__as__loadshare_8c_a50f05d3490e4b716d11533e93f3c1e1ca80e760b63d95983d0f7d1049cbd3c2cf}} MT\+\_\+\+TID\+\_\+\+ADD\+\_\+\+RANGE&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{MT\_TID\_ACK@{MT\_TID\_ACK}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}}\index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!MT\_TID\_ACK@{MT\_TID\_ACK}}}\mbox{\label{tcap__as__loadshare_8c_a50f05d3490e4b716d11533e93f3c1e1caa3e2801f351c84d837765ab740c87d29}} MT\+\_\+\+TID\+\_\+\+ACK&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{MT\_TID\_NACK@{MT\_TID\_NACK}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}}\index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!MT\_TID\_NACK@{MT\_TID\_NACK}}}\mbox{\label{tcap__as__loadshare_8c_a50f05d3490e4b716d11533e93f3c1e1ca50d9082bb600b24568062f911b19dbcd}} MT\+\_\+\+TID\+\_\+\+NACK&\\ \hline \end{DoxyEnumFields} \mbox{\label{tcap__as__loadshare_8c_acc8a4c926265cd8b2b1f88b1783e0005}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ipa\_tcap\_routing\_nack\_error@{ipa\_tcap\_routing\_nack\_error}} \index{ipa\_tcap\_routing\_nack\_error@{ipa\_tcap\_routing\_nack\_error}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}}\index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!NACK\_ERR\_SYS\_FAILURE@{NACK\_ERR\_SYS\_FAILURE}}}\mbox{\label{tcap__as__loadshare_8c_acc8a4c926265cd8b2b1f88b1783e0005a473e6d69c5e07521520ce5d56257cd4e}} NACK\+\_\+\+ERR\+\_\+\+SYS\+\_\+\+FAILURE&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{NACK\_ERR\_EALREADY@{NACK\_ERR\_EALREADY}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}}\index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!NACK\_ERR\_EALREADY@{NACK\_ERR\_EALREADY}}}\mbox{\label{tcap__as__loadshare_8c_acc8a4c926265cd8b2b1f88b1783e0005ac324cacf310f2470ec4de673861900cb}} NACK\+\_\+\+ERR\+\_\+\+EALREADY&\\ \hline \end{DoxyEnumFields} \doxysubsection{Function Documentation} \mbox{\label{tcap__as__loadshare_8c_a9e1e6f338fa7f5fb08779b084c9b8ebf}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!\_\_attribute\_\_@{\_\_attribute\_\_}} \index{\_\_attribute\_\_@{\_\_attribute\_\_}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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{ 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{ xua\+\_\+msg\+::mtp}, \textbf{ MTP\+\_\+\+SI\+\_\+\+SCCP}, \textbf{ NULL}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sio}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}. \mbox{\label{tcap__as__loadshare_8c_ac90e0a52014ab8d3f303b80da068ac9a}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!\_tcap\_range\_asp\_down@{\_tcap\_range\_asp\_down}} \index{\_tcap\_range\_asp\_down@{\_tcap\_range\_asp\_down}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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{ tcap\+\_\+range\+::asp}, \textbf{ tcap\+\_\+range\+\_\+free()}, and \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+entries\+\_\+free\+\_\+by\+\_\+asp()}. Referenced by \textbf{ tcap\+\_\+as\+\_\+del\+\_\+asp()}. \mbox{\label{tcap__as__loadshare_8c_a35bc8f40a10ed7f243a2879a0c87e0ec}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!asp\_loadshare\_tcap\_sccp@{asp\_loadshare\_tcap\_sccp}} \index{asp\_loadshare\_tcap\_sccp@{asp\_loadshare\_tcap\_sccp}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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[{const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$}]{mtp, }\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 mtp} & MTP routing information \\ \hline \mbox{\texttt{ in}} & {\em sccp\+\_\+msg} & the SCCP message. Callee takes ownership. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0\+: on succcess (msg handled by the callee), -\/EPROTONOSUPPORT\+: let caller (regular loadsharing) handle those. \end{DoxyReturn} References \textbf{ osmo\+\_\+ss7\+\_\+as\+::ctrg}, \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ tcap\+\_\+parsed\+::dtid}, \textbf{ DTID\+\_\+\+SET}, \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{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::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{ send\+\_\+back\+\_\+udts()}, \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\+\_\+as\+\_\+asp\+\_\+find\+\_\+by\+\_\+tcap\+\_\+id()}, \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+begin()}, \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+continue()}, \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+end()}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+free()}. Referenced by \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+()}. \mbox{\label{tcap__as__loadshare_8c_ada752806b6dfb13697edf6a80fe26cbd}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!find\_asp\_no\_tcap\_range@{find\_asp\_no\_tcap\_range}} \index{find\_asp\_no\_tcap\_range@{find\_asp\_no\_tcap\_range}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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}, and \textbf{ NULL}. Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}. \mbox{\label{tcap__as__loadshare_8c_aecaf1a049ad8d7fc1a09c59bde0b3068}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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. It is kept owned by the caller. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 on success \end{DoxyReturn} References \textbf{ tcap\+\_\+range\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::cfg}, \textbf{ cs7\+\_\+role}, \textbf{ CS7\+\_\+\+ROLE\+\_\+\+SG}, \textbf{ ipa\+\_\+find\+\_\+as\+\_\+for\+\_\+asp()}, \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+ack()}, \textbf{ ipa\+\_\+tx\+\_\+tcap\+\_\+routing\+\_\+nack()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::loadshare}, \textbf{ LOGPASP}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::mode}, \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{ osmo\+\_\+ss7\+\_\+as\+::name}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::name}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+LOADSHARE}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode\+\_\+name()}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::pc}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+hdr\+::seq}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::ssn}, \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ TCAP\+\_\+\+PC\+\_\+\+WILDCARD}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, \textbf{ TCAP\+\_\+\+SSN\+\_\+\+WILDCARD}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::tid\+\_\+end}, \textbf{ tcap\+\_\+range\+::tid\+\_\+end}, \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+add\+\_\+range\+::tid\+\_\+start}, and \textbf{ tcap\+\_\+range\+::tid\+\_\+start}. Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg()}. \mbox{\label{tcap__as__loadshare_8c_ad38f62e1b9a6d39cedc503c3640d51f4}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ipa\_tcap\_routing\_alloc@{ipa\_tcap\_routing\_alloc}} \index{ipa\_tcap\_routing\_alloc@{ipa\_tcap\_routing\_alloc}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a139a10f6b6377aed2bccfa707c10391c}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ipa\_tx\_tcap\_routing\_ack@{ipa\_tx\_tcap\_routing\_ack}} \index{ipa\_tx\_tcap\_routing\_ack@{ipa\_tx\_tcap\_routing\_ack}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a35784baa9e6e28308ba3a134286844f1}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ipa\_tx\_tcap\_routing\_nack@{ipa\_tx\_tcap\_routing\_nack}} \index{ipa\_tx\_tcap\_routing\_nack@{ipa\_tx\_tcap\_routing\_nack}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a53302ebe3aab9861167512c6f615ef27}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!parse\_tcap@{parse\_tcap}} \index{parse\_tcap@{parse\_tcap}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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{ tcap\+\_\+as\+\_\+rx\+\_\+sccp\+\_\+asp()}. \mbox{\label{tcap__as__loadshare_8c_abef5404cd62a5ed574d25a39b5d317b7}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!send\_back\_udts@{send\_back\_udts}} \index{send\_back\_udts@{send\_back\_udts}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{send\_back\_udts()} {\footnotesize\ttfamily static int send\+\_\+back\+\_\+udts (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as, }\item[{const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$}]{orig\+\_\+mtp, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{orig\+\_\+sua, }\item[{uint8\+\_\+t}]{cause\+\_\+code }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Send UDTS to indicate that the originating UDT could not be delivered to its destination. \begin{DoxyParams}{Parameters} {\em as} & \\ \hline {\em orig\+\_\+mtp} & MTP routing information of the originating message (message that could not be delivered) \\ \hline {\em orig\+\_\+sua} & Originating message that could not be delivered \\ \hline {\em cause\+\_\+code} & the return cause of the UDTS \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 on success, negative on error \end{DoxyReturn} References \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ osmo\+\_\+ss7\+\_\+as\+::inst}, \textbf{ LOGPAS}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ mtp3\+\_\+hmrt\+\_\+mtp\+\_\+xfer\+\_\+request\+\_\+l4\+\_\+to\+\_\+l3()}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDT}, \textbf{ sua\+\_\+gen\+\_\+cldr()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CL}, \textbf{ xua\+\_\+dialect\+\_\+sua}, \textbf{ xua\+\_\+msg\+\_\+dump()}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, \textbf{ xua\+\_\+msg\+\_\+free()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32p()}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32()}. Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}. \mbox{\label{tcap__as__loadshare_8c_a20e6d734d9edfb7e44ae25e0de4c4631}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ssn\_contains\_tcap@{ssn\_contains\_tcap}} \index{ssn\_contains\_tcap@{ssn\_contains\_tcap}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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{ tcap\+\_\+as\+\_\+rx\+\_\+sccp\+\_\+asp()}. \mbox{\label{tcap__as__loadshare_8c_a5b9a86c4809a8ea28225a1101f23c158}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_as\_asp\_find\_by\_tcap\_id@{tcap\_as\_asp\_find\_by\_tcap\_id}} \index{tcap\_as\_asp\_find\_by\_tcap\_id@{tcap\_as\_asp\_find\_by\_tcap\_id}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_as\_asp\_find\_by\_tcap\_id()} {\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ tcap\+\_\+as\+\_\+asp\+\_\+find\+\_\+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{ 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{ tcap\+\_\+hlist\+\_\+get()}, \textbf{ TCAP\+\_\+\+PC\+\_\+\+WILDCARD}, and \textbf{ TCAP\+\_\+\+SSN\+\_\+\+WILDCARD}. Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}. \mbox{\label{tcap__as__loadshare_8c_aec60e38ceb0b16dc6a8e9b9561f9e5c7}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_as\_del\_asp@{tcap\_as\_del\_asp}} \index{tcap\_as\_del\_asp@{tcap\_as\_del\_asp}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_as\_del\_asp()} {\footnotesize\ttfamily void tcap\+\_\+as\+\_\+del\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as, }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})} References \textbf{ \+\_\+tcap\+\_\+range\+\_\+asp\+\_\+down()}, and \textbf{ tcap\+\_\+range\+\_\+as\+\_\+update\+\_\+pc\+\_\+ssn()}. Referenced by \textbf{ common\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()}, and \textbf{ ss7\+\_\+as\+\_\+del\+\_\+asp()}. \mbox{\label{tcap__as__loadshare_8c_a2090314e36156ae8f7903db34d2926cb}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_as\_rx\_sccp\_asp@{tcap\_as\_rx\_sccp\_asp}} \index{tcap\_as\_rx\_sccp\_asp@{tcap\_as\_rx\_sccp\_asp}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_as\_rx\_sccp\_asp()} {\footnotesize\ttfamily int tcap\+\_\+as\+\_\+rx\+\_\+sccp\+\_\+asp (\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\+\_\+trans\+\_\+track\+\_\+continue()}, \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+end()}, \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+entry\+\_\+create()}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}. Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+up()}. \mbox{\label{tcap__as__loadshare_8c_a34aad551a7344d6cfdd623d84613522b}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_as\_select\_asp\_loadshare@{tcap\_as\_select\_asp\_loadshare}} \index{tcap\_as\_select\_asp\_loadshare@{tcap\_as\_select\_asp\_loadshare}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_as\_select\_asp\_loadshare()} {\footnotesize\ttfamily int tcap\+\_\+as\+\_\+select\+\_\+asp\+\_\+loadshare (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$$\ast$}]{asp, }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as, }\item[{const 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 succcess (msg handled by the callee), -\/EPROTONOSUPPORT\+: let caller (regular loadsharing) handle those. \end{DoxyReturn} Referenced by \textbf{ ss7\+\_\+as\+\_\+select\+\_\+asp()}. \mbox{\label{tcap__as__loadshare_8c_a04f4d9a175722f22aac9572f9c9baa79}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_disable@{tcap\_disable}} \index{tcap\_disable@{tcap\_disable}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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\+::loadshare}, \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+entries\+\_\+free\+\_\+all()}, and \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+garbage\+\_\+collect\+\_\+stop()}. Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+destroy()}. \mbox{\label{tcap__as__loadshare_8c_a1cc1e1a23c01d06a5552c9b0398003b0}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_enable@{tcap\_enable}} \index{tcap\_enable@{tcap\_enable}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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\+::loadshare}, and \textbf{ tcap\+\_\+trans\+\_\+track\+\_\+garbage\+\_\+collect\+\_\+start()}. \mbox{\label{tcap__as__loadshare_8c_a22eefaf2c61c37cc9d56605ba8655057}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_gen\_hash@{tcap\_gen\_hash}} \index{tcap\_gen\_hash@{tcap\_gen\_hash}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a2b66e48b2e0daa94a15f9811fc24c6d3}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_gen\_hash\_addr@{tcap\_gen\_hash\_addr}} \index{tcap\_gen\_hash\_addr@{tcap\_gen\_hash\_addr}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a1d4225a7795f4c2285d01903177cdff4}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_hlist\_get@{tcap\_hlist\_get}} \index{tcap\_hlist\_get@{tcap\_hlist\_get}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_hlist\_get()} {\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ tcap\+\_\+hlist\+\_\+get (\begin{DoxyParamCaption}\item[{const 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{ tcap\+\_\+range\+::asp}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+::list}, \textbf{ NULL}, \textbf{ pc}, \textbf{ tcap\+\_\+range\+::pc}, \textbf{ ssn}, \textbf{ tcap\+\_\+range\+::ssn}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, and \textbf{ tcap\+\_\+range\+\_\+matches()}. Referenced by \textbf{ tcap\+\_\+as\+\_\+asp\+\_\+find\+\_\+by\+\_\+tcap\+\_\+id()}. \mbox{\label{tcap__as__loadshare_8c_a0323064116fc4609d09c8f5ebfc2f893}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_id\_from\_octet\_str@{tcap\_id\_from\_octet\_str}} \index{tcap\_id\_from\_octet\_str@{tcap\_id\_from\_octet\_str}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a5861c90b1da5e6c76d3e4492b987ece3}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_overlap\_tid@{tcap\_overlap\_tid}} \index{tcap\_overlap\_tid@{tcap\_overlap\_tid}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_overlap\_tid()} {\footnotesize\ttfamily static struct \textbf{ 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{ tcap\+\_\+range\+::list}, \textbf{ NULL}, \textbf{ pc}, \textbf{ tcap\+\_\+range\+::pc}, \textbf{ ssn}, \textbf{ tcap\+\_\+range\+::ssn}, \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()}. \mbox{\label{tcap__as__loadshare_8c_ab643244d59fec50d266f106caf31b9ca}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_range\_alloc@{tcap\_range\_alloc}} \index{tcap\_range\_alloc@{tcap\_range\_alloc}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_range\_alloc()} {\footnotesize\ttfamily struct \textbf{ 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{ tcap\+\_\+range\+::asp}, \textbf{ tcap\+\_\+range\+::list}, \textbf{ NULL}, \textbf{ pc}, \textbf{ tcap\+\_\+range\+::pc}, \textbf{ ssn}, \textbf{ tcap\+\_\+range\+::ssn}, \textbf{ tcap\+\_\+gen\+\_\+hash()}, \textbf{ tid\+\_\+end}, \textbf{ tcap\+\_\+range\+::tid\+\_\+end}, \textbf{ tid\+\_\+start}, and \textbf{ tcap\+\_\+range\+::tid\+\_\+start}. Referenced by \textbf{ ipa\+\_\+rx\+\_\+msg\+\_\+osmo\+\_\+ext\+\_\+tcap\+\_\+routing()}. \mbox{\label{tcap__as__loadshare_8c_aac2391d320bdcec39e09cae1f1362c18}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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{ tcap\+\_\+range\+::pc}, \textbf{ tcap\+\_\+range\+::ssn}, \textbf{ TCAP\+\_\+\+PC\+\_\+\+WILDCARD}, and \textbf{ TCAP\+\_\+\+SSN\+\_\+\+WILDCARD}. Referenced by \textbf{ tcap\+\_\+as\+\_\+del\+\_\+asp()}. \mbox{\label{tcap__as__loadshare_8c_ac0e210fb3d24794616e4e0ccaeea2929}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_range\_free@{tcap\_range\_free}} \index{tcap\_range\_free@{tcap\_range\_free}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_range\_free()} {\footnotesize\ttfamily void tcap\+\_\+range\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ 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} References \textbf{ tcap\+\_\+range\+::list}. Referenced by \textbf{ \+\_\+tcap\+\_\+range\+\_\+asp\+\_\+down()}. \mbox{\label{tcap__as__loadshare_8c_a96504b368fdaba977ee3f3af39e25b00}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_range\_matches@{tcap\_range\_matches}} \index{tcap\_range\_matches@{tcap\_range\_matches}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_range\_matches()} {\footnotesize\ttfamily bool tcap\+\_\+range\+\_\+matches (\begin{DoxyParamCaption}\item[{const struct \textbf{ 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} References \textbf{ tcap\+\_\+range\+::tid\+\_\+end}, and \textbf{ tcap\+\_\+range\+::tid\+\_\+start}. Referenced by \textbf{ tcap\+\_\+hlist\+\_\+get()}, and \textbf{ tcap\+\_\+range\+\_\+overlaps()}. \mbox{\label{tcap__as__loadshare_8c_a2ff86506863f50d808dc264693c13dea}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tcap\_range\_overlaps@{tcap\_range\_overlaps}} \index{tcap\_range\_overlaps@{tcap\_range\_overlaps}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tcap\_range\_overlaps()} {\footnotesize\ttfamily bool tcap\+\_\+range\+\_\+overlaps (\begin{DoxyParamCaption}\item[{const struct \textbf{ 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}, \textbf{ tcap\+\_\+range\+::tid\+\_\+end}, \textbf{ tid\+\_\+start}, and \textbf{ tcap\+\_\+range\+::tid\+\_\+start}. Referenced by \textbf{ tcap\+\_\+overlap\+\_\+tid()}. \doxysubsection{Variable Documentation} \mbox{\label{tcap__as__loadshare_8c_ab0c873a3738c31ba573548faa50188bc}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!data@{data}} \index{data@{data}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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\+\_\+trans\+\_\+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()}. \mbox{\label{tcap__as__loadshare_8c_a4028993b4bc2c4b88683e7cffeb01429}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!err@{err}} \index{err@{err}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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\+\_\+trans\+\_\+track\+\_\+entry\+\_\+create()}. \mbox{\label{tcap__as__loadshare_8c_a9ff2206afb13a8336a38b80bac7eb64a}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!mt@{mt}} \index{mt@{mt}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{mt} {\footnotesize\ttfamily uint8\+\_\+t mt} Referenced by \textbf{ ipa\+\_\+tcap\+\_\+routing\+\_\+alloc()}. \mbox{\label{tcap__as__loadshare_8c_afaa20335217fae16f0e22b466017dae1}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!pc@{pc}} \index{pc@{pc}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{pc} {\footnotesize\ttfamily uint32\+\_\+t pc} Referenced by \textbf{ \+\_\+rout\+\_\+key()}, \textbf{ DEFUN()}, \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ format\+\_\+affected\+\_\+pcs\+\_\+c()}, \textbf{ gen\+\_\+hash()}, \textbf{ gen\+\_\+hash\+\_\+addr()}, \textbf{ mtp\+\_\+pause\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}, \textbf{ mtp\+\_\+prim\+\_\+pause\+\_\+ind\+\_\+alloc()}, \textbf{ mtp\+\_\+prim\+\_\+resume\+\_\+ind\+\_\+alloc()}, \textbf{ mtp\+\_\+resume\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}, \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\+\_\+as\+\_\+asp\+\_\+find\+\_\+by\+\_\+tcap\+\_\+id()}, \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\+\_\+mtp\+\_\+users()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+daud()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}, \textbf{ xua\+\_\+snm\+\_\+scon\+\_\+to\+\_\+mtp\+\_\+users()}, \textbf{ xua\+\_\+snm\+\_\+srm\+\_\+pc\+\_\+available()}, and \textbf{ xua\+\_\+snm\+\_\+srm\+\_\+pc\+\_\+available\+\_\+single()}. \mbox{\label{tcap__as__loadshare_8c_aaf1b939170b82732448a965a5b33ad4e}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!seq@{seq}} \index{seq@{seq}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{seq} {\footnotesize\ttfamily uint32\+\_\+t seq} \mbox{\label{tcap__as__loadshare_8c_a69fe6cfeacf640032a3222345f3d6bf8}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!ssn@{ssn}} \index{ssn@{ssn}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{ssn} {\footnotesize\ttfamily uint8\+\_\+t ssn} Referenced by \textbf{ \+\_\+rout\+\_\+key()}, \textbf{ DEFUN()}, \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\+\_\+as\+\_\+asp\+\_\+find\+\_\+by\+\_\+tcap\+\_\+id()}, \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()}. \mbox{\label{tcap__as__loadshare_8c_af89dc58f1c50b1fec1d263abca129b9f}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tid\_end@{tid\_end}} \index{tid\_end@{tid\_end}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.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()}. \mbox{\label{tcap__as__loadshare_8c_a09293e754f0eb86bb2b031acd3501e14}} \index{tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}!tid\_start@{tid\_start}} \index{tid\_start@{tid\_start}!tcap\_as\_loadshare.c@{tcap\_as\_loadshare.c}} \doxysubsubsection{tid\_start} {\footnotesize\ttfamily uint32\+\_\+t tid\+\_\+start} Referenced by \textbf{ DEFUN()}, \textbf{ tcap\+\_\+overlap\+\_\+tid()}, \textbf{ tcap\+\_\+range\+\_\+alloc()}, and \textbf{ tcap\+\_\+range\+\_\+overlaps()}.