\doxysection{src/sccp\+\_\+helpers.c File Reference}
\label{sccp__helpers_8c}\index{src/sccp\_helpers.c@{src/sccp\_helpers.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$sys/socket.\+h$>$}\newline
{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline
{\ttfamily \#include $<$netinet/in.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sccp/sccp\+\_\+types.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+helpers.\+h$>$}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+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
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ SCU\+\_\+\+MSG\+\_\+\+SIZE}~2048
\item 
\#define \textbf{ SCU\+\_\+\+MSG\+\_\+\+HEADROOM}~512
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static struct msgb $\ast$ \textbf{ scu\+\_\+msgb\+\_\+alloc} (const char $\ast$name)
\item 
void \textbf{ osmo\+\_\+sccp\+\_\+make\+\_\+addr\+\_\+pc\+\_\+ssn} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr, uint32\+\_\+t \textbf{ pc}, uint32\+\_\+t \textbf{ ssn})
\item 
void \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+set\+\_\+ssn} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr, uint32\+\_\+t \textbf{ ssn})
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$calling\+\_\+addr, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$called\+\_\+addr, const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int \textbf{ len})
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+ranap} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t src\+\_\+point\+\_\+code, uint32\+\_\+t dst\+\_\+point\+\_\+code, const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int \textbf{ len})
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+msg} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$calling\+\_\+addr, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$called\+\_\+addr, struct msgb $\ast$msg)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$calling\+\_\+addr, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$called\+\_\+addr, const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int \textbf{ len})
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req\+\_\+msg} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$calling\+\_\+addr, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$called\+\_\+addr, struct msgb $\ast$msg)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int \textbf{ len})
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data\+\_\+msg} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, struct msgb $\ast$msg)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+disconn\+\_\+data} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$resp\+\_\+addr, uint32\+\_\+t cause, const uint8\+\_\+t $\ast$\textbf{ data}, size\+\_\+t \textbf{ len})
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+disconn} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$resp\+\_\+addr, uint32\+\_\+t cause)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp\+\_\+msg} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$resp\+\_\+addr, struct msgb $\ast$msg)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, uint32\+\_\+t conn\+\_\+id, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$resp\+\_\+addr, const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int \textbf{ len})
\item 
static void \textbf{ append\+\_\+to\+\_\+buf} (char $\ast$buf, size\+\_\+t size, bool $\ast$comma, const char $\ast$fmt,...)
\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+gt\+\_\+dump} (const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$gt)
\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+dump} (const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
static int \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr, char sep\+\_\+char)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+c} (void $\ast$ctx, const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\begin{DoxyCompactList}\small\item\em like osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf, but using only characters passing osmo\+\_\+identifier\+\_\+valid(). \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+c} (void $\ast$ctx, const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+name} (const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
int \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+c} (void $\ast$ctx, const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\item 
char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+name} (const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr)
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{sccp__helpers_8c_a75446d92130ee5919a8b84aaeaafca9d}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!SCU\_MSG\_HEADROOM@{SCU\_MSG\_HEADROOM}}
\index{SCU\_MSG\_HEADROOM@{SCU\_MSG\_HEADROOM}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{SCU\_MSG\_HEADROOM}
{\footnotesize\ttfamily \#define SCU\+\_\+\+MSG\+\_\+\+HEADROOM~512}

\mbox{\label{sccp__helpers_8c_ae033aa1f804be7484644df242980f8e3}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!SCU\_MSG\_SIZE@{SCU\_MSG\_SIZE}}
\index{SCU\_MSG\_SIZE@{SCU\_MSG\_SIZE}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{SCU\_MSG\_SIZE}
{\footnotesize\ttfamily \#define SCU\+\_\+\+MSG\+\_\+\+SIZE~2048}



\doxysubsection{Function Documentation}
\mbox{\label{sccp__helpers_8c_adf05efdef9251bcc40489a164efd430b}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!append\_to\_buf@{append\_to\_buf}}
\index{append\_to\_buf@{append\_to\_buf}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{append\_to\_buf()}
{\footnotesize\ttfamily static void append\+\_\+to\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{size,  }\item[{bool $\ast$}]{comma,  }\item[{const char $\ast$}]{fmt,  }\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+dump()}, and \textbf{ osmo\+\_\+sccp\+\_\+gt\+\_\+dump()}.

\mbox{\label{sccp__helpers_8c_a9af8d940fbd8fd746580aa236800afb7}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_dump@{osmo\_sccp\_addr\_dump}}
\index{osmo\_sccp\_addr\_dump@{osmo\_sccp\_addr\_dump}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_dump()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+addr\+\_\+dump (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ append\+\_\+to\+\_\+buf()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::gt}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::gti}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ip}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+IPv4}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+IPv6}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+\_\+dump()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NO\+\_\+\+GT}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ri}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::v4}, and \textbf{ osmo\+\_\+sccp\+\_\+addr\+::v6}.



