\doxysection{src/sccp.c File Reference}
\label{sccp_8c}\index{src/sccp.c@{src/sccp.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/endian.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sccp/sccp\+\_\+types.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sccp/sccp.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ sccp\+\_\+system}
\item 
struct \textbf{ sccp\+\_\+data\+\_\+callback}
\item 
struct \textbf{ udt\+\_\+offsets}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}~4096
\item 
\#define \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}~128
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static \textbf{ LLIST\+\_\+\+HEAD} (sccp\+\_\+connections)
\item 
static \textbf{ LLIST\+\_\+\+HEAD} (sccp\+\_\+callbacks)
\item 
static struct \textbf{ sccp\+\_\+data\+\_\+callback} $\ast$ \textbf{ \+\_\+find\+\_\+ssn} (uint8\+\_\+t ssn)
\item 
static void \textbf{ \+\_\+send\+\_\+msg} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct msgb $\ast$msg, void $\ast$ctx)
\item 
static int \textbf{ copy\+\_\+address} (struct sccp\+\_\+address $\ast$addr, uint8\+\_\+t offset, struct msgb $\ast$msgb)
\item 
static int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data} (const int offset, struct msgb $\ast$msgb, struct sccp\+\_\+optional\+\_\+data $\ast$\textbf{ data})
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+released} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+refused} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+confirm} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+release\+\_\+complete} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+dt1} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
static int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result, const struct \textbf{ udt\+\_\+offsets} $\ast$offs)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+udt} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+udts} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
static int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+xudt} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
static int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+xudts} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
static int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+it} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
static int \textbf{ \+\_\+sccp\+\_\+parse\+\_\+err} (struct msgb $\ast$msgb, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
int \textbf{ sccp\+\_\+create\+\_\+sccp\+\_\+addr} (struct msgb $\ast$msg, const struct sockaddr\+\_\+sccp $\ast$sock)
\item 
struct msgb $\ast$ \textbf{ sccp\+\_\+create\+\_\+udt} (int class, const struct sockaddr\+\_\+sccp $\ast$in, const struct sockaddr\+\_\+sccp $\ast$out, uint8\+\_\+t $\ast$in\+\_\+data, int \textbf{ len})
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+data} (int class, const struct sockaddr\+\_\+sccp $\ast$in, const struct sockaddr\+\_\+sccp $\ast$out, struct msgb $\ast$payload, void $\ast$ctx)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+read} (struct msgb $\ast$msgb)
\item 
static int \textbf{ source\+\_\+local\+\_\+reference\+\_\+is\+\_\+free} (struct sccp\+\_\+source\+\_\+reference $\ast$reference)
\item 
static int \textbf{ destination\+\_\+local\+\_\+reference\+\_\+is\+\_\+free} (struct sccp\+\_\+source\+\_\+reference $\ast$reference)
\item 
static int \textbf{ assign\+\_\+source\+\_\+local\+\_\+reference} (struct \textbf{ sccp\+\_\+connection} $\ast$connection)
\item 
static void \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state} (struct \textbf{ sccp\+\_\+connection} $\ast$connection, int new\+\_\+state)
\item 
struct msgb $\ast$ \textbf{ sccp\+\_\+create\+\_\+refuse} (struct sccp\+\_\+source\+\_\+reference $\ast$src\+\_\+ref, int cause, uint8\+\_\+t $\ast$inp, int length)
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+refuse} (struct sccp\+\_\+source\+\_\+reference $\ast$src\+\_\+ref, int cause, void $\ast$ctx)
\item 
struct msgb $\ast$ \textbf{ sccp\+\_\+create\+\_\+cc} (struct sccp\+\_\+source\+\_\+reference $\ast$src\+\_\+ref, struct sccp\+\_\+source\+\_\+reference $\ast$dst\+\_\+ref)
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm} (struct \textbf{ sccp\+\_\+connection} $\ast$connection)
\item 
struct msgb $\ast$ \textbf{ sccp\+\_\+create\+\_\+cr} (const struct sccp\+\_\+source\+\_\+reference $\ast$src\+\_\+ref, const struct sockaddr\+\_\+sccp $\ast$called, const uint8\+\_\+t $\ast$l3\+\_\+data, size\+\_\+t l3\+\_\+length)
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request} (struct \textbf{ sccp\+\_\+connection} $\ast$connection, const struct sockaddr\+\_\+sccp $\ast$called, struct msgb $\ast$msg)
\item 
struct msgb $\ast$ \textbf{ sccp\+\_\+create\+\_\+dt1} (struct sccp\+\_\+source\+\_\+reference $\ast$dst\+\_\+ref, uint8\+\_\+t $\ast$inp\+\_\+data, uint8\+\_\+t \textbf{ len})
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+data} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct msgb $\ast$\+\_\+data)
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+it} (struct \textbf{ sccp\+\_\+connection} $\ast$conn)
\item 
struct msgb $\ast$ \textbf{ sccp\+\_\+create\+\_\+rlsd} (struct sccp\+\_\+source\+\_\+reference $\ast$src\+\_\+ref, struct sccp\+\_\+source\+\_\+reference $\ast$dst\+\_\+ref, int cause)
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+released} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, int cause)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request} (struct msgb $\ast$msgb, void $\ast$ctx)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+release\+\_\+complete} (struct msgb $\ast$msgb)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+dt1} (struct msgb $\ast$msgb)
\item 
static int \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+release\+\_\+complete} (struct \textbf{ sccp\+\_\+connection} $\ast$connection)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+released} (struct msgb $\ast$msgb)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+refused} (struct msgb $\ast$msgb)
\item 
static int \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+confirm} (struct msgb $\ast$msgb)
\item 
int \textbf{ sccp\+\_\+system\+\_\+init} (void($\ast$outgoing)(struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct msgb $\ast$\textbf{ data}, void $\ast$, void $\ast$), void $\ast$ctx)
\item 
int \textbf{ sccp\+\_\+system\+\_\+incoming} (struct msgb $\ast$msgb)
\item 
int \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx} (struct msgb $\ast$msgb, void $\ast$ctx)
\item 
int \textbf{ sccp\+\_\+connection\+\_\+write} (struct \textbf{ sccp\+\_\+connection} $\ast$connection, struct msgb $\ast$\textbf{ data})
\item 
int \textbf{ sccp\+\_\+connection\+\_\+send\+\_\+it} (struct \textbf{ sccp\+\_\+connection} $\ast$connection)
\item 
int \textbf{ sccp\+\_\+connection\+\_\+close} (struct \textbf{ sccp\+\_\+connection} $\ast$connection, int cause)
\item 
int \textbf{ sccp\+\_\+connection\+\_\+free} (struct \textbf{ sccp\+\_\+connection} $\ast$connection)
\item 
int \textbf{ sccp\+\_\+connection\+\_\+force\+\_\+free} (struct \textbf{ sccp\+\_\+connection} $\ast$con)
\item 
struct \textbf{ sccp\+\_\+connection} $\ast$ \textbf{ sccp\+\_\+connection\+\_\+socket} (void)
\item 
int \textbf{ sccp\+\_\+connection\+\_\+connect} (struct \textbf{ sccp\+\_\+connection} $\ast$conn, const struct sockaddr\+\_\+sccp $\ast$local, struct msgb $\ast$\textbf{ data})
\item 
int \textbf{ sccp\+\_\+connection\+\_\+set\+\_\+incoming} (const struct sockaddr\+\_\+sccp $\ast$sock, int($\ast$accept\+\_\+cb)(struct \textbf{ sccp\+\_\+connection} $\ast$, void $\ast$), void $\ast$context)
\item 
int \textbf{ sccp\+\_\+write} (struct msgb $\ast$\textbf{ data}, const struct sockaddr\+\_\+sccp $\ast$in, const struct sockaddr\+\_\+sccp $\ast$out, int class, void $\ast$ctx)
\item 
int \textbf{ sccp\+\_\+set\+\_\+read} (const struct sockaddr\+\_\+sccp $\ast$sock, int($\ast$read\+\_\+cb)(struct msgb $\ast$, unsigned int, void $\ast$), void $\ast$context)
\item 
\textbf{ osmo\+\_\+static\+\_\+assert} (sizeof(struct sccp\+\_\+source\+\_\+reference)$<$=sizeof(uint32\+\_\+t), enough\+\_\+space)
\item 
uint32\+\_\+t \textbf{ sccp\+\_\+src\+\_\+ref\+\_\+to\+\_\+int} (struct sccp\+\_\+source\+\_\+reference $\ast$ref)
\item 
struct sccp\+\_\+source\+\_\+reference \textbf{ sccp\+\_\+src\+\_\+ref\+\_\+from\+\_\+int} (uint32\+\_\+t int\+\_\+ref)
\item 
int \textbf{ sccp\+\_\+determine\+\_\+msg\+\_\+type} (struct msgb $\ast$msg)
\item 
int \textbf{ sccp\+\_\+parse\+\_\+header} (struct msgb $\ast$msg, struct sccp\+\_\+parse\+\_\+result $\ast$result)
\item 
static \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((constructor))
\item 
static \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((destructor))
\item 
void \textbf{ sccp\+\_\+set\+\_\+log\+\_\+area} (int log\+\_\+area)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static int \textbf{ DSCCP} = 0
\item 
static void $\ast$ \textbf{ tall\+\_\+sccp\+\_\+ctx}
\item 
const struct sockaddr\+\_\+sccp \textbf{ sccp\+\_\+ssn\+\_\+bssap}
\item 
static struct \textbf{ sccp\+\_\+system} \textbf{ sccp\+\_\+system}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{sccp_8c_a93c1b4187877d6a16a64487da38aa772}} 
\index{sccp.c@{sccp.c}!SCCP\_MSG\_HEADROOM@{SCCP\_MSG\_HEADROOM}}
\index{SCCP\_MSG\_HEADROOM@{SCCP\_MSG\_HEADROOM}!sccp.c@{sccp.c}}
\doxysubsubsection{SCCP\_MSG\_HEADROOM}
{\footnotesize\ttfamily \#define SCCP\+\_\+\+MSG\+\_\+\+HEADROOM~128}

\mbox{\label{sccp_8c_a95dfedb93a29d464768e61be0054b120}} 
\index{sccp.c@{sccp.c}!SCCP\_MSG\_SIZE@{SCCP\_MSG\_SIZE}}
\index{SCCP\_MSG\_SIZE@{SCCP\_MSG\_SIZE}!sccp.c@{sccp.c}}
\doxysubsubsection{SCCP\_MSG\_SIZE}
{\footnotesize\ttfamily \#define SCCP\+\_\+\+MSG\+\_\+\+SIZE~4096}



\doxysubsection{Function Documentation}
\mbox{\label{sccp_8c_a9ed16867a9394d9ccf1132194edae298}} 
\index{sccp.c@{sccp.c}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!sccp.c@{sccp.c}}
\doxysubsubsection{\_\_attribute\_\_()\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(constructor)}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ tall\+\_\+sccp\+\_\+ctx}.

\mbox{\label{sccp_8c_a7f400e70d869030323eab6b41ab8e833}} 
\index{sccp.c@{sccp.c}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!sccp.c@{sccp.c}}
\doxysubsubsection{\_\_attribute\_\_()\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(destructor)}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ tall\+\_\+sccp\+\_\+ctx}.

