\section{src/sua.c File Reference} \label{sua_8c}\index{src/sua.\+c@{src/sua.\+c}} {\ttfamily \#include $<$stdint.\+h$>$}\newline {\ttfamily \#include $<$errno.\+h$>$}\newline {\ttfamily \#include $<$unistd.\+h$>$}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/write\+\_\+queue.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/socket.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/stream.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/xua\+\_\+msg.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/mtp.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline {\ttfamily \#include \char`\"{}xua\+\_\+as\+\_\+fsm.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+asp\+\_\+fsm.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline \subsection*{Macros} \begin{DoxyCompactItemize} \item \#define \textbf{ C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER}~( 1 $\ast$ 60 $\ast$ 100) \item \#define \textbf{ T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER}~( 7 $\ast$ 60 $\ast$ 100) /$\ast$ R\+FC 3868 Ch. 8. $\ast$/ \item \#define \textbf{ R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER}~(15 $\ast$ 60 $\ast$ 100) /$\ast$ R\+FC 3868 Ch. 8. $\ast$/ \item \#define \textbf{ R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER}~( 10 $\ast$ 100) \item \#define \textbf{ R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER}~( 10 $\ast$ 100) \item \#define \textbf{ I\+N\+T\+\_\+\+T\+I\+M\+ER}~( 1 $\ast$ 60 $\ast$ 100) \item \#define \textbf{ G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER}~(23 $\ast$ 60 $\ast$ 100) \item \#define \textbf{ R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER}~( 10 $\ast$ 100) \item \#define \textbf{ S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}~2048 \item \#define \textbf{ S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM}~512 \item \#define \textbf{ M\+A\+N\+D\+\_\+\+I\+ES}(msgt, ies)~[msgt] = (ies) \end{DoxyCompactItemize} \subsection*{Functions} \begin{DoxyCompactItemize} \item struct msgb $\ast$ \textbf{ sccp\+\_\+msgb\+\_\+alloc} (const char $\ast$name) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sua\+\_\+gen\+\_\+error} (uint32\+\_\+t err\+\_\+code) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sua\+\_\+gen\+\_\+error\+\_\+msg} (uint32\+\_\+t err\+\_\+code, struct msgb $\ast$msg) \item static struct msgb $\ast$ \textbf{ sua\+\_\+to\+\_\+msg} (struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+tx\+\_\+xua\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item int \textbf{ sua\+\_\+tx\+\_\+xua\+\_\+as} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ xua\+\_\+msg} $\ast$xua) \begin{DoxyCompactList}\small\item\em Send a given x\+UA message via a given S\+UA Application Server. \end{DoxyCompactList}\item int \textbf{ sua\+\_\+parse\+\_\+gt} (struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$gt, const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int datalen) \begin{DoxyCompactList}\small\item\em Decode S\+UA Global Title according to R\+F\+C3868 Section 3.\+10.\+2.\+3. \end{DoxyCompactList}\item int \textbf{ sua\+\_\+addr\+\_\+parse\+\_\+part} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$out, const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$param) \begin{DoxyCompactList}\small\item\em parse S\+C\+CP address from given x\+UA message part \end{DoxyCompactList}\item int \textbf{ sua\+\_\+addr\+\_\+parse} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$out, struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei) \begin{DoxyCompactList}\small\item\em parse S\+C\+CP address from given x\+UA message IE \end{DoxyCompactList}\item static int \textbf{ sua\+\_\+rx\+\_\+cl} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+co} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+mgmt\+\_\+err} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+mgmt} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+snm} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item int \textbf{ sua\+\_\+rx\+\_\+msg} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct msgb $\ast$msg) \begin{DoxyCompactList}\small\item\em process S\+UA message received from socket \end{DoxyCompactList}\item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sua\+\_\+encode\+\_\+duna} (const uint32\+\_\+t $\ast$rctx, unsigned int num\+\_\+rctx, const uint32\+\_\+t $\ast$aff\+\_\+pc, unsigned int num\+\_\+aff\+\_\+pc, const uint32\+\_\+t $\ast$ssn, const uint32\+\_\+t $\ast$\textbf{ smi}, const char $\ast$info\+\_\+string) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sua\+\_\+encode\+\_\+dava} (const uint32\+\_\+t $\ast$rctx, unsigned int num\+\_\+rctx, const uint32\+\_\+t $\ast$aff\+\_\+pc, unsigned int num\+\_\+aff\+\_\+pc, const uint32\+\_\+t $\ast$ssn, const uint32\+\_\+t $\ast$\textbf{ smi}, const char $\ast$info\+\_\+string) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sua\+\_\+encode\+\_\+dupu} (const uint32\+\_\+t $\ast$rctx, unsigned int num\+\_\+rctx, uint32\+\_\+t \textbf{ dpc}, uint16\+\_\+t user, uint16\+\_\+t cause, const char $\ast$info\+\_\+string) \item void \textbf{ sua\+\_\+tx\+\_\+snm\+\_\+available} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, const uint32\+\_\+t $\ast$rctx, unsigned int num\+\_\+rctx, const uint32\+\_\+t $\ast$aff\+\_\+pc, unsigned int num\+\_\+aff\+\_\+pc, const uint32\+\_\+t $\ast$aff\+\_\+ssn, const uint32\+\_\+t $\ast$\textbf{ smi}, const char $\ast$info\+\_\+string, bool available) \begin{DoxyCompactList}\small\item\em Transmit S\+S\+NM D\+U\+N\+A/\+D\+A\+VA message indicating [un]availability of certain point code[s]. \end{DoxyCompactList}\item void \textbf{ sua\+\_\+tx\+\_\+snm\+\_\+congestion} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, const uint32\+\_\+t $\ast$rctx, unsigned int num\+\_\+rctx, const uint32\+\_\+t $\ast$aff\+\_\+pc, unsigned int num\+\_\+aff\+\_\+pc, const uint32\+\_\+t $\ast$ssn, const uint8\+\_\+t cong\+\_\+level, const char $\ast$info\+\_\+string) \begin{DoxyCompactList}\small\item\em Transmit S\+S\+NM S\+C\+ON message indicating congestion. \end{DoxyCompactList}\item void \textbf{ sua\+\_\+tx\+\_\+dupu} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, const uint32\+\_\+t $\ast$rctx, unsigned int num\+\_\+rctx, uint32\+\_\+t \textbf{ dpc}, uint16\+\_\+t user, uint16\+\_\+t cause, const char $\ast$info\+\_\+str) \begin{DoxyCompactList}\small\item\em Transmit S\+S\+NM D\+U\+PU message indicating user unavailability. \end{DoxyCompactList}\item static int \textbf{ sua\+\_\+rx\+\_\+snm\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+rx\+\_\+snm\+\_\+sg} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ xua\+\_\+msg} $\ast$xua) \end{DoxyCompactItemize} \subsection*{Variables} \begin{DoxyCompactItemize} \item static const struct value\+\_\+string \textbf{ sua\+\_\+iei\+\_\+names} [$\,$] \item static const uint16\+\_\+t \textbf{ cldt\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ cldr\+\_\+mand\+\_\+ies} [$\,$] \item static const struct value\+\_\+string \textbf{ sua\+\_\+cl\+\_\+msgt\+\_\+names} [$\,$] \item static const struct \textbf{ xua\+\_\+msg\+\_\+class} \textbf{ msg\+\_\+class\+\_\+cl} \item static const uint16\+\_\+t \textbf{ codt\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ coda\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ core\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ coak\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ coref\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ relre\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ relco\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ resre\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ resco\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ coerr\+\_\+mand\+\_\+ies} [$\,$] \item static const uint16\+\_\+t \textbf{ coit\+\_\+mand\+\_\+ies} [$\,$] \item static const struct value\+\_\+string \textbf{ sua\+\_\+co\+\_\+msgt\+\_\+names} [$\,$] \item static const struct \textbf{ xua\+\_\+msg\+\_\+class} \textbf{ msg\+\_\+class\+\_\+co} \item const struct \textbf{ xua\+\_\+dialect} \textbf{ xua\+\_\+dialect\+\_\+sua} \item static const struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} \textbf{ sua\+\_\+aspxm\+\_\+map} [$\,$] \end{DoxyCompactItemize} \subsection{Macro Definition Documentation} \mbox{\label{sua_8c_a9e72c94571fc7c5a79889d5fab333a64}} \index{sua.\+c@{sua.\+c}!C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER@{C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER}} \index{C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER@{C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T\+I\+M\+ER~( 1 $\ast$ 60 $\ast$ 100)} \mbox{\label{sua_8c_ae8ba8bb3d52a6b63e09425c23870d142}} \index{sua.\+c@{sua.\+c}!G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER@{G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER}} \index{G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER@{G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define G\+U\+A\+R\+D\+\_\+\+T\+I\+M\+ER~(23 $\ast$ 60 $\ast$ 100)} \mbox{\label{sua_8c_a6bd3e6d6244d73e7ad9b64d7c8f506dc}} \index{sua.\+c@{sua.\+c}!I\+N\+T\+\_\+\+T\+I\+M\+ER@{I\+N\+T\+\_\+\+T\+I\+M\+ER}} \index{I\+N\+T\+\_\+\+T\+I\+M\+ER@{I\+N\+T\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{I\+N\+T\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define I\+N\+T\+\_\+\+T\+I\+M\+ER~( 1 $\ast$ 60 $\ast$ 100)} \mbox{\label{sua_8c_af10f2a394be1aaa2fb7dd4d1495e2316}} \index{sua.\+c@{sua.\+c}!M\+A\+N\+D\+\_\+\+I\+ES@{M\+A\+N\+D\+\_\+\+I\+ES}} \index{M\+A\+N\+D\+\_\+\+I\+ES@{M\+A\+N\+D\+\_\+\+I\+ES}!sua.\+c@{sua.\+c}} \subsubsection{M\+A\+N\+D\+\_\+\+I\+ES} {\footnotesize\ttfamily \#define M\+A\+N\+D\+\_\+\+I\+ES(\begin{DoxyParamCaption}\item[{}]{msgt, }\item[{}]{ies }\end{DoxyParamCaption})~[msgt] = (ies)} \mbox{\label{sua_8c_aa766ac245a0d7f41ccf37bf4083d1cc9}} \index{sua.\+c@{sua.\+c}!R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER@{R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER}} \index{R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER@{R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define R\+E\+L\+E\+A\+S\+E\+\_\+\+R\+E\+P\+\_\+\+T\+I\+M\+ER~( 10 $\ast$ 100)} \mbox{\label{sua_8c_a2b8fec150e28bd941aa49dd898ee6879}} \index{sua.\+c@{sua.\+c}!R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER@{R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER}} \index{R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER@{R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define R\+E\+L\+E\+A\+S\+E\+\_\+\+T\+I\+M\+ER~( 10 $\ast$ 100)} \mbox{\label{sua_8c_ab70edc5bbf92cb21680f3d6b11275d68}} \index{sua.\+c@{sua.\+c}!R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER@{R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER}} \index{R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER@{R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define R\+E\+S\+E\+T\+\_\+\+T\+I\+M\+ER~( 10 $\ast$ 100)} \mbox{\label{sua_8c_a8dc46511e05ac6ed0f0c15109cba2be4}} \index{sua.\+c@{sua.\+c}!R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER@{R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER}} \index{R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER@{R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define R\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER~(15 $\ast$ 60 $\ast$ 100) /$\ast$ R\+FC 3868 Ch. 8. $\ast$/} \mbox{\label{sua_8c_a93c1b4187877d6a16a64487da38aa772}} \index{sua.\+c@{sua.\+c}!S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM@{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM}} \index{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM@{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM}!sua.\+c@{sua.\+c}} \subsubsection{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM} {\footnotesize\ttfamily \#define S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM~512} Referenced by sccp\+\_\+msgb\+\_\+alloc(). \mbox{\label{sua_8c_a95dfedb93a29d464768e61be0054b120}} \index{sua.\+c@{sua.\+c}!S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE@{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}} \index{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE@{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}!sua.\+c@{sua.\+c}} \subsubsection{S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE} {\footnotesize\ttfamily \#define S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE~2048} Referenced by sccp\+\_\+msgb\+\_\+alloc(). \mbox{\label{sua_8c_a3d2a940817b70daf372c591ca924af0a}} \index{sua.\+c@{sua.\+c}!T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER@{T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER}} \index{T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER@{T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER}!sua.\+c@{sua.\+c}} \subsubsection{T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER} {\footnotesize\ttfamily \#define T\+X\+\_\+\+I\+N\+A\+C\+T\+\_\+\+T\+I\+M\+ER~( 7 $\ast$ 60 $\ast$ 100) /$\ast$ R\+FC 3868 Ch. 8. $\ast$/} \subsection{Function Documentation} \mbox{\label{sua_8c_af5641b370432180fb48016e3900a03c5}} \index{sua.\+c@{sua.\+c}!sccp\+\_\+msgb\+\_\+alloc@{sccp\+\_\+msgb\+\_\+alloc}} \index{sccp\+\_\+msgb\+\_\+alloc@{sccp\+\_\+msgb\+\_\+alloc}!sua.\+c@{sua.\+c}} \subsubsection{sccp\+\_\+msgb\+\_\+alloc()} {\footnotesize\ttfamily struct msgb$\ast$ sccp\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name }\end{DoxyParamCaption})} References S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM, and S\+C\+C\+P\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE. Referenced by osmo\+\_\+sua\+\_\+to\+\_\+sccp(), sccp\+\_\+lbcs\+\_\+local\+\_\+bcast\+\_\+pcstate(), sccp\+\_\+lbcs\+\_\+local\+\_\+bcast\+\_\+state(), sccp\+\_\+scmg\+\_\+tx(), sclc\+\_\+rx\+\_\+cldr(), and sclc\+\_\+rx\+\_\+cldt(). \mbox{\label{sua_8c_a18968e95f6331dc53432486aafea2908}} \index{sua.\+c@{sua.\+c}!sua\+\_\+addr\+\_\+parse@{sua\+\_\+addr\+\_\+parse}} \index{sua\+\_\+addr\+\_\+parse@{sua\+\_\+addr\+\_\+parse}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+addr\+\_\+parse()} {\footnotesize\ttfamily int sua\+\_\+addr\+\_\+parse (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{out, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})} parse S\+C\+CP address from given x\+UA message IE \begin{DoxyParams}[1]{Parameters} \mbox{\tt out} & {\em out} & caller-\/allocated decoded S\+C\+CP address struct \\ \hline \mbox{\tt in} & {\em xua} & x\+UA message \\ \hline \mbox{\tt in} & {\em iei} & Information Element Identifier inside xua \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 on success; negative on error \end{DoxyReturn} References sua\+\_\+addr\+\_\+parse\+\_\+part(), and xua\+\_\+msg\+\_\+find\+\_\+tag(). Referenced by ensure\+\_\+opc\+\_\+in\+\_\+calling\+\_\+ssn(), gen\+\_\+ret\+\_\+msg(), patch\+\_\+sccp\+\_\+with\+\_\+pc(), sccp\+\_\+find\+\_\+user(), sccp\+\_\+scrc\+\_\+rx\+\_\+sclc\+\_\+msg(), sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg(), sclc\+\_\+rx\+\_\+cldr(), sclc\+\_\+rx\+\_\+cldt(), scoc\+\_\+fsm\+\_\+idle(), scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua(), and scu\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send(). \mbox{\label{sua_8c_a7de76938697dd304626a142441ed079d}} \index{sua.\+c@{sua.\+c}!sua\+\_\+addr\+\_\+parse\+\_\+part@{sua\+\_\+addr\+\_\+parse\+\_\+part}} \index{sua\+\_\+addr\+\_\+parse\+\_\+part@{sua\+\_\+addr\+\_\+parse\+\_\+part}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+addr\+\_\+parse\+\_\+part()} {\footnotesize\ttfamily int sua\+\_\+addr\+\_\+parse\+\_\+part (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{out, }\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{param }\end{DoxyParamCaption})} parse S\+C\+CP address from given x\+UA message part \begin{DoxyParams}[1]{Parameters} \mbox{\tt out} & {\em out} & caller-\/allocated decoded S\+C\+CP address struct \\ \hline \mbox{\tt in} & {\em param} & x\+UA message part containing address \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 on success; negative on error \end{DoxyReturn} References xua\+\_\+msg\+\_\+part\+::dat, osmo\+\_\+sccp\+\_\+addr\+::gt, osmo\+\_\+sccp\+\_\+addr\+::ip, xua\+\_\+msg\+\_\+part\+::len, xua\+\_\+parameter\+\_\+hdr\+::len, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+I\+Pv4, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+I\+Pv6, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+PC, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+S\+SN, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+IP, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+PC, osmo\+\_\+sccp\+\_\+addr\+::pc, osmo\+\_\+sccp\+\_\+addr\+::presence, osmo\+\_\+sccp\+\_\+addr\+::ri, osmo\+\_\+sccp\+\_\+addr\+::ssn, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+GT, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+I\+Pv4, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+I\+Pv6, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+PC, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+S\+SN, sua\+\_\+parse\+\_\+gt(), S\+U\+A\+\_\+\+R\+I\+\_\+\+GT, S\+U\+A\+\_\+\+R\+I\+\_\+\+H\+O\+ST, S\+U\+A\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+IP, S\+U\+A\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+PC, xua\+\_\+msg\+\_\+part\+::tag, xua\+\_\+parameter\+\_\+hdr\+::tag, osmo\+\_\+sccp\+\_\+addr\+::v4, and osmo\+\_\+sccp\+\_\+addr\+::v6. Referenced by sua\+\_\+addr\+\_\+parse(), and sua\+\_\+addr\+\_\+to\+\_\+sccp(). \mbox{\label{sua_8c_ac09293d2361d60f5db4aa1ae1a3cc73a}} \index{sua.\+c@{sua.\+c}!sua\+\_\+encode\+\_\+dava@{sua\+\_\+encode\+\_\+dava}} \index{sua\+\_\+encode\+\_\+dava@{sua\+\_\+encode\+\_\+dava}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+encode\+\_\+dava()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg}$\ast$ sua\+\_\+encode\+\_\+dava (\begin{DoxyParamCaption}\item[{const uint32\+\_\+t $\ast$}]{rctx, }\item[{unsigned int}]{num\+\_\+rctx, }\item[{const uint32\+\_\+t $\ast$}]{aff\+\_\+pc, }\item[{unsigned int}]{num\+\_\+aff\+\_\+pc, }\item[{const uint32\+\_\+t $\ast$}]{ssn, }\item[{const uint32\+\_\+t $\ast$}]{smi, }\item[{const char $\ast$}]{info\+\_\+string }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type, smi, sua\+\_\+encode\+\_\+duna(), S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+A\+UD, and S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+A\+VA. Referenced by sua\+\_\+tx\+\_\+snm\+\_\+available(). \mbox{\label{sua_8c_abd4eb911cd7f48f3474d3296043f7141}} \index{sua.\+c@{sua.\+c}!sua\+\_\+encode\+\_\+duna@{sua\+\_\+encode\+\_\+duna}} \index{sua\+\_\+encode\+\_\+duna@{sua\+\_\+encode\+\_\+duna}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+encode\+\_\+duna()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg}$\ast$ sua\+\_\+encode\+\_\+duna (\begin{DoxyParamCaption}\item[{const uint32\+\_\+t $\ast$}]{rctx, }\item[{unsigned int}]{num\+\_\+rctx, }\item[{const uint32\+\_\+t $\ast$}]{aff\+\_\+pc, }\item[{unsigned int}]{num\+\_\+aff\+\_\+pc, }\item[{const uint32\+\_\+t $\ast$}]{ssn, }\item[{const uint32\+\_\+t $\ast$}]{smi, }\item[{const char $\ast$}]{info\+\_\+string }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+A\+F\+F\+E\+C\+T\+E\+D\+\_\+\+PC, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+I\+N\+F\+O\+\_\+\+S\+T\+R\+I\+NG, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+S\+SN, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+S\+NM, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+U\+NA, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+common\+\_\+hdr\+::version, X\+U\+A\+\_\+\+H\+DR, xua\+\_\+msg\+\_\+add\+\_\+data(), xua\+\_\+msg\+\_\+add\+\_\+u32(), and xua\+\_\+msg\+\_\+alloc(). Referenced by sua\+\_\+encode\+\_\+dava(), and sua\+\_\+tx\+\_\+snm\+\_\+available(). \mbox{\label{sua_8c_a4792b6799201ed544a3b761f7e0aac1e}} \index{sua.\+c@{sua.\+c}!sua\+\_\+encode\+\_\+dupu@{sua\+\_\+encode\+\_\+dupu}} \index{sua\+\_\+encode\+\_\+dupu@{sua\+\_\+encode\+\_\+dupu}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+encode\+\_\+dupu()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg}$\ast$ sua\+\_\+encode\+\_\+dupu (\begin{DoxyParamCaption}\item[{const uint32\+\_\+t $\ast$}]{rctx, }\item[{unsigned int}]{num\+\_\+rctx, }\item[{uint32\+\_\+t}]{dpc, }\item[{uint16\+\_\+t}]{user, }\item[{uint16\+\_\+t}]{cause, }\item[{const char $\ast$}]{info\+\_\+string }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+A\+F\+F\+E\+C\+T\+E\+D\+\_\+\+PC, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+I\+N\+F\+O\+\_\+\+S\+T\+R\+I\+NG, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+U\+S\+E\+R\+\_\+\+C\+A\+U\+SE, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+S\+NM, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+U\+NA, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+common\+\_\+hdr\+::version, X\+U\+A\+\_\+\+H\+DR, xua\+\_\+msg\+\_\+add\+\_\+data(), xua\+\_\+msg\+\_\+add\+\_\+u32(), and xua\+\_\+msg\+\_\+alloc(). Referenced by sua\+\_\+tx\+\_\+dupu(). \mbox{\label{sua_8c_a78629f1e7a876e0756408ee41309dbe5}} \index{sua.\+c@{sua.\+c}!sua\+\_\+gen\+\_\+error@{sua\+\_\+gen\+\_\+error}} \index{sua\+\_\+gen\+\_\+error@{sua\+\_\+gen\+\_\+error}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+gen\+\_\+error()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg}$\ast$ sua\+\_\+gen\+\_\+error (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{err\+\_\+code }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+E\+R\+R\+\_\+\+C\+O\+DE, S\+U\+A\+\_\+\+M\+G\+M\+T\+\_\+\+E\+RR, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+M\+G\+MT, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+common\+\_\+hdr\+::version, X\+U\+A\+\_\+\+H\+DR, xua\+\_\+msg\+\_\+add\+\_\+u32(), and xua\+\_\+msg\+\_\+alloc(). Referenced by sua\+\_\+gen\+\_\+error\+\_\+msg(). \mbox{\label{sua_8c_a06720b65495a15000af1a4bb89f9012b}} \index{sua.\+c@{sua.\+c}!sua\+\_\+gen\+\_\+error\+\_\+msg@{sua\+\_\+gen\+\_\+error\+\_\+msg}} \index{sua\+\_\+gen\+\_\+error\+\_\+msg@{sua\+\_\+gen\+\_\+error\+\_\+msg}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+gen\+\_\+error\+\_\+msg()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg}$\ast$ sua\+\_\+gen\+\_\+error\+\_\+msg (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{err\+\_\+code, }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References sua\+\_\+gen\+\_\+error(), S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+D\+I\+A\+G\+\_\+\+I\+N\+FO, and xua\+\_\+msg\+\_\+add\+\_\+data(). Referenced by sua\+\_\+rx\+\_\+msg(). \mbox{\label{sua_8c_add0364dcfc7833a3662d0accfcf4aff6}} \index{sua.\+c@{sua.\+c}!sua\+\_\+parse\+\_\+gt@{sua\+\_\+parse\+\_\+gt}} \index{sua\+\_\+parse\+\_\+gt@{sua\+\_\+parse\+\_\+gt}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+parse\+\_\+gt()} {\footnotesize\ttfamily int sua\+\_\+parse\+\_\+gt (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$}]{gt, }\item[{const uint8\+\_\+t $\ast$}]{data, }\item[{unsigned int}]{datalen }\end{DoxyParamCaption})} Decode S\+UA Global Title according to R\+F\+C3868 Section 3.\+10.\+2.\+3. \begin{DoxyParams}[1]{Parameters} \mbox{\tt out} & {\em gt} & User-\/allocated structure for decoded output \\ \hline \mbox{\tt in} & {\em data} & binary-\/encoded data \\ \hline \mbox{\tt in} & {\em datalen} & length of \doxyref{data}{p.}{xua__types_8h_ab0c873a3738c31ba573548faa50188bc} in octets \\ \hline \end{DoxyParams} References osmo\+\_\+sccp\+\_\+gt\+::digits, osmo\+\_\+sccp\+\_\+gt\+::gti, osmo\+\_\+sccp\+\_\+gt\+::nai, osmo\+\_\+sccp\+\_\+gt\+::npi, and osmo\+\_\+sccp\+\_\+gt\+::tt. Referenced by sua\+\_\+addr\+\_\+parse\+\_\+part(). \mbox{\label{sua_8c_a6a3a46fee6ebdb2de54b5260fe5abf0c}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+asp@{sua\+\_\+rx\+\_\+asp}} \index{sua\+\_\+rx\+\_\+asp@{sua\+\_\+rx\+\_\+asp}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+asp()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+\_\+event\+\_\+map\+::event, osmo\+\_\+ss7\+\_\+asp\+::fi, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+T\+Y\+PE, sua\+\_\+rx\+\_\+snm(), and xua\+\_\+msg\+\_\+event\+\_\+map(). Referenced by sua\+\_\+rx\+\_\+msg(). \mbox{\label{sua_8c_a8d9d34ccc01545e1ec513b1e53b02879}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+cl@{sua\+\_\+rx\+\_\+cl}} \index{sua\+\_\+rx\+\_\+cl@{sua\+\_\+rx\+\_\+cl}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+cl()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+cl (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+as\+::ctrg, xua\+\_\+msg\+::hdr, osmo\+\_\+ss7\+\_\+asp\+::inst, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type, osmo\+\_\+ss7\+\_\+instance\+::sccp, scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua(), S\+S7\+\_\+\+A\+S\+\_\+\+C\+T\+R\+\_\+\+R\+X\+\_\+\+M\+S\+U\+\_\+\+T\+O\+T\+AL, S\+U\+A\+\_\+\+C\+L\+\_\+\+C\+L\+DR, S\+U\+A\+\_\+\+C\+L\+\_\+\+C\+L\+DT, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+T\+Y\+PE, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+CL, xua\+\_\+find\+\_\+as\+\_\+for\+\_\+asp(), and xua\+\_\+msg\+\_\+find\+\_\+tag(). Referenced by sua\+\_\+rx\+\_\+msg(). \mbox{\label{sua_8c_a23a25f9389bbadbbbf2a3352a07829f3}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+co@{sua\+\_\+rx\+\_\+co}} \index{sua\+\_\+rx\+\_\+co@{sua\+\_\+rx\+\_\+co}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+co()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+co (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+as\+::ctrg, xua\+\_\+msg\+::hdr, osmo\+\_\+ss7\+\_\+asp\+::inst, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type, osmo\+\_\+ss7\+\_\+instance\+::sccp, scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua(), S\+S7\+\_\+\+A\+S\+\_\+\+C\+T\+R\+\_\+\+R\+X\+\_\+\+M\+S\+U\+\_\+\+T\+O\+T\+AL, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+AK, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+DA, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+DT, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+E\+RR, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+IT, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+RE, S\+U\+A\+\_\+\+C\+O\+\_\+\+C\+O\+R\+EF, S\+U\+A\+\_\+\+C\+O\+\_\+\+R\+E\+L\+CO, S\+U\+A\+\_\+\+C\+O\+\_\+\+R\+E\+L\+RE, S\+U\+A\+\_\+\+C\+O\+\_\+\+R\+E\+S\+CO, S\+U\+A\+\_\+\+C\+O\+\_\+\+R\+E\+S\+RE, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+T\+Y\+PE, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+CO, xua\+\_\+find\+\_\+as\+\_\+for\+\_\+asp(), and xua\+\_\+msg\+\_\+find\+\_\+tag(). Referenced by sua\+\_\+rx\+\_\+msg(). \mbox{\label{sua_8c_a10b521b650765c3c890b2da8d2e57d84}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+mgmt@{sua\+\_\+rx\+\_\+mgmt}} \index{sua\+\_\+rx\+\_\+mgmt@{sua\+\_\+rx\+\_\+mgmt}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+mgmt()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+mgmt (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+T\+Y\+PE, S\+U\+A\+\_\+\+M\+G\+M\+T\+\_\+\+E\+RR, S\+U\+A\+\_\+\+M\+G\+M\+T\+\_\+\+N\+T\+FY, sua\+\_\+rx\+\_\+mgmt\+\_\+err(), and sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy(). Referenced by sua\+\_\+rx\+\_\+msg(). \mbox{\label{sua_8c_a4339e94c68de1b929af93eb46dab18b9}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+mgmt\+\_\+err@{sua\+\_\+rx\+\_\+mgmt\+\_\+err}} \index{sua\+\_\+rx\+\_\+mgmt\+\_\+err@{sua\+\_\+rx\+\_\+mgmt\+\_\+err}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+mgmt\+\_\+err()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+mgmt\+\_\+err (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References L\+O\+G\+P\+A\+SP, m3ua\+\_\+err\+\_\+names, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+E\+R\+R\+\_\+\+C\+O\+DE, xua\+\_\+msg\+\_\+dump(), and xua\+\_\+msg\+\_\+get\+\_\+u32(). Referenced by sua\+\_\+rx\+\_\+mgmt(). \mbox{\label{sua_8c_ace0103f6f350a6497fcd882a2e8b9e41}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy@{sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy}} \index{sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy@{sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+mgmt\+\_\+ntfy (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::info\+\_\+string, L\+O\+G\+P\+A\+SP, m3ua\+\_\+decode\+\_\+notify(), M3\+U\+A\+\_\+\+N\+O\+T\+I\+F\+Y\+\_\+\+T\+\_\+\+O\+T\+H\+ER, M3\+U\+A\+\_\+\+N\+O\+T\+I\+F\+Y\+\_\+\+T\+\_\+\+S\+T\+A\+T\+C\+HG, m3ua\+\_\+ntfy\+\_\+other\+\_\+names, m3ua\+\_\+ntfy\+\_\+stchg\+\_\+names, m3ua\+\_\+ntfy\+\_\+type\+\_\+names, osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+info, and osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type. Referenced by sua\+\_\+rx\+\_\+mgmt(). \mbox{\label{sua_8c_a5aaa70aafac5abbc003a1a27dc05ea56}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+msg@{sua\+\_\+rx\+\_\+msg}} \index{sua\+\_\+rx\+\_\+msg@{sua\+\_\+rx\+\_\+msg}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+msg()} {\footnotesize\ttfamily int sua\+\_\+rx\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})} process S\+UA message received from socket \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em asp} & Application Server Process receiving msg \\ \hline \mbox{\tt in} & {\em msg} & received message buffer \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 on success; negative on error \end{DoxyReturn} References osmo\+\_\+ss7\+\_\+asp\+::cfg, xua\+\_\+common\+\_\+hdr\+::data, osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc, xua\+\_\+msg\+::hdr, osmo\+\_\+ss7\+\_\+asp\+::inst, L\+O\+G\+P\+A\+SP, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class, xua\+\_\+msg\+::mtp, M\+T\+P\+\_\+\+S\+I\+\_\+\+S\+C\+CP, osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+S\+UA, osmo\+\_\+ss7\+\_\+asp\+::proto, osmo\+\_\+ss7\+\_\+instance\+::sccp, osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sio, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+I\+N\+V\+A\+L\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+ID, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+I\+N\+V\+A\+L\+I\+D\+\_\+\+V\+E\+R\+S\+I\+ON, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+M\+I\+S\+S\+I\+N\+G\+\_\+\+P\+A\+R\+AM, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+P\+A\+R\+A\+M\+\_\+\+F\+I\+E\+L\+D\+\_\+\+E\+RR, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+C\+L\+A\+SS, sua\+\_\+gen\+\_\+error\+\_\+msg(), S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+A\+S\+P\+SM, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+A\+S\+P\+TM, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+CL, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+CO, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+M\+G\+MT, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+R\+KM, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+S\+NM, sua\+\_\+rx\+\_\+asp(), sua\+\_\+rx\+\_\+cl(), sua\+\_\+rx\+\_\+co(), sua\+\_\+rx\+\_\+mgmt(), sua\+\_\+rx\+\_\+snm(), sua\+\_\+tx\+\_\+xua\+\_\+asp(), S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+common\+\_\+hdr\+::version, xua\+\_\+dialect\+\_\+check\+\_\+all\+\_\+mand\+\_\+ies(), xua\+\_\+from\+\_\+msg(), xua\+\_\+hdr\+\_\+dump(), and xua\+\_\+msg\+\_\+free(). Referenced by ss7\+\_\+asp\+\_\+xua\+\_\+srv\+\_\+conn\+\_\+rx\+\_\+cb(), and xua\+\_\+cli\+\_\+read\+\_\+cb(). \mbox{\label{sua_8c_a72fd3bc2157cf395b090064e213d8fc9}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+snm@{sua\+\_\+rx\+\_\+snm}} \index{sua\+\_\+rx\+\_\+snm@{sua\+\_\+rx\+\_\+snm}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+snm()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+snm (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+asp\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::fi, L\+O\+G\+P\+A\+SP, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+Q\+U\+I\+R\+K\+\_\+\+S\+N\+M\+\_\+\+I\+N\+A\+C\+T\+I\+VE, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+A\+SP, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+SG, osmo\+\_\+ss7\+\_\+asp\+::quirks, osmo\+\_\+ss7\+\_\+asp\+::role, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+E\+X\+P\+E\+C\+T\+E\+D\+\_\+\+M\+SG, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+C\+L\+A\+SS, sua\+\_\+rx\+\_\+snm\+\_\+asp(), sua\+\_\+rx\+\_\+snm\+\_\+sg(), X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE. Referenced by sua\+\_\+rx\+\_\+asp(), and sua\+\_\+rx\+\_\+msg(). \mbox{\label{sua_8c_aad9c224115a64f8518e0e248c5e507e2}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+snm\+\_\+asp@{sua\+\_\+rx\+\_\+snm\+\_\+asp}} \index{sua\+\_\+rx\+\_\+snm\+\_\+asp@{sua\+\_\+rx\+\_\+snm\+\_\+asp}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+snm\+\_\+asp()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+snm\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+asp\+::cfg, xua\+\_\+msg\+::hdr, L\+O\+G\+P\+A\+SP, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+Q\+U\+I\+R\+K\+\_\+\+D\+A\+U\+D\+\_\+\+I\+N\+\_\+\+A\+SP, osmo\+\_\+ss7\+\_\+asp\+::quirks, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+T\+Y\+PE, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+A\+UD, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+A\+VA, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+R\+ST, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+U\+NA, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+U\+PU, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+S\+C\+ON, xua\+\_\+find\+\_\+as\+\_\+for\+\_\+asp(), xua\+\_\+msg\+\_\+find\+\_\+tag(), xua\+\_\+snm\+\_\+rx\+\_\+daud(), xua\+\_\+snm\+\_\+rx\+\_\+dava(), xua\+\_\+snm\+\_\+rx\+\_\+duna(), and xua\+\_\+snm\+\_\+rx\+\_\+dupu(). Referenced by sua\+\_\+rx\+\_\+snm(). \mbox{\label{sua_8c_ab6bc31315204b7a7cce988a701767f27}} \index{sua.\+c@{sua.\+c}!sua\+\_\+rx\+\_\+snm\+\_\+sg@{sua\+\_\+rx\+\_\+snm\+\_\+sg}} \index{sua\+\_\+rx\+\_\+snm\+\_\+sg@{sua\+\_\+rx\+\_\+snm\+\_\+sg}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+rx\+\_\+snm\+\_\+sg()} {\footnotesize\ttfamily static int sua\+\_\+rx\+\_\+snm\+\_\+sg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type, S\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+M\+S\+G\+\_\+\+T\+Y\+PE, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+D\+A\+UD, and xua\+\_\+snm\+\_\+rx\+\_\+daud(). Referenced by sua\+\_\+rx\+\_\+snm(). \mbox{\label{sua_8c_aee02dc5771f4e5935c782414722a057d}} \index{sua.\+c@{sua.\+c}!sua\+\_\+to\+\_\+msg@{sua\+\_\+to\+\_\+msg}} \index{sua\+\_\+to\+\_\+msg@{sua\+\_\+to\+\_\+msg}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+to\+\_\+msg()} {\footnotesize\ttfamily static struct msgb$\ast$ sua\+\_\+to\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+msg\+::hdr, xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+CL, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+CO, S\+U\+A\+\_\+\+P\+P\+ID, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, and xua\+\_\+to\+\_\+msg(). Referenced by sua\+\_\+tx\+\_\+xua\+\_\+as(), and sua\+\_\+tx\+\_\+xua\+\_\+asp(). \mbox{\label{sua_8c_aefcb707da3aed3aa9f7b86aedae01353}} \index{sua.\+c@{sua.\+c}!sua\+\_\+tx\+\_\+dupu@{sua\+\_\+tx\+\_\+dupu}} \index{sua\+\_\+tx\+\_\+dupu@{sua\+\_\+tx\+\_\+dupu}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+tx\+\_\+dupu()} {\footnotesize\ttfamily void sua\+\_\+tx\+\_\+dupu (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{const uint32\+\_\+t $\ast$}]{rctx, }\item[{unsigned int}]{num\+\_\+rctx, }\item[{uint32\+\_\+t}]{dpc, }\item[{uint16\+\_\+t}]{user, }\item[{uint16\+\_\+t}]{cause, }\item[{const char $\ast$}]{info\+\_\+str }\end{DoxyParamCaption})} Transmit S\+S\+NM D\+U\+PU message indicating user unavailability. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em asp} & A\+SP through which to transmit message. Must be A\+C\+T\+I\+VE. \\ \hline \mbox{\tt in} & {\em rctx} & array of Routing Contexts in network byte order. \\ \hline \mbox{\tt in} & {\em num\+\_\+rctx} & number of rctx \\ \hline \mbox{\tt in} & {\em dpc} & affected point code \\ \hline \mbox{\tt in} & {\em user} & the user (SI) that is unavailable \\ \hline \mbox{\tt in} & {\em cause} & the cause of the user unavailability \\ \hline \mbox{\tt in} & {\em info\+\_\+string} & optional information string (can be N\+U\+LL). \\ \hline \end{DoxyParams} References sua\+\_\+encode\+\_\+dupu(), and sua\+\_\+tx\+\_\+xua\+\_\+asp(). Referenced by xua\+\_\+tx\+\_\+upu(). \mbox{\label{sua_8c_a2cde7522ac8680baeb866a1af378ed02}} \index{sua.\+c@{sua.\+c}!sua\+\_\+tx\+\_\+snm\+\_\+available@{sua\+\_\+tx\+\_\+snm\+\_\+available}} \index{sua\+\_\+tx\+\_\+snm\+\_\+available@{sua\+\_\+tx\+\_\+snm\+\_\+available}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+tx\+\_\+snm\+\_\+available()} {\footnotesize\ttfamily void sua\+\_\+tx\+\_\+snm\+\_\+available (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{const uint32\+\_\+t $\ast$}]{rctx, }\item[{unsigned int}]{num\+\_\+rctx, }\item[{const uint32\+\_\+t $\ast$}]{aff\+\_\+pc, }\item[{unsigned int}]{num\+\_\+aff\+\_\+pc, }\item[{const uint32\+\_\+t $\ast$}]{aff\+\_\+ssn, }\item[{const uint32\+\_\+t $\ast$}]{smi, }\item[{const char $\ast$}]{info\+\_\+string, }\item[{bool}]{available }\end{DoxyParamCaption})} Transmit S\+S\+NM D\+U\+N\+A/\+D\+A\+VA message indicating [un]availability of certain point code[s]. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em asp} & A\+SP through whihc to transmit message. Must be A\+C\+T\+I\+VE. \\ \hline \mbox{\tt in} & {\em rctx} & array of Routing Contexts in network byte order. \\ \hline \mbox{\tt in} & {\em num\+\_\+rctx} & number of rctx \\ \hline \mbox{\tt in} & {\em aff\+\_\+pc} & array of \textquotesingle{}Affected Point Code\textquotesingle{} in network byte order. \\ \hline \mbox{\tt in} & {\em num\+\_\+aff\+\_\+pc} & number of aff\+\_\+pc \\ \hline \mbox{\tt in} & {\em aff\+\_\+ssn} & affected S\+SN (optional) \\ \hline \mbox{\tt in} & {\em smi} & subsystem multiplicity indicator (optional) \\ \hline \mbox{\tt in} & {\em info\+\_\+string} & optional information strng (can be N\+U\+LL). \\ \hline \mbox{\tt in} & {\em available} & are aff\+\_\+pc now available (true) or unavailable (false) \\ \hline \end{DoxyParams} References sua\+\_\+encode\+\_\+dava(), sua\+\_\+encode\+\_\+duna(), and sua\+\_\+tx\+\_\+xua\+\_\+asp(). Referenced by sua\+\_\+snm\+\_\+ssn\+\_\+available(), and xua\+\_\+tx\+\_\+snm\+\_\+available(). \mbox{\label{sua_8c_a789d06732c5551dc33ad1b0ef35edc72}} \index{sua.\+c@{sua.\+c}!sua\+\_\+tx\+\_\+snm\+\_\+congestion@{sua\+\_\+tx\+\_\+snm\+\_\+congestion}} \index{sua\+\_\+tx\+\_\+snm\+\_\+congestion@{sua\+\_\+tx\+\_\+snm\+\_\+congestion}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+tx\+\_\+snm\+\_\+congestion()} {\footnotesize\ttfamily void sua\+\_\+tx\+\_\+snm\+\_\+congestion (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{const uint32\+\_\+t $\ast$}]{rctx, }\item[{unsigned int}]{num\+\_\+rctx, }\item[{const uint32\+\_\+t $\ast$}]{aff\+\_\+pc, }\item[{unsigned int}]{num\+\_\+aff\+\_\+pc, }\item[{const uint32\+\_\+t $\ast$}]{ssn, }\item[{const uint8\+\_\+t}]{cong\+\_\+level, }\item[{const char $\ast$}]{info\+\_\+string }\end{DoxyParamCaption})} Transmit S\+S\+NM S\+C\+ON message indicating congestion. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em asp} & A\+SP through which to transmit message. Must be A\+C\+T\+I\+VE. \\ \hline \mbox{\tt in} & {\em rctx} & array of Routing Contexts in network byte order. \\ \hline \mbox{\tt in} & {\em num\+\_\+rctx} & number of rctx \\ \hline \mbox{\tt in} & {\em aff\+\_\+pc} & array of \textquotesingle{}Affected Point Code\textquotesingle{} in network byte order. \\ \hline \mbox{\tt in} & {\em num\+\_\+aff\+\_\+pc} & number of aff\+\_\+pc \\ \hline \mbox{\tt in} & {\em ssn} & optional S\+SN (can be N\+U\+LL) \\ \hline \mbox{\tt in} & {\em cong\+\_\+level} & optional congestion level (can be N\+U\+LL) \\ \hline \mbox{\tt in} & {\em info\+\_\+string} & optional information string (can be N\+U\+LL). \\ \hline \end{DoxyParams} References xua\+\_\+msg\+::hdr, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+A\+F\+F\+E\+C\+T\+E\+D\+\_\+\+PC, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+C\+O\+N\+G\+\_\+\+L\+E\+V\+EL, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+I\+N\+F\+O\+\_\+\+S\+T\+R\+I\+NG, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+S\+SN, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+S\+NM, S\+U\+A\+\_\+\+S\+N\+M\+\_\+\+S\+C\+ON, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+common\+\_\+hdr\+::version, X\+U\+A\+\_\+\+H\+DR, xua\+\_\+msg\+\_\+add\+\_\+data(), xua\+\_\+msg\+\_\+add\+\_\+u32(), and xua\+\_\+msg\+\_\+alloc(). Referenced by xua\+\_\+tx\+\_\+scon(). \mbox{\label{sua_8c_a67d65e0238a6e2d679e6c72fab31b395}} \index{sua.\+c@{sua.\+c}!sua\+\_\+tx\+\_\+xua\+\_\+as@{sua\+\_\+tx\+\_\+xua\+\_\+as}} \index{sua\+\_\+tx\+\_\+xua\+\_\+as@{sua\+\_\+tx\+\_\+xua\+\_\+as}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+tx\+\_\+xua\+\_\+as()} {\footnotesize\ttfamily int sua\+\_\+tx\+\_\+xua\+\_\+as (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})} Send a given x\+UA message via a given S\+UA Application Server. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em as} & Application Server through which to send xua \\ \hline \mbox{\tt in} & {\em xua} & x\+UA message to be sent \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 on success; negative on error \end{DoxyReturn} References osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::context, osmo\+\_\+ss7\+\_\+as\+::fi, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+S\+UA, osmo\+\_\+ss7\+\_\+as\+::proto, osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, sua\+\_\+to\+\_\+msg(), X\+U\+A\+\_\+\+A\+S\+\_\+\+E\+\_\+\+T\+R\+A\+N\+S\+F\+E\+R\+\_\+\+R\+EQ, and xua\+\_\+msg\+\_\+add\+\_\+u32(). Referenced by gen\+\_\+mtp\+\_\+transfer\+\_\+req\+\_\+xua(). \mbox{\label{sua_8c_ad70f424a03fb99197f4345982ea0ec77}} \index{sua.\+c@{sua.\+c}!sua\+\_\+tx\+\_\+xua\+\_\+asp@{sua\+\_\+tx\+\_\+xua\+\_\+asp}} \index{sua\+\_\+tx\+\_\+xua\+\_\+asp@{sua\+\_\+tx\+\_\+xua\+\_\+asp}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+tx\+\_\+xua\+\_\+asp()} {\footnotesize\ttfamily static int sua\+\_\+tx\+\_\+xua\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+asp\+::cfg, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+S\+UA, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), osmo\+\_\+ss7\+\_\+asp\+::proto, and sua\+\_\+to\+\_\+msg(). Referenced by sua\+\_\+rx\+\_\+msg(), sua\+\_\+tx\+\_\+dupu(), and sua\+\_\+tx\+\_\+snm\+\_\+available(). \subsection{Variable Documentation} \mbox{\label{sua_8c_aa04018a513fc3046464cd0270feaf2ad}} \index{sua.\+c@{sua.\+c}!cldr\+\_\+mand\+\_\+ies@{cldr\+\_\+mand\+\_\+ies}} \index{cldr\+\_\+mand\+\_\+ies@{cldr\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{cldr\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t cldr\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_CAUSE, SUA_IEI_SRC_ADDR, SUA_IEI_DEST_ADDR, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_adc39d391c4da2a723a39edd7c7fe1e9b}} \index{sua.\+c@{sua.\+c}!cldt\+\_\+mand\+\_\+ies@{cldt\+\_\+mand\+\_\+ies}} \index{cldt\+\_\+mand\+\_\+ies@{cldt\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{cldt\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t cldt\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_PROTO_CLASS, SUA_IEI_SRC_ADDR, SUA_IEI_DEST_ADDR, SUA_IEI_SEQ_CTRL, SUA_IEI_DATA, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a06567c8611773ec3d2dffb8668275014}} \index{sua.\+c@{sua.\+c}!coak\+\_\+mand\+\_\+ies@{coak\+\_\+mand\+\_\+ies}} \index{coak\+\_\+mand\+\_\+ies@{coak\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{coak\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t coak\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_PROTO_CLASS, SUA_IEI_DEST_REF, SUA_IEI_SRC_REF, SUA_IEI_SEQ_CTRL, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a7a7f14cda52f89daa04f102422b13e65}} \index{sua.\+c@{sua.\+c}!coda\+\_\+mand\+\_\+ies@{coda\+\_\+mand\+\_\+ies}} \index{coda\+\_\+mand\+\_\+ies@{coda\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{coda\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t coda\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_ab80f6147b738ac938233ff3ef69227a0}} \index{sua.\+c@{sua.\+c}!codt\+\_\+mand\+\_\+ies@{codt\+\_\+mand\+\_\+ies}} \index{codt\+\_\+mand\+\_\+ies@{codt\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{codt\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t codt\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_DATA, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a116f004708e76b8626f74d6a81e0e906}} \index{sua.\+c@{sua.\+c}!coerr\+\_\+mand\+\_\+ies@{coerr\+\_\+mand\+\_\+ies}} \index{coerr\+\_\+mand\+\_\+ies@{coerr\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{coerr\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t coerr\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_CAUSE, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a69f625c1a25ed7639a98fa62fd76bc57}} \index{sua.\+c@{sua.\+c}!coit\+\_\+mand\+\_\+ies@{coit\+\_\+mand\+\_\+ies}} \index{coit\+\_\+mand\+\_\+ies@{coit\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{coit\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t coit\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_PROTO_CLASS, SUA_IEI_SRC_REF, SUA_IEI_DEST_REF, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a10597bd1784c5c386dab025cc4b8955c}} \index{sua.\+c@{sua.\+c}!core\+\_\+mand\+\_\+ies@{core\+\_\+mand\+\_\+ies}} \index{core\+\_\+mand\+\_\+ies@{core\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{core\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t core\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_PROTO_CLASS, SUA_IEI_SRC_REF, SUA_IEI_DEST_ADDR, SUA_IEI_SEQ_CTRL, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a799230f6bdacec436ee0c55a32640ef4}} \index{sua.\+c@{sua.\+c}!coref\+\_\+mand\+\_\+ies@{coref\+\_\+mand\+\_\+ies}} \index{coref\+\_\+mand\+\_\+ies@{coref\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{coref\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t coref\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_CAUSE, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a108d8063cc68a4bec2a72a996dead24e}} \index{sua.\+c@{sua.\+c}!msg\+\_\+class\+\_\+cl@{msg\+\_\+class\+\_\+cl}} \index{msg\+\_\+class\+\_\+cl@{msg\+\_\+class\+\_\+cl}!sua.\+c@{sua.\+c}} \subsubsection{msg\+\_\+class\+\_\+cl} {\footnotesize\ttfamily const struct \textbf{ xua\+\_\+msg\+\_\+class} msg\+\_\+class\+\_\+cl\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ .name = \textcolor{stringliteral}{"CL"}, .msgt\_names = sua_cl_msgt_names, .iei\_names = sua_iei_names, .mand\_ies = \{ MAND_IES(SUA_CL_CLDT, cldt_mand_ies), MAND_IES(SUA_CL_CLDR, cldr_mand_ies), \}, \} \end{DoxyCode} \mbox{\label{sua_8c_a17aa513dad5639651ada38ea17cfa647}} \index{sua.\+c@{sua.\+c}!msg\+\_\+class\+\_\+co@{msg\+\_\+class\+\_\+co}} \index{msg\+\_\+class\+\_\+co@{msg\+\_\+class\+\_\+co}!sua.\+c@{sua.\+c}} \subsubsection{msg\+\_\+class\+\_\+co} {\footnotesize\ttfamily const struct \textbf{ xua\+\_\+msg\+\_\+class} msg\+\_\+class\+\_\+co\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ .name = \textcolor{stringliteral}{"CO"}, .msgt\_names = sua_co_msgt_names, .iei\_names = sua_iei_names, .mand\_ies = \{ MAND_IES(SUA_CO_CODT, codt_mand_ies), MAND_IES(SUA_CO_CODA, coda_mand_ies), MAND_IES(SUA_CO_CORE, core_mand_ies), MAND_IES(SUA_CO_COAK, coak_mand_ies), MAND_IES(SUA_CO_COREF, coref_mand_ies), MAND_IES(SUA_CO_RELRE, relre_mand_ies), MAND_IES(SUA_CO_RELCO, relco_mand_ies), MAND_IES(SUA_CO_RESRE, resre_mand_ies), MAND_IES(SUA_CO_RESCO, resco_mand_ies), MAND_IES(SUA_CO_COERR, coerr_mand_ies), MAND_IES(SUA_CO_COIT, coit_mand_ies), \}, \} \end{DoxyCode} \mbox{\label{sua_8c_a50e1c3d99e244947adb9d194792163be}} \index{sua.\+c@{sua.\+c}!relco\+\_\+mand\+\_\+ies@{relco\+\_\+mand\+\_\+ies}} \index{relco\+\_\+mand\+\_\+ies@{relco\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{relco\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t relco\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_SRC_REF, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a3796ad72a0ae04d9dbb21c9c90815664}} \index{sua.\+c@{sua.\+c}!relre\+\_\+mand\+\_\+ies@{relre\+\_\+mand\+\_\+ies}} \index{relre\+\_\+mand\+\_\+ies@{relre\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{relre\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t relre\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_SRC_REF, SUA_IEI_CAUSE, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a43784a3b9d37a6a466eb479b177a5d7e}} \index{sua.\+c@{sua.\+c}!resco\+\_\+mand\+\_\+ies@{resco\+\_\+mand\+\_\+ies}} \index{resco\+\_\+mand\+\_\+ies@{resco\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{resco\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t resco\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_SRC_REF, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_acf0f72962ed78f26ae3d7dd749f90ecb}} \index{sua.\+c@{sua.\+c}!resre\+\_\+mand\+\_\+ies@{resre\+\_\+mand\+\_\+ies}} \index{resre\+\_\+mand\+\_\+ies@{resre\+\_\+mand\+\_\+ies}!sua.\+c@{sua.\+c}} \subsubsection{resre\+\_\+mand\+\_\+ies} {\footnotesize\ttfamily const uint16\+\_\+t resre\+\_\+mand\+\_\+ies[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ SUA_IEI_ROUTE_CTX, SUA_IEI_DEST_REF, SUA_IEI_SRC_REF, SUA_IEI_CAUSE, 0 \} \end{DoxyCode} \mbox{\label{sua_8c_a4d35e0711fec8203a84eb2ab3a881e08}} \index{sua.\+c@{sua.\+c}!sua\+\_\+aspxm\+\_\+map@{sua\+\_\+aspxm\+\_\+map}} \index{sua\+\_\+aspxm\+\_\+map@{sua\+\_\+aspxm\+\_\+map}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+aspxm\+\_\+map} {\footnotesize\ttfamily const struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} sua\+\_\+aspxm\+\_\+map[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ \{ SUA_MSGC_ASPSM, SUA_ASPSM_UP, XUA_ASP_E_ASPSM_ASPUP \}, \{ SUA_MSGC_ASPSM, SUA_ASPSM_DOWN, XUA_ASP_E_ASPSM_ASPDN \}, \{ SUA_MSGC_ASPSM, SUA_ASPSM_BEAT, XUA_ASP_E_ASPSM_BEAT \}, \{ SUA_MSGC_ASPSM, SUA_ASPSM_UP_ACK, XUA_ASP_E_ASPSM_ASPUP_ACK \}, \{ SUA_MSGC_ASPSM, SUA_ASPSM_DOWN_ACK, XUA_ASP_E_ASPSM_ASPDN_ACK \}, \{ SUA_MSGC_ASPSM, SUA_ASPSM_BEAT_ACK, XUA_ASP_E_ASPSM_BEAT_ACK \}, \{ SUA_MSGC_ASPTM, SUA_ASPTM_ACTIVE, XUA_ASP_E_ASPTM_ASPAC \}, \{ SUA_MSGC_ASPTM, SUA_ASPTM_INACTIVE, XUA_ASP_E_ASPTM_ASPIA \}, \{ SUA_MSGC_ASPTM, SUA_ASPTM_ACTIVE_ACK, XUA_ASP_E_ASPTM_ASPAC_ACK \}, \{ SUA_MSGC_ASPTM, SUA_ASPTM_INACTIVE_ACK, XUA_ASP_E_ASPTM_ASPIA_ACK \}, \} \end{DoxyCode} \mbox{\label{sua_8c_a2297c75fd92ba8d78ad59dd06dc8fd33}} \index{sua.\+c@{sua.\+c}!sua\+\_\+cl\+\_\+msgt\+\_\+names@{sua\+\_\+cl\+\_\+msgt\+\_\+names}} \index{sua\+\_\+cl\+\_\+msgt\+\_\+names@{sua\+\_\+cl\+\_\+msgt\+\_\+names}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+cl\+\_\+msgt\+\_\+names} {\footnotesize\ttfamily const struct value\+\_\+string sua\+\_\+cl\+\_\+msgt\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ \{ SUA_CL_CLDT, \textcolor{stringliteral}{"CLDT"} \}, \{ SUA_CL_CLDR, \textcolor{stringliteral}{"CLDR"} \}, \{ 0, NULL \} \} \end{DoxyCode} \mbox{\label{sua_8c_a0991092c8ba82280d48f15dba528f53c}} \index{sua.\+c@{sua.\+c}!sua\+\_\+co\+\_\+msgt\+\_\+names@{sua\+\_\+co\+\_\+msgt\+\_\+names}} \index{sua\+\_\+co\+\_\+msgt\+\_\+names@{sua\+\_\+co\+\_\+msgt\+\_\+names}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+co\+\_\+msgt\+\_\+names} {\footnotesize\ttfamily const struct value\+\_\+string sua\+\_\+co\+\_\+msgt\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ \{ SUA_CO_CODT, \textcolor{stringliteral}{"CODT"} \}, \{ SUA_CO_CODA, \textcolor{stringliteral}{"CODA"} \}, \{ SUA_CO_CORE, \textcolor{stringliteral}{"CORE"} \}, \{ SUA_CO_COAK, \textcolor{stringliteral}{"COAK"} \}, \{ SUA_CO_COREF, \textcolor{stringliteral}{"COREF"} \}, \{ SUA_CO_RELRE, \textcolor{stringliteral}{"RELRE"} \}, \{ SUA_CO_RELCO, \textcolor{stringliteral}{"RELCO"} \}, \{ SUA_CO_RESRE, \textcolor{stringliteral}{"RESRE"} \}, \{ SUA_CO_RESCO, \textcolor{stringliteral}{"RESCO"} \}, \{ SUA_CO_COERR, \textcolor{stringliteral}{"COERR"} \}, \{ SUA_CO_COIT, \textcolor{stringliteral}{"COIT"} \}, \{ 0, NULL \} \} \end{DoxyCode} \mbox{\label{sua_8c_a0084984f60defe400a41a8eb6511261d}} \index{sua.\+c@{sua.\+c}!sua\+\_\+iei\+\_\+names@{sua\+\_\+iei\+\_\+names}} \index{sua\+\_\+iei\+\_\+names@{sua\+\_\+iei\+\_\+names}!sua.\+c@{sua.\+c}} \subsubsection{sua\+\_\+iei\+\_\+names} {\footnotesize\ttfamily const struct value\+\_\+string sua\+\_\+iei\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}} \mbox{\label{sua_8c_aa9dfe79ab4a2b83e4d478b10c973c0b0}} \index{sua.\+c@{sua.\+c}!xua\+\_\+dialect\+\_\+sua@{xua\+\_\+dialect\+\_\+sua}} \index{xua\+\_\+dialect\+\_\+sua@{xua\+\_\+dialect\+\_\+sua}!sua.\+c@{sua.\+c}} \subsubsection{xua\+\_\+dialect\+\_\+sua} {\footnotesize\ttfamily const struct \textbf{ xua\+\_\+dialect} xua\+\_\+dialect\+\_\+sua} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ .name = \textcolor{stringliteral}{"SUA"}, .ppid = SUA_PPID, .port = SUA_PORT, .log\_subsys = DLSUA, .class = \{ [SUA_MSGC_MGMT] = &m3ua_msg_class_mgmt, [SUA_MSGC_SNM] = &m3ua_msg_class_snm, [SUA_MSGC_ASPSM] = &m3ua_msg_class_aspsm, [SUA_MSGC_ASPTM] = &m3ua_msg_class_asptm, [SUA_MSGC_CL] = &msg_class_cl, [SUA_MSGC_CO] = &msg_class_co, [SUA_MSGC_RKM] = &m3ua_msg_class_rkm, \}, \} \end{DoxyCode} Referenced by osmo\+\_\+sua\+\_\+to\+\_\+sccp(), sccp\+\_\+find\+\_\+user(), sccp\+\_\+sclc\+\_\+rx\+\_\+from\+\_\+scrc(), sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc(), sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc(), sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref(), sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail(), sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref(), sccp\+\_\+scrc\+\_\+rx\+\_\+sclc\+\_\+msg(), sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg(), scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua(), and xua\+\_\+opt\+\_\+data\+\_\+send\+\_\+cache().