\doxysection{src/sccp\+\_\+scoc.c File Reference}
\label{sccp__scoc_8c}\index{src/sccp\_scoc.c@{src/sccp\_scoc.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxrbtree.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+helpers.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sccp/sccp\+\_\+types.\+h$>$}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+connection.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+scoc\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+instance.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+user.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+instance.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ sccp\+\_\+connection} $\ast$ \textbf{ sccp\+\_\+find\+\_\+conn\+\_\+by\+\_\+id} (const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, uint32\+\_\+t id)
\item 
bool \textbf{ osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists} (const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, uint32\+\_\+t id)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+instance\+\_\+next\+\_\+conn\+\_\+id} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp)
\item 
static struct \textbf{ sccp\+\_\+connection} $\ast$ \textbf{ conn\+\_\+create} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$user)
\item 
static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ xua\+\_\+gen\+\_\+relre} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, uint32\+\_\+t cause, struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim)
\item 
int \textbf{ sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+relre\+\_\+and\+\_\+send} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, uint32\+\_\+t cause, struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim)
\item 
static bool \textbf{ xua\+\_\+opt\+\_\+data\+\_\+check\+\_\+drop} (const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim, unsigned lim, const char $\ast$message)
\item 
static bool \textbf{ xua\+\_\+opt\+\_\+data\+\_\+cache\+\_\+keep} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim, int \textbf{ msg\+\_\+type})
\item 
static bool \textbf{ xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim, int \textbf{ msg\+\_\+type})
\item 
static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, uint32\+\_\+t event, const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim, int \textbf{ msg\+\_\+type})
\item 
int \textbf{ sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, uint32\+\_\+t event, const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim, int \textbf{ msg\+\_\+type})
\item 
static uint8\+\_\+t \textbf{ get\+\_\+cref\+\_\+cause\+\_\+for\+\_\+ret} (uint8\+\_\+t ret\+\_\+cause)
\item 
static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ gen\+\_\+coref\+\_\+without\+\_\+conn} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$xua\+\_\+in, uint32\+\_\+t ref\+\_\+cause)
\item 
static struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ sccp\+\_\+find\+\_\+user} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
void \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$xua, uint32\+\_\+t return\+\_\+cause)
\begin{DoxyCompactList}\small\item\em SCOC\+: Receive SCRC Routing Failure. \end{DoxyCompactList}\item 
static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ gen\+\_\+coerr} (uint32\+\_\+t route\+\_\+ctx, uint32\+\_\+t dest\+\_\+ref, uint32\+\_\+t err\+\_\+cause)
\item 
static void \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$in, uint32\+\_\+t err\+\_\+cause)
\item 
static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ gen\+\_\+relco} (uint32\+\_\+t route\+\_\+ctx, uint32\+\_\+t dest\+\_\+ref, uint32\+\_\+t src\+\_\+ref)
\item 
static void \textbf{ tx\+\_\+relco\+\_\+from\+\_\+xua} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$in)
\item 
static struct \textbf{ xua\+\_\+msg} $\ast$ \textbf{ gen\+\_\+rlsd} (uint32\+\_\+t route\+\_\+ctx, uint32\+\_\+t dest\+\_\+ref, uint32\+\_\+t src\+\_\+ref)
\item 
static void \textbf{ tx\+\_\+rlsd\+\_\+from\+\_\+xua\+\_\+twoway} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct \textbf{ xua\+\_\+msg} $\ast$in)
\item 
static void \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
static void \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct \textbf{ xua\+\_\+msg} $\ast$xua, uint32\+\_\+t inval\+\_\+src\+\_\+ref)
\item 
static void \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\item 
void \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, struct \textbf{ xua\+\_\+msg} $\ast$xua)
\begin{DoxyCompactList}\small\item\em Main entrance function for primitives from the SCRC (Routing Control) \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} \textbf{ sua\+\_\+scoc\+\_\+event\+\_\+map} [$\,$]
\item 
static const uint8\+\_\+t \textbf{ cause\+\_\+map\+\_\+cref} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Function Documentation}
\mbox{\label{sccp__scoc_8c_a80fe6912731e4a07a290499b36d77225}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!conn\_create@{conn\_create}}
\index{conn\_create@{conn\_create}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{conn\_create()}
{\footnotesize\ttfamily static struct \textbf{ sccp\+\_\+connection} $\ast$ conn\+\_\+create (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{user }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ osmo\+\_\+sccp\+\_\+user\+::inst}, \textbf{ NULL}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+\_\+next\+\_\+conn\+\_\+id()}, \textbf{ sccp\+\_\+conn\+\_\+alloc()}, and \textbf{ sccp\+\_\+connection\+::user}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}.

