\doxysection{src/xua\+\_\+msg.h File Reference}
\label{src_2xua__msg_8h}\index{src/xua\_msg.h@{src/xua\_msg.h}}
{\ttfamily \#include \char`\"{}xua\+\_\+types.\+h\char`\"{}}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/mtp\+\_\+sap.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ xua\+\_\+msg}
\item 
struct \textbf{ xua\+\_\+msg\+\_\+part}
\item 
struct \textbf{ xua\+\_\+msg\+\_\+class}
\item 
struct \textbf{ xua\+\_\+dialect}
\item 
struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ XUA\+\_\+\+HDR}(class,  type)~((struct \textbf{ xua\+\_\+common\+\_\+hdr}) \{ .\textbf{ spare} = 0, .\textbf{ msg\+\_\+class} = (class), .\textbf{ msg\+\_\+type} = (type) \})
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ osmo\+\_\+xua\+\_\+msg\+\_\+tall\+\_\+ctx\+\_\+init} (void $\ast$ctx)
\item 
struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ xua\+\_\+msg\+\_\+alloc} (void)
\item 
void \textbf{ xua\+\_\+msg\+\_\+free} (struct \textbf{ xua\+\_\+msg} $\ast$msg)
\item 
struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ xua\+\_\+msg\+\_\+copy} (const struct \textbf{ xua\+\_\+msg} $\ast$xua\+\_\+in)
\item 
int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data} (struct \textbf{ xua\+\_\+msg} $\ast$msg, uint16\+\_\+t \textbf{ tag}, uint16\+\_\+t \textbf{ len}, const uint8\+\_\+t $\ast$dat)
\item 
int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32\+\_\+data} (struct \textbf{ xua\+\_\+msg} $\ast$msg, uint16\+\_\+t \textbf{ tag}, uint16\+\_\+t \textbf{ len}, const uint8\+\_\+t $\ast$dat)
\item 
struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$ \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag} (const struct \textbf{ xua\+\_\+msg} $\ast$msg, uint16\+\_\+t \textbf{ tag})
\item 
int \textbf{ xua\+\_\+msg\+\_\+free\+\_\+tag} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t \textbf{ tag})
\item 
int \textbf{ xua\+\_\+msg\+\_\+copy\+\_\+part} (struct \textbf{ xua\+\_\+msg} $\ast$xua\+\_\+out, uint16\+\_\+t tag\+\_\+out, const struct \textbf{ xua\+\_\+msg} $\ast$xua\+\_\+in, uint16\+\_\+t tag\+\_\+in)
\item 
struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ xua\+\_\+from\+\_\+msg} (const int \textbf{ version}, uint16\+\_\+t \textbf{ len}, uint8\+\_\+t $\ast$\textbf{ data})
\item 
struct msgb $\ast$ \textbf{ xua\+\_\+to\+\_\+msg} (const int \textbf{ version}, struct \textbf{ xua\+\_\+msg} $\ast$msg)
\item 
struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ xua\+\_\+from\+\_\+nested} (struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$outer)
\item 
int \textbf{ msgb\+\_\+t16l16vp\+\_\+put} (struct msgb $\ast$msg, uint16\+\_\+t \textbf{ tag}, uint16\+\_\+t \textbf{ len}, const uint8\+\_\+t $\ast$\textbf{ data})
\item 
int \textbf{ msgb\+\_\+t16l16vp\+\_\+put\+\_\+u32} (struct msgb $\ast$msg, uint16\+\_\+t \textbf{ tag}, uint32\+\_\+t val)
\item 
int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, uint32\+\_\+t val)
\item 
uint32\+\_\+t \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32} (const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$part)
\item 
uint32\+\_\+t \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei)
\item 
const uint32\+\_\+t $\ast$ \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32p} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, uint32\+\_\+t $\ast$out)
\item 
const char $\ast$ \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+str} (const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$part)
\item 
const char $\ast$ \textbf{ xua\+\_\+msg\+\_\+get\+\_\+str} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei)
\item 
int \textbf{ xua\+\_\+msg\+\_\+get\+\_\+len} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei)
\item 
void \textbf{ xua\+\_\+part\+\_\+add\+\_\+gt} (struct msgb $\ast$msg, const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$gt)
\item 
int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr} (struct \textbf{ xua\+\_\+msg} $\ast$xua, uint16\+\_\+t iei, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
const char $\ast$ \textbf{ xua\+\_\+class\+\_\+msg\+\_\+name} (const struct \textbf{ xua\+\_\+msg\+\_\+class} $\ast$xmc, uint16\+\_\+t \textbf{ msg\+\_\+type})
\item 
const char $\ast$ \textbf{ xua\+\_\+class\+\_\+iei\+\_\+name} (const struct \textbf{ xua\+\_\+msg\+\_\+class} $\ast$xmc, uint16\+\_\+t iei)
\item 
char $\ast$ \textbf{ xua\+\_\+hdr\+\_\+dump} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, const struct \textbf{ xua\+\_\+dialect} $\ast$dialect)
\item 
char $\ast$ \textbf{ xua\+\_\+msg\+\_\+dump} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, const struct \textbf{ xua\+\_\+dialect} $\ast$dialect)
\item 
int \textbf{ xua\+\_\+dialect\+\_\+check\+\_\+all\+\_\+mand\+\_\+ies} (const struct \textbf{ xua\+\_\+dialect} $\ast$dialect, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
int \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} (const struct \textbf{ xua\+\_\+msg} $\ast$xua, const struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} $\ast$maps, unsigned int num\+\_\+maps)
\begin{DoxyCompactList}\small\item\em Map from a \doxyref{xua\+\_\+msg}{p.}{structxua__msg} (class+type) to an event. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ xua\+\_\+dialect} \textbf{ xua\+\_\+dialect\+\_\+sua}
\item 
const struct \textbf{ xua\+\_\+dialect} \textbf{ xua\+\_\+dialect\+\_\+m3ua}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{src_2xua__msg_8h_a54c3f19b8755a268a33ba6b02b455b45}} 
\index{xua\_msg.h@{xua\_msg.h}!XUA\_HDR@{XUA\_HDR}}
\index{XUA\_HDR@{XUA\_HDR}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{XUA\_HDR}
{\footnotesize\ttfamily \#define XUA\+\_\+\+HDR(\begin{DoxyParamCaption}\item[{}]{class,  }\item[{}]{type }\end{DoxyParamCaption})~((struct \textbf{ xua\+\_\+common\+\_\+hdr}) \{ .\textbf{ spare} = 0, .\textbf{ msg\+\_\+class} = (class), .\textbf{ msg\+\_\+type} = (type) \})}



\doxysubsection{Function Documentation}
\mbox{\label{src_2xua__msg_8h_a57bc23234174c710ba00aada6a4f9a3e}} 
\index{xua\_msg.h@{xua\_msg.h}!msgb\_t16l16vp\_put@{msgb\_t16l16vp\_put}}
\index{msgb\_t16l16vp\_put@{msgb\_t16l16vp\_put}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{msgb\_t16l16vp\_put()}
{\footnotesize\ttfamily int msgb\+\_\+t16l16vp\+\_\+put (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg,  }\item[{uint16\+\_\+t}]{tag,  }\item[{uint16\+\_\+t}]{len,  }\item[{const uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ len}, and \textbf{ tag}.



Referenced by \textbf{ msgb\+\_\+t16l16vp\+\_\+put\+\_\+u32()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr()}.

\mbox{\label{src_2xua__msg_8h_a6a68a942e39b6b95e1631c26ece536f9}} 
\index{xua\_msg.h@{xua\_msg.h}!msgb\_t16l16vp\_put\_u32@{msgb\_t16l16vp\_put\_u32}}
\index{msgb\_t16l16vp\_put\_u32@{msgb\_t16l16vp\_put\_u32}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{msgb\_t16l16vp\_put\_u32()}
{\footnotesize\ttfamily int msgb\+\_\+t16l16vp\+\_\+put\+\_\+u32 (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg,  }\item[{uint16\+\_\+t}]{tag,  }\item[{uint32\+\_\+t}]{val }\end{DoxyParamCaption})}



References \textbf{ msgb\+\_\+t16l16vp\+\_\+put()}, and \textbf{ tag}.



Referenced by \textbf{ msgb\+\_\+append\+\_\+dereg\+\_\+res()}, \textbf{ msgb\+\_\+append\+\_\+reg\+\_\+res()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr()}, \textbf{ xua\+\_\+rkm\+\_\+send\+\_\+dereg\+\_\+req()}, and \textbf{ xua\+\_\+rkm\+\_\+send\+\_\+reg\+\_\+req()}.

\mbox{\label{src_2xua__msg_8h_a50ffc7dc3d0ef2fb98fd562cedee968c}} 
\index{xua\_msg.h@{xua\_msg.h}!osmo\_xua\_msg\_tall\_ctx\_init@{osmo\_xua\_msg\_tall\_ctx\_init}}
\index{osmo\_xua\_msg\_tall\_ctx\_init@{osmo\_xua\_msg\_tall\_ctx\_init}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{osmo\_xua\_msg\_tall\_ctx\_init()}
{\footnotesize\ttfamily void osmo\+\_\+xua\+\_\+msg\+\_\+tall\+\_\+ctx\+\_\+init (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}

\mbox{\label{src_2xua__msg_8h_a0cb8214af12ccf4cea7b1736112c8960}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_class\_iei\_name@{xua\_class\_iei\_name}}
\index{xua\_class\_iei\_name@{xua\_class\_iei\_name}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_class\_iei\_name()}
{\footnotesize\ttfamily const char $\ast$ xua\+\_\+class\+\_\+iei\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg\+\_\+class} $\ast$}]{xmc,  }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+class\+::iei\+\_\+names}.



Referenced by \textbf{ xua\+\_\+dialect\+\_\+check\+\_\+all\+\_\+mand\+\_\+ies()}, and \textbf{ xua\+\_\+msg\+\_\+dump()}.

\mbox{\label{src_2xua__msg_8h_ac81661d15760aa6efd3a4706952da090}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_class\_msg\_name@{xua\_class\_msg\_name}}
\index{xua\_class\_msg\_name@{xua\_class\_msg\_name}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_class\_msg\_name()}
{\footnotesize\ttfamily const char $\ast$ xua\+\_\+class\+\_\+msg\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg\+\_\+class} $\ast$}]{xmc,  }\item[{uint16\+\_\+t}]{msg\+\_\+type }\end{DoxyParamCaption})}