\mbox{\label{sccp_8c_a39731aaede86fb334c3086d60303ef06}} 
\index{sccp.c@{sccp.c}!\_find\_ssn@{\_find\_ssn}}
\index{\_find\_ssn@{\_find\_ssn}!sccp.c@{sccp.c}}
\doxysubsubsection{\_find\_ssn()}
{\footnotesize\ttfamily static struct \textbf{ sccp\+\_\+data\+\_\+callback} $\ast$ \+\_\+find\+\_\+ssn (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{ssn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+data\+\_\+callback\+::callback}, \textbf{ DSCCP}, \textbf{ sccp\+\_\+data\+\_\+callback\+::ssn}, and \textbf{ tall\+\_\+sccp\+\_\+ctx}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+read()}, \textbf{ sccp\+\_\+connection\+\_\+set\+\_\+incoming()}, and \textbf{ sccp\+\_\+set\+\_\+read()}.

\mbox{\label{sccp_8c_a40fc584f4feac9f209e4cff3355944f3}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_connection\_confirm@{\_sccp\_handle\_connection\_confirm}}
\index{\_sccp\_handle\_connection\_confirm@{\_sccp\_handle\_connection\_confirm}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_connection\_confirm()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+confirm (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ DSCCP}, and \textbf{ sccp\+\_\+connection\+::incoming}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_adf65f28d874b150ec5198fa6cd59ee0c}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_connection\_dt1@{\_sccp\_handle\_connection\_dt1}}
\index{\_sccp\_handle\_connection\_dt1@{\_sccp\_handle\_connection\_dt1}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_connection\_dt1()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+dt1 (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+dt1()}, and \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_a944c864ceb54f33977f266ae3acb1256}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_connection\_refused@{\_sccp\_handle\_connection\_refused}}
\index{\_sccp\_handle\_connection\_refused@{\_sccp\_handle\_connection\_refused}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_connection\_refused()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+refused (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ DSCCP}, and \textbf{ sccp\+\_\+connection\+::incoming}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_a182cf8b9734d615a5b41c4ab63ed2909}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_connection\_release\_complete@{\_sccp\_handle\_connection\_release\_complete}}
\index{\_sccp\_handle\_connection\_release\_complete@{\_sccp\_handle\_connection\_release\_complete}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_connection\_release\_complete()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+release\+\_\+complete (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, and \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_a1e16250489074ed16b75663f85730f02}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_connection\_released@{\_sccp\_handle\_connection\_released}}
\index{\_sccp\_handle\_connection\_released@{\_sccp\_handle\_connection\_released}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_connection\_released()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+released (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+released()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+release\+\_\+complete()}, and \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_afeebaa122a97bdf426d1120dc7b11d66}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_connection\_request@{\_sccp\_handle\_connection\_request}}
\index{\_sccp\_handle\_connection\_request@{\_sccp\_handle\_connection\_request}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_connection\_request()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+find\+\_\+ssn()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+refuse()}, \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ sccp\+\_\+data\+\_\+callback\+::accept\+\_\+cb}, \textbf{ sccp\+\_\+data\+\_\+callback\+::accept\+\_\+context}, \textbf{ destination\+\_\+local\+\_\+reference\+\_\+is\+\_\+free()}, \textbf{ DSCCP}, \textbf{ sccp\+\_\+connection\+::incoming}, and \textbf{ tall\+\_\+sccp\+\_\+ctx}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_ad55dbd13b090bd850b912243aac88d41}} 
\index{sccp.c@{sccp.c}!\_sccp\_handle\_read@{\_sccp\_handle\_read}}
\index{\_sccp\_handle\_read@{\_sccp\_handle\_read}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_handle\_read()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+handle\+\_\+read (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+find\+\_\+ssn()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+udt()}, \textbf{ DSCCP}, \textbf{ sccp\+\_\+data\+\_\+callback\+::read\+\_\+cb}, and \textbf{ sccp\+\_\+data\+\_\+callback\+::read\+\_\+context}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_a8bad77b1220e3a3407054429eb02e416}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_connection\_confirm@{\_sccp\_parse\_connection\_confirm}}
\index{\_sccp\_parse\_connection\_confirm@{\_sccp\_parse\_connection\_confirm}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_connection\_confirm()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+confirm (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data()}, and \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+confirm()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_a11c066ebd35e029f7c379e486a69cca4}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_connection\_dt1@{\_sccp\_parse\_connection\_dt1}}
\index{\_sccp\_parse\_connection\_dt1@{\_sccp\_parse\_connection\_dt1}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_connection\_dt1()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+dt1 (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+dt1()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_a0775d29bff293a4f5ae4bab635d72ac4}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_connection\_refused@{\_sccp\_parse\_connection\_refused}}
\index{\_sccp\_parse\_connection\_refused@{\_sccp\_parse\_connection\_refused}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_connection\_refused()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+refused (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data()}, and \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+refused()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_a89dbef364aee48b29a8f39b38eef79c1}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_connection\_release\_complete@{\_sccp\_parse\_connection\_release\_complete}}
\index{\_sccp\_parse\_connection\_release\_complete@{\_sccp\_parse\_connection\_release\_complete}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_connection\_release\_complete()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+release\+\_\+complete (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+release\+\_\+complete()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_a648c2ab7821eadd9f240fdb8346f60b1}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_connection\_released@{\_sccp\_parse\_connection\_released}}
\index{\_sccp\_parse\_connection\_released@{\_sccp\_parse\_connection\_released}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_connection\_released()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+released (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data()}, and \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+released()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_abb02b43c02ec68eecfb60d45e6bea3a6}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_connection\_request@{\_sccp\_parse\_connection\_request}}
\index{\_sccp\_parse\_connection\_request@{\_sccp\_parse\_connection\_request}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_connection\_request()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data()}, \textbf{ copy\+\_\+address()}, and \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_a631c01f0934d85cb9cd38a02b8ecb35b}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_err@{\_sccp\_parse\_err}}
\index{\_sccp\_parse\_err@{\_sccp\_parse\_err}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_err()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+parse\+\_\+err (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_ab27ade0b853143cae69bb1bba134e16c}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_it@{\_sccp\_parse\_it}}
\index{\_sccp\_parse\_it@{\_sccp\_parse\_it}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_it()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+parse\+\_\+it (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_aa369d3b395a8d326212332aeae984692}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_optional\_data@{\_sccp\_parse\_optional\_data}}
\index{\_sccp\_parse\_optional\_data@{\_sccp\_parse\_optional\_data}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_optional\_data()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data (\begin{DoxyParamCaption}\item[{const int}]{offset,  }\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+optional\+\_\+data $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, and \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+released()}, and \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_a88522cd9a68fceda6bf8af3e4fe5cea2}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_udt@{\_sccp\_parse\_udt}}
\index{\_sccp\_parse\_udt@{\_sccp\_parse\_udt}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_udt()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+udt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata()}, and \textbf{ udt\+\_\+offsets\+::header\+\_\+size}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+read()}, and \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_af4e74c8c6370c644d0823f204ef489af}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_udts@{\_sccp\_parse\_udts}}
\index{\_sccp\_parse\_udts@{\_sccp\_parse\_udts}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_udts()}
{\footnotesize\ttfamily int \+\_\+sccp\+\_\+parse\+\_\+udts (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata()}, and \textbf{ udt\+\_\+offsets\+::header\+\_\+size}.



Referenced by \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_abcba7c8d1a01b3f995e9860ddd58723e}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_unitdata@{\_sccp\_parse\_unitdata}}
\index{\_sccp\_parse\_unitdata@{\_sccp\_parse\_unitdata}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_unitdata()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+parse\+\_\+unitdata (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result,  }\item[{const struct \textbf{ udt\+\_\+offsets} $\ast$}]{offs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ udt\+\_\+offsets\+::called\+\_\+offset}, \textbf{ udt\+\_\+offsets\+::calling\+\_\+offset}, \textbf{ copy\+\_\+address()}, \textbf{ udt\+\_\+offsets\+::data\+\_\+offset}, \textbf{ DSCCP}, and \textbf{ udt\+\_\+offsets\+::header\+\_\+size}.



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

\mbox{\label{sccp_8c_af2fb5db10289d2634bf9d45886061d6a}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_xudt@{\_sccp\_parse\_xudt}}
\index{\_sccp\_parse\_xudt@{\_sccp\_parse\_xudt}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_xudt()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+parse\+\_\+xudt (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata()}, and \textbf{ udt\+\_\+offsets\+::header\+\_\+size}.



Referenced by \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_acc46f325f1d3cb0b5989d4aa91a2be5b}} 
\index{sccp.c@{sccp.c}!\_sccp\_parse\_xudts@{\_sccp\_parse\_xudts}}
\index{\_sccp\_parse\_xudts@{\_sccp\_parse\_xudts}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_parse\_xudts()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+parse\+\_\+xudts (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata()}, and \textbf{ udt\+\_\+offsets\+::header\+\_\+size}.



Referenced by \textbf{ sccp\+\_\+parse\+\_\+header()}.

\mbox{\label{sccp_8c_a420f9cb73eb4ea5fff69a25f7e614932}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_connection\_confirm@{\_sccp\_send\_connection\_confirm}}
\index{\_sccp\_send\_connection\_confirm@{\_sccp\_send\_connection\_confirm}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_connection\_confirm()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ \+\_\+send\+\_\+msg()}, \textbf{ assign\+\_\+source\+\_\+local\+\_\+reference()}, and \textbf{ sccp\+\_\+create\+\_\+cc()}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_a0c08f6f6ec98557b8c4c7fc1b7fe551e}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_connection\_data@{\_sccp\_send\_connection\_data}}
\index{\_sccp\_send\_connection\_data@{\_sccp\_send\_connection\_data}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_connection\_data()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{struct msgb $\ast$}]{\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+send\+\_\+msg()}, \textbf{ DSCCP}, and \textbf{ sccp\+\_\+create\+\_\+dt1()}.



