\doxysection{src/sccp2sua.c File Reference} \label{sccp2sua_8c}\index{src/sccp2sua.c@{src/sccp2sua.c}} {\ttfamily \#include $<$stdbool.\+h$>$}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include $<$errno.\+h$>$}\newline {\ttfamily \#include $<$inttypes.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sccp/sccp\+\_\+types.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+helpers.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline {\ttfamily \#include \char`\"{}xua\+\_\+msg.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline \doxysubsection*{Macros} \begin{DoxyCompactItemize} \item \#define \textbf{ MAX\+\_\+\+IES}~6 \item \#define \textbf{ NUM\+\_\+\+SCCP\+\_\+\+MSGT}~(SCCP\+\_\+\+MSG\+\_\+\+TYPE\+\_\+\+LUDTS+1) \end{DoxyCompactItemize} \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item static void \textbf{ msgb\+\_\+put\+\_\+u24be} (struct msgb $\ast$msg, uint32\+\_\+t val) \item static void \textbf{ msgb\+\_\+put\+\_\+u16le} (struct msgb $\ast$msg, uint16\+\_\+t val) \item static uint32\+\_\+t \textbf{ load\+\_\+24be} (const void $\ast$ptr) \begin{DoxyCompactList}\small\item\em load a 24bit value as big-\/endian \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+isup\+\_\+party\+\_\+parse} (char $\ast$out\+\_\+digits, const uint8\+\_\+t $\ast$in, unsigned int in\+\_\+num\+\_\+bytes, bool odd) \begin{DoxyCompactList}\small\item\em Parse ISUP style address of BCD digets. \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+isup\+\_\+party\+\_\+encode} (struct msgb $\ast$msg, const char $\ast$in\+\_\+digits) \begin{DoxyCompactList}\small\item\em Encode an ISUP style address of BCD digits. \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+parse} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$out, const uint8\+\_\+t $\ast$addr, unsigned int addrlen) \begin{DoxyCompactList}\small\item\em Parse wire-\/encoded SCCP address into \doxyref{osmo\+\_\+sccp\+\_\+addr}{p.}{structosmo__sccp__addr}. \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+encode} (struct msgb $\ast$msg, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$in) \begin{DoxyCompactList}\small\item\em encode a SCCP address from parsed format to wire format \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, const uint8\+\_\+t $\ast$addr, unsigned int addrlen) \begin{DoxyCompactList}\small\item\em convert SCCP address to SUA address \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, const uint8\+\_\+t $\ast$ptr\+\_\+addr, bool ptr\+\_\+addr\+\_\+is\+\_\+long) \begin{DoxyCompactList}\small\item\em convenience wrapper around \doxyref{sccp\+\_\+addr\+\_\+to\+\_\+sua()}{p.}{sccp2sua_8c_a3a2c083bc428a4ab007a482686f1d6e8} for variable mandatory addresses \end{DoxyCompactList}\item static int \textbf{ sua\+\_\+addr\+\_\+to\+\_\+sccp} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$part) \begin{DoxyCompactList}\small\item\em convert SUA address to SCCP address \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr} (struct msgb $\ast$msg, uint8\+\_\+t $\ast$var\+\_\+ptr, bool var\+\_\+ptr\+\_\+is\+\_\+long, const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei) \begin{DoxyCompactList}\small\item\em Add a \char`\"{}\+SCCP Variable Mandatory Part\char`\"{} (Address format) to the given msgb. \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part} (struct msgb $\ast$msg, uint8\+\_\+t $\ast$var\+\_\+ptr, const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei) \begin{DoxyCompactList}\small\item\em Add a \char`\"{}\+SCCP Variable Mandatory Part\char`\"{} to the given msgb. \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+add\+\_\+long\+\_\+variable\+\_\+part} (struct msgb $\ast$msg, uint8\+\_\+t $\ast$var\+\_\+ptr, const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei) \begin{DoxyCompactList}\small\item\em Add a \char`\"{}\+SCCP Long Variable Mandatory Part\char`\"{} to the given msgb. \end{DoxyCompactList}\item static bool \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent} (const struct msgb $\ast$msg, const uint8\+\_\+t $\ast$ptr\+\_\+addr) \begin{DoxyCompactList}\small\item\em validate that SCCP part with pointer + length doesn\textquotesingle{}t exceed msg tail \end{DoxyCompactList}\item static bool \textbf{ sccp\+\_\+longptr\+\_\+part\+\_\+consistent} (const struct msgb $\ast$msg, const uint8\+\_\+t $\ast$ptr\+\_\+addr, bool len\+\_\+is\+\_\+long) \begin{DoxyCompactList}\small\item\em validate that SCCP part with long pointer (2 bytes) + length doesn\textquotesingle{}t exceed msg tail \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, const uint8\+\_\+t $\ast$ptr\+\_\+addr) \begin{DoxyCompactList}\small\item\em convenience wrapper around \doxyref{xua\+\_\+msg\+\_\+add\+\_\+data()}{p.}{xua__msg_8c_a4ae37412514cbebf20c8d32c7433ce0e} for variable mandatory data \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+longdata\+\_\+to\+\_\+sua\+\_\+ptr} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, const uint8\+\_\+t $\ast$ptr\+\_\+addr) \begin{DoxyCompactList}\small\item\em convenience wrapper around \doxyref{xua\+\_\+msg\+\_\+add\+\_\+data()}{p.}{xua__msg_8c_a4ae37412514cbebf20c8d32c7433ce0e} for variable mandatory data \end{DoxyCompactList}\item static int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint8\+\_\+t sccp\+\_\+opt\+\_\+type, uint16\+\_\+t opt\+\_\+len, const uint8\+\_\+t $\ast$opt) \begin{DoxyCompactList}\small\item\em Convert a given SCCP option to SUA and add it to given \doxyref{xua\+\_\+msg}{p.}{structxua__msg}. \end{DoxyCompactList}\item static void \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt\+\_\+hdr} (struct msgb $\ast$msg, uint8\+\_\+t pnc, uint8\+\_\+t \textbf{ len}) \begin{DoxyCompactList}\small\item\em append a SCCP option header to the given message \end{DoxyCompactList}\item static void \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt} (struct msgb $\ast$msg, uint8\+\_\+t pnc, uint8\+\_\+t \textbf{ len}, const uint8\+\_\+t $\ast$\textbf{ data}) \begin{DoxyCompactList}\small\item\em append a SCCP option to the given message \end{DoxyCompactList}\item static int \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt} (enum sccp\+\_\+message\+\_\+types type, struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$opt) \begin{DoxyCompactList}\small\item\em Convert a given SUA option/\+IE to SCCP and add it to given $\ast$ msgb. \end{DoxyCompactList}\item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt} (const struct msgb $\ast$msg, const uint8\+\_\+t $\ast$ptr\+\_\+opt, bool ptr\+\_\+opt\+\_\+is\+\_\+long, struct \textbf{ xua\+\_\+msg} $\ast$xua) \begin{DoxyCompactList}\small\item\em convert SCCP optional part to list of SUA options \end{DoxyCompactList}\item static bool \textbf{ sccp\+\_\+is\+\_\+mandatory} (enum sccp\+\_\+message\+\_\+types type, const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$part) \item static bool \textbf{ sccp\+\_\+option\+\_\+permitted} (enum sccp\+\_\+message\+\_\+types type, const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$part) \item static int \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts} (struct msgb $\ast$msg, uint8\+\_\+t $\ast$ptr\+\_\+opt, bool ptr\+\_\+opt\+\_\+is\+\_\+long, enum sccp\+\_\+message\+\_\+types type, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ store\+\_\+local\+\_\+ref} (struct sccp\+\_\+source\+\_\+reference $\ast$local\+\_\+ref, const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cr} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cr} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cc} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cc} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cref} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cref} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlsd} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlsd} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlc} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlc} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+dt1} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+dt1} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udt} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludt} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudt} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludt} (struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udts} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudts} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludts} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudts} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludts} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+it} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+it} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+err} (const struct msgb $\ast$msg, struct \textbf{ xua\+\_\+msg} $\ast$xua) \item static int \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+err} (struct msgb $\ast$msg, const struct \textbf{ xua\+\_\+msg} $\ast$xua) \item struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua} (struct msgb $\ast$msg) \begin{DoxyCompactList}\small\item\em convert SCCP message to a SUA message \end{DoxyCompactList}\item struct msgb $\ast$ \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp} (struct \textbf{ xua\+\_\+msg} $\ast$xua) \begin{DoxyCompactList}\small\item\em convert parsed SUA message to SCCP message \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection*{Variables} \begin{DoxyCompactItemize} \item static const uint16\+\_\+t \textbf{ sccp\+\_\+mandatory} [\textbf{ NUM\+\_\+\+SCCP\+\_\+\+MSGT}][\textbf{ MAX\+\_\+\+IES}] \item static const uint16\+\_\+t \textbf{ sccp\+\_\+optional} [\textbf{ NUM\+\_\+\+SCCP\+\_\+\+MSGT}][\textbf{ MAX\+\_\+\+IES}] \end{DoxyCompactItemize} \doxysubsection{Macro Definition Documentation} \mbox{\label{sccp2sua_8c_ace91609f60d4d40f9c066f495724bf6f}} \index{sccp2sua.c@{sccp2sua.c}!MAX\_IES@{MAX\_IES}} \index{MAX\_IES@{MAX\_IES}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{MAX\_IES} {\footnotesize\ttfamily \#define MAX\+\_\+\+IES~6} \mbox{\label{sccp2sua_8c_a5578a4d0611ff53d0c6d2652f3ec7424}} \index{sccp2sua.c@{sccp2sua.c}!NUM\_SCCP\_MSGT@{NUM\_SCCP\_MSGT}} \index{NUM\_SCCP\_MSGT@{NUM\_SCCP\_MSGT}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{NUM\_SCCP\_MSGT} {\footnotesize\ttfamily \#define NUM\+\_\+\+SCCP\+\_\+\+MSGT~(SCCP\+\_\+\+MSG\+\_\+\+TYPE\+\_\+\+LUDTS+1)} \doxysubsection{Function Documentation} \mbox{\label{sccp2sua_8c_a28f447684767599e5b7ecf2a30fffb3c}} \index{sccp2sua.c@{sccp2sua.c}!load\_24be@{load\_24be}} \index{load\_24be@{load\_24be}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{load\_24be()} {\footnotesize\ttfamily static uint32\+\_\+t load\+\_\+24be (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ptr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} load a 24bit value as big-\/endian References \textbf{ data}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cc()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cr()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cref()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+dt1()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+err()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+it()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlc()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlsd()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt()}. \mbox{\label{sccp2sua_8c_a75f504850c4348db5a7c24951a71c718}} \index{sccp2sua.c@{sccp2sua.c}!msgb\_put\_sccp\_opt@{msgb\_put\_sccp\_opt}} \index{msgb\_put\_sccp\_opt@{msgb\_put\_sccp\_opt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{msgb\_put\_sccp\_opt()} {\footnotesize\ttfamily static void msgb\+\_\+put\+\_\+sccp\+\_\+opt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint8\+\_\+t}]{pnc, }\item[{uint8\+\_\+t}]{len, }\item[{const uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} append a SCCP option to the given message \begin{DoxyParams}[1]{Parameters} & {\em msg} & Message to which option is to be appended \\ \hline \mbox{\texttt{ in}} & {\em pnc} & PNC of the option header \\ \hline \mbox{\texttt{ in}} & {\em len} & length of the option, excluding the header \\ \hline \mbox{\texttt{ in}} & {\em data} & actual data to be appended \\ \hline \end{DoxyParams} References \textbf{ data}, \textbf{ len}, and \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt\+\_\+hdr()}. Referenced by \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt()}. \mbox{\label{sccp2sua_8c_a55b358a2c384720a15c9f59a922c0915}} \index{sccp2sua.c@{sccp2sua.c}!msgb\_put\_sccp\_opt\_hdr@{msgb\_put\_sccp\_opt\_hdr}} \index{msgb\_put\_sccp\_opt\_hdr@{msgb\_put\_sccp\_opt\_hdr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{msgb\_put\_sccp\_opt\_hdr()} {\footnotesize\ttfamily static void msgb\+\_\+put\+\_\+sccp\+\_\+opt\+\_\+hdr (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint8\+\_\+t}]{pnc, }\item[{uint8\+\_\+t}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} append a SCCP option header to the given message \begin{DoxyParams}[1]{Parameters} & {\em msg} & Message to which header is to be appended \\ \hline \mbox{\texttt{ in}} & {\em pnc} & PNC of the option header \\ \hline \mbox{\texttt{ in}} & {\em len} & length of the option, excluding the header \\ \hline \end{DoxyParams} References \textbf{ len}. Referenced by \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt()}, and \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt()}. \mbox{\label{sccp2sua_8c_a8c46fa65916535088ac6b766f0d46087}} \index{sccp2sua.c@{sccp2sua.c}!msgb\_put\_u16le@{msgb\_put\_u16le}} \index{msgb\_put\_u16le@{msgb\_put\_u16le}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{msgb\_put\_u16le()} {\footnotesize\ttfamily static void msgb\+\_\+put\+\_\+u16le (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint16\+\_\+t}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+encode()}. \mbox{\label{sccp2sua_8c_ac616af0d3d25d43151561038a02c798e}} \index{sccp2sua.c@{sccp2sua.c}!msgb\_put\_u24be@{msgb\_put\_u24be}} \index{msgb\_put\_u24be@{msgb\_put\_u24be}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{msgb\_put\_u24be()} {\footnotesize\ttfamily static void msgb\+\_\+put\+\_\+u24be (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint32\+\_\+t}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Referenced by \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt()}. \mbox{\label{sccp2sua_8c_aaed7c1eeef245f2c632987310cc49d2e}} \index{sccp2sua.c@{sccp2sua.c}!osmo\_isup\_party\_encode@{osmo\_isup\_party\_encode}} \index{osmo\_isup\_party\_encode@{osmo\_isup\_party\_encode}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{osmo\_isup\_party\_encode()} {\footnotesize\ttfamily int osmo\+\_\+isup\+\_\+party\+\_\+encode (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const char $\ast$}]{in\+\_\+digits }\end{DoxyParamCaption})} Encode an ISUP style address of BCD digits. \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ out}} & {\em msg} & Message to which the encoded address is appended \\ \hline \mbox{\texttt{ in}} & {\em in\+\_\+digits} & NUL-\/terminated ASCII string of digits \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} number of octets used for encoding in\+\_\+digits \end{DoxyReturn} Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+encode()}. \mbox{\label{sccp2sua_8c_a3f5e0d75271a5a2fda1821e9c9a720d9}} \index{sccp2sua.c@{sccp2sua.c}!osmo\_isup\_party\_parse@{osmo\_isup\_party\_parse}} \index{osmo\_isup\_party\_parse@{osmo\_isup\_party\_parse}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{osmo\_isup\_party\_parse()} {\footnotesize\ttfamily int osmo\+\_\+isup\+\_\+party\+\_\+parse (\begin{DoxyParamCaption}\item[{char $\ast$}]{out\+\_\+digits, }\item[{const uint8\+\_\+t $\ast$}]{in, }\item[{unsigned int}]{in\+\_\+num\+\_\+bytes, }\item[{bool}]{odd }\end{DoxyParamCaption})} Parse ISUP style address of BCD digets. \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ out}} & {\em out\+\_\+digits} & user-\/allocated buffer for ASCII digits \\ \hline \mbox{\texttt{ in}} & {\em in} & BCD-\/encoded digits \\ \hline \mbox{\texttt{ in}} & {\em in\+\_\+num\+\_\+bytes} & Size of in in bytes \\ \hline \mbox{\texttt{ in}} & {\em odd} & Odd (true) or even (false) number of digits \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} number of digits generated \end{DoxyReturn} Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+parse()}. \mbox{\label{sccp2sua_8c_ad9945ae60f1cdc481da3b70e15a50adf}} \index{sccp2sua.c@{sccp2sua.c}!osmo\_sccp\_addr\_encode@{osmo\_sccp\_addr\_encode}} \index{osmo\_sccp\_addr\_encode@{osmo\_sccp\_addr\_encode}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{osmo\_sccp\_addr\_encode()} {\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+addr\+\_\+encode (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{in }\end{DoxyParamCaption})} encode a SCCP address from parsed format to wire format \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ out}} & {\em msg} & message buffer to which address is to be appended \\ \hline \mbox{\texttt{ in}} & {\em in} & data structure describing SCCP address \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} number of bytes written to msg \end{DoxyReturn} References \textbf{ osmo\+\_\+sccp\+\_\+gt\+::digits}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::gt}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::gti}, \textbf{ msgb\+\_\+put\+\_\+u16le()}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::nai}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::npi}, \textbf{ osmo\+\_\+isup\+\_\+party\+\_\+encode()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NAI\+\_\+\+ONLY}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NO\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+NPL\+\_\+\+ENC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+NPL\+\_\+\+ENC\+\_\+\+NAI}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+ONLY}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+SSN\+\_\+\+PC}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ri}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, and \textbf{ osmo\+\_\+sccp\+\_\+gt\+::tt}. Referenced by \textbf{ sua\+\_\+addr\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_ade18fb9db8c9b52bc2ffc22af64d1d08}} \index{sccp2sua.c@{sccp2sua.c}!osmo\_sccp\_addr\_parse@{osmo\_sccp\_addr\_parse}} \index{osmo\_sccp\_addr\_parse@{osmo\_sccp\_addr\_parse}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{osmo\_sccp\_addr\_parse()} {\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+addr\+\_\+parse (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{out, }\item[{const uint8\+\_\+t $\ast$}]{addr, }\item[{unsigned int}]{addrlen }\end{DoxyParamCaption})} Parse wire-\/encoded SCCP address into \doxyref{osmo\+\_\+sccp\+\_\+addr}{p.}{structosmo__sccp__addr}. \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ out}} & {\em out} & user-\/allocated output data structure \\ \hline \mbox{\texttt{ in}} & {\em addr} & wire-\/encoded SCCP address \\ \hline \mbox{\texttt{ in}} & {\em addrlen} & Size of addr in bytes \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 in case of success, negative on error According to Q.\+713/3.4 and RFC3868/3.\+10.\+2 \end{DoxyReturn} References \textbf{ osmo\+\_\+sccp\+\_\+gt\+::digits}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::gt}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::gti}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::nai}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::npi}, \textbf{ osmo\+\_\+isup\+\_\+party\+\_\+parse()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NAI\+\_\+\+ONLY}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NO\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+NPL\+\_\+\+ENC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+NPL\+\_\+\+ENC\+\_\+\+NAI}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+ONLY}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+SSN\+\_\+\+PC}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ri}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, and \textbf{ osmo\+\_\+sccp\+\_\+gt\+::tt}. Referenced by \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua()}. \mbox{\label{sccp2sua_8c_aa2abebd0d9bde73c25cda86c785efe9a}} \index{sccp2sua.c@{sccp2sua.c}!osmo\_sccp\_to\_xua@{osmo\_sccp\_to\_xua}} \index{osmo\_sccp\_to\_xua@{osmo\_sccp\_to\_xua}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{osmo\_sccp\_to\_xua()} {\footnotesize\ttfamily struct \textbf{ xua\+\_\+msg} $\ast$ osmo\+\_\+sccp\+\_\+to\+\_\+xua (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})} convert SCCP message to a SUA message \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em msg} & message buffer holding SCCP message at l2h \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} callee-\/allocated x\+UA message on success; NULL on error \end{DoxyReturn} References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cc()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cr()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cref()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+dt1()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+err()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+it()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlc()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlsd()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudts()}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDR}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COAK}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COERR}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COIT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CORE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CL}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, and \textbf{ xua\+\_\+msg\+\_\+free()}. Referenced by \textbf{ mtp\+\_\+user\+\_\+prim\+\_\+cb()}, and \textbf{ patch\+\_\+sccp\+\_\+with\+\_\+pc()}. \mbox{\label{sccp2sua_8c_ab1f91915d46cc987f3dbd839b544e3ae}} \index{sccp2sua.c@{sccp2sua.c}!osmo\_sua\_to\_sccp@{osmo\_sua\_to\_sccp}} \index{osmo\_sua\_to\_sccp@{osmo\_sua\_to\_sccp}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{osmo\_sua\_to\_sccp()} {\footnotesize\ttfamily struct msgb $\ast$ osmo\+\_\+sua\+\_\+to\+\_\+sccp (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})} convert parsed SUA message to SCCP message \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em xua} & parsed SUA message to be converted \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} callee-\/allocated msgb containing encoded SCCP message \end{DoxyReturn} References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ sccp\+\_\+msgb\+\_\+alloc()}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDR}, \textbf{ SUA\+\_\+\+CL\+\_\+\+CLDT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COAK}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COERR}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COIT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CORE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CL}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cc()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cr()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cref()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+dt1()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+err()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+it()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlc()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlsd()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}, \textbf{ xua\+\_\+dialect\+\_\+sua}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}. Referenced by \textbf{ patch\+\_\+sccp\+\_\+with\+\_\+pc()}, and \textbf{ sua2sccp\+\_\+tx\+\_\+m3ua()}. \mbox{\label{sccp2sua_8c_a2a413e561f293f7b2232466294131004}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_add\_long\_variable\_part@{sccp\_add\_long\_variable\_part}} \index{sccp\_add\_long\_variable\_part@{sccp\_add\_long\_variable\_part}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_add\_long\_variable\_part()} {\footnotesize\ttfamily static int sccp\+\_\+add\+\_\+long\+\_\+variable\+\_\+part (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint8\+\_\+t $\ast$}]{var\+\_\+ptr, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Add a \char`\"{}\+SCCP Long Variable Mandatory Part\char`\"{} to the given msgb. \begin{DoxyParams}[1]{Parameters} & {\em msg} & Message buffer to which part shall be added \\ \hline \mbox{\texttt{ out}} & {\em var\+\_\+ptr} & pointer to relative pointer in SCCP header \\ \hline \mbox{\texttt{ in}} & {\em xua} & x\+UA message from which to use source data \\ \hline \mbox{\texttt{ in}} & {\em iei} & x\+UA information element identifier of source data \\ \hline \end{DoxyParams} References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludt()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludts()}. \mbox{\label{sccp2sua_8c_a084b0de9d42a55b67689b1c76a71594f}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_add\_var\_addr@{sccp\_add\_var\_addr}} \index{sccp\_add\_var\_addr@{sccp\_add\_var\_addr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_add\_var\_addr()} {\footnotesize\ttfamily static int sccp\+\_\+add\+\_\+var\+\_\+addr (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint8\+\_\+t $\ast$}]{var\+\_\+ptr, }\item[{bool}]{var\+\_\+ptr\+\_\+is\+\_\+long, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Add a \char`\"{}\+SCCP Variable Mandatory Part\char`\"{} (Address format) to the given msgb. \begin{DoxyParams}[1]{Parameters} & {\em msg} & Message buffer to which part shall be added \\ \hline \mbox{\texttt{ out}} & {\em var\+\_\+ptr} & pointer to relative pointer in SCCP header \\ \hline \mbox{\texttt{ in}} & {\em var\+\_\+ptr\+\_\+is\+\_\+long} & Whether the var\+\_\+ptr field is 2 bytes long (network order) \\ \hline \mbox{\texttt{ in}} & {\em xua} & x\+UA message from which to use address \\ \hline \mbox{\texttt{ in}} & {\em iei} & x\+UA information element identifier of address \\ \hline \end{DoxyParams} References \textbf{ sua\+\_\+addr\+\_\+to\+\_\+sccp()}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cr()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_a4954e72abf5054e73f0a1396e8c5fae4}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_add\_variable\_part@{sccp\_add\_variable\_part}} \index{sccp\_add\_variable\_part@{sccp\_add\_variable\_part}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_add\_variable\_part()} {\footnotesize\ttfamily static int sccp\+\_\+add\+\_\+variable\+\_\+part (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint8\+\_\+t $\ast$}]{var\+\_\+ptr, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Add a \char`\"{}\+SCCP Variable Mandatory Part\char`\"{} to the given msgb. \begin{DoxyParams}[1]{Parameters} & {\em msg} & Message buffer to which part shall be added \\ \hline \mbox{\texttt{ out}} & {\em var\+\_\+ptr} & pointer to relative pointer in SCCP header \\ \hline \mbox{\texttt{ in}} & {\em xua} & x\+UA message from which to use source data \\ \hline \mbox{\texttt{ in}} & {\em iei} & x\+UA information element identifier of source data \\ \hline \end{DoxyParams} References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+dt1()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_a3a2c083bc428a4ab007a482686f1d6e8}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_addr\_to\_sua@{sccp\_addr\_to\_sua}} \index{sccp\_addr\_to\_sua@{sccp\_addr\_to\_sua}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_addr\_to\_sua()} {\footnotesize\ttfamily static int sccp\+\_\+addr\+\_\+to\+\_\+sua (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei, }\item[{const uint8\+\_\+t $\ast$}]{addr, }\item[{unsigned int}]{addrlen }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} convert SCCP address to SUA address \begin{DoxyParams}[1]{Parameters} & {\em xua} & user-\/provided x\+UA message to which address shall be added \\ \hline \mbox{\texttt{ in}} & {\em iei} & SUA Information Element Identifier for address \\ \hline \mbox{\texttt{ in}} & {\em addr} & SCCP wire format binary address \\ \hline \mbox{\texttt{ in}} & {\em addrlen} & Size of addr in bytes \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 in case of success; negative on error \end{DoxyReturn} References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+dump()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+parse()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr()}. Referenced by \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt()}. \mbox{\label{sccp2sua_8c_abd032a6bdf6431a59f22bbf507bb357d}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_addr\_to\_sua\_ptr@{sccp\_addr\_to\_sua\_ptr}} \index{sccp\_addr\_to\_sua\_ptr@{sccp\_addr\_to\_sua\_ptr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_addr\_to\_sua\_ptr()} {\footnotesize\ttfamily static int sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei, }\item[{const uint8\+\_\+t $\ast$}]{ptr\+\_\+addr, }\item[{bool}]{ptr\+\_\+addr\+\_\+is\+\_\+long }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} convenience wrapper around \doxyref{sccp\+\_\+addr\+\_\+to\+\_\+sua()}{p.}{sccp2sua_8c_a3a2c083bc428a4ab007a482686f1d6e8} for variable mandatory addresses References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua()}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cr()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudt()}, and \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_a84506b90841a2c95246555fed2b8a170}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_data\_to\_sua\_ptr@{sccp\_data\_to\_sua\_ptr}} \index{sccp\_data\_to\_sua\_ptr@{sccp\_data\_to\_sua\_ptr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_data\_to\_sua\_ptr()} {\footnotesize\ttfamily static int sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei, }\item[{const uint8\+\_\+t $\ast$}]{ptr\+\_\+addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} convenience wrapper around \doxyref{xua\+\_\+msg\+\_\+add\+\_\+data()}{p.}{xua__msg_8c_a4ae37412514cbebf20c8d32c7433ce0e} for variable mandatory data References \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+dt1()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudt()}, and \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_ac5302e03c17d5bbe207d52ba9eb64664}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_is\_mandatory@{sccp\_is\_mandatory}} \index{sccp\_is\_mandatory@{sccp\_is\_mandatory}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_is\_mandatory()} {\footnotesize\ttfamily static bool sccp\+\_\+is\+\_\+mandatory (\begin{DoxyParamCaption}\item[{enum sccp\+\_\+message\+\_\+types}]{type, }\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{part }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ MAX\+\_\+\+IES}, \textbf{ sccp\+\_\+mandatory}, and \textbf{ xua\+\_\+msg\+\_\+part\+::tag}. Referenced by \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}. \mbox{\label{sccp2sua_8c_a4bb63dcc0791ff775736649a58988f88}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_longdata\_to\_sua\_ptr@{sccp\_longdata\_to\_sua\_ptr}} \index{sccp\_longdata\_to\_sua\_ptr@{sccp\_longdata\_to\_sua\_ptr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_longdata\_to\_sua\_ptr()} {\footnotesize\ttfamily static int sccp\+\_\+longdata\+\_\+to\+\_\+sua\+\_\+ptr (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei, }\item[{const uint8\+\_\+t $\ast$}]{ptr\+\_\+addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} convenience wrapper around \doxyref{xua\+\_\+msg\+\_\+add\+\_\+data()}{p.}{xua__msg_8c_a4ae37412514cbebf20c8d32c7433ce0e} for variable mandatory data References \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludt()}, and \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludts()}. \mbox{\label{sccp2sua_8c_a451050d190bbcae3141f9361525f3bd2}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_longptr\_part\_consistent@{sccp\_longptr\_part\_consistent}} \index{sccp\_longptr\_part\_consistent@{sccp\_longptr\_part\_consistent}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_longptr\_part\_consistent()} {\footnotesize\ttfamily static bool sccp\+\_\+longptr\+\_\+part\+\_\+consistent (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{const uint8\+\_\+t $\ast$}]{ptr\+\_\+addr, }\item[{bool}]{len\+\_\+is\+\_\+long }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} validate that SCCP part with long pointer (2 bytes) + length doesn\textquotesingle{}t exceed msg tail \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em msg} & Message containing SCCP address (LUDT or LUDTS) \\ \hline \mbox{\texttt{ in}} & {\em ptr\+\_\+addr} & pointer to byte with relative SCCP long pointer (uint16\+\_\+t, 2 bytes in network order) \\ \hline \mbox{\texttt{ in}} & {\em len\+\_\+is\+\_\+long} & whether the length field at the starting of the value field pointer to by ptr\+\_\+addr is 2 bytes long. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} true if OK; false if message inconsistent \end{DoxyReturn} References \textbf{ data}, and \textbf{ len}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludt()}, and \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludts()}. \mbox{\label{sccp2sua_8c_aa9235c6e60983b680f0c304e58a112e7}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_msg\_add\_sua\_opt@{sccp\_msg\_add\_sua\_opt}} \index{sccp\_msg\_add\_sua\_opt@{sccp\_msg\_add\_sua\_opt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_msg\_add\_sua\_opt()} {\footnotesize\ttfamily static int sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt (\begin{DoxyParamCaption}\item[{enum sccp\+\_\+message\+\_\+types}]{type, }\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{opt }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Convert a given SUA option/\+IE to SCCP and add it to given $\ast$ msgb. \begin{DoxyParams}[1]{Parameters} & {\em msg} & caller-\/provided message buffer to which option is to be appended \\ \hline \mbox{\texttt{ in}} & {\em opt} & x\+UA option/\+IE (messge part) to be converted+added \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 in case of success; negative on error \end{DoxyReturn} References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt()}, \textbf{ msgb\+\_\+put\+\_\+sccp\+\_\+opt\+\_\+hdr()}, \textbf{ msgb\+\_\+put\+\_\+u24be()}, \textbf{ sua\+\_\+addr\+\_\+to\+\_\+sccp()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+ERROR}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+MASK}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+REFUSAL}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RELEASE}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RESET}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RETURN}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CREDIT}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+IMPORTANCE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SEQ\+\_\+\+CTRL}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32()}. Referenced by \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}. \mbox{\label{sccp2sua_8c_a45a2931f3b53f80e1bb58dcf7798134d}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_option\_permitted@{sccp\_option\_permitted}} \index{sccp\_option\_permitted@{sccp\_option\_permitted}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_option\_permitted()} {\footnotesize\ttfamily static bool sccp\+\_\+option\+\_\+permitted (\begin{DoxyParamCaption}\item[{enum sccp\+\_\+message\+\_\+types}]{type, }\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{part }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ MAX\+\_\+\+IES}, \textbf{ sccp\+\_\+optional}, and \textbf{ xua\+\_\+msg\+\_\+part\+::tag}. Referenced by \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}. \mbox{\label{sccp2sua_8c_a906d266ba3acae5efeee6a67684a260e}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_ptr\_part\_consistent@{sccp\_ptr\_part\_consistent}} \index{sccp\_ptr\_part\_consistent@{sccp\_ptr\_part\_consistent}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_ptr\_part\_consistent()} {\footnotesize\ttfamily static bool sccp\+\_\+ptr\+\_\+part\+\_\+consistent (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{const uint8\+\_\+t $\ast$}]{ptr\+\_\+addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} validate that SCCP part with pointer + length doesn\textquotesingle{}t exceed msg tail \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em msg} & Message containing SCCP address \\ \hline \mbox{\texttt{ in}} & {\em ptr\+\_\+addr} & pointer to byte with relative SCCP pointer \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} true if OK; false if message inconsistent \end{DoxyReturn} References \textbf{ data}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cr()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+dt1()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+udts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudt()}, and \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_ac37150cbea52b3c1ee612ffe7642e3ac}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_cc@{sccp\_to\_xua\_cc}} \index{sccp\_to\_xua\_cc@{sccp\_to\_xua\_cc}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_cc()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+cc (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_af38267b61e645579fead5c47231dfae9}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_cr@{sccp\_to\_xua\_cr}} \index{sccp\_to\_xua\_cr@{sccp\_to\_xua\_cr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_cr()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+cr (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_ae83ae7e79b732bdb3790b1065c9b9015}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_cref@{sccp\_to\_xua\_cref}} \index{sccp\_to\_xua\_cref@{sccp\_to\_xua\_cref}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_cref()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+cref (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+REFUSAL}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_acbdf5d58fc4755e741182af929fba13a}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_dt1@{sccp\_to\_xua\_dt1}} \index{sccp\_to\_xua\_dt1@{sccp\_to\_xua\_dt1}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_dt1()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+dt1 (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SEGMENTATION}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_a43b42f127fa8fab19f670e32b6631d13}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_err@{sccp\_to\_xua\_err}} \index{sccp\_to\_xua\_err@{sccp\_to\_xua\_err}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_err()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+err (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+ERROR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_a9c6ddbfffa336fe90cb060c55fe78b84}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_it@{sccp\_to\_xua\_it}} \index{sccp\_to\_xua\_it@{sccp\_to\_xua\_it}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_it()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+it (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CREDIT}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_adee93c00af66e22da21025bf7db2bc99}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_ludt@{sccp\_to\_xua\_ludt}} \index{sccp\_to\_xua\_ludt@{sccp\_to\_xua\_ludt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_ludt()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+ludt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+longdata\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+longptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_ac2371a193558cd51729f525f8b016c37}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_ludts@{sccp\_to\_xua\_ludts}} \index{sccp\_to\_xua\_ludts@{sccp\_to\_xua\_ludts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_ludts()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+ludts (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+longdata\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+longptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RETURN}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_a4fbddc9cc8a892774df18e48c0f26c9c}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_opt@{sccp\_to\_xua\_opt}} \index{sccp\_to\_xua\_opt@{sccp\_to\_xua\_opt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_opt()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+opt (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{const uint8\+\_\+t $\ast$}]{ptr\+\_\+opt, }\item[{bool}]{ptr\+\_\+opt\+\_\+is\+\_\+long, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} convert SCCP optional part to list of SUA options \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em msg} & Message buffer holding SCCP message \\ \hline \mbox{\texttt{ in}} & {\em ptr\+\_\+opt} & address of relative pointer to optional part \\ \hline \mbox{\texttt{ in}} & {\em ptr\+\_\+opt\+\_\+is\+\_\+long} & whether ptr\+\_\+opt is a long pointer (2 bytes, network order) \\ \hline & {\em xua} & caller-\/provided x\+UA message to which options are added \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ data}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt()}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cc()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cr()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+cref()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludt()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+ludts()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+rlsd()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudt()}, and \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_a61d6f7a8cd7c470b8429bc7c6cfa663b}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_rlc@{sccp\_to\_xua\_rlc}} \index{sccp\_to\_xua\_rlc@{sccp\_to\_xua\_rlc}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_rlc()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+rlc (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_a8ef5b8690f76300faafbffa02d36ee32}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_rlsd@{sccp\_to\_xua\_rlsd}} \index{sccp\_to\_xua\_rlsd@{sccp\_to\_xua\_rlsd}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_rlsd()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+rlsd (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RELEASE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_a2a3e0e54f9de236dffd124849c6c873a}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_udt@{sccp\_to\_xua\_udt}} \index{sccp\_to\_xua\_udt@{sccp\_to\_xua\_udt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_udt()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+udt (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_ab0e712d0a2b3f6e0ea96ff29c3396460}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_udts@{sccp\_to\_xua\_udts}} \index{sccp\_to\_xua\_udts@{sccp\_to\_xua\_udts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_udts()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+udts (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RETURN}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_ae0c88c7d76c2b81fb3c5ede2a775cb38}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_xudt@{sccp\_to\_xua\_xudt}} \index{sccp\_to\_xua\_xudt@{sccp\_to\_xua\_xudt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_xudt()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+xudt (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_ad020e200d6df2b614dbe98a198807103}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_to\_xua\_xudts@{sccp\_to\_xua\_xudts}} \index{sccp\_to\_xua\_xudts@{sccp\_to\_xua\_xudts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_to\_xua\_xudts()} {\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ sccp\+\_\+to\+\_\+xua\+\_\+xudts (\begin{DoxyParamCaption}\item[{const struct msgb $\ast$}]{msg, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+ptr\+\_\+part\+\_\+consistent()}, \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RETURN}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}. \mbox{\label{sccp2sua_8c_aeadc1cc1e594c9f93a50479c82af66ed}} \index{sccp2sua.c@{sccp2sua.c}!store\_local\_ref@{store\_local\_ref}} \index{store\_local\_ref@{store\_local\_ref}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{store\_local\_ref()} {\footnotesize\ttfamily static int store\+\_\+local\+\_\+ref (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{local\+\_\+ref, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cc()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cr()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cref()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+dt1()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+err()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+it()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlc()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlsd()}. \mbox{\label{sccp2sua_8c_a115235962dce504b4941e169190ef812}} \index{sccp2sua.c@{sccp2sua.c}!sua\_addr\_to\_sccp@{sua\_addr\_to\_sccp}} \index{sua\_addr\_to\_sccp@{sua\_addr\_to\_sccp}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_addr\_to\_sccp()} {\footnotesize\ttfamily static int sua\+\_\+addr\+\_\+to\+\_\+sccp (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{part }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} convert SUA address to SCCP address \begin{DoxyParams}[1]{Parameters} & {\em msg} & user-\/provided message buffer to which address shall be $\ast$ appended \\ \hline \mbox{\texttt{ in}} & {\em part} & SUA wire format binary address \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 in case of success; negative on error \end{DoxyReturn} References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+encode()}, and \textbf{ sua\+\_\+addr\+\_\+parse\+\_\+part()}. Referenced by \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, and \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt()}. \mbox{\label{sccp2sua_8c_a9133d0d77b370e09b8318d8d0b350566}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_cc@{sua\_to\_sccp\_cc}} \index{sua\_to\_sccp\_cc@{sua\_to\_sccp\_cc}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_cc()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+cc (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a56e6a5eab1eb059a192bce5127bfaf10}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_cr@{sua\_to\_sccp\_cr}} \index{sua\_to\_sccp\_cr@{sua\_to\_sccp\_cr}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_cr()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+cr (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a864858600e4560e86e2ed50999c23143}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_cref@{sua\_to\_sccp\_cref}} \index{sua\_to\_sccp\_cref@{sua\_to\_sccp\_cref}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_cref()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+cref (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyReturn}{Returns} xua in case of success, NULL on error (xua not freed!) \end{DoxyReturn} References \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a766aae11cdb8cef500f4b7be1cc84aae}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_dt1@{sua\_to\_sccp\_dt1}} \index{sua\_to\_sccp\_dt1@{sua\_to\_sccp\_dt1}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_dt1()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+dt1 (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part()}, \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SEGMENTATION}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_aabd3d7f97b33c90adde8dcc6524126d2}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_err@{sua\_to\_sccp\_err}} \index{sua\_to\_sccp\_err@{sua\_to\_sccp\_err}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_err()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+err (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a7237c8cb32d20eb41a236a060d4a6e60}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_it@{sua\_to\_sccp\_it}} \index{sua\_to\_sccp\_it@{sua\_to\_sccp\_it}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_it()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+it (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CREDIT}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_ada38ab87d0cc1e404bd9387de7e81114}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_ludt@{sua\_to\_sccp\_ludt}} \index{sua\_to\_sccp\_ludt@{sua\_to\_sccp\_ludt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_ludt()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+ludt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+long\+\_\+variable\+\_\+part()}, \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}. \mbox{\label{sccp2sua_8c_ad7f7512a74ff63257f8931c6fe7713bd}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_ludts@{sua\_to\_sccp\_ludts}} \index{sua\_to\_sccp\_ludts@{sua\_to\_sccp\_ludts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_ludts()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+ludts (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+long\+\_\+variable\+\_\+part()}, \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}. \mbox{\label{sccp2sua_8c_a33bb22092a774f4fe629ccbc373bc0ab}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_rlc@{sua\_to\_sccp\_rlc}} \index{sua\_to\_sccp\_rlc@{sua\_to\_sccp\_rlc}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_rlc()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+rlc (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, and \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a66f9d0b863a0f24931a3e45e8917703b}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_rlsd@{sua\_to\_sccp\_rlsd}} \index{sua\_to\_sccp\_rlsd@{sua\_to\_sccp\_rlsd}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_rlsd()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+rlsd (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_aa742cb1ae48a50a4ba39ef7ce03927e3}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_udt@{sua\_to\_sccp\_udt}} \index{sua\_to\_sccp\_udt@{sua\_to\_sccp\_udt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_udt()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+udt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+len()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a969726e2cbef72c719b41175212d4f81}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_udts@{sua\_to\_sccp\_udts}} \index{sua\_to\_sccp\_udts@{sua\_to\_sccp\_udts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_udts()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+udts (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudts()}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+len()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}. \mbox{\label{sccp2sua_8c_a86f03d34f0d0b1c78a668d573b4816b6}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_xudt@{sua\_to\_sccp\_xudt}} \index{sua\_to\_sccp\_xudt@{sua\_to\_sccp\_xudt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_xudt()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+xudt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludt()}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+len()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}. \mbox{\label{sccp2sua_8c_a6c30e57820366e1c1cca222b085c18d2}} \index{sccp2sua.c@{sccp2sua.c}!sua\_to\_sccp\_xudts@{sua\_to\_sccp\_xudts}} \index{sua\_to\_sccp\_xudts@{sua\_to\_sccp\_xudts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sua\_to\_sccp\_xudts()} {\footnotesize\ttfamily static int sua\+\_\+to\+\_\+sccp\+\_\+xudts (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}. \mbox{\label{sccp2sua_8c_a89324a525dcb0ba4bf5868b18d7dc481}} \index{sccp2sua.c@{sccp2sua.c}!xua\_ies\_to\_sccp\_opts@{xua\_ies\_to\_sccp\_opts}} \index{xua\_ies\_to\_sccp\_opts@{xua\_ies\_to\_sccp\_opts}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{xua\_ies\_to\_sccp\_opts()} {\footnotesize\ttfamily static int xua\+\_\+ies\+\_\+to\+\_\+sccp\+\_\+opts (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg, }\item[{uint8\+\_\+t $\ast$}]{ptr\+\_\+opt, }\item[{bool}]{ptr\+\_\+opt\+\_\+is\+\_\+long, }\item[{enum sccp\+\_\+message\+\_\+types}]{type, }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References \textbf{ xua\+\_\+msg\+\_\+part\+::entry}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ sccp\+\_\+is\+\_\+mandatory()}, \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt()}, and \textbf{ sccp\+\_\+option\+\_\+permitted()}. Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cc()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cr()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+cref()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlsd()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudts()}. \mbox{\label{sccp2sua_8c_acbd799eca50b01abffc1f233884e8b20}} \index{sccp2sua.c@{sccp2sua.c}!xua\_msg\_add\_sccp\_opt@{xua\_msg\_add\_sccp\_opt}} \index{xua\_msg\_add\_sccp\_opt@{xua\_msg\_add\_sccp\_opt}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{xua\_msg\_add\_sccp\_opt()} {\footnotesize\ttfamily static int xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{uint8\+\_\+t}]{sccp\+\_\+opt\+\_\+type, }\item[{uint16\+\_\+t}]{opt\+\_\+len, }\item[{const uint8\+\_\+t $\ast$}]{opt }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Convert a given SCCP option to SUA and add it to given \doxyref{xua\+\_\+msg}{p.}{structxua__msg}. \begin{DoxyParams}[1]{Parameters} & {\em xua} & caller-\/provided x\+UA message to which option is to be added \\ \hline \mbox{\texttt{ in}} & {\em sccp\+\_\+opt\+\_\+type} & SCCP option type (PNC) \\ \hline \mbox{\texttt{ in}} & {\em opt\+\_\+len} & size of opt in bytes \\ \hline \mbox{\texttt{ in}} & {\em opt} & pointer to wire-\/format encoded SCCP option data \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} 0 in case of success; negative on error \end{DoxyReturn} References \textbf{ load\+\_\+24be()}, \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua()}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+ERROR}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+REFUSAL}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RELEASE}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RESET}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RETURN}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+IMPORTANCE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+S7\+\_\+\+HOP\+\_\+\+CTR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}. Referenced by \textbf{ sccp\+\_\+to\+\_\+xua\+\_\+opt()}. \doxysubsection{Variable Documentation} \mbox{\label{sccp2sua_8c_a710caabefe9d58a9fab6acbe5801674b}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_mandatory@{sccp\_mandatory}} \index{sccp\_mandatory@{sccp\_mandatory}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_mandatory} {\footnotesize\ttfamily const uint16\+\_\+t sccp\+\_\+mandatory[\textbf{ NUM\+\_\+\+SCCP\+\_\+\+MSGT}][\textbf{ MAX\+\_\+\+IES}]\hspace{0.3cm}{\ttfamily [static]}} Referenced by \textbf{ sccp\+\_\+is\+\_\+mandatory()}. \mbox{\label{sccp2sua_8c_ae8b6026f55de02444613f6b9fb91884c}} \index{sccp2sua.c@{sccp2sua.c}!sccp\_optional@{sccp\_optional}} \index{sccp\_optional@{sccp\_optional}!sccp2sua.c@{sccp2sua.c}} \doxysubsubsection{sccp\_optional} {\footnotesize\ttfamily const uint16\+\_\+t sccp\+\_\+optional[\textbf{ NUM\+\_\+\+SCCP\+\_\+\+MSGT}][\textbf{ MAX\+\_\+\+IES}]\hspace{0.3cm}{\ttfamily [static]}} Referenced by \textbf{ sccp\+\_\+option\+\_\+permitted()}.