\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`\"{}ss7\+\_\+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 
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} (const 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} (const 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} (const 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_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_abb99fc322c028490e6f0c65e0b809db6}} 
\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[{const 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{ NULL}, \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{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}, \textbf{ mtp\+\_\+user\+\_\+prim\+\_\+cb()}, \textbf{ patch\+\_\+sccp\+\_\+with\+\_\+pc()}, and \textbf{ tcap\+\_\+as\+\_\+rx\+\_\+sccp\+\_\+asp()}.

\mbox{\label{sccp2sua_8c_ad6cfda6b5066305b1e2e2c8d736cdec2}} 
\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[{const 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{ NULL}, \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()}, \textbf{ send\+\_\+back\+\_\+udts()}, 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{ NULL}, \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{ NULL}, \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{ err}, \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_ac3b277473c37a3faf776ee0e0e568e0d}} 
\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[{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{ NULL}, \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{ NULL}, \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}, \textbf{ NULL}, 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{ NULL}, \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{ NULL}, \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{ NULL}, \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{ NULL}, \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{ err}, \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()}.