Referenced by \textbf{ sccp\+\_\+connection\+\_\+write()}.

\mbox{\label{sccp_8c_a6d485664ab42e2791e428453f1194b5f}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_connection\_it@{\_sccp\_send\_connection\_it}}
\index{\_sccp\_send\_connection\_it@{\_sccp\_send\_connection\_it}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_connection\_it()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+it (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+send\+\_\+msg()}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ sccp\+\_\+connection\+\_\+send\+\_\+it()}.

\mbox{\label{sccp_8c_acf7425b57816315588b0196c1f9a691d}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_connection\_release\_complete@{\_sccp\_send\_connection\_release\_complete}}
\index{\_sccp\_send\_connection\_release\_complete@{\_sccp\_send\_connection\_release\_complete}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_connection\_release\_complete()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+release\+\_\+complete (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ \+\_\+send\+\_\+msg()}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+released()}.

\mbox{\label{sccp_8c_a028316bde5fb56963ac90660b1b990ed}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_connection\_released@{\_sccp\_send\_connection\_released}}
\index{\_sccp\_send\_connection\_released@{\_sccp\_send\_connection\_released}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_connection\_released()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+released (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{int}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ \+\_\+send\+\_\+msg()}, and \textbf{ sccp\+\_\+create\+\_\+rlsd()}.



Referenced by \textbf{ sccp\+\_\+connection\+\_\+close()}.

\mbox{\label{sccp_8c_a365da14a4888638c974fe26b8ae14e64}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_connection\_request@{\_sccp\_send\_connection\_request}}
\index{\_sccp\_send\_connection\_request@{\_sccp\_send\_connection\_request}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_connection\_request()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{called,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state()}, \textbf{ \+\_\+send\+\_\+msg()}, \textbf{ assign\+\_\+source\+\_\+local\+\_\+reference()}, \textbf{ DSCCP}, and \textbf{ sccp\+\_\+create\+\_\+cr()}.



Referenced by \textbf{ sccp\+\_\+connection\+\_\+connect()}.

\mbox{\label{sccp_8c_ab8c542ab7afa69373b974d7af00ae935}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_data@{\_sccp\_send\_data}}
\index{\_sccp\_send\_data@{\_sccp\_send\_data}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_data()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+data (\begin{DoxyParamCaption}\item[{int}]{class,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{in,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{out,  }\item[{struct msgb $\ast$}]{payload,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+send\+\_\+msg()}, and \textbf{ sccp\+\_\+create\+\_\+udt()}.



Referenced by \textbf{ sccp\+\_\+write()}.

\mbox{\label{sccp_8c_ab1160682098c2bb858a9805ff53d9557}} 
\index{sccp.c@{sccp.c}!\_sccp\_send\_refuse@{\_sccp\_send\_refuse}}
\index{\_sccp\_send\_refuse@{\_sccp\_send\_refuse}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_send\_refuse()}
{\footnotesize\ttfamily static int \+\_\+sccp\+\_\+send\+\_\+refuse (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{src\+\_\+ref,  }\item[{int}]{cause,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+send\+\_\+msg()}, and \textbf{ sccp\+\_\+create\+\_\+refuse()}.



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_ad719848035225c855cfbeb4d705475a2}} 
\index{sccp.c@{sccp.c}!\_sccp\_set\_connection\_state@{\_sccp\_set\_connection\_state}}
\index{\_sccp\_set\_connection\_state@{\_sccp\_set\_connection\_state}!sccp.c@{sccp.c}}
\doxysubsubsection{\_sccp\_set\_connection\_state()}
{\footnotesize\ttfamily static void \+\_\+sccp\+\_\+set\+\_\+connection\+\_\+state (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection,  }\item[{int}]{new\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+released()}, and \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_a9f24e1392e1e695cc8b813b230983807}} 
\index{sccp.c@{sccp.c}!\_send\_msg@{\_send\_msg}}
\index{\_send\_msg@{\_send\_msg}!sccp.c@{sccp.c}}
\doxysubsubsection{\_send\_msg()}
{\footnotesize\ttfamily static void \+\_\+send\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{struct msgb $\ast$}]{msg,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ sccp\+\_\+system\+::write\+\_\+context}, and \textbf{ sccp\+\_\+system\+::write\+\_\+data}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+data()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+it()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+released()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+data()}, and \textbf{ \+\_\+sccp\+\_\+send\+\_\+refuse()}.

\mbox{\label{sccp_8c_a23f3d91d576c49836aef9bd1a8aec8e8}} 
\index{sccp.c@{sccp.c}!assign\_source\_local\_reference@{assign\_source\_local\_reference}}
\index{assign\_source\_local\_reference@{assign\_source\_local\_reference}!sccp.c@{sccp.c}}
\doxysubsubsection{assign\_source\_local\_reference()}
{\footnotesize\ttfamily static int assign\+\_\+source\+\_\+local\+\_\+reference (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DSCCP}, and \textbf{ source\+\_\+local\+\_\+reference\+\_\+is\+\_\+free()}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm()}, and \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_abef8b5bbf898e9e46e4e5091ee05e2ae}} 
\index{sccp.c@{sccp.c}!copy\_address@{copy\_address}}
\index{copy\_address@{copy\_address}!sccp.c@{sccp.c}}
\doxysubsubsection{copy\_address()}
{\footnotesize\ttfamily static int copy\+\_\+address (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+address $\ast$}]{addr,  }\item[{uint8\+\_\+t}]{offset,  }\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DSCCP}.



Referenced by \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request()}, and \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata()}.