References \textbf{ msg\+\_\+type}, and \textbf{ xua\+\_\+msg\+\_\+class\+::msgt\+\_\+names}.



Referenced by \textbf{ sccp\+\_\+conn\+\_\+opt\+\_\+data\+\_\+send\+\_\+cache()}, \textbf{ xua\+\_\+dialect\+\_\+check\+\_\+all\+\_\+mand\+\_\+ies()}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}.

\mbox{\label{src_2xua__msg_8h_af3551c1ea17591d3f0c85ffda35f5c15}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_dialect\_check\_all\_mand\_ies@{xua\_dialect\_check\_all\_mand\_ies}}
\index{xua\_dialect\_check\_all\_mand\_ies@{xua\_dialect\_check\_all\_mand\_ies}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_dialect\_check\_all\_mand\_ies()}
{\footnotesize\ttfamily int xua\+\_\+dialect\+\_\+check\+\_\+all\+\_\+mand\+\_\+ies (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+dialect} $\ast$}]{dialect,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+dialect\+::class}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+dialect\+::log\+\_\+subsys}, \textbf{ xua\+\_\+msg\+\_\+class\+::mand\+\_\+ies}, \textbf{ msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ msg\+\_\+type}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ xua\+\_\+msg\+\_\+class\+::name}, \textbf{ xua\+\_\+dialect\+::name}, \textbf{ xua\+\_\+class\+\_\+iei\+\_\+name()}, \textbf{ xua\+\_\+class\+\_\+msg\+\_\+name()}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}.