\mbox{\label{sccp__scoc_8c_a2683092df4bbb9e0b0a5cf611c4cea6b}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!gen\_coerr@{gen\_coerr}}
\index{gen\_coerr@{gen\_coerr}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{gen\_coerr()}
{\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ gen\+\_\+coerr (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{route\+\_\+ctx,  }\item[{uint32\+\_\+t}]{dest\+\_\+ref,  }\item[{uint32\+\_\+t}]{err\+\_\+cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+ERROR}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COERR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, and \textbf{ xua\+\_\+msg\+\_\+alloc()}.



Referenced by \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua()}.

\mbox{\label{sccp__scoc_8c_a4fc6f1ef35ace6e6db924bb879d1ddc9}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!gen\_coref\_without\_conn@{gen\_coref\_without\_conn}}
\index{gen\_coref\_without\_conn@{gen\_coref\_without\_conn}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{gen\_coref\_without\_conn()}
{\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ gen\+\_\+coref\+\_\+without\+\_\+conn (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua\+\_\+in,  }\item[{uint32\+\_\+t}]{ref\+\_\+cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::route\+\_\+ctx}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+REFUSAL}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \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\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, and \textbf{ xua\+\_\+msg\+\_\+copy\+\_\+part()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}.

\mbox{\label{sccp__scoc_8c_aa933aad17e620e1c736279d86f6c1237}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!gen\_relco@{gen\_relco}}
\index{gen\_relco@{gen\_relco}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{gen\_relco()}
{\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ gen\+\_\+relco (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{route\+\_\+ctx,  }\item[{uint32\+\_\+t}]{dest\+\_\+ref,  }\item[{uint32\+\_\+t}]{src\+\_\+ref }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, and \textbf{ xua\+\_\+msg\+\_\+alloc()}.



Referenced by \textbf{ tx\+\_\+relco\+\_\+from\+\_\+xua()}.

\mbox{\label{sccp__scoc_8c_a2e8fab393c6769002559ffb8e44b9598}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!gen\_rlsd@{gen\_rlsd}}
\index{gen\_rlsd@{gen\_rlsd}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{gen\_rlsd()}
{\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ gen\+\_\+rlsd (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{route\+\_\+ctx,  }\item[{uint32\+\_\+t}]{dest\+\_\+ref,  }\item[{uint32\+\_\+t}]{src\+\_\+ref }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, and \textbf{ xua\+\_\+msg\+\_\+alloc()}.



Referenced by \textbf{ tx\+\_\+rlsd\+\_\+from\+\_\+xua\+\_\+twoway()}.

\mbox{\label{sccp__scoc_8c_ab08b479680b7e13b707ec0e3a064b2aa}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!get\_cref\_cause\_for\_ret@{get\_cref\_cause\_for\_ret}}
\index{get\_cref\_cause\_for\_ret@{get\_cref\_cause\_for\_ret}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{get\_cref\_cause\_for\_ret()}
{\footnotesize\ttfamily static uint8\+\_\+t get\+\_\+cref\+\_\+cause\+\_\+for\+\_\+ret (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{ret\+\_\+cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ cause\+\_\+map\+\_\+cref}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}.

\mbox{\label{sccp__scoc_8c_aefb134e061f3130dda7d932d4d1687a8}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!osmo\_sccp\_conn\_id\_exists@{osmo\_sccp\_conn\_id\_exists}}
\index{osmo\_sccp\_conn\_id\_exists@{osmo\_sccp\_conn\_id\_exists}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{osmo\_sccp\_conn\_id\_exists()}
{\footnotesize\ttfamily bool osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{uint32\+\_\+t}]{id }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+find\+\_\+conn\+\_\+by\+\_\+id()}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp\+\_\+msg()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data()}, and \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+disconn\+\_\+data()}.

\mbox{\label{sccp__scoc_8c_aefc784e9f3a56c93d1d62fb10732c2c8}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!osmo\_sccp\_instance\_next\_conn\_id@{osmo\_sccp\_instance\_next\_conn\_id}}
\index{osmo\_sccp\_instance\_next\_conn\_id@{osmo\_sccp\_instance\_next\_conn\_id}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{osmo\_sccp\_instance\_next\_conn\_id()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+instance\+\_\+next\+\_\+conn\+\_\+id (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+instance\+::next\+\_\+id}, and \textbf{ sccp\+\_\+find\+\_\+conn\+\_\+by\+\_\+id()}.



Referenced by \textbf{ conn\+\_\+create()}.

\mbox{\label{sccp__scoc_8c_a404b734ff3ef6c533649b1c25b5168e6}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_conn\_xua\_gen\_encode\_and\_send@{sccp\_conn\_xua\_gen\_encode\_and\_send}}
\index{sccp\_conn\_xua\_gen\_encode\_and\_send@{sccp\_conn\_xua\_gen\_encode\_and\_send}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_conn\_xua\_gen\_encode\_and\_send()}
{\footnotesize\ttfamily int sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{uint32\+\_\+t}]{event,  }\item[{const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim,  }\item[{int}]{msg\+\_\+type }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ msg\+\_\+type}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ scoc\+\_\+fsm\+\_\+conn\+\_\+pend\+\_\+in()}, \textbf{ scoc\+\_\+fsm\+\_\+conn\+\_\+pend\+\_\+out()}, \textbf{ scoc\+\_\+fsm\+\_\+idle()}, and \textbf{ scoc\+\_\+fsm\+\_\+wait\+\_\+conn\+\_\+conf()}.

\mbox{\label{sccp__scoc_8c_a029d20285f28c351ec3ed2abe6322212}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_conn\_xua\_gen\_relre\_and\_send@{sccp\_conn\_xua\_gen\_relre\_and\_send}}
\index{sccp\_conn\_xua\_gen\_relre\_and\_send@{sccp\_conn\_xua\_gen\_relre\_and\_send}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_conn\_xua\_gen\_relre\_and\_send()}
{\footnotesize\ttfamily int sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+relre\+\_\+and\+\_\+send (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{uint32\+\_\+t}]{cause,  }\item[{struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+pc}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ xua\+\_\+gen\+\_\+relre()}, and \textbf{ xua\+\_\+msg\+\_\+free()}.



Referenced by \textbf{ scoc\+\_\+fsm\+\_\+active()}, \textbf{ scoc\+\_\+fsm\+\_\+disconn\+\_\+pend()}, and \textbf{ scoc\+\_\+fsm\+\_\+wait\+\_\+conn\+\_\+conf()}.

\mbox{\label{sccp__scoc_8c_a97fc3394fe39073c174c7440138964e2}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_find\_conn\_by\_id@{sccp\_find\_conn\_by\_id}}
\index{sccp\_find\_conn\_by\_id@{sccp\_find\_conn\_by\_id}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_find\_conn\_by\_id()}
{\footnotesize\ttfamily struct \textbf{ sccp\+\_\+connection} $\ast$ sccp\+\_\+find\+\_\+conn\+\_\+by\+\_\+id (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{uint32\+\_\+t}]{id }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::connections}, and \textbf{ NULL}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists()}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+\_\+next\+\_\+conn\+\_\+id()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down\+\_\+nofree()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}, and \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail()}.

\mbox{\label{sccp__scoc_8c_aa334ab3cbe57ce696372641ca5a1b692}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_find\_user@{sccp\_find\_user}}
\index{sccp\_find\_user@{sccp\_find\_user}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_find\_user()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ sccp\+\_\+find\+\_\+user (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LOGPSCI}, \textbf{ NULL}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ sccp\+\_\+user\+\_\+find()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ sua\+\_\+addr\+\_\+parse()}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ xua\+\_\+dialect\+\_\+sua}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}.

\mbox{\label{sccp__scoc_8c_a7e6ca58debc34b50244590c90e68943f}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_scoc\_rx\_from\_scrc@{sccp\_scoc\_rx\_from\_scrc}}
\index{sccp\_scoc\_rx\_from\_scrc@{sccp\_scoc\_rx\_from\_scrc}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_scoc\_rx\_from\_scrc()}
{\footnotesize\ttfamily void sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})}



Main entrance function for primitives from the SCRC (Routing Control) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em inst} & SCCP Instance in which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em xua} & SUA message in \doxyref{xua\+\_\+msg}{p.}{structxua__msg} format \\
\hline
\end{DoxyParams}


References \textbf{ conn\+\_\+create()}, \textbf{ sccp\+\_\+connection\+::fi}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ sccp\+\_\+connection\+::incoming}, \textbf{ osmo\+\_\+sccp\+\_\+user\+::inst}, \textbf{ LOGPSCC}, \textbf{ LOGPSCI}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+pc}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+ref}, \textbf{ sccp\+\_\+find\+\_\+conn\+\_\+by\+\_\+id()}, \textbf{ sccp\+\_\+find\+\_\+user()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref()}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COAK}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CORE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ sua\+\_\+scoc\+\_\+event\+\_\+map}, \textbf{ xua\+\_\+dialect\+\_\+sua}, \textbf{ xua\+\_\+hdr\+\_\+dump()}, \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map()}, \textbf{ xua\+\_\+msg\+\_\+find\+\_\+tag()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ scrc\+\_\+node\+\_\+6()}, \textbf{ scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua()}, and \textbf{ scrc\+\_\+translate\+\_\+node\+\_\+9()}.

