\section{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 \subsection*{Macros} \begin{DoxyCompactItemize} \item \#define \textbf{ S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}~2048 \item \#define \textbf{ S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM}~512 \end{DoxyCompactItemize} \subsection*{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} \subsection{Macro Definition Documentation} \mbox{\label{sccp__helpers_8c_a75446d92130ee5919a8b84aaeaafca9d}} \index{sccp\+\_\+helpers.\+c@{sccp\+\_\+helpers.\+c}!S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM@{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM}} \index{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM@{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM}!sccp\+\_\+helpers.\+c@{sccp\+\_\+helpers.\+c}} \subsubsection{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM} {\footnotesize\ttfamily \#define S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM~512} Referenced by scu\+\_\+msgb\+\_\+alloc(). \mbox{\label{sccp__helpers_8c_ae033aa1f804be7484644df242980f8e3}} \index{sccp\+\_\+helpers.\+c@{sccp\+\_\+helpers.\+c}!S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE@{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}} \index{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE@{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}!sccp\+\_\+helpers.\+c@{sccp\+\_\+helpers.\+c}} \subsubsection{S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE} {\footnotesize\ttfamily \#define S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE~2048} Referenced by scu\+\_\+msgb\+\_\+alloc(). \subsection{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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+addr\+\_\+dump(), and osmo\+\_\+sccp\+\_\+gt\+\_\+dump(). \mbox{\label{sccp__helpers_8c_a6302a7ff3060e02a56c919b9579a1f40}} \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}} \subsubsection{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 append\+\_\+to\+\_\+buf(), osmo\+\_\+sccp\+\_\+addr\+::gt, osmo\+\_\+sccp\+\_\+gt\+::gti, osmo\+\_\+sccp\+\_\+addr\+::ip, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+I\+Pv4, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+I\+Pv6, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+PC, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+S\+SN, osmo\+\_\+sccp\+\_\+gt\+\_\+dump(), O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+N\+O\+\_\+\+GT, osmo\+\_\+sccp\+\_\+addr\+::pc, osmo\+\_\+sccp\+\_\+addr\+::presence, osmo\+\_\+sccp\+\_\+addr\+::ri, osmo\+\_\+sccp\+\_\+addr\+::ssn, osmo\+\_\+sccp\+\_\+addr\+::v4, and osmo\+\_\+sccp\+\_\+addr\+::v6. Referenced by gen\+\_\+mtp\+\_\+transfer\+\_\+req\+\_\+xua(), and sccp\+\_\+addr\+\_\+to\+\_\+sua(). \mbox{\label{sccp__helpers_8c_a8d9ad80fd2ce4f316b061543cbab5573}} \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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). Referenced by osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+name(), and 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}} \subsubsection{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 O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+S\+SN, osmo\+\_\+sccp\+\_\+addr\+::presence, and 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}} \subsubsection{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 F\+SM and C\+T\+RL I\+Ds. 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 sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). Referenced by osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+c(). \mbox{\label{sccp__helpers_8c_a37d4764473750df7858a9004cc7b5a38}} \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}} \subsubsection{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 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}} \subsubsection{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 sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). Referenced by osmo\+\_\+sccp\+\_\+addr\+\_\+name(), osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+c(), and osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). \mbox{\label{sccp__helpers_8c_a31a14b2ce508d7cebea19fa7fa9225b3}} \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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). \mbox{\label{sccp__helpers_8c_a3aa56ce8386473c318202bfeb2897fe1}} \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}} \subsubsection{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 append\+\_\+to\+\_\+buf(), osmo\+\_\+sccp\+\_\+gt\+::digits, osmo\+\_\+sccp\+\_\+gt\+::gti, osmo\+\_\+sccp\+\_\+gt\+::nai, osmo\+\_\+sccp\+\_\+gt\+::npi, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+N\+A\+I\+\_\+\+O\+N\+LY, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+N\+O\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+T\+T\+\_\+\+N\+P\+L\+\_\+\+E\+NC, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+T\+T\+\_\+\+N\+P\+L\+\_\+\+E\+N\+C\+\_\+\+N\+AI, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+T\+T\+\_\+\+O\+N\+LY, and osmo\+\_\+sccp\+\_\+gt\+::tt. Referenced by osmo\+\_\+sccp\+\_\+addr\+\_\+dump(), and sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). \mbox{\label{sccp__helpers_8c_a51f8231c4f0e2b186f3df7b601590d1e}} \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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+addr\+\_\+name(), and 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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(), and osmo\+\_\+sccp\+\_\+instance\+::ss7. Referenced by osmo\+\_\+sccp\+\_\+inst\+\_\+addr\+\_\+to\+\_\+str\+\_\+c(). \mbox{\label{sccp__helpers_8c_a0baeef37bb0d986ca95d280d204da77a}} \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}} \subsubsection{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 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}} \subsubsection{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 O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+PC, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+S\+SN, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+PC, osmo\+\_\+sccp\+\_\+addr\+::pc, osmo\+\_\+sccp\+\_\+addr\+::presence, and osmo\+\_\+sccp\+\_\+addr\+::ssn. Referenced by osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance(), osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+ranap(), and 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}} \subsubsection{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 osmo\+\_\+scu\+\_\+connect\+\_\+param\+::called\+\_\+addr, osmo\+\_\+scu\+\_\+connect\+\_\+param\+::calling\+\_\+addr, osmo\+\_\+scu\+\_\+connect\+\_\+param\+::conn\+\_\+id, osmo\+\_\+scu\+\_\+prim\+::connect, osmo\+\_\+scu\+\_\+prim\+::oph, osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down(), O\+S\+M\+O\+\_\+\+S\+C\+U\+\_\+\+P\+R\+I\+M\+\_\+\+N\+\_\+\+C\+O\+N\+N\+E\+CT, osmo\+\_\+scu\+\_\+connect\+\_\+param\+::sccp\+\_\+class, S\+C\+C\+P\+\_\+\+S\+A\+P\+\_\+\+U\+S\+ER, scu\+\_\+msgb\+\_\+alloc(), and osmo\+\_\+scu\+\_\+prim\+::u. Referenced by 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}} \subsubsection{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 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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp\+\_\+msg(), and 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}} \subsubsection{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 osmo\+\_\+scu\+\_\+connect\+\_\+param\+::conn\+\_\+id, osmo\+\_\+scu\+\_\+prim\+::connect, osmo\+\_\+sccp\+\_\+user\+::inst, osmo\+\_\+scu\+\_\+prim\+::oph, osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists(), osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down(), O\+S\+M\+O\+\_\+\+S\+C\+U\+\_\+\+P\+R\+I\+M\+\_\+\+N\+\_\+\+C\+O\+N\+N\+E\+CT, osmo\+\_\+scu\+\_\+connect\+\_\+param\+::responding\+\_\+addr, osmo\+\_\+scu\+\_\+connect\+\_\+param\+::sccp\+\_\+class, S\+C\+C\+P\+\_\+\+S\+A\+P\+\_\+\+U\+S\+ER, and osmo\+\_\+scu\+\_\+prim\+::u. Referenced by 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}} \subsubsection{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 osmo\+\_\+scu\+\_\+data\+\_\+param\+::conn\+\_\+id, osmo\+\_\+scu\+\_\+prim\+::data, osmo\+\_\+sccp\+\_\+user\+::inst, osmo\+\_\+scu\+\_\+prim\+::oph, osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists(), osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down(), O\+S\+M\+O\+\_\+\+S\+C\+U\+\_\+\+P\+R\+I\+M\+\_\+\+N\+\_\+\+D\+A\+TA, S\+C\+C\+P\+\_\+\+S\+A\+P\+\_\+\+U\+S\+ER, scu\+\_\+msgb\+\_\+alloc(), and osmo\+\_\+scu\+\_\+prim\+::u. Referenced by osmo\+\_\+sccp\+\_\+tx\+\_\+data\+\_\+msg(), xua\+\_\+opt\+\_\+data\+\_\+length\+\_\+lim(), and 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}} \subsubsection{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 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}} \subsubsection{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 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}} \subsubsection{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 osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::cause, osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::conn\+\_\+id, osmo\+\_\+scu\+\_\+prim\+::disconnect, osmo\+\_\+sccp\+\_\+user\+::inst, osmo\+\_\+scu\+\_\+prim\+::oph, osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::originator, osmo\+\_\+sccp\+\_\+conn\+\_\+id\+\_\+exists(), O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+O\+R\+I\+G\+\_\+\+N\+S\+\_\+\+U\+S\+ER, osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down(), O\+S\+M\+O\+\_\+\+S\+C\+U\+\_\+\+P\+R\+I\+M\+\_\+\+N\+\_\+\+D\+I\+S\+C\+O\+N\+N\+E\+CT, osmo\+\_\+scu\+\_\+disconn\+\_\+param\+::responding\+\_\+addr, S\+C\+C\+P\+\_\+\+S\+A\+P\+\_\+\+U\+S\+ER, scu\+\_\+msgb\+\_\+alloc(), and osmo\+\_\+scu\+\_\+prim\+::u. Referenced by 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}} \subsubsection{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 osmo\+\_\+scu\+\_\+unitdata\+\_\+param\+::called\+\_\+addr, osmo\+\_\+scu\+\_\+unitdata\+\_\+param\+::calling\+\_\+addr, osmo\+\_\+scu\+\_\+prim\+::oph, osmo\+\_\+sccp\+\_\+user\+\_\+sap\+\_\+down(), O\+S\+M\+O\+\_\+\+S\+C\+U\+\_\+\+P\+R\+I\+M\+\_\+\+N\+\_\+\+U\+N\+I\+T\+D\+A\+TA, S\+C\+C\+P\+\_\+\+S\+A\+P\+\_\+\+U\+S\+ER, scu\+\_\+msgb\+\_\+alloc(), osmo\+\_\+scu\+\_\+prim\+::u, and osmo\+\_\+scu\+\_\+prim\+::unitdata. Referenced by osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata\+\_\+msg(), and 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}} \subsubsection{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 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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+make\+\_\+addr\+\_\+pc\+\_\+ssn(), O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+S\+S\+N\+\_\+\+R\+A\+N\+AP, and 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}} \subsubsection{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 osmo\+\_\+sccp\+\_\+addr\+::gt, osmo\+\_\+sccp\+\_\+gt\+::gti, osmo\+\_\+sccp\+\_\+addr\+::ip, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+I\+Pv4, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+I\+Pv6, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+PC, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+S\+SN, osmo\+\_\+sccp\+\_\+gt\+\_\+dump(), osmo\+\_\+sccp\+\_\+gti\+\_\+name(), O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+G\+T\+I\+\_\+\+N\+O\+\_\+\+GT, osmo\+\_\+sccp\+\_\+routing\+\_\+ind\+\_\+name(), osmo\+\_\+sccp\+\_\+ssn\+\_\+name(), osmo\+\_\+ss7\+\_\+pointcode\+\_\+print(), osmo\+\_\+sccp\+\_\+addr\+::pc, osmo\+\_\+sccp\+\_\+addr\+::presence, osmo\+\_\+sccp\+\_\+addr\+::ri, osmo\+\_\+sccp\+\_\+addr\+::ssn, osmo\+\_\+sccp\+\_\+addr\+::v4, and osmo\+\_\+sccp\+\_\+addr\+::v6. Referenced by osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+id\+\_\+buf(), and osmo\+\_\+sccp\+\_\+addr\+\_\+to\+\_\+str\+\_\+buf(). \mbox{\label{sccp__helpers_8c_ae6cee8e8ef0f17f41211d67d78fef9de}} \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}} \subsubsection{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 S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+H\+E\+A\+D\+R\+O\+OM, and S\+C\+U\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE. Referenced by osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+req(), osmo\+\_\+sccp\+\_\+tx\+\_\+conn\+\_\+resp(), osmo\+\_\+sccp\+\_\+tx\+\_\+data(), osmo\+\_\+sccp\+\_\+tx\+\_\+disconn\+\_\+data(), and osmo\+\_\+sccp\+\_\+tx\+\_\+unitdata().