Referenced by \textbf{ m3ua\+\_\+rx\+\_\+msg()}, and \textbf{ sua\+\_\+rx\+\_\+msg()}.

\mbox{\label{src_2xua__msg_8h_a519c87a5b3827bdf04061e05c775b809}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_from\_msg@{xua\_from\_msg}}
\index{xua\_from\_msg@{xua\_from\_msg}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_from\_msg()}
{\footnotesize\ttfamily struct \textbf{ xua\+\_\+msg} $\ast$ xua\+\_\+from\+\_\+msg (\begin{DoxyParamCaption}\item[{const int}]{version,  }\item[{uint16\+\_\+t}]{len,  }\item[{uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ len}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+length}, \textbf{ NULL}, \textbf{ version}, \textbf{ xua\+\_\+common\+\_\+hdr\+::version}, \textbf{ xua\+\_\+from\+\_\+msg\+\_\+common()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ m3ua\+\_\+gen\+\_\+error\+\_\+msg()}, \textbf{ m3ua\+\_\+rx\+\_\+msg()}, and \textbf{ sua\+\_\+rx\+\_\+msg()}.

\mbox{\label{src_2xua__msg_8h_a8a9236af5b42d8377789410aa0d8d28a}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_from\_nested@{xua\_from\_nested}}
\index{xua\_from\_nested@{xua\_from\_nested}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_from\_nested()}
{\footnotesize\ttfamily struct \textbf{ xua\+\_\+msg} $\ast$ xua\+\_\+from\+\_\+nested (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{outer }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ NULL}, \textbf{ xua\+\_\+from\+\_\+msg\+\_\+common()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+dereg\+\_\+rsp()}, \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+reg\+\_\+req()}, and \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+reg\+\_\+rsp()}.

\mbox{\label{src_2xua__msg_8h_a07d48fefca647cd12e79bdc98c30d039}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_hdr\_dump@{xua\_hdr\_dump}}
\index{xua\_hdr\_dump@{xua\_hdr\_dump}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_hdr\_dump()}
{\footnotesize\ttfamily char $\ast$ xua\+\_\+hdr\+\_\+dump (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{const struct \textbf{ xua\+\_\+dialect} $\ast$}]{dialect }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+dialect\+::class}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ xua\+\_\+msg\+\_\+class\+::name}, \textbf{ NULL}, and \textbf{ xua\+\_\+class\+\_\+msg\+\_\+name()}.



Referenced by \textbf{ ensure\+\_\+opc\+\_\+in\+\_\+calling\+\_\+ssn()}, \textbf{ m3ua\+\_\+rx\+\_\+msg()}, \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}, \textbf{ sccp\+\_\+conn\+\_\+scu\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}, \textbf{ sccp\+\_\+find\+\_\+user()}, \textbf{ sccp\+\_\+rout\+\_\+fail\+\_\+enqueue()}, \textbf{ sccp\+\_\+sclc\+\_\+rx\+\_\+from\+\_\+scrc()}, \textbf{ sccp\+\_\+sclc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+sclc\+\_\+msg()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ sclc\+\_\+rx\+\_\+cldr()}, \textbf{ sclc\+\_\+rx\+\_\+cldt()}, \textbf{ scoc\+\_\+fsm\+\_\+idle()}, \textbf{ scrc\+\_\+node\+\_\+2()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, \textbf{ sua\+\_\+rx\+\_\+msg()}, and \textbf{ xua\+\_\+msg\+\_\+dump()}.

\mbox{\label{src_2xua__msg_8h_a4ae37412514cbebf20c8d32c7433ce0e}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_add\_data@{xua\_msg\_add\_data}}
\index{xua\_msg\_add\_data@{xua\_msg\_add\_data}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_add\_data()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+add\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{msg,  }\item[{uint16\+\_\+t}]{tag,  }\item[{uint16\+\_\+t}]{len,  }\item[{const uint8\+\_\+t $\ast$}]{dat }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::entry}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ len}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, and \textbf{ tag}.