\mbox{\label{sccp__scoc_8c_ab58aa945ab650c771b53e4e1561a2eae}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_scoc\_rx\_inval\_opc@{sccp\_scoc\_rx\_inval\_opc}}
\index{sccp\_scoc\_rx\_inval\_opc@{sccp\_scoc\_rx\_inval\_opc}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_scoc\_rx\_inval\_opc()}
{\footnotesize\ttfamily static void sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ LOGPSCC}, \textbf{ MAX\+\_\+\+PC\+\_\+\+STR\+\_\+\+LEN}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print\+\_\+buf()}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::ss7}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODA}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COERR}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RESCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RESRE}, \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua()}, \textbf{ xua\+\_\+dialect\+\_\+sua}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}.

\mbox{\label{sccp__scoc_8c_a930107d787711851474bf8cc3029cee7}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_scoc\_rx\_inval\_src\_ref@{sccp\_scoc\_rx\_inval\_src\_ref}}
\index{sccp\_scoc\_rx\_inval\_src\_ref@{sccp\_scoc\_rx\_inval\_src\_ref}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_scoc\_rx\_inval\_src\_ref()}
{\footnotesize\ttfamily static void sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint32\+\_\+t}]{inval\+\_\+src\+\_\+ref }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ LOGPSCC}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+ref}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COIT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RESCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RESRE}, \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua()}, \textbf{ tx\+\_\+rlsd\+\_\+from\+\_\+xua\+\_\+twoway()}, \textbf{ xua\+\_\+dialect\+\_\+sua}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}.

