\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`\"{}sccp\+\_\+internal.\+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 pc, uint32\+\_\+t ssn) \item void \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+set\+\_\+ssn} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr, uint32\+\_\+t 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{ gen\+\_\+mtp\+\_\+transfer\+\_\+req\+\_\+xua()}, and \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}, and \textbf{ osmo\+\_\+sccp\+\_\+addr\+::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{ 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{ 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{ 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{ 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{ xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim()}, and \textbf{ xua\+\_\+opt\+\_\+data\+\_\+send\+\_\+cache()}. \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{ 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{ 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{ len}, \textbf{ osmo\+\_\+scu\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down()}, \textbf{ OSMO\+\_\+\+SCU\+\_\+\+PRIM\+\_\+\+N\+\_\+\+UNITDATA}, \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{ 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()}, \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()}.