Referenced by \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+sua()}.

\mbox{\label{sccp__helpers_8c_ab751c4579907146b3194fda7eb54a5ec}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_name@{osmo\_sccp\_addr\_name}}
\index{osmo\_sccp\_addr\_name@{osmo\_sccp\_addr\_name}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_name()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+addr\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+name()}, and \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+name()}.

\mbox{\label{sccp__helpers_8c_aa24244813931cee7680517c416545249}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_set\_ssn@{osmo\_sccp\_addr\_set\_ssn}}
\index{osmo\_sccp\_addr\_set\_ssn@{osmo\_sccp\_addr\_set\_ssn}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_set\_ssn()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+addr\+\_\+set\+\_\+ssn (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr,  }\item[{uint32\+\_\+t}]{ssn }\end{DoxyParamCaption})}



References \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, and \textbf{ ssn}.

\mbox{\label{sccp__helpers_8c_aca33c7993fb36b3afd4c0fe8dad1e2f3}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_to\_id\_buf@{osmo\_sccp\_addr\_to\_id\_buf}}
\index{osmo\_sccp\_addr\_to\_id\_buf@{osmo\_sccp\_addr\_to\_id\_buf}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_to\_id\_buf()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



like osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf, but using only characters passing osmo\+\_\+identifier\+\_\+valid(). 

Useful for FSM and CTRL IDs.

The advantage over using \doxyref{osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}{p.}{sccp__helpers_8c_aeda236765bdc06aef73598bf9f40f42d} followed by osmo\+\_\+identifier\+\_\+sanitize\+\_\+buf() is that here, the address elements are separated by \textquotesingle{}\+:\textquotesingle{}, while osmo\+\_\+identifier\+\_\+sanitize\+\_\+buf() would replace all characters with the same, e.\+g. \textquotesingle{}-\/\textquotesingle{}. 

References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+c()}.

\mbox{\label{sccp__helpers_8c_a68c52f81fab1321fa46375dc86df94b1}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_to\_id\_c@{osmo\_sccp\_addr\_to\_id\_c}}
\index{osmo\_sccp\_addr\_to\_id\_c@{osmo\_sccp\_addr\_to\_id\_c}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_to\_id\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+c (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+buf()}.

\mbox{\label{sccp__helpers_8c_aeda236765bdc06aef73598bf9f40f42d}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_to\_str\_buf@{osmo\_sccp\_addr\_to\_str\_buf}}
\index{osmo\_sccp\_addr\_to\_str\_buf@{osmo\_sccp\_addr\_to\_str\_buf}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_to\_str\_buf()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+name()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+c()}, and \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.

\mbox{\label{sccp__helpers_8c_a0536e3431efb95e643a175e192bf85af}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_addr\_to\_str\_c@{osmo\_sccp\_addr\_to\_str\_c}}
\index{osmo\_sccp\_addr\_to\_str\_c@{osmo\_sccp\_addr\_to\_str\_c}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_addr\_to\_str\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+c (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.

\mbox{\label{sccp__helpers_8c_a72f15561853970d001bf2b03e4644c44}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_gt\_dump@{osmo\_sccp\_gt\_dump}}
\index{osmo\_sccp\_gt\_dump@{osmo\_sccp\_gt\_dump}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_gt\_dump()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+gt\+\_\+dump (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$}]{gt }\end{DoxyParamCaption})}



References \textbf{ append\+\_\+to\+\_\+buf()}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::digits}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::gti}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::nai}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::npi}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NAI\+\_\+\+ONLY}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NO\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+NPL\+\_\+\+ENC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+NPL\+\_\+\+ENC\+\_\+\+NAI}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+TT\+\_\+\+ONLY}, and \textbf{ osmo\+\_\+sccp\+\_\+gt\+::tt}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+dump()}, and \textbf{ sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.

\mbox{\label{sccp__helpers_8c_a1011151283b351368f1a2c8051bbfa3b}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_inst\_addr\_name@{osmo\_sccp\_inst\_addr\_name}}
\index{osmo\_sccp\_inst\_addr\_name@{osmo\_sccp\_inst\_addr\_name}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_inst\_addr\_name()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ NULL}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+name()}, and \textbf{ osmo\+\_\+sccp\+\_\+instance\+::ss7}.