\mbox{\label{sccp__scoc_8c_a234088ffd988763d466232cac8590c68}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_scoc\_rx\_scrc\_rout\_fail@{sccp\_scoc\_rx\_scrc\_rout\_fail}}
\index{sccp\_scoc\_rx\_scrc\_rout\_fail@{sccp\_scoc\_rx\_scrc\_rout\_fail}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_scoc\_rx\_scrc\_rout\_fail()}
{\footnotesize\ttfamily void sccp\+\_\+scoc\+\_\+rx\+\_\+scrc\+\_\+rout\+\_\+fail (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua,  }\item[{uint32\+\_\+t}]{return\+\_\+cause }\end{DoxyParamCaption})}



SCOC\+: Receive SCRC Routing Failure. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em inst} & SCCP Instance on which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em xua} & SUA message that was failed to route \\
\hline
\mbox{\texttt{ in}}  & {\em return\+\_\+cause} & Reason (cause) for routing failure \\
\hline
\end{DoxyParams}


References \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ sccp\+\_\+connection\+::fi}, \textbf{ gen\+\_\+coref\+\_\+without\+\_\+conn()}, \textbf{ get\+\_\+cref\+\_\+cause\+\_\+for\+\_\+ret()}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ LOGPSCI}, \textbf{ sccp\+\_\+find\+\_\+conn\+\_\+by\+\_\+id()}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ SCOC\+\_\+\+E\+\_\+\+RCOC\+\_\+\+ROUT\+\_\+\+FAIL\+\_\+\+IND}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+dialect\+\_\+sua}, \textbf{ xua\+\_\+hdr\+\_\+dump()}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ rout\+\_\+fail\+\_\+pending\+\_\+cb()}.