Referenced by \textbf{ m3ua\+\_\+encode\+\_\+duna()}, \textbf{ m3ua\+\_\+encode\+\_\+dupu()}, \textbf{ m3ua\+\_\+encode\+\_\+notify()}, \textbf{ m3ua\+\_\+gen\+\_\+error\+\_\+msg()}, \textbf{ m3ua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ sccp\+\_\+data\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sccp\+\_\+longdata\+\_\+to\+\_\+sua\+\_\+ptr()}, \textbf{ sua\+\_\+encode\+\_\+duna()}, \textbf{ sua\+\_\+encode\+\_\+dupu()}, \textbf{ sua\+\_\+gen\+\_\+error\+\_\+msg()}, \textbf{ sua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ xua\+\_\+from\+\_\+msg\+\_\+common()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+cl()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}, \textbf{ xua\+\_\+gen\+\_\+relre()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+copy()}, and \textbf{ xua\+\_\+msg\+\_\+copy\+\_\+part()}.

\mbox{\label{src_2xua__msg_8h_a9e3e22223c4529f0eb0e6cfdd558e5bd}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_add\_sccp\_addr@{xua\_msg\_add\_sccp\_addr}}
\index{xua\_msg\_add\_sccp\_addr@{xua\_msg\_add\_sccp\_addr}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_add\_sccp\_addr()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{iei,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+::gt}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ip}, \textbf{ msgb\+\_\+t16l16vp\+\_\+put()}, \textbf{ msgb\+\_\+t16l16vp\+\_\+put\+\_\+u32()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+IPv4}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+IPv6}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+SSN\+\_\+\+IP}, \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}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+IPv4}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+IPv6}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PC}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SSN}, \textbf{ SUA\+\_\+\+RI\+\_\+\+GT}, \textbf{ SUA\+\_\+\+RI\+\_\+\+SSN\+\_\+\+IP}, \textbf{ SUA\+\_\+\+RI\+\_\+\+SSN\+\_\+\+PC}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::v4}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::v6}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}, and \textbf{ xua\+\_\+part\+\_\+add\+\_\+gt()}.



Referenced by \textbf{ ensure\+\_\+opc\+\_\+in\+\_\+calling\+\_\+ssn()}, \textbf{ patch\+\_\+sccp\+\_\+with\+\_\+pc()}, \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua()}, \textbf{ sua\+\_\+gen\+\_\+cldr()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+cl()}, and \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}.

\mbox{\label{src_2xua__msg_8h_a7aa9bef616536b5e139c633ebbf06e74}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_add\_u32@{xua\_msg\_add\_u32}}
\index{xua\_msg\_add\_u32@{xua\_msg\_add\_u32}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_add\_u32()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+add\+\_\+u32 (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{iei,  }\item[{uint32\+\_\+t}]{val }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}.



Referenced by \textbf{ gen\+\_\+coerr()}, \textbf{ gen\+\_\+coref\+\_\+without\+\_\+conn()}, \textbf{ gen\+\_\+relco()}, \textbf{ gen\+\_\+rlsd()}, \textbf{ m3ua\+\_\+encode\+\_\+dupu()}, \textbf{ m3ua\+\_\+encode\+\_\+notify()}, \textbf{ m3ua\+\_\+gen\+\_\+error()}, \textbf{ m3ua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ m3ua\+\_\+tx\+\_\+xua\+\_\+as()}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+error()}, \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{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ sua\+\_\+encode\+\_\+duna()}, \textbf{ sua\+\_\+encode\+\_\+dupu()}, \textbf{ sua\+\_\+gen\+\_\+cldr()}, \textbf{ sua\+\_\+gen\+\_\+error()}, \textbf{ sua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ sua\+\_\+tx\+\_\+xua\+\_\+as()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+cl()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}, \textbf{ xua\+\_\+gen\+\_\+relre()}, and \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+opt()}.

\mbox{\label{src_2xua__msg_8h_a7c64e7672741c286e62eb5e0e3cf4831}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_add\_u32\_data@{xua\_msg\_add\_u32\_data}}
\index{xua\_msg\_add\_u32\_data@{xua\_msg\_add\_u32\_data}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_add\_u32\_data()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+add\+\_\+u32\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{msg,  }\item[{uint16\+\_\+t}]{tag,  }\item[{uint16\+\_\+t}]{len,  }\item[{const uint8\+\_\+t $\ast$}]{dat }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::entry}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ len}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, and \textbf{ tag}.



Referenced by \textbf{ m3ua\+\_\+encode\+\_\+notify()}.