\mbox{\label{sccp__helpers_8c_ab489a4da53b5c4aed2af240dad595074}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_inst\_addr\_to\_str\_buf@{osmo\_sccp\_inst\_addr\_to\_str\_buf}}
\index{osmo\_sccp\_inst\_addr\_to\_str\_buf@{osmo\_sccp\_inst\_addr\_to\_str\_buf}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_inst\_addr\_to\_str\_buf()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ NULL}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}, and \textbf{ osmo\+\_\+sccp\+\_\+instance\+::ss7}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+c()}.

\mbox{\label{sccp__helpers_8c_a7bc9b3b74892b30e7194c6f0eba4e91f}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_inst\_addr\_to\_str\_c@{osmo\_sccp\_inst\_addr\_to\_str\_c}}
\index{osmo\_sccp\_inst\_addr\_to\_str\_c@{osmo\_sccp\_inst\_addr\_to\_str\_c}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_inst\_addr\_to\_str\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+c (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.

\mbox{\label{sccp__helpers_8c_ac8f009d259929b14eb0e8c7979cd4298}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_make\_addr\_pc\_ssn@{osmo\_sccp\_make\_addr\_pc\_ssn}}
\index{osmo\_sccp\_make\_addr\_pc\_ssn@{osmo\_sccp\_make\_addr\_pc\_ssn}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_make\_addr\_pc\_ssn()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+make\+\_\+addr\+\_\+pc\+\_\+ssn (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr,  }\item[{uint32\+\_\+t}]{pc,  }\item[{uint32\+\_\+t}]{ssn }\end{DoxyParamCaption})}



References \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+RI\+\_\+\+SSN\+\_\+\+PC}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, and \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance()}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+ranap()}, and \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+name()}.

\mbox{\label{sccp__helpers_8c_a245f3f0445502d9b33271a6d6f28dc47}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_conn\_req@{osmo\_sccp\_tx\_conn\_req}}
\index{osmo\_sccp\_tx\_conn\_req@{osmo\_sccp\_tx\_conn\_req}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_conn\_req()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{calling\+\_\+addr,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{called\+\_\+addr,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::called\+\_\+addr}, \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::calling\+\_\+addr}, \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::conn\+\_\+id}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::connect}, \textbf{ data}, \textbf{ len}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down()}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+PRIM\+\_\+\+N\+\_\+\+CONNECT}, \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::sccp\+\_\+class}, \textbf{ SCCP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ scu\+\_\+msgb\+\_\+alloc()}, and \textbf{ osmo\+\_\+scu\+\_\+prim\+::u}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req\+\_\+msg()}.

\mbox{\label{sccp__helpers_8c_a30c0e71745643ff8f0491efe618817f7}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_conn\_req\_msg@{osmo\_sccp\_tx\_conn\_req\_msg}}
\index{osmo\_sccp\_tx\_conn\_req\_msg@{osmo\_sccp\_tx\_conn\_req\_msg}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_conn\_req\_msg()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{calling\+\_\+addr,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{called\+\_\+addr,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req()}.

\mbox{\label{sccp__helpers_8c_ab759daefc5601b48da2da33495c1daf6}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_conn\_resp@{osmo\_sccp\_tx\_conn\_resp}}
\index{osmo\_sccp\_tx\_conn\_resp@{osmo\_sccp\_tx\_conn\_resp}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_conn\_resp()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{resp\+\_\+addr,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ len}, \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp\+\_\+msg()}, and \textbf{ scu\+\_\+msgb\+\_\+alloc()}.

\mbox{\label{sccp__helpers_8c_a919104dbb9bbd1ef246afbd8e855e8fa}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_conn\_resp\_msg@{osmo\_sccp\_tx\_conn\_resp\_msg}}
\index{osmo\_sccp\_tx\_conn\_resp\_msg@{osmo\_sccp\_tx\_conn\_resp\_msg}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_conn\_resp\_msg()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{resp\+\_\+addr,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::conn\+\_\+id}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::connect}, \textbf{ osmo\+\_\+sccp\+\_\+user\+::inst}, \textbf{ LOGPSCU}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down()}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+PRIM\+\_\+\+N\+\_\+\+CONNECT}, \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::responding\+\_\+addr}, \textbf{ osmo\+\_\+scu\+\_\+connect\+\_\+param\+::sccp\+\_\+class}, \textbf{ SCCP\+\_\+\+SAP\+\_\+\+USER}, and \textbf{ osmo\+\_\+scu\+\_\+prim\+::u}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp()}.