\mbox{\label{sccp__scoc_8c_adf7fcb47b901d03b8736dd6e963452a2}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sccp\_scoc\_rx\_unass\_local\_ref@{sccp\_scoc\_rx\_unass\_local\_ref}}
\index{sccp\_scoc\_rx\_unass\_local\_ref@{sccp\_scoc\_rx\_unass\_local\_ref}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sccp\_scoc\_rx\_unass\_local\_ref()}
{\footnotesize\ttfamily static void sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ LOGPSCI}, \textbf{ xua\+\_\+common\+\_\+hdr\+::msg\+\_\+type}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COAK}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODA}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COERR}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COIT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RESCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RESRE}, \textbf{ tx\+\_\+coerr\+\_\+from\+\_\+xua()}, \textbf{ tx\+\_\+relco\+\_\+from\+\_\+xua()}, \textbf{ xua\+\_\+dialect\+\_\+sua}, and \textbf{ xua\+\_\+hdr\+\_\+dump()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}.

\mbox{\label{sccp__scoc_8c_a46fb6194a5c61199cff01d5b666551cd}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!tx\_coerr\_from\_xua@{tx\_coerr\_from\_xua}}
\index{tx\_coerr\_from\_xua@{tx\_coerr\_from\_xua}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{tx\_coerr\_from\_xua()}
{\footnotesize\ttfamily static void tx\+\_\+coerr\+\_\+from\+\_\+xua (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{in,  }\item[{uint32\+\_\+t}]{err\+\_\+cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ gen\+\_\+coerr()}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sio}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+opc()}, \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref()}, and \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref()}.

\mbox{\label{sccp__scoc_8c_afdbd5fba1c3acdd3aa55c716035311b4}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!tx\_relco\_from\_xua@{tx\_relco\_from\_xua}}
\index{tx\_relco\_from\_xua@{tx\_relco\_from\_xua}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{tx\_relco\_from\_xua()}
{\footnotesize\ttfamily static void tx\+\_\+relco\+\_\+from\+\_\+xua (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{in }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ gen\+\_\+relco()}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sio}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+unass\+\_\+local\+\_\+ref()}.

\mbox{\label{sccp__scoc_8c_a2aed405c30727b999fd129a5f8ce667e}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!tx\_rlsd\_from\_xua\_twoway@{tx\_rlsd\_from\_xua\_twoway}}
\index{tx\_rlsd\_from\_xua\_twoway@{tx\_rlsd\_from\_xua\_twoway}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{tx\_rlsd\_from\_xua\_twoway()}
{\footnotesize\ttfamily static void tx\+\_\+rlsd\+\_\+from\+\_\+xua\+\_\+twoway (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{in }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ sccp\+\_\+connection\+::fi}, \textbf{ gen\+\_\+rlsd()}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::opc}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+pc}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+ref}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::route\+\_\+ctx}, \textbf{ sccp\+\_\+scrc\+\_\+rx\+\_\+scoc\+\_\+conn\+\_\+msg()}, \textbf{ SCOC\+\_\+\+E\+\_\+\+RCOC\+\_\+\+RLSD\+\_\+\+IND}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sio}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+msg\+\_\+get\+\_\+u32()}.



Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+inval\+\_\+src\+\_\+ref()}.

\mbox{\label{sccp__scoc_8c_a9366bf2c2fe53233989e80e358829ffd}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!xua\_gen\_msg\_co@{xua\_gen\_msg\_co}}
\index{xua\_gen\_msg\_co@{xua\_gen\_msg\_co}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{xua\_gen\_msg\_co()}
{\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ xua\+\_\+gen\+\_\+msg\+\_\+co (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{uint32\+\_\+t}]{event,  }\item[{const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim,  }\item[{int}]{msg\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+connection\+::called\+\_\+addr}, \textbf{ sccp\+\_\+connection\+::calling\+\_\+addr}, \textbf{ osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::cause}, \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::disconnect}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::dpc}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ LOGPSCC}, \textbf{ msg\+\_\+type}, \textbf{ xua\+\_\+msg\+::mtp}, \textbf{ NULL}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+pc}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+ref}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::route\+\_\+ctx}, \textbf{ sccp\+\_\+connection\+::sccp\+\_\+class}, \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param\+::sls}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+REFUSAL}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RELEASE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COAK}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CODT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COIT}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CORE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELCO}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+PROTO\+\_\+\+CLASS}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SEQ\+\_\+\+CTRL}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+ADDR}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ sccp\+\_\+connection\+::tx\+\_\+co\+\_\+mtp\+\_\+sls}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::u}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+sccp\+\_\+addr()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, \textbf{ xua\+\_\+msg\+\_\+alloc()}, \textbf{ xua\+\_\+msg\+\_\+free()}, and \textbf{ xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim()}.