\mbox{\label{src_2xua__msg_8h_ab8d4d4ed146c5c8a89295d2570b450cc}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_alloc@{xua\_msg\_alloc}}
\index{xua\_msg\_alloc@{xua\_msg\_alloc}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_alloc()}
{\footnotesize\ttfamily struct \textbf{ xua\+\_\+msg} $\ast$ xua\+\_\+msg\+\_\+alloc (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+::headers}, \textbf{ NULL}, and \textbf{ tall\+\_\+xua}.



Referenced by \textbf{ gen\+\_\+coerr()}, \textbf{ gen\+\_\+coref\+\_\+without\+\_\+conn()}, \textbf{ gen\+\_\+relco()}, \textbf{ gen\+\_\+rlsd()}, \textbf{ m3ua\+\_\+encode\+\_\+duna()}, \textbf{ m3ua\+\_\+encode\+\_\+dupu()}, \textbf{ m3ua\+\_\+encode\+\_\+notify()}, \textbf{ m3ua\+\_\+gen\+\_\+error()}, \textbf{ m3ua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ m3ua\+\_\+xfer\+\_\+from\+\_\+data()}, \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+error()}, \textbf{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ sua\+\_\+encode\+\_\+duna()}, \textbf{ sua\+\_\+encode\+\_\+dupu()}, \textbf{ sua\+\_\+gen\+\_\+cldr()}, \textbf{ sua\+\_\+gen\+\_\+error()}, \textbf{ sua\+\_\+tx\+\_\+snm\+\_\+congestion()}, \textbf{ xua\+\_\+from\+\_\+msg()}, \textbf{ xua\+\_\+from\+\_\+nested()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+cl()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}, \textbf{ xua\+\_\+gen\+\_\+relre()}, and \textbf{ xua\+\_\+msg\+\_\+copy()}.

\mbox{\label{src_2xua__msg_8h_a9705c9ca77a3510f0d2f224457ab1c83}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_copy@{xua\_msg\_copy}}
\index{xua\_msg\_copy@{xua\_msg\_copy}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_copy()}
{\footnotesize\ttfamily struct \textbf{ xua\+\_\+msg} $\ast$ xua\+\_\+msg\+\_\+copy (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua\+\_\+in }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+::entry}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ NULL}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}, and \textbf{ xua\+\_\+msg\+\_\+alloc()}.



Referenced by \textbf{ sccp\+\_\+rout\+\_\+fail\+\_\+enqueue()}.

\mbox{\label{src_2xua__msg_8h_a94a4a741ff48e3ebaf39f4b33f0777a4}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_copy\_part@{xua\_msg\_copy\_part}}
\index{xua\_msg\_copy\_part@{xua\_msg\_copy\_part}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_copy\_part()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+copy\+\_\+part (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua\+\_\+out,  }\item[{uint16\+\_\+t}]{tag\+\_\+out,  }\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua\+\_\+in,  }\item[{uint16\+\_\+t}]{tag\+\_\+in }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}.



Referenced by \textbf{ gen\+\_\+coref\+\_\+without\+\_\+conn()}, \textbf{ peer\+\_\+send()}, and \textbf{ sua\+\_\+gen\+\_\+cldr()}.

\mbox{\label{src_2xua__msg_8h_a0ef44ac624a3af515b401a1777a5d871}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_dump@{xua\_msg\_dump}}
\index{xua\_msg\_dump@{xua\_msg\_dump}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_dump()}
{\footnotesize\ttfamily char $\ast$ xua\+\_\+msg\+\_\+dump (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{const struct \textbf{ xua\+\_\+dialect} $\ast$}]{dialect }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+dialect\+::class}, \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+length}, \textbf{ NULL}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, \textbf{ xua\+\_\+common\+\_\+hdr\+::version}, \textbf{ xua\+\_\+class\+\_\+iei\+\_\+name()}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}.



Referenced by \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+err()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+sclc\+\_\+msg()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, \textbf{ send\+\_\+back\+\_\+udts()}, and \textbf{ sua\+\_\+rx\+\_\+mgmt\+\_\+err()}.

\mbox{\label{src_2xua__msg_8h_ac5e639d8b60940908a9e67cc354238b2}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_event\_map@{xua\_msg\_event\_map}}
\index{xua\_msg\_event\_map@{xua\_msg\_event\_map}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_event\_map()}
{\footnotesize\ttfamily int \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{const struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} $\ast$}]{maps,  }\item[{unsigned int}]{num\+\_\+maps }\end{DoxyParamCaption})}



Map from a \doxyref{xua\+\_\+msg}{p.}{structxua__msg} (class+type) to an event. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em xua} & x\+UA message which is to be mapped \\
\hline
\mbox{\texttt{ in}}  & {\em maps} & Table containing msg type+class -\/$>$ event maps [aram[in] num\+\_\+maps number of entries in maps \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
event $>$= 0; negative on error (no map found) 
\end{DoxyReturn}


References \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map\+::event}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map\+::msg\+\_\+class}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+class}, \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map\+::msg\+\_\+type}, and \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}.



Referenced by \textbf{ m3ua\+\_\+rx\+\_\+asp()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}, and \textbf{ sua\+\_\+rx\+\_\+asp()}.