\mbox{\label{sccp__helpers_8c_aa0c732538c060f34f775168cd8a0ec58}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_data@{osmo\_sccp\_tx\_data}}
\index{osmo\_sccp\_tx\_data@{osmo\_sccp\_tx\_data}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_data()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+scu\+\_\+data\+\_\+param\+::conn\+\_\+id}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::data}, \textbf{ data}, \textbf{ osmo\+\_\+sccp\+\_\+user\+::inst}, \textbf{ len}, \textbf{ LOGPSCU}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down()}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+PRIM\+\_\+\+N\+\_\+\+DATA}, \textbf{ SCCP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ scu\+\_\+msgb\+\_\+alloc()}, and \textbf{ osmo\+\_\+scu\+\_\+prim\+::u}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data\+\_\+msg()}, \textbf{ sccp\+\_\+conn\+\_\+opt\+\_\+data\+\_\+send\+\_\+cache()}, and \textbf{ xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim()}.

\mbox{\label{sccp__helpers_8c_abfedf879748d0aa1d4603f495d9ae97b}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_data\_msg@{osmo\_sccp\_tx\_data\_msg}}
\index{osmo\_sccp\_tx\_data\_msg@{osmo\_sccp\_tx\_data\_msg}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_data\_msg()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+data\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+data()}.

\mbox{\label{sccp__helpers_8c_a6541f7fe03f96f167390d0f05c743d2b}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_disconn@{osmo\_sccp\_tx\_disconn}}
\index{osmo\_sccp\_tx\_disconn@{osmo\_sccp\_tx\_disconn}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_disconn()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+disconn (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{resp\+\_\+addr,  }\item[{uint32\+\_\+t}]{cause }\end{DoxyParamCaption})}



References \textbf{ NULL}, and \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+disconn\+\_\+data()}.

\mbox{\label{sccp__helpers_8c_a257cda7a6fbf6fa413452d76cc793377}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_disconn\_data@{osmo\_sccp\_tx\_disconn\_data}}
\index{osmo\_sccp\_tx\_disconn\_data@{osmo\_sccp\_tx\_disconn\_data}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_disconn\_data()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+disconn\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{conn\+\_\+id,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{resp\+\_\+addr,  }\item[{uint32\+\_\+t}]{cause,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::cause}, \textbf{ osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::conn\+\_\+id}, \textbf{ data}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::disconnect}, \textbf{ osmo\+\_\+sccp\+\_\+user\+::inst}, \textbf{ len}, \textbf{ LOGPSCU}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::originator}, \textbf{ osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ORIG\+\_\+\+NS\+\_\+\+USER}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down()}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+PRIM\+\_\+\+N\+\_\+\+DISCONNECT}, \textbf{ osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::responding\+\_\+addr}, \textbf{ SCCP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ scu\+\_\+msgb\+\_\+alloc()}, and \textbf{ osmo\+\_\+scu\+\_\+prim\+::u}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+disconn()}.