\mbox{\label{sccp_8c_aa859763e4aa0250ba0e5b09f683a5af8}} 
\index{sccp.c@{sccp.c}!destination\_local\_reference\_is\_free@{destination\_local\_reference\_is\_free}}
\index{destination\_local\_reference\_is\_free@{destination\_local\_reference\_is\_free}!sccp.c@{sccp.c}}
\doxysubsubsection{destination\_local\_reference\_is\_free()}
{\footnotesize\ttfamily static int destination\+\_\+local\+\_\+reference\+\_\+is\+\_\+free (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{reference }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_aef7b7284a7c90ea2a3ff2b0816c1aa9a}} 
\index{sccp.c@{sccp.c}!LLIST\_HEAD@{LLIST\_HEAD}}
\index{LLIST\_HEAD@{LLIST\_HEAD}!sccp.c@{sccp.c}}
\doxysubsubsection{LLIST\_HEAD()\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static LLIST\+\_\+\+HEAD (\begin{DoxyParamCaption}\item[{sccp\+\_\+callbacks}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{sccp_8c_addaf5dcd2714433aeae393bff659e9b1}} 
\index{sccp.c@{sccp.c}!LLIST\_HEAD@{LLIST\_HEAD}}
\index{LLIST\_HEAD@{LLIST\_HEAD}!sccp.c@{sccp.c}}
\doxysubsubsection{LLIST\_HEAD()\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static LLIST\+\_\+\+HEAD (\begin{DoxyParamCaption}\item[{sccp\+\_\+connections}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{sccp_8c_a0b41189236e3b375da78a2806b82307f}} 
\index{sccp.c@{sccp.c}!osmo\_static\_assert@{osmo\_static\_assert}}
\index{osmo\_static\_assert@{osmo\_static\_assert}!sccp.c@{sccp.c}}
\doxysubsubsection{osmo\_static\_assert()}
{\footnotesize\ttfamily osmo\+\_\+static\+\_\+assert (\begin{DoxyParamCaption}\item[{sizeof(struct sccp\+\_\+source\+\_\+reference)$<$=sizeof(uint32\+\_\+t)}]{,  }\item[{enough\+\_\+space}]{ }\end{DoxyParamCaption})}

\mbox{\label{sccp_8c_a3580d82b7e274b2dd55b55f25cec92b7}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_close@{sccp\_connection\_close}}
\index{sccp\_connection\_close@{sccp\_connection\_close}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_close()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+close (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection,  }\item[{int}]{cause }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+released()}, and \textbf{ DSCCP}.

\mbox{\label{sccp_8c_aaf16caca45f0150cbad61c0cdb40c27a}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_connect@{sccp\_connection\_connect}}
\index{sccp\_connection\_connect@{sccp\_connection\_connect}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_connect()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+connect (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{conn,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{local,  }\item[{struct msgb $\ast$}]{data }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request()}, and \textbf{ data}.

\mbox{\label{sccp_8c_a4febdceb7bc1397829429670c678d52c}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_force\_free@{sccp\_connection\_force\_free}}
\index{sccp\_connection\_force\_free@{sccp\_connection\_force\_free}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_force\_free()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+force\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{con }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+connection\+\_\+free()}.

\mbox{\label{sccp_8c_ac7b76d5cf9c442c22c9c6ab3b31d2c14}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_free@{sccp\_connection\_free}}
\index{sccp\_connection\_free@{sccp\_connection\_free}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_free()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection }\end{DoxyParamCaption})}



References \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+connection\+\_\+force\+\_\+free()}.

\mbox{\label{sccp_8c_a8f936980e5be74da6c7d34a79cc304e8}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_send\_it@{sccp\_connection\_send\_it}}
\index{sccp\_connection\_send\_it@{sccp\_connection\_send\_it}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_send\_it()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+send\+\_\+it (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+it()}, and \textbf{ DSCCP}.

\mbox{\label{sccp_8c_afae246de0fa1621fb6695c85d6f8af92}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_set\_incoming@{sccp\_connection\_set\_incoming}}
\index{sccp\_connection\_set\_incoming@{sccp\_connection\_set\_incoming}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_set\_incoming()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+set\+\_\+incoming (\begin{DoxyParamCaption}\item[{const struct sockaddr\+\_\+sccp $\ast$}]{sock,  }\item[{int($\ast$)(struct \textbf{ sccp\+\_\+connection} $\ast$, void $\ast$)}]{accept\+\_\+cb,  }\item[{void $\ast$}]{context }\end{DoxyParamCaption})}



References \textbf{ \+\_\+find\+\_\+ssn()}, \textbf{ sccp\+\_\+data\+\_\+callback\+::accept\+\_\+cb}, and \textbf{ sccp\+\_\+data\+\_\+callback\+::accept\+\_\+context}.

\mbox{\label{sccp_8c_a058e51f0d5fec9644a883423f7548710}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_socket@{sccp\_connection\_socket}}
\index{sccp\_connection\_socket@{sccp\_connection\_socket}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_socket()}
{\footnotesize\ttfamily struct \textbf{ sccp\+\_\+connection} $\ast$ sccp\+\_\+connection\+\_\+socket (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



References \textbf{ tall\+\_\+sccp\+\_\+ctx}.

\mbox{\label{sccp_8c_a22d2f5065e5560cadd1d798a1d4773a1}} 
\index{sccp.c@{sccp.c}!sccp\_connection\_write@{sccp\_connection\_write}}
\index{sccp\_connection\_write@{sccp\_connection\_write}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_connection\_write()}
{\footnotesize\ttfamily int sccp\+\_\+connection\+\_\+write (\begin{DoxyParamCaption}\item[{struct \textbf{ sccp\+\_\+connection} $\ast$}]{connection,  }\item[{struct msgb $\ast$}]{data }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+data()}, \textbf{ data}, and \textbf{ DSCCP}.

\mbox{\label{sccp_8c_a820cd600d67b7ef700f1d7c5775a5777}} 
\index{sccp.c@{sccp.c}!sccp\_create\_cc@{sccp\_create\_cc}}
\index{sccp\_create\_cc@{sccp\_create\_cc}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_cc()}
{\footnotesize\ttfamily struct msgb $\ast$ sccp\+\_\+create\+\_\+cc (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{src\+\_\+ref,  }\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{dst\+\_\+ref }\end{DoxyParamCaption})}



References \textbf{ DSCCP}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+confirm()}.

\mbox{\label{sccp_8c_a6a2cc2771b968347142df5905a7358cd}} 
\index{sccp.c@{sccp.c}!sccp\_create\_cr@{sccp\_create\_cr}}
\index{sccp\_create\_cr@{sccp\_create\_cr}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_cr()}
{\footnotesize\ttfamily struct msgb $\ast$ sccp\+\_\+create\+\_\+cr (\begin{DoxyParamCaption}\item[{const struct sccp\+\_\+source\+\_\+reference $\ast$}]{src\+\_\+ref,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{called,  }\item[{const uint8\+\_\+t $\ast$}]{l3\+\_\+data,  }\item[{size\+\_\+t}]{l3\+\_\+length }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ DSCCP}, \textbf{ sccp\+\_\+create\+\_\+sccp\+\_\+addr()}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request()}.

\mbox{\label{sccp_8c_af58ff35e283cdfd7127bd704d63ad54f}} 
\index{sccp.c@{sccp.c}!sccp\_create\_dt1@{sccp\_create\_dt1}}
\index{sccp\_create\_dt1@{sccp\_create\_dt1}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_dt1()}
{\footnotesize\ttfamily struct msgb $\ast$ sccp\+\_\+create\+\_\+dt1 (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{dst\+\_\+ref,  }\item[{uint8\+\_\+t $\ast$}]{inp\+\_\+data,  }\item[{uint8\+\_\+t}]{len }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ DSCCP}, \textbf{ len}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+data()}.

\mbox{\label{sccp_8c_a4682cb41ca1aea672e56291bb997f52c}} 
\index{sccp.c@{sccp.c}!sccp\_create\_refuse@{sccp\_create\_refuse}}
\index{sccp\_create\_refuse@{sccp\_create\_refuse}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_refuse()}
{\footnotesize\ttfamily struct msgb $\ast$ sccp\+\_\+create\+\_\+refuse (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{src\+\_\+ref,  }\item[{int}]{cause,  }\item[{uint8\+\_\+t $\ast$}]{inp,  }\item[{int}]{length }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ DSCCP}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+refuse()}.

\mbox{\label{sccp_8c_ac8aac2d12eed34d1834178b111a02ecd}} 
\index{sccp.c@{sccp.c}!sccp\_create\_rlsd@{sccp\_create\_rlsd}}
\index{sccp\_create\_rlsd@{sccp\_create\_rlsd}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_rlsd()}
{\footnotesize\ttfamily struct msgb $\ast$ sccp\+\_\+create\+\_\+rlsd (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{src\+\_\+ref,  }\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{dst\+\_\+ref,  }\item[{int}]{cause }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ DSCCP}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+released()}.

\mbox{\label{sccp_8c_a90220387b107ad5b44233e17cf18c4e7}} 
\index{sccp.c@{sccp.c}!sccp\_create\_sccp\_addr@{sccp\_create\_sccp\_addr}}
\index{sccp\_create\_sccp\_addr@{sccp\_create\_sccp\_addr}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_sccp\_addr()}
{\footnotesize\ttfamily int sccp\+\_\+create\+\_\+sccp\+\_\+addr (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{sock }\end{DoxyParamCaption})}



References \textbf{ len}.



Referenced by \textbf{ sccp\+\_\+create\+\_\+cr()}, and \textbf{ sccp\+\_\+create\+\_\+udt()}.

\mbox{\label{sccp_8c_a6aadda12f4baa65260ca01ebbd0e29de}} 
\index{sccp.c@{sccp.c}!sccp\_create\_udt@{sccp\_create\_udt}}
\index{sccp\_create\_udt@{sccp\_create\_udt}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_create\_udt()}
{\footnotesize\ttfamily struct msgb $\ast$ sccp\+\_\+create\+\_\+udt (\begin{DoxyParamCaption}\item[{int}]{class,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{in,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{out,  }\item[{uint8\+\_\+t $\ast$}]{in\+\_\+data,  }\item[{int}]{len }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ DSCCP}, \textbf{ len}, \textbf{ sccp\+\_\+create\+\_\+sccp\+\_\+addr()}, \textbf{ SCCP\+\_\+\+MSG\+\_\+\+HEADROOM}, and \textbf{ SCCP\+\_\+\+MSG\+\_\+\+SIZE}.



Referenced by \textbf{ \+\_\+sccp\+\_\+send\+\_\+data()}.

\mbox{\label{sccp_8c_a9acbb077f0ff8b0d603eb6aa800633dd}} 
\index{sccp.c@{sccp.c}!sccp\_determine\_msg\_type@{sccp\_determine\_msg\_type}}
\index{sccp\_determine\_msg\_type@{sccp\_determine\_msg\_type}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_determine\_msg\_type()}
{\footnotesize\ttfamily int sccp\+\_\+determine\+\_\+msg\+\_\+type (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}

\mbox{\label{sccp_8c_ad7b91b6f65924d292703bc4d2c159b3f}} 
\index{sccp.c@{sccp.c}!sccp\_parse\_header@{sccp\_parse\_header}}
\index{sccp\_parse\_header@{sccp\_parse\_header}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_parse\_header()}
{\footnotesize\ttfamily int sccp\+\_\+parse\+\_\+header (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msg,  }\item[{struct sccp\+\_\+parse\+\_\+result $\ast$}]{result }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+dt1()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+released()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+err()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+it()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+udt()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+udts()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+xudt()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+xudts()}, and \textbf{ DSCCP}.

\mbox{\label{sccp_8c_aea49fbb16eacfcb6e19764cec421e5dd}} 
\index{sccp.c@{sccp.c}!sccp\_set\_log\_area@{sccp\_set\_log\_area}}
\index{sccp\_set\_log\_area@{sccp\_set\_log\_area}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_set\_log\_area()}
{\footnotesize\ttfamily void sccp\+\_\+set\+\_\+log\+\_\+area (\begin{DoxyParamCaption}\item[{int}]{log\+\_\+area }\end{DoxyParamCaption})}



References \textbf{ DSCCP}.

\mbox{\label{sccp_8c_aca90e9f8e0b0f1d89b13d7d8619f8da3}} 
\index{sccp.c@{sccp.c}!sccp\_set\_read@{sccp\_set\_read}}
\index{sccp\_set\_read@{sccp\_set\_read}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_set\_read()}
{\footnotesize\ttfamily int sccp\+\_\+set\+\_\+read (\begin{DoxyParamCaption}\item[{const struct sockaddr\+\_\+sccp $\ast$}]{sock,  }\item[{int($\ast$)(struct msgb $\ast$, unsigned int, void $\ast$)}]{read\+\_\+cb,  }\item[{void $\ast$}]{context }\end{DoxyParamCaption})}



References \textbf{ \+\_\+find\+\_\+ssn()}, \textbf{ sccp\+\_\+data\+\_\+callback\+::read\+\_\+cb}, and \textbf{ sccp\+\_\+data\+\_\+callback\+::read\+\_\+context}.

\mbox{\label{sccp_8c_a2267785692a639f7e2cdeeb695a8109e}} 
\index{sccp.c@{sccp.c}!sccp\_src\_ref\_from\_int@{sccp\_src\_ref\_from\_int}}
\index{sccp\_src\_ref\_from\_int@{sccp\_src\_ref\_from\_int}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_src\_ref\_from\_int()}
{\footnotesize\ttfamily struct sccp\+\_\+source\+\_\+reference sccp\+\_\+src\+\_\+ref\+\_\+from\+\_\+int (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{int\+\_\+ref }\end{DoxyParamCaption})}

\mbox{\label{sccp_8c_a74f4729a1ea90a51a4bd0e93ad3112f5}} 
\index{sccp.c@{sccp.c}!sccp\_src\_ref\_to\_int@{sccp\_src\_ref\_to\_int}}
\index{sccp\_src\_ref\_to\_int@{sccp\_src\_ref\_to\_int}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_src\_ref\_to\_int()}
{\footnotesize\ttfamily uint32\+\_\+t sccp\+\_\+src\+\_\+ref\+\_\+to\+\_\+int (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{ref }\end{DoxyParamCaption})}

\mbox{\label{sccp_8c_a21fee5e1bc4d9e0e6b68b5cb1c9b890e}} 
\index{sccp.c@{sccp.c}!sccp\_system\_incoming@{sccp\_system\_incoming}}
\index{sccp\_system\_incoming@{sccp\_system\_incoming}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_system\_incoming()}
{\footnotesize\ttfamily int sccp\+\_\+system\+\_\+incoming (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_acb7c01b1270cee844414f859acb1e738}} 
\index{sccp.c@{sccp.c}!sccp\_system\_incoming\_ctx@{sccp\_system\_incoming\_ctx}}
\index{sccp\_system\_incoming\_ctx@{sccp\_system\_incoming\_ctx}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_system\_incoming\_ctx()}
{\footnotesize\ttfamily int sccp\+\_\+system\+\_\+incoming\+\_\+ctx (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{msgb,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+dt1()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+released()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+read()}, and \textbf{ DSCCP}.



Referenced by \textbf{ sccp\+\_\+system\+\_\+incoming()}.

\mbox{\label{sccp_8c_a56a235e7ab6f880b9b7af319bbc7d977}} 
\index{sccp.c@{sccp.c}!sccp\_system\_init@{sccp\_system\_init}}
\index{sccp\_system\_init@{sccp\_system\_init}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_system\_init()}
{\footnotesize\ttfamily int sccp\+\_\+system\+\_\+init (\begin{DoxyParamCaption}\item[{void($\ast$)(struct \textbf{ sccp\+\_\+connection} $\ast$conn, struct msgb $\ast$\textbf{ data}, void $\ast$, void $\ast$)}]{outgoing,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+system\+::write\+\_\+context}, and \textbf{ sccp\+\_\+system\+::write\+\_\+data}.

\mbox{\label{sccp_8c_a8d2bbed17a2ae6f9d8785f7d3f0594c8}} 
\index{sccp.c@{sccp.c}!sccp\_write@{sccp\_write}}
\index{sccp\_write@{sccp\_write}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_write()}
{\footnotesize\ttfamily int sccp\+\_\+write (\begin{DoxyParamCaption}\item[{struct msgb $\ast$}]{data,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{in,  }\item[{const struct sockaddr\+\_\+sccp $\ast$}]{out,  }\item[{int}]{class,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}



References \textbf{ \+\_\+sccp\+\_\+send\+\_\+data()}, and \textbf{ data}.

\mbox{\label{sccp_8c_a64830893ca9393f7ce13dd6647001218}} 
\index{sccp.c@{sccp.c}!source\_local\_reference\_is\_free@{source\_local\_reference\_is\_free}}
\index{source\_local\_reference\_is\_free@{source\_local\_reference\_is\_free}!sccp.c@{sccp.c}}
\doxysubsubsection{source\_local\_reference\_is\_free()}
{\footnotesize\ttfamily static int source\+\_\+local\+\_\+reference\+\_\+is\+\_\+free (\begin{DoxyParamCaption}\item[{struct sccp\+\_\+source\+\_\+reference $\ast$}]{reference }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ assign\+\_\+source\+\_\+local\+\_\+reference()}.



\doxysubsection{Variable Documentation}
\mbox{\label{sccp_8c_a76289a1eaad826ce833ea29955728e6b}} 
\index{sccp.c@{sccp.c}!DSCCP@{DSCCP}}
\index{DSCCP@{DSCCP}!sccp.c@{sccp.c}}
\doxysubsubsection{DSCCP}
{\footnotesize\ttfamily int DSCCP = 0\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ \+\_\+find\+\_\+ssn()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+dt1()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+released()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+read()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+confirm()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+dt1()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+refused()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+release\+\_\+complete()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+released()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+connection\+\_\+request()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+err()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+it()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+optional\+\_\+data()}, \textbf{ \+\_\+sccp\+\_\+parse\+\_\+unitdata()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+data()}, \textbf{ \+\_\+sccp\+\_\+send\+\_\+connection\+\_\+request()}, \textbf{ assign\+\_\+source\+\_\+local\+\_\+reference()}, \textbf{ copy\+\_\+address()}, \textbf{ sccp\+\_\+connection\+\_\+close()}, \textbf{ sccp\+\_\+connection\+\_\+free()}, \textbf{ sccp\+\_\+connection\+\_\+send\+\_\+it()}, \textbf{ sccp\+\_\+connection\+\_\+write()}, \textbf{ sccp\+\_\+create\+\_\+cc()}, \textbf{ sccp\+\_\+create\+\_\+cr()}, \textbf{ sccp\+\_\+create\+\_\+dt1()}, \textbf{ sccp\+\_\+create\+\_\+refuse()}, \textbf{ sccp\+\_\+create\+\_\+rlsd()}, \textbf{ sccp\+\_\+create\+\_\+udt()}, \textbf{ sccp\+\_\+parse\+\_\+header()}, \textbf{ sccp\+\_\+set\+\_\+log\+\_\+area()}, and \textbf{ sccp\+\_\+system\+\_\+incoming\+\_\+ctx()}.

\mbox{\label{sccp_8c_a4eeacfdb01f87cf6d5a676c97f3fa251}} 
\index{sccp.c@{sccp.c}!sccp\_ssn\_bssap@{sccp\_ssn\_bssap}}
\index{sccp\_ssn\_bssap@{sccp\_ssn\_bssap}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_ssn\_bssap}
{\footnotesize\ttfamily const struct sockaddr\+\_\+sccp sccp\+\_\+ssn\+\_\+bssap}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .sccp\_family    = 0,}
\DoxyCodeLine{        .sccp\_ssn       = SCCP\_SSN\_BSSAP,}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{sccp_8c_a11325c39ad2233d6ee92cf75ab9cb543}} 
\index{sccp.c@{sccp.c}!sccp\_system@{sccp\_system}}
\index{sccp\_system@{sccp\_system}!sccp.c@{sccp.c}}
\doxysubsubsection{sccp\_system}
{\footnotesize\ttfamily struct \textbf{ sccp\+\_\+system} \textbf{ sccp\+\_\+system}\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .write\_data = NULL,}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{sccp_8c_adb3ceca4a0faa4e6732101477fa4a5b3}} 
\index{sccp.c@{sccp.c}!tall\_sccp\_ctx@{tall\_sccp\_ctx}}
\index{tall\_sccp\_ctx@{tall\_sccp\_ctx}!sccp.c@{sccp.c}}
\doxysubsubsection{tall\_sccp\_ctx}
{\footnotesize\ttfamily void$\ast$ tall\+\_\+sccp\+\_\+ctx\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+()}, \textbf{ \+\_\+find\+\_\+ssn()}, \textbf{ \+\_\+sccp\+\_\+handle\+\_\+connection\+\_\+request()}, and \textbf{ sccp\+\_\+connection\+\_\+socket()}.