\mbox{\label{src_2xua__msg_8h_a8dcdd2a1430667580aeba7f01f173a41}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_find\_tag@{xua\_msg\_find\_tag}}
\index{xua\_msg\_find\_tag@{xua\_msg\_find\_tag}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_find\_tag()}
{\footnotesize\ttfamily struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$ xua\+\_\+msg\+\_\+find\+\_\+tag (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{msg,  }\item[{uint16\+\_\+t}]{tag }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::entry}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ NULL}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, and \textbf{ tag}.



Referenced by \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+()}, \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}, \textbf{ data\+\_\+hdr\+\_\+from\+\_\+m3ua()}, \textbf{ gen\+\_\+duna\+\_\+ret\+\_\+msg()}, \textbf{ handle\+\_\+rkey\+\_\+dereg\+\_\+resp()}, \textbf{ handle\+\_\+rkey\+\_\+reg()}, \textbf{ handle\+\_\+rkey\+\_\+reg\+\_\+resp()}, \textbf{ ipa\+\_\+to\+\_\+msg()}, \textbf{ m3ua\+\_\+decode\+\_\+notify()}, \textbf{ m3ua\+\_\+gen\+\_\+error\+\_\+msg()}, \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+dereg\+\_\+req()}, \textbf{ m3ua\+\_\+rx\+\_\+snm()}, \textbf{ m3ua\+\_\+rx\+\_\+snm\+\_\+asp()}, \textbf{ m3ua\+\_\+rx\+\_\+snm\+\_\+sg()}, \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ m3ua\+\_\+to\+\_\+xfer\+\_\+ind()}, \textbf{ sccp\+\_\+add\+\_\+long\+\_\+variable\+\_\+part()}, \textbf{ sccp\+\_\+add\+\_\+var\+\_\+addr()}, \textbf{ sccp\+\_\+add\+\_\+variable\+\_\+part()}, \textbf{ sccp\+\_\+conn\+\_\+scu\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}, \textbf{ sclc\+\_\+rx\+\_\+cldr()}, \textbf{ sclc\+\_\+rx\+\_\+cldt()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, \textbf{ send\+\_\+back\+\_\+udts()}, \textbf{ sua\+\_\+addr\+\_\+parse()}, \textbf{ sua\+\_\+rx\+\_\+cl()}, \textbf{ sua\+\_\+rx\+\_\+co()}, \textbf{ sua\+\_\+rx\+\_\+snm\+\_\+asp()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}, \textbf{ tcap\+\_\+as\+\_\+rx\+\_\+sccp\+\_\+asp()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}, \textbf{ xua\+\_\+dialect\+\_\+check\+\_\+all\+\_\+mand\+\_\+ies()}, \textbf{ xua\+\_\+msg\+\_\+copy\+\_\+part()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+len()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+str()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32p()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+daud()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}, and \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+scon()}.

\mbox{\label{src_2xua__msg_8h_a0d8afb21bd36674bfe5667a99a5fe4fe}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_free@{xua\_msg\_free}}
\index{xua\_msg\_free@{xua\_msg\_free}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_free()}
{\footnotesize\ttfamily void xua\+\_\+msg\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{msg }\end{DoxyParamCaption})}



Referenced by \textbf{ asp\+\_\+loadshare\+\_\+tcap\+\_\+sccp()}, \textbf{ deliver\+\_\+to\+\_\+mtp\+\_\+user()}, \textbf{ encode\+\_\+notify()}, \textbf{ m3ua\+\_\+gen\+\_\+error\+\_\+msg()}, \textbf{ m3ua\+\_\+rx\+\_\+asp()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt()}, \textbf{ m3ua\+\_\+rx\+\_\+msg()}, \textbf{ m3ua\+\_\+rx\+\_\+rkm()}, \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+dereg\+\_\+rsp()}, \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+reg\+\_\+req()}, \textbf{ m3ua\+\_\+rx\+\_\+rkm\+\_\+reg\+\_\+rsp()}, \textbf{ m3ua\+\_\+rx\+\_\+snm()}, \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ m3ua\+\_\+tx\+\_\+xua\+\_\+as()}, \textbf{ m3ua\+\_\+tx\+\_\+xua\+\_\+asp()}, \textbf{ mtp3\+\_\+hmdt\+\_\+message\+\_\+for\+\_\+distribution()}, \textbf{ mtp3\+\_\+hmrt\+\_\+message\+\_\+for\+\_\+routing()}, \textbf{ mtp\+\_\+user\+\_\+prim\+\_\+cb()}, \textbf{ osmo\+\_\+sccp\+\_\+to\+\_\+xua()}, \textbf{ patch\+\_\+sccp\+\_\+with\+\_\+pc()}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+error()}, \textbf{ rout\+\_\+fail\+\_\+pending\+\_\+cb()}, \textbf{ sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}, \textbf{ sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+relre\+\_\+and\+\_\+send()}, \textbf{ sccp\+\_\+sclc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ send\+\_\+back\+\_\+udts()}, \textbf{ sua\+\_\+rx\+\_\+msg()}, \textbf{ sua\+\_\+tx\+\_\+xua\+\_\+as()}, \textbf{ sua\+\_\+tx\+\_\+xua\+\_\+asp()}, \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua()}, \textbf{ tx\+\_\+relco\+\_\+from\+\_\+xua()}, \textbf{ tx\+\_\+rlsd\+\_\+from\+\_\+xua\+\_\+twoway()}, \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending()}, \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg()}, \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast()}, \textbf{ xua\+\_\+from\+\_\+msg()}, \textbf{ xua\+\_\+from\+\_\+nested()}, \textbf{ xua\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+cl()}, and \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}.