\mbox{\label{sccp__helpers_8c_a68c4b3103d25667d67c3c1b7baf98a29}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_unitdata@{osmo\_sccp\_tx\_unitdata}}
\index{osmo\_sccp\_tx\_unitdata@{osmo\_sccp\_tx\_unitdata}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_unitdata()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{calling\+\_\+addr,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{called\+\_\+addr,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+scu\+\_\+unitdata\+\_\+param\+::called\+\_\+addr}, \textbf{ osmo\+\_\+scu\+\_\+unitdata\+\_\+param\+::calling\+\_\+addr}, \textbf{ data}, \textbf{ osmo\+\_\+scu\+\_\+unitdata\+\_\+param\+::in\+\_\+sequence\+\_\+control}, \textbf{ len}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down()}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+PRIM\+\_\+\+N\+\_\+\+UNITDATA}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+UNITDATA\+\_\+\+REQ\+\_\+\+P\+\_\+\+SEQUENCE\+\_\+\+CONTROL\+\_\+\+NOT\+\_\+\+PRESENT}, \textbf{ SCCP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ scu\+\_\+msgb\+\_\+alloc()}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::u}, and \textbf{ osmo\+\_\+scu\+\_\+prim\+::unitdata}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+msg()}, and \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+ranap()}.

\mbox{\label{sccp__helpers_8c_acdc87693cfcae27aa7fb7cca60515a3d}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_unitdata\_msg@{osmo\_sccp\_tx\_unitdata\_msg}}
\index{osmo\_sccp\_tx\_unitdata\_msg@{osmo\_sccp\_tx\_unitdata\_msg}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_unitdata\_msg()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{calling\+\_\+addr,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{called\+\_\+addr,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata()}.

\mbox{\label{sccp__helpers_8c_ae28c5d64e2e20ba290b484a7a3a24b29}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!osmo\_sccp\_tx\_unitdata\_ranap@{osmo\_sccp\_tx\_unitdata\_ranap}}
\index{osmo\_sccp\_tx\_unitdata\_ranap@{osmo\_sccp\_tx\_unitdata\_ranap}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{osmo\_sccp\_tx\_unitdata\_ranap()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+ranap (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{uint32\+\_\+t}]{src\+\_\+point\+\_\+code,  }\item[{uint32\+\_\+t}]{dst\+\_\+point\+\_\+code,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



References \textbf{ data}, \textbf{ len}, \textbf{ osmo\+\_\+sccp\+\_\+make\+\_\+addr\+\_\+pc\+\_\+ssn()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+SSN\+\_\+\+RANAP}, and \textbf{ osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata()}.

\mbox{\label{sccp__helpers_8c_ac7057e8868b62138df058e713a0bc82b}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!sccp\_addr\_to\_str\_buf@{sccp\_addr\_to\_str\_buf}}
\index{sccp\_addr\_to\_str\_buf@{sccp\_addr\_to\_str\_buf}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{sccp\_addr\_to\_str\_buf()}
{\footnotesize\ttfamily static int sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr,  }\item[{char}]{sep\+\_\+char }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+sccp\+\_\+addr\+::gt}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+::gti}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ip}, \textbf{ MAX\+\_\+\+PC\+\_\+\+STR\+\_\+\+LEN}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+GT}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+IPv4}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+IPv6}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+PC}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+ADDR\+\_\+\+T\+\_\+\+SSN}, \textbf{ osmo\+\_\+sccp\+\_\+gt\+\_\+dump()}, \textbf{ osmo\+\_\+sccp\+\_\+gti\+\_\+name()}, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+GTI\+\_\+\+NO\+\_\+\+GT}, \textbf{ osmo\+\_\+sccp\+\_\+routing\+\_\+ind\+\_\+name()}, \textbf{ osmo\+\_\+sccp\+\_\+ssn\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+print\+\_\+buf()}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::pc}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::presence}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ri}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::ssn}, \textbf{ osmo\+\_\+sccp\+\_\+addr\+::v4}, and \textbf{ osmo\+\_\+sccp\+\_\+addr\+::v6}.



Referenced by \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+buf()}, and \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf()}.

\mbox{\label{sccp__helpers_8c_a79c5e69a7d3b2a72b23601893e1a5d29}} 
\index{sccp\_helpers.c@{sccp\_helpers.c}!scu\_msgb\_alloc@{scu\_msgb\_alloc}}
\index{scu\_msgb\_alloc@{scu\_msgb\_alloc}!sccp\_helpers.c@{sccp\_helpers.c}}
\doxysubsubsection{scu\_msgb\_alloc()}
{\footnotesize\ttfamily static struct msgb $\ast$ scu\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



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



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