Referenced by \textbf{ sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send()}.

\mbox{\label{sccp__scoc_8c_ab3c3c9aaa502d69c91a102577ccb465d}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!xua\_gen\_relre@{xua\_gen\_relre}}
\index{xua\_gen\_relre@{xua\_gen\_relre}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{xua\_gen\_relre()}
{\footnotesize\ttfamily static struct \textbf{ xua\+\_\+msg} $\ast$ xua\+\_\+gen\+\_\+relre (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{uint32\+\_\+t}]{cause,  }\item[{struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ xua\+\_\+msg\+::hdr}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ NULL}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ sccp\+\_\+connection\+::remote\+\_\+ref}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::route\+\_\+ctx}, \textbf{ SUA\+\_\+\+CAUSE\+\_\+\+T\+\_\+\+RELEASE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+CAUSE}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DATA}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+DEST\+\_\+\+REF}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+ROUTE\+\_\+\+CTX}, \textbf{ SUA\+\_\+\+IEI\+\_\+\+SRC\+\_\+\+REF}, \textbf{ SUA\+\_\+\+MSGC\+\_\+\+CO}, \textbf{ XUA\+\_\+\+HDR}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+data()}, \textbf{ xua\+\_\+msg\+\_\+add\+\_\+u32()}, and \textbf{ xua\+\_\+msg\+\_\+alloc()}.



Referenced by \textbf{ sccp\+\_\+conn\+\_\+xua\+\_\+gen\+\_\+relre\+\_\+and\+\_\+send()}.

\mbox{\label{sccp__scoc_8c_a488c5728776d3b1cd8137906e9efe451}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!xua\_opt\_data\_cache\_keep@{xua\_opt\_data\_cache\_keep}}
\index{xua\_opt\_data\_cache\_keep@{xua\_opt\_data\_cache\_keep}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{xua\_opt\_data\_cache\_keep()}
{\footnotesize\ttfamily static bool xua\+\_\+opt\+\_\+data\+\_\+cache\+\_\+keep (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim,  }\item[{int}]{msg\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ LOGPSCC}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::max\+\_\+optional\+\_\+data}, \textbf{ msg\+\_\+type}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ sccp\+\_\+connection\+::opt\+\_\+data\+\_\+cache}, \textbf{ osmo\+\_\+scu\+\_\+prim\+\_\+name()}, and \textbf{ xua\+\_\+opt\+\_\+data\+\_\+check\+\_\+drop()}.



Referenced by \textbf{ xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim()}.