\mbox{\label{src_2xua__msg_8h_a1752bcc3fc7877ffa316f2b119cf5ad7}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_free\_tag@{xua\_msg\_free\_tag}}
\index{xua\_msg\_free\_tag@{xua\_msg\_free\_tag}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_free\_tag()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+free\+\_\+tag (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{tag }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::entry}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, and \textbf{ tag}.



Referenced by \textbf{ ensure\+\_\+opc\+\_\+in\+\_\+calling\+\_\+ssn()}, \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ patch\+\_\+sccp\+\_\+with\+\_\+pc()}, and \textbf{ sua\+\_\+gen\+\_\+cldr()}.

\mbox{\label{src_2xua__msg_8h_a226130ae01cded282663cbc573904322}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_get\_len@{xua\_msg\_get\_len}}
\index{xua\_msg\_get\_len@{xua\_msg\_get\_len}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_get\_len()}
{\footnotesize\ttfamily int xua\+\_\+msg\+\_\+get\+\_\+len (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::len}, and \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}.



Referenced by \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}, and \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}.

\mbox{\label{src_2xua__msg_8h_a1f7ddc788afc203cfea212db354637f6}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_get\_str@{xua\_msg\_get\_str}}
\index{xua\_msg\_get\_str@{xua\_msg\_get\_str}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_get\_str()}
{\footnotesize\ttfamily const char $\ast$ xua\+\_\+msg\+\_\+get\+\_\+str (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})}



References \textbf{ NULL}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+str()}.



Referenced by \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+daud()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dupu()}, and \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+scon()}.

\mbox{\label{src_2xua__msg_8h_aadb3f62f8d043f6581b75fcd8df5bd60}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_get\_u32@{xua\_msg\_get\_u32}}
\index{xua\_msg\_get\_u32@{xua\_msg\_get\_u32}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_get\_u32()}
{\footnotesize\ttfamily uint32\+\_\+t xua\+\_\+msg\+\_\+get\+\_\+u32 (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{iei }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ handle\+\_\+rkey\+\_\+dereg\+\_\+resp()}, \textbf{ handle\+\_\+rkey\+\_\+reg()}, \textbf{ handle\+\_\+rkey\+\_\+reg\+\_\+resp()}, \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+err()}, \textbf{ sccp\+\_\+conn\+\_\+scu\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ sclc\+\_\+rx\+\_\+cldr()}, \textbf{ sclc\+\_\+rx\+\_\+cldt()}, \textbf{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ scoc\+\_\+fsm\+\_\+conn\+\_\+pend\+\_\+out()}, \textbf{ scoc\+\_\+fsm\+\_\+idle()}, \textbf{ scoc\+\_\+fsm\+\_\+wait\+\_\+conn\+\_\+conf()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, \textbf{ store\+\_\+local\+\_\+ref()}, \textbf{ sua\+\_\+rx\+\_\+mgmt\+\_\+err()}, \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\+\_\+ludt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+ludts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+rlsd()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+udts()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudt()}, \textbf{ sua\+\_\+to\+\_\+sccp\+\_\+xudts()}, \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua()}, \textbf{ tx\+\_\+relco\+\_\+from\+\_\+xua()}, \textbf{ tx\+\_\+rlsd\+\_\+from\+\_\+xua\+\_\+twoway()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}, and \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dupu()}.

\mbox{\label{src_2xua__msg_8h_a1205b61c12ca975bdb5f9f50c7ffeeb7}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_get\_u32p@{xua\_msg\_get\_u32p}}
\index{xua\_msg\_get\_u32p@{xua\_msg\_get\_u32p}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_get\_u32p()}
{\footnotesize\ttfamily const uint32\+\_\+t $\ast$ xua\+\_\+msg\+\_\+get\+\_\+u32p (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint16\+\_\+t}]{iei,  }\item[{uint32\+\_\+t $\ast$}]{out }\end{DoxyParamCaption})}



References \textbf{ NULL}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ send\+\_\+back\+\_\+udts()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}, and \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+scon()}.

\mbox{\label{src_2xua__msg_8h_ab6a0c897991b24960e62a9b48c3d1b84}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_part\_get\_str@{xua\_msg\_part\_get\_str}}
\index{xua\_msg\_part\_get\_str@{xua\_msg\_part\_get\_str}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_part\_get\_str()}
{\footnotesize\ttfamily const char $\ast$ xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+str (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{part }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, and \textbf{ xua\+\_\+msg\+\_\+part\+::len}.



Referenced by \textbf{ xua\+\_\+msg\+\_\+get\+\_\+str()}.

\mbox{\label{src_2xua__msg_8h_a7e4537948a6e8d3fabb02bfc72eb5aa2}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_msg\_part\_get\_u32@{xua\_msg\_part\_get\_u32}}
\index{xua\_msg\_part\_get\_u32@{xua\_msg\_part\_get\_u32}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_msg\_part\_get\_u32()}
{\footnotesize\ttfamily uint32\+\_\+t xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32 (\begin{DoxyParamCaption}\item[{const struct \textbf{ xua\+\_\+msg\+\_\+part} $\ast$}]{part }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, and \textbf{ xua\+\_\+msg\+\_\+part\+::len}.



Referenced by \textbf{ gen\+\_\+duna\+\_\+ret\+\_\+msg()}, \textbf{ m3ua\+\_\+decode\+\_\+notify()}, \textbf{ m3ua\+\_\+rx\+\_\+snm()}, \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ sccp\+\_\+msg\+\_\+add\+\_\+sua\+\_\+opt()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, \textbf{ send\+\_\+back\+\_\+udts()}, \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down()}, \textbf{ xua\+\_\+find\+\_\+as\+\_\+for\+\_\+asp()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32p()}, \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+dava()}, and \textbf{ xua\+\_\+snm\+\_\+rx\+\_\+duna()}.

\mbox{\label{src_2xua__msg_8h_a55609b987a5b336d0bf230c212e1494f}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_part\_add\_gt@{xua\_part\_add\_gt}}
\index{xua\_part\_add\_gt@{xua\_part\_add\_gt}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_part\_add\_gt()}
{\footnotesize\ttfamily void xua\+\_\+part\+\_\+add\+\_\+gt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$}]{gt }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+gt\+::digits}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::gti}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::nai}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::npi}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+GT}, and \textbf{ osmo\+\_\+sccp\+\_\+gt\+::tt}.



Referenced by \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr()}.

\mbox{\label{src_2xua__msg_8h_a4526383535d877579662a12cbe5b72c3}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_to\_msg@{xua\_to\_msg}}
\index{xua\_to\_msg@{xua\_to\_msg}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_to\_msg()}
{\footnotesize\ttfamily struct msgb $\ast$ xua\+\_\+to\+\_\+msg (\begin{DoxyParamCaption}\item[{const int}]{version,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ xua\+\_\+msg\+\_\+part\+::dat}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ xua\+\_\+msg\+::headers}, \textbf{ xua\+\_\+msg\+\_\+part\+::len}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+length}, \textbf{ NULL}, \textbf{ xua\+\_\+common\+\_\+hdr\+::spare}, \textbf{ xua\+\_\+msg\+\_\+part\+::tag}, \textbf{ version}, and \textbf{ xua\+\_\+common\+\_\+hdr\+::version}.



Referenced by \textbf{ encode\+\_\+notify()}, \textbf{ m3ua\+\_\+to\+\_\+msg()}, \textbf{ peer\+\_\+send()}, \textbf{ peer\+\_\+send\+\_\+error()}, and \textbf{ sua\+\_\+to\+\_\+msg()}.



\doxysubsection{Variable Documentation}
\mbox{\label{src_2xua__msg_8h_a14e3c740216dbf27160e15377d4dbd43}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_dialect\_m3ua@{xua\_dialect\_m3ua}}
\index{xua\_dialect\_m3ua@{xua\_dialect\_m3ua}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_dialect\_m3ua}
{\footnotesize\ttfamily const struct \textbf{ xua\+\_\+dialect} xua\+\_\+dialect\+\_\+m3ua\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ m3ua\+\_\+rx\+\_\+mgmt\+\_\+err()}, and \textbf{ m3ua\+\_\+rx\+\_\+msg()}.

\mbox{\label{src_2xua__msg_8h_aa9dfe79ab4a2b83e4d478b10c973c0b0}} 
\index{xua\_msg.h@{xua\_msg.h}!xua\_dialect\_sua@{xua\_dialect\_sua}}
\index{xua\_dialect\_sua@{xua\_dialect\_sua}!xua\_msg.h@{xua\_msg.h}}
\doxysubsubsection{xua\_dialect\_sua}
{\footnotesize\ttfamily const struct \textbf{ xua\+\_\+dialect} xua\+\_\+dialect\+\_\+sua\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ ensure\+\_\+opc\+\_\+in\+\_\+calling\+\_\+ssn()}, \textbf{ m3ua\+\_\+rx\+\_\+xfer()}, \textbf{ osmo\+\_\+sua\+\_\+to\+\_\+sccp()}, \textbf{ sccp\+\_\+conn\+\_\+opt\+\_\+data\+\_\+send\+\_\+cache()}, \textbf{ sccp\+\_\+conn\+\_\+scu\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}, \textbf{ sccp\+\_\+find\+\_\+user()}, \textbf{ sccp\+\_\+rout\+\_\+fail\+\_\+enqueue()}, \textbf{ sccp\+\_\+sclc\+\_\+rx\+\_\+from\+\_\+scrc()}, \textbf{ sccp\+\_\+sclc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+sclc\+\_\+msg()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ sclc\+\_\+rx\+\_\+cldr()}, \textbf{ sclc\+\_\+rx\+\_\+cldt()}, \textbf{ scoc\+\_\+fsm\+\_\+idle()}, \textbf{ scrc\+\_\+node\+\_\+2()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, \textbf{ send\+\_\+back\+\_\+udts()}, \textbf{ sua\+\_\+rx\+\_\+mgmt\+\_\+err()}, and \textbf{ sua\+\_\+rx\+\_\+msg()}.