\mbox{\label{sccp__scoc_8c_a2c60ac68eca342eb6c989e2080ec19ff}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!xua\_opt\_data\_check\_drop@{xua\_opt\_data\_check\_drop}}
\index{xua\_opt\_data\_check\_drop@{xua\_opt\_data\_check\_drop}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{xua\_opt\_data\_check\_drop()}
{\footnotesize\ttfamily static bool xua\+\_\+opt\+\_\+data\+\_\+check\+\_\+drop (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim,  }\item[{unsigned}]{lim,  }\item[{const char $\ast$}]{message }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, and \textbf{ osmo\+\_\+scu\+\_\+prim\+\_\+name()}.



Referenced by \textbf{ xua\+\_\+opt\+\_\+data\+\_\+cache\+\_\+keep()}, and \textbf{ xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim()}.

\mbox{\label{sccp__scoc_8c_a8b3423632d93654c39f3f7e40ea5fb61}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!xua\_opt\_data\_length\_lim@{xua\_opt\_data\_length\_lim}}
\index{xua\_opt\_data\_length\_lim@{xua\_opt\_data\_length\_lim}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{xua\_opt\_data\_length\_lim()}
{\footnotesize\ttfamily static bool xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{const struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim,  }\item[{int}]{msg\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+connection\+::conn\+\_\+id}, \textbf{ sccp\+\_\+connection\+::inst}, \textbf{ osmo\+\_\+sccp\+\_\+instance\+::max\+\_\+optional\+\_\+data}, \textbf{ msg\+\_\+type}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data()}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COAK}, \textbf{ SUA\+\_\+\+CO\+\_\+\+CORE}, \textbf{ SUA\+\_\+\+CO\+\_\+\+COREF}, \textbf{ SUA\+\_\+\+CO\+\_\+\+RELRE}, \textbf{ sccp\+\_\+connection\+::user}, \textbf{ xua\+\_\+opt\+\_\+data\+\_\+cache\+\_\+keep()}, and \textbf{ xua\+\_\+opt\+\_\+data\+\_\+check\+\_\+drop()}.



Referenced by \textbf{ xua\+\_\+gen\+\_\+msg\+\_\+co()}.



\doxysubsection{Variable Documentation}
\mbox{\label{sccp__scoc_8c_a75884bb1a1b907bd62859dcdaf009e9c}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!cause\_map\_cref@{cause\_map\_cref}}
\index{cause\_map\_cref@{cause\_map\_cref}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{cause\_map\_cref}
{\footnotesize\ttfamily const uint8\+\_\+t cause\+\_\+map\+\_\+cref[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [SCCP\_RETURN\_CAUSE\_SUBSYSTEM\_CONGESTION] =}
\DoxyCodeLine{                                SCCP\_REFUSAL\_SUBSYTEM\_CONGESTION,}
\DoxyCodeLine{        [SCCP\_RETURN\_CAUSE\_SUBSYSTEM\_FAILURE] =}
\DoxyCodeLine{                                SCCP\_REFUSAL\_SUBSYSTEM\_FAILURE,}
\DoxyCodeLine{        [SCCP\_RETURN\_CAUSE\_UNEQUIPPED\_USER] =}
\DoxyCodeLine{                                SCCP\_REFUSAL\_UNEQUIPPED\_USER,}
\DoxyCodeLine{        [SCCP\_RETURN\_CAUSE\_UNQUALIFIED] =}
\DoxyCodeLine{                                SCCP\_REFUSAL\_UNQUALIFIED,}
\DoxyCodeLine{        [SCCP\_RETURN\_CAUSE\_SCCP\_FAILURE] =}
\DoxyCodeLine{                                SCCP\_REFUSAL\_SCCP\_FAILURE,}
\DoxyCodeLine{        [SCCP\_RETURN\_CAUSE\_HOP\_COUNTER\_VIOLATION] =}
\DoxyCodeLine{                                SCCP\_REFUSAL\_HOP\_COUNTER\_VIOLATION,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ get\+\_\+cref\+\_\+cause\+\_\+for\+\_\+ret()}.

\mbox{\label{sccp__scoc_8c_a0bf411ddb18999aae24423ae53b91e4c}} 
\index{sccp\_scoc.c@{sccp\_scoc.c}!sua\_scoc\_event\_map@{sua\_scoc\_event\_map}}
\index{sua\_scoc\_event\_map@{sua\_scoc\_event\_map}!sccp\_scoc.c@{sccp\_scoc.c}}
\doxysubsubsection{sua\_scoc\_event\_map}
{\footnotesize\ttfamily const struct \textbf{ xua\+\_\+msg\+\_\+event\+\_\+map} sua\+\_\+scoc\+\_\+event\+\_\+map[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_CORE, SCOC\_E\_RCOC\_CONN\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_RELRE, SCOC\_E\_RCOC\_RLSD\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_RELCO, SCOC\_E\_RCOC\_REL\_COMPL\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_COREF, SCOC\_E\_RCOC\_CREF\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_COAK, SCOC\_E\_RCOC\_CC\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_CODT, SCOC\_E\_RCOC\_DT1\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_COIT, SCOC\_E\_RCOC\_IT\_IND \},}
\DoxyCodeLine{        \{ SUA\_MSGC\_CO, SUA\_CO\_COERR, SCOC\_E\_RCOC\_ERROR\_IND \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ sccp\+\_\+scoc\+\_\+rx\+\_\+from\+\_\+scrc()}.

