\section{src/sccp\+\_\+user.c File Reference}
\label{sccp__user_8c}\index{src/sccp\+\_\+user.\+c@{src/sccp\+\_\+user.\+c}}
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$limits.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/mtp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/mtp.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+helpers.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sccp/sccp\+\_\+types.\+h$>$}\newline
{\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ sccp\+\_\+user\+\_\+find} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, uint16\+\_\+t ssn, uint32\+\_\+t pc)
\begin{DoxyCompactList}\small\item\em Find a S\+C\+CP User registered for given P\+C+\+S\+SN or S\+SN only First search all users with a valid PC for a full P\+C+\+S\+SN match. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+find} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, uint16\+\_\+t ssn, uint32\+\_\+t pc)
\begin{DoxyCompactList}\small\item\em Find a S\+C\+CP User registered for given P\+C+\+S\+SN or S\+SN only. \end{DoxyCompactList}\item 
static struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ sccp\+\_\+user\+\_\+bind\+\_\+pc} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, const char $\ast$name, osmo\+\_\+prim\+\_\+cb prim\+\_\+cb, uint16\+\_\+t ssn, uint32\+\_\+t pc)
\begin{DoxyCompactList}\small\item\em Bind a S\+C\+CP User to a given Point Code. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, const char $\ast$name, osmo\+\_\+prim\+\_\+cb prim\+\_\+cb, uint16\+\_\+t ssn, uint32\+\_\+t pc)
\begin{DoxyCompactList}\small\item\em Bind a given S\+C\+CP User to a given S\+S\+N+\+PC. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+bind} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, const char $\ast$name, osmo\+\_\+prim\+\_\+cb prim\+\_\+cb, uint16\+\_\+t ssn)
\begin{DoxyCompactList}\small\item\em Bind a given S\+C\+CP User to a given S\+SN (at any PC) \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+unbind} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu)
\begin{DoxyCompactList}\small\item\em Unbind a given S\+C\+CP user. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, void $\ast$priv)
\item 
void $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu)
\item 
int \textbf{ sccp\+\_\+user\+\_\+prim\+\_\+up} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu, struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$prim)
\begin{DoxyCompactList}\small\item\em Send a S\+C\+CP User S\+AP Primitive up to the User. \end{DoxyCompactList}\item 
static int \textbf{ mtp\+\_\+user\+\_\+prim\+\_\+cb} (struct osmo\+\_\+prim\+\_\+hdr $\ast$oph, void $\ast$ctx)
\item 
static \textbf{ L\+L\+I\+S\+T\+\_\+\+H\+E\+AD} (sccp\+\_\+instances)
\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+instance\+\_\+create} (struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ss7, void $\ast$priv)
\begin{DoxyCompactList}\small\item\em create a S\+C\+CP Instance and register it as user with S\+S7 inst \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+sccp\+\_\+instance\+\_\+destroy} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst)
\item 
void \textbf{ osmo\+\_\+sccp\+\_\+set\+\_\+priv} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp, void $\ast$priv)
\item 
void $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+get\+\_\+priv} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp)
\item 
void \textbf{ osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$dest\+\_\+addr, const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, uint32\+\_\+t ssn)
\begin{DoxyCompactList}\small\item\em derive a basic local S\+C\+C\+P-\/\+Address from a given S\+C\+CP instance. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+sccp\+\_\+check\+\_\+addr} (struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$addr, uint32\+\_\+t presence)
\begin{DoxyCompactList}\small\item\em check whether a given S\+C\+C\+P-\/\+Address is consistent. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+sccp\+\_\+gt\+\_\+cmp} (const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$a, const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$b)
\begin{DoxyCompactList}\small\item\em Compare two S\+C\+CP Global Titles. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+cmp} (const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$a, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$b, uint32\+\_\+t presence\+\_\+criteria)
\begin{DoxyCompactList}\small\item\em Compare two S\+C\+CP addresses by given presence criteria. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp} (const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$a, const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$b)
\begin{DoxyCompactList}\small\item\em Compare the routing information of two S\+C\+CP addresses. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+name} (struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu)
\begin{DoxyCompactList}\small\item\em Compose a human readable string to describe the S\+C\+CP user\textquotesingle{}s connection. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id} (void $\ast$ctx, uint32\+\_\+t ss7\+\_\+id, const char $\ast$name, uint32\+\_\+t default\+\_\+pc, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} prot, int default\+\_\+local\+\_\+port, const char $\ast$default\+\_\+local\+\_\+ip, int default\+\_\+remote\+\_\+port, const char $\ast$default\+\_\+remote\+\_\+ip)
\begin{DoxyCompactList}\small\item\em request an sccp client instance \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+client} (void $\ast$ctx, const char $\ast$name, uint32\+\_\+t default\+\_\+pc, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} prot, int default\+\_\+local\+\_\+port, const char $\ast$default\+\_\+local\+\_\+ip, int default\+\_\+remote\+\_\+port, const char $\ast$default\+\_\+remote\+\_\+ip)
\begin{DoxyCompactList}\small\item\em request an sccp client instance \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id} (void $\ast$ctx, uint32\+\_\+t ss7\+\_\+id, uint32\+\_\+t pc, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} prot, int local\+\_\+port, const char $\ast$local\+\_\+ip)
\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server} (void $\ast$ctx, uint32\+\_\+t pc, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} prot, int local\+\_\+port, const char $\ast$local\+\_\+ip)
\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol} prot, const char $\ast$name, uint32\+\_\+t pc, int local\+\_\+port, int remote\+\_\+port, const char $\ast$remote\+\_\+ip)
\item 
void \textbf{ osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, int val)
\begin{DoxyCompactList}\small\item\em Adjust the upper bound for the optional data length (the payload) for CR, CC, C\+R\+EF and R\+L\+SD messages. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+get\+\_\+ss7} (const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$sccp)
\begin{DoxyCompactList}\small\item\em get the S\+S7 instance that is related to the given S\+C\+CP instance \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+get\+\_\+sccp} (const struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$scu)
\begin{DoxyCompactList}\small\item\em get the S\+C\+CP instance that is related to the given sccp user \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Function Documentation}
\mbox{\label{sccp__user_8c_a9159153a857fee3da7730a2c0f00b651}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!L\+L\+I\+S\+T\+\_\+\+H\+E\+AD@{L\+L\+I\+S\+T\+\_\+\+H\+E\+AD}}
\index{L\+L\+I\+S\+T\+\_\+\+H\+E\+AD@{L\+L\+I\+S\+T\+\_\+\+H\+E\+AD}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{L\+L\+I\+S\+T\+\_\+\+H\+E\+A\+D()}
{\footnotesize\ttfamily static L\+L\+I\+S\+T\+\_\+\+H\+E\+AD (\begin{DoxyParamCaption}\item[{sccp\+\_\+instances}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by mtp\+\_\+user\+\_\+prim\+\_\+cb().

\mbox{\label{sccp__user_8c_a601023d8501b59b9ec4bd9acc16d4020}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!mtp\+\_\+user\+\_\+prim\+\_\+cb@{mtp\+\_\+user\+\_\+prim\+\_\+cb}}
\index{mtp\+\_\+user\+\_\+prim\+\_\+cb@{mtp\+\_\+user\+\_\+prim\+\_\+cb}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{mtp\+\_\+user\+\_\+prim\+\_\+cb()}
{\footnotesize\ttfamily static int mtp\+\_\+user\+\_\+prim\+\_\+cb (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+prim\+\_\+hdr $\ast$}]{oph,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References L\+L\+I\+S\+T\+\_\+\+H\+E\+A\+D(), xua\+\_\+msg\+::mtp, M\+T\+P\+\_\+\+S\+A\+P\+\_\+\+U\+S\+ER, O\+S\+M\+O\+\_\+\+M\+T\+P\+\_\+\+P\+R\+I\+M\+\_\+\+T\+R\+A\+N\+S\+F\+ER, osmo\+\_\+sccp\+\_\+to\+\_\+xua(), scrc\+\_\+rx\+\_\+mtp\+\_\+xfer\+\_\+ind\+\_\+xua(), osmo\+\_\+mtp\+\_\+prim\+::transfer, osmo\+\_\+mtp\+\_\+prim\+::u, and xua\+\_\+msg\+\_\+free().



Referenced by osmo\+\_\+sccp\+\_\+instance\+\_\+create().

\mbox{\label{sccp__user_8c_ad88f30b0068a27f1462dafd29a5809db}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+addr\+\_\+cmp@{osmo\+\_\+sccp\+\_\+addr\+\_\+cmp}}
\index{osmo\+\_\+sccp\+\_\+addr\+\_\+cmp@{osmo\+\_\+sccp\+\_\+addr\+\_\+cmp}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+addr\+\_\+cmp()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+addr\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{b,  }\item[{uint32\+\_\+t}]{presence\+\_\+criteria }\end{DoxyParamCaption})}



Compare two S\+C\+CP addresses by given presence criteria. 

Any O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+$\ast$ type not set in presence\+\_\+criteria is ignored. In case all bits are set in presence\+\_\+criteria, the comparison is in the order of\+: 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\+\_\+\+PC, 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\+\_\+\+S\+SN. The S\+C\+CP addresses\textquotesingle{} Routing Indicator is not compared, see \doxyref{osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp()}{p.}{sccp__user_8c_aff3c1c4bd54d70d478e318440708140d}. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em a} & left side. \\
\hline
\mbox{\tt in}  & {\em b} & right side. \\
\hline
\mbox{\tt in}  & {\em presence\+\_\+criteria} & A bitmask of O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+$\ast$ values, or O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+A\+D\+D\+R\+\_\+\+T\+\_\+\+M\+A\+SK to compare all parts, except the routing indicator. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
-\/1 if a $<$ b, 1 if a $>$ b, and 0 if all checked values match. 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+addr\+::gt, 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\+\_\+cmp(), osmo\+\_\+sccp\+\_\+addr\+::pc, osmo\+\_\+sccp\+\_\+addr\+::presence, osmo\+\_\+sccp\+\_\+addr\+::ssn, osmo\+\_\+sccp\+\_\+addr\+::v4, and osmo\+\_\+sccp\+\_\+addr\+::v6.



Referenced by osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp(), and osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_aff3c1c4bd54d70d478e318440708140d}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp@{osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp}}
\index{osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp@{osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+addr\+\_\+ri\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{b }\end{DoxyParamCaption})}



Compare the routing information of two S\+C\+CP addresses. 

Compare the ri of a and b, and, if equal, return \doxyref{osmo\+\_\+sccp\+\_\+addr\+\_\+cmp()}{p.}{sccp__user_8c_ad88f30b0068a27f1462dafd29a5809db} with presence criteria selected according to ri. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em a} & left side. \\
\hline
\mbox{\tt in}  & {\em b} & right side. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
-\/1 if a $<$ b, 1 if a $>$ b, and 0 if a == b. 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+addr\+\_\+cmp(), 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, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+N\+O\+NE, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+IP, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+PC, osmo\+\_\+sccp\+\_\+addr\+::presence, and osmo\+\_\+sccp\+\_\+addr\+::ri.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a4384e35f0d7a832835621b6734a8240a}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+check\+\_\+addr@{osmo\+\_\+sccp\+\_\+check\+\_\+addr}}
\index{osmo\+\_\+sccp\+\_\+check\+\_\+addr@{osmo\+\_\+sccp\+\_\+check\+\_\+addr}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+check\+\_\+addr()}
{\footnotesize\ttfamily bool osmo\+\_\+sccp\+\_\+check\+\_\+addr (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{addr,  }\item[{uint32\+\_\+t}]{presence }\end{DoxyParamCaption})}



check whether a given S\+C\+C\+P-\/\+Address is consistent. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em addr} & S\+C\+CP address to check \\
\hline
\mbox{\tt in}  & {\em presence} & mask with minimum required address components \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when address data seems plausible 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+addr\+::gt, osmo\+\_\+sccp\+\_\+gt\+::gti, osmo\+\_\+sccp\+\_\+gt\+::nai, osmo\+\_\+sccp\+\_\+gt\+::npi, 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, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+GT, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+IP, O\+S\+M\+O\+\_\+\+S\+C\+C\+P\+\_\+\+R\+I\+\_\+\+S\+S\+N\+\_\+\+PC, osmo\+\_\+sccp\+\_\+addr\+::presence, and osmo\+\_\+sccp\+\_\+addr\+::ri.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a479d35af99de0afa746b1c579efd2f13}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+get\+\_\+priv@{osmo\+\_\+sccp\+\_\+get\+\_\+priv}}
\index{osmo\+\_\+sccp\+\_\+get\+\_\+priv@{osmo\+\_\+sccp\+\_\+get\+\_\+priv}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+get\+\_\+priv()}
{\footnotesize\ttfamily void$\ast$ osmo\+\_\+sccp\+\_\+get\+\_\+priv (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp }\end{DoxyParamCaption})}



References osmo\+\_\+sccp\+\_\+instance\+::priv.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_afc01ae3f1b165da8eaaadfed03da4344}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+get\+\_\+sccp@{osmo\+\_\+sccp\+\_\+get\+\_\+sccp}}
\index{osmo\+\_\+sccp\+\_\+get\+\_\+sccp@{osmo\+\_\+sccp\+\_\+get\+\_\+sccp}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+get\+\_\+sccp()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+get\+\_\+sccp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu }\end{DoxyParamCaption})}



get the S\+C\+CP instance that is related to the given sccp user 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em scu} & S\+C\+CP user \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
S\+C\+CP instance; N\+U\+LL if scu was N\+U\+LL 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+user\+::inst.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a177c061c44588a3adc4311f9dddb61ad}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+get\+\_\+ss7@{osmo\+\_\+sccp\+\_\+get\+\_\+ss7}}
\index{osmo\+\_\+sccp\+\_\+get\+\_\+ss7@{osmo\+\_\+sccp\+\_\+get\+\_\+ss7}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+get\+\_\+ss7()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+get\+\_\+ss7 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp }\end{DoxyParamCaption})}



get the S\+S7 instance that is related to the given S\+C\+CP instance 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em sccp} & S\+C\+CP instance \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
S\+S7 instance; N\+U\+LL if sccp was N\+U\+LL 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+instance\+::ss7.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a4cc1b98cb117cc04627d55df97123f0b}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+gt\+\_\+cmp@{osmo\+\_\+sccp\+\_\+gt\+\_\+cmp}}
\index{osmo\+\_\+sccp\+\_\+gt\+\_\+cmp@{osmo\+\_\+sccp\+\_\+gt\+\_\+cmp}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+gt\+\_\+cmp()}
{\footnotesize\ttfamily int osmo\+\_\+sccp\+\_\+gt\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+gt} $\ast$}]{b }\end{DoxyParamCaption})}



Compare two S\+C\+CP Global Titles. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em a} & left side. \\
\hline
\mbox{\tt in}  & {\em b} & right side. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
-\/1 if a $<$ b, 1 if a $>$ b, and 0 if a == b. 
\end{DoxyReturn}


Referenced by osmo\+\_\+sccp\+\_\+addr\+\_\+cmp(), and osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_aa352d710ed42f9c57830743ddbd75dd2}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+instance\+\_\+create@{osmo\+\_\+sccp\+\_\+instance\+\_\+create}}
\index{osmo\+\_\+sccp\+\_\+instance\+\_\+create@{osmo\+\_\+sccp\+\_\+instance\+\_\+create}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+instance\+\_\+create()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+instance\+\_\+create (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{ss7,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})}



create a S\+C\+CP Instance and register it as user with S\+S7 inst 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em ss7} & S\+S7 instance to which this S\+C\+CP instance belongs \\
\hline
\mbox{\tt in}  & {\em priv} & private data to be stored within S\+C\+CP instance \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
callee-\/allocated S\+C\+CP instance on success; N\+U\+LL on error 
\end{DoxyReturn}


References osmo\+\_\+ss7\+\_\+user\+::inst, osmo\+\_\+sccp\+\_\+instance\+::list, osmo\+\_\+sccp\+\_\+instance\+::max\+\_\+optional\+\_\+data, M\+T\+P\+\_\+\+S\+I\+\_\+\+S\+C\+CP, mtp\+\_\+user\+\_\+prim\+\_\+cb(), osmo\+\_\+ss7\+\_\+user\+::name, osmo\+\_\+sccp\+\_\+timer\+\_\+defaults, osmo\+\_\+ss7\+\_\+user\+\_\+register(), osmo\+\_\+ss7\+\_\+user\+::prim\+\_\+cb, osmo\+\_\+sccp\+\_\+instance\+::priv, osmo\+\_\+ss7\+\_\+user\+::priv, sccp\+\_\+scmg\+\_\+init(), osmo\+\_\+sccp\+\_\+instance\+::ss7, osmo\+\_\+sccp\+\_\+instance\+::ss7\+\_\+user, osmo\+\_\+sccp\+\_\+instance\+::tdefs, and osmo\+\_\+sccp\+\_\+instance\+::users.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name(), and osmo\+\_\+ss7\+\_\+ensure\+\_\+sccp().

\mbox{\label{sccp__user_8c_a399c0860d3bba4c0a051d85ae52e488b}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+instance\+\_\+destroy@{osmo\+\_\+sccp\+\_\+instance\+\_\+destroy}}
\index{osmo\+\_\+sccp\+\_\+instance\+\_\+destroy@{osmo\+\_\+sccp\+\_\+instance\+\_\+destroy}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+instance\+\_\+destroy()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+instance\+\_\+destroy (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst }\end{DoxyParamCaption})}



References osmo\+\_\+sccp\+\_\+user\+::list, osmo\+\_\+sccp\+\_\+instance\+::list, M\+T\+P\+\_\+\+S\+I\+\_\+\+S\+C\+CP, osmo\+\_\+sccp\+\_\+user\+\_\+unbind(), osmo\+\_\+ss7\+\_\+user\+\_\+unregister(), osmo\+\_\+ss7\+\_\+instance\+::sccp, sccp\+\_\+scoc\+\_\+flush\+\_\+connections(), osmo\+\_\+sccp\+\_\+instance\+::ss7, osmo\+\_\+sccp\+\_\+instance\+::ss7\+\_\+user, and osmo\+\_\+sccp\+\_\+instance\+::users.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_ac75660cfa2a1056de1586ceac3717b93}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance@{osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance}}
\index{osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance@{osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+local\+\_\+addr\+\_\+by\+\_\+instance (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+addr} $\ast$}]{dest\+\_\+addr,  }\item[{const struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{uint32\+\_\+t}]{ssn }\end{DoxyParamCaption})}



derive a basic local S\+C\+C\+P-\/\+Address from a given S\+C\+CP instance. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em dest\+\_\+addr} & pointer to output address memory \\
\hline
\mbox{\tt in}  & {\em inst} & S\+C\+CP instance \\
\hline
\mbox{\tt in}  & {\em ssn} & Subsystem Number \\
\hline
\end{DoxyParams}


References osmo\+\_\+ss7\+\_\+instance\+::cfg, osmo\+\_\+sccp\+\_\+make\+\_\+addr\+\_\+pc\+\_\+ssn(), osmo\+\_\+ss7\+\_\+instance\+::primary\+\_\+pc, and osmo\+\_\+sccp\+\_\+instance\+::ss7.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a0aea811fcc44f9212f24e857b0f8fff7}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data@{osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data}}
\index{osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data@{osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+set\+\_\+max\+\_\+optional\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{int}]{val }\end{DoxyParamCaption})}



Adjust the upper bound for the optional data length (the payload) for CR, CC, C\+R\+EF and R\+L\+SD messages. 

For any Optional Data part larger than this value in octets, send CR, CC, C\+R\+EF and R\+L\+SD messages without any payload, and send the data payload in a separate Data Form 1 message. I\+T\+U-\/T Q.\+713 sections 4.\+2 thru 4.\+5 define a limit of 130 bytes for the \textquotesingle{}Data\textquotesingle{} parameter. This limit can be adjusted here. May be useful for interop with nonstandard S\+C\+CP peers. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em sccp} & S\+C\+CP instance to reconfigure. \\
\hline
\mbox{\tt in}  & {\em val} & Number of bytes to set as upper bound for the optional data length, or pass a negative value to set the standard value of S\+C\+C\+P\+\_\+\+M\+A\+X\+\_\+\+O\+P\+T\+I\+O\+N\+A\+L\+\_\+\+D\+A\+TA == 130, which conforms to I\+T\+U-\/T Q.\+713. \\
\hline
\end{DoxyParams}


References osmo\+\_\+sccp\+\_\+instance\+::max\+\_\+optional\+\_\+data.



Referenced by D\+E\+F\+U\+N\+\_\+\+A\+T\+T\+R().

\mbox{\label{sccp__user_8c_a887c5a0200931e2b890ce2a098b859f2}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+set\+\_\+priv@{osmo\+\_\+sccp\+\_\+set\+\_\+priv}}
\index{osmo\+\_\+sccp\+\_\+set\+\_\+priv@{osmo\+\_\+sccp\+\_\+set\+\_\+priv}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+set\+\_\+priv()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+set\+\_\+priv (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{sccp,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})}



References osmo\+\_\+sccp\+\_\+instance\+::priv, and osmo\+\_\+sccp\+\_\+user\+::priv.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_aa5ffac9ab07012935f038770aba150a4}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+simple\+\_\+client@{osmo\+\_\+sccp\+\_\+simple\+\_\+client}}
\index{osmo\+\_\+sccp\+\_\+simple\+\_\+client@{osmo\+\_\+sccp\+\_\+simple\+\_\+client}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+simple\+\_\+client()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+simple\+\_\+client (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const char $\ast$}]{name,  }\item[{uint32\+\_\+t}]{default\+\_\+pc,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol}}]{prot,  }\item[{int}]{default\+\_\+local\+\_\+port,  }\item[{const char $\ast$}]{default\+\_\+local\+\_\+ip,  }\item[{int}]{default\+\_\+remote\+\_\+port,  }\item[{const char $\ast$}]{default\+\_\+remote\+\_\+ip }\end{DoxyParamCaption})}



request an sccp client instance 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em ctx} & talloc context \\
\hline
\mbox{\tt in}  & {\em name} & human readable name \\
\hline
\mbox{\tt in}  & {\em default\+\_\+pc} & pointcode to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em prot} & protocol to be used (e.\+g O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+M3\+UA) \\
\hline
\mbox{\tt in}  & {\em default\+\_\+local\+\_\+port} & local port to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em default\+\_\+local\+\_\+ip} & local I\+P-\/address to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em default\+\_\+remote\+\_\+port} & remote port to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em default\+\_\+remote\+\_\+ip} & remote I\+P-\/address to be used on missing V\+TY setting \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
callee-\/allocated S\+C\+CP instance on success; N\+U\+LL on error 
\end{DoxyReturn}
This is simplified version of \doxyref{osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id()}{p.}{sccp__user_8c_a50cc424232ce7c2bd378dd503e0d9e81}. the only difference is that the ID of the C\+S7 instance will be set to 0 statically 

References osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id().

\mbox{\label{sccp__user_8c_a50cc424232ce7c2bd378dd503e0d9e81}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id@{osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id}}
\index{osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id@{osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{uint32\+\_\+t}]{ss7\+\_\+id,  }\item[{const char $\ast$}]{name,  }\item[{uint32\+\_\+t}]{default\+\_\+pc,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol}}]{prot,  }\item[{int}]{default\+\_\+local\+\_\+port,  }\item[{const char $\ast$}]{default\+\_\+local\+\_\+ip,  }\item[{int}]{default\+\_\+remote\+\_\+port,  }\item[{const char $\ast$}]{default\+\_\+remote\+\_\+ip }\end{DoxyParamCaption})}



request an sccp client instance 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em ctx} & talloc context \\
\hline
\mbox{\tt in}  & {\em ss7\+\_\+id} & of the S\+S7/\+C\+S7 instance \\
\hline
\mbox{\tt in}  & {\em name} & human readable name \\
\hline
\mbox{\tt in}  & {\em default\+\_\+pc} & pointcode to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em prot} & protocol to be used (e.\+g O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+M3\+UA) \\
\hline
\mbox{\tt in}  & {\em default\+\_\+local\+\_\+port} & local port to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em default\+\_\+local\+\_\+ip} & local I\+P-\/address to be used on missing V\+TY setting (N\+U\+LL\+: use library own defaults) \\
\hline
\mbox{\tt in}  & {\em default\+\_\+remote\+\_\+port} & remote port to be used on missing V\+TY setting \\
\hline
\mbox{\tt in}  & {\em default\+\_\+remote\+\_\+ip} & remote I\+P-\/address to be used on missing V\+TY setting (N\+U\+LL\+: use library own defaults) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
callee-\/allocated S\+C\+CP instance on success; N\+U\+LL on error 
\end{DoxyReturn}
The function will examine the given C\+S7 instance and its sub components (as, asp, etc.). If necessary it will allocate the missing components. If no C\+S7 instance can be detected under the caller supplied ID, a new instance will be created beforehand. 

References osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list, osmo\+\_\+ss7\+\_\+instance\+::asp\+\_\+list, osmo\+\_\+ss7\+\_\+instance\+::cfg, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::cfg, osmo\+\_\+ss7\+\_\+instance\+::id, osmo\+\_\+ss7\+\_\+asp\+::is\+\_\+server, osmo\+\_\+ss7\+\_\+as\+::list, osmo\+\_\+ss7\+\_\+asp\+::list, osmo\+\_\+ss7\+\_\+asp\+::local, osmo\+\_\+ss7\+\_\+as\+::name, osmo\+\_\+ss7\+\_\+asp\+::name, osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp(), osmo\+\_\+ss7\+\_\+as\+\_\+destroy(), osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+proto(), osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+or\+\_\+create(), osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp(), osmo\+\_\+ss7\+\_\+asp\+\_\+destroy(), osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+by\+\_\+proto(), osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+or\+\_\+create2(), osmo\+\_\+ss7\+\_\+asp\+\_\+peer\+\_\+set\+\_\+hosts(), O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+I\+PA, osmo\+\_\+ss7\+\_\+asp\+\_\+protocol\+\_\+name(), osmo\+\_\+ss7\+\_\+asp\+\_\+protocol\+\_\+port(), osmo\+\_\+ss7\+\_\+asp\+\_\+restart(), O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+A\+SP, osmo\+\_\+ss7\+\_\+asp\+\_\+use\+\_\+default\+\_\+lm(), osmo\+\_\+ss7\+\_\+ensure\+\_\+sccp(), osmo\+\_\+ss7\+\_\+instance\+\_\+destroy(), osmo\+\_\+ss7\+\_\+instance\+\_\+find(), osmo\+\_\+ss7\+\_\+instance\+\_\+find\+\_\+or\+\_\+create(), osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+valid(), osmo\+\_\+ss7\+\_\+pointcode\+\_\+print(), osmo\+\_\+ss7\+\_\+route\+\_\+create(), osmo\+\_\+ss7\+\_\+route\+\_\+destroy(), osmo\+\_\+ss7\+\_\+route\+\_\+find\+\_\+dpc\+\_\+mask(), osmo\+\_\+ss7\+\_\+xua\+\_\+server\+\_\+find2(), osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::pc, osmo\+\_\+ss7\+\_\+asp\+\_\+peer\+::port, osmo\+\_\+ss7\+\_\+instance\+::primary\+\_\+pc, osmo\+\_\+ss7\+\_\+asp\+::proto, osmo\+\_\+ss7\+\_\+asp\+::remote, osmo\+\_\+ss7\+\_\+asp\+::role, osmo\+\_\+ss7\+\_\+asp\+::role\+\_\+set\+\_\+by\+\_\+vty, osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key, osmo\+\_\+ss7\+\_\+instance\+::rtable\+\_\+system, osmo\+\_\+ss7\+\_\+instance\+::sccp, osmo\+\_\+ss7\+\_\+as\+::simple\+\_\+client\+\_\+allocated, osmo\+\_\+ss7\+\_\+asp\+::simple\+\_\+client\+\_\+allocated, ss7\+\_\+asp\+\_\+set\+\_\+default\+\_\+peer\+\_\+hosts(), ss7\+\_\+default\+\_\+trans\+\_\+proto\+\_\+for\+\_\+asp\+\_\+proto(), osmo\+\_\+ss7\+\_\+asp\+::trans\+\_\+proto, and osmo\+\_\+ss7\+\_\+asp\+::trans\+\_\+role\+\_\+set\+\_\+by\+\_\+vty.



Referenced by osmo\+\_\+sccp\+\_\+simple\+\_\+client().

\mbox{\label{sccp__user_8c_ab228576f1118b1893a1488b1adf84980}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+simple\+\_\+server@{osmo\+\_\+sccp\+\_\+simple\+\_\+server}}
\index{osmo\+\_\+sccp\+\_\+simple\+\_\+server@{osmo\+\_\+sccp\+\_\+simple\+\_\+server}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+simple\+\_\+server()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+simple\+\_\+server (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{uint32\+\_\+t}]{pc,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol}}]{prot,  }\item[{int}]{local\+\_\+port,  }\item[{const char $\ast$}]{local\+\_\+ip }\end{DoxyParamCaption})}



References osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id().

\mbox{\label{sccp__user_8c_afb417d5b253ea73da5f44a1de99ec278}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt@{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt}}
\index{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt@{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+add\+\_\+clnt (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol}}]{prot,  }\item[{const char $\ast$}]{name,  }\item[{uint32\+\_\+t}]{pc,  }\item[{int}]{local\+\_\+port,  }\item[{int}]{remote\+\_\+port,  }\item[{const char $\ast$}]{remote\+\_\+ip }\end{DoxyParamCaption})}



References osmo\+\_\+ss7\+\_\+asp\+::cfg, osmo\+\_\+xua\+\_\+server\+::cfg, osmo\+\_\+ss7\+\_\+asp\+\_\+peer\+::host, osmo\+\_\+ss7\+\_\+asp\+\_\+peer\+::host\+\_\+cnt, osmo\+\_\+ss7\+\_\+asp\+::is\+\_\+server, osmo\+\_\+ss7\+\_\+asp\+::local, osmo\+\_\+xua\+\_\+server\+::local, osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp(), osmo\+\_\+ss7\+\_\+as\+\_\+destroy(), osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+or\+\_\+create(), osmo\+\_\+ss7\+\_\+asp\+\_\+destroy(), osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+or\+\_\+create2(), osmo\+\_\+ss7\+\_\+asp\+\_\+peer\+\_\+add\+\_\+host(), osmo\+\_\+ss7\+\_\+asp\+\_\+peer\+\_\+set\+\_\+hosts(), osmo\+\_\+ss7\+\_\+asp\+\_\+protocol\+\_\+port(), osmo\+\_\+ss7\+\_\+asp\+\_\+restart(), O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+SG, osmo\+\_\+ss7\+\_\+route\+\_\+create(), osmo\+\_\+ss7\+\_\+route\+\_\+destroy(), osmo\+\_\+ss7\+\_\+xua\+\_\+server\+\_\+find2(), osmo\+\_\+ss7\+\_\+asp\+::remote, osmo\+\_\+ss7\+\_\+asp\+::role, osmo\+\_\+ss7\+\_\+instance\+::rtable\+\_\+system, osmo\+\_\+ss7\+\_\+instance\+::sccp, osmo\+\_\+sccp\+\_\+instance\+::ss7, ss7\+\_\+default\+\_\+trans\+\_\+proto\+\_\+for\+\_\+asp\+\_\+proto(), osmo\+\_\+ss7\+\_\+asp\+::trans\+\_\+proto, and osmo\+\_\+xua\+\_\+server\+::trans\+\_\+proto.

\mbox{\label{sccp__user_8c_a9b977efa4ea7410df144d02c3aa9f94d}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id@{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id}}
\index{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id@{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+instance}$\ast$ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{uint32\+\_\+t}]{ss7\+\_\+id,  }\item[{uint32\+\_\+t}]{pc,  }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+protocol}}]{prot,  }\item[{int}]{local\+\_\+port,  }\item[{const char $\ast$}]{local\+\_\+ip }\end{DoxyParamCaption})}



References osmo\+\_\+ss7\+\_\+instance\+::cfg, osmo\+\_\+ss7\+\_\+asp\+\_\+protocol\+\_\+port(), osmo\+\_\+ss7\+\_\+ensure\+\_\+sccp(), osmo\+\_\+ss7\+\_\+instance\+\_\+destroy(), osmo\+\_\+ss7\+\_\+instance\+\_\+find\+\_\+or\+\_\+create(), osmo\+\_\+ss7\+\_\+xua\+\_\+server\+\_\+bind(), osmo\+\_\+ss7\+\_\+xua\+\_\+server\+\_\+create2(), osmo\+\_\+ss7\+\_\+xua\+\_\+server\+\_\+destroy(), osmo\+\_\+sccp\+\_\+addr\+::pc, osmo\+\_\+ss7\+\_\+instance\+::primary\+\_\+pc, osmo\+\_\+ss7\+\_\+instance\+::sccp, ss7\+\_\+default\+\_\+trans\+\_\+proto\+\_\+for\+\_\+asp\+\_\+proto(), and osmo\+\_\+xua\+\_\+server\+::trans\+\_\+proto.



Referenced by osmo\+\_\+sccp\+\_\+simple\+\_\+server().

\mbox{\label{sccp__user_8c_a8cae9c355d617de856fa23695e8de1ed}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+bind@{osmo\+\_\+sccp\+\_\+user\+\_\+bind}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+bind@{osmo\+\_\+sccp\+\_\+user\+\_\+bind}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+bind()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+user}$\ast$ osmo\+\_\+sccp\+\_\+user\+\_\+bind (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{const char $\ast$}]{name,  }\item[{osmo\+\_\+prim\+\_\+cb}]{prim\+\_\+cb,  }\item[{uint16\+\_\+t}]{ssn }\end{DoxyParamCaption})}



Bind a given S\+C\+CP User to a given S\+SN (at any PC) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em inst} & S\+C\+CP Instance \\
\hline
\mbox{\tt in}  & {\em name} & human-\/readable name \\
\hline
\mbox{\tt in}  & {\em ssn} & Sub-\/\+System Number to bind to \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Callee-\/allocated S\+C\+CP User on success; negative otherwise 
\end{DoxyReturn}


References O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+P\+C\+\_\+\+I\+N\+V\+A\+L\+ID, and sccp\+\_\+user\+\_\+bind\+\_\+pc().



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name(), and sccp\+\_\+scmg\+\_\+init().

\mbox{\label{sccp__user_8c_a1eebca5ec6245abf6100ce397098ec76}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc@{osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc@{osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+user}$\ast$ osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{const char $\ast$}]{name,  }\item[{osmo\+\_\+prim\+\_\+cb}]{prim\+\_\+cb,  }\item[{uint16\+\_\+t}]{ssn,  }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})}



Bind a given S\+C\+CP User to a given S\+S\+N+\+PC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em inst} & S\+C\+CP Instance \\
\hline
\mbox{\tt in}  & {\em name} & human-\/readable name \\
\hline
\mbox{\tt in}  & {\em ssn} & Sub-\/\+System Number to bind to \\
\hline
\mbox{\tt in}  & {\em pc} & Point Code to bind to \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Callee-\/allocated S\+C\+CP User on success; negative otherwise 
\end{DoxyReturn}


References sccp\+\_\+user\+\_\+bind\+\_\+pc().



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_ac49f6f0d3a7cdcde2a5f375879258850}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+find@{osmo\+\_\+sccp\+\_\+user\+\_\+find}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+find@{osmo\+\_\+sccp\+\_\+user\+\_\+find}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+find()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+user}$\ast$ osmo\+\_\+sccp\+\_\+user\+\_\+find (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{uint16\+\_\+t}]{ssn,  }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})}



Find a S\+C\+CP User registered for given P\+C+\+S\+SN or S\+SN only. 

First search all users with a valid PC for a full P\+C+\+S\+SN match. If no match was found, search all users with an invalid PC for an S\+S\+N-\/only match. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em inst} & S\+C\+CP Instance in which to search. \\
\hline
\mbox{\tt in}  & {\em ssn} & Sub-\/\+System Number to search for. \\
\hline
\mbox{\tt in}  & {\em pc} & Point Code to search for. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Matching S\+C\+CP User; N\+U\+LL if none found. 
\end{DoxyReturn}


References sccp\+\_\+user\+\_\+find().



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a07ec39c977a302c8db00b6ab4257baef}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv@{osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv@{osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv()}
{\footnotesize\ttfamily void$\ast$ osmo\+\_\+sccp\+\_\+user\+\_\+get\+\_\+priv (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu }\end{DoxyParamCaption})}



References osmo\+\_\+sccp\+\_\+user\+::priv.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a35cbc9cc49dd35f2744f69eca1b18b61}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+name@{osmo\+\_\+sccp\+\_\+user\+\_\+name}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+name@{osmo\+\_\+sccp\+\_\+user\+\_\+name}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+name()}
{\footnotesize\ttfamily const char$\ast$ osmo\+\_\+sccp\+\_\+user\+\_\+name (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu }\end{DoxyParamCaption})}



Compose a human readable string to describe the S\+C\+CP user\textquotesingle{}s connection. 

The output follows [\textquotesingle{}$<$scu.\+name$>$\textquotesingle{}\+:]$<$local-\/sccp-\/addr$>$, e.\+g. \char`\"{}\textquotesingle{}\+Osmo\+H\+N\+B\+W\textquotesingle{}\+:\+R\+I=\+S\+S\+N\+\_\+\+P\+C,\+P\+C=0.\+23.\+5,\+S\+S\+N=\+R\+A\+N\+A\+P\char`\"{}, or just \char`\"{}\+R\+I=\+S\+S\+N\+\_\+\+P\+C,\+P\+C=0.\+23.\+5,\+S\+S\+N=\+R\+A\+N\+A\+P\char`\"{} if no scu-\/$>$name is set. This calls \doxyref{osmo\+\_\+sccp\+\_\+addr\+\_\+name()}{p.}{sccp__helpers_8h_a8d9ad80fd2ce4f316b061543cbab5573}, which returns a static buffer; hence calling this function and \doxyref{osmo\+\_\+sccp\+\_\+addr\+\_\+name()}{p.}{sccp__helpers_8h_a8d9ad80fd2ce4f316b061543cbab5573} in the same printf statement is likely to conflict. 

References osmo\+\_\+sccp\+\_\+user\+::inst, osmo\+\_\+sccp\+\_\+user\+::name, osmo\+\_\+sccp\+\_\+addr\+\_\+name(), osmo\+\_\+sccp\+\_\+make\+\_\+addr\+\_\+pc\+\_\+ssn(), osmo\+\_\+sccp\+\_\+user\+::pc, osmo\+\_\+sccp\+\_\+instance\+::ss7, and osmo\+\_\+sccp\+\_\+user\+::ssn.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a232a3859dff9bb004f12999c9717c82c}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv@{osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv@{osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+user\+\_\+set\+\_\+priv (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})}



References osmo\+\_\+sccp\+\_\+user\+::priv.



Referenced by osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_ae2b5a2f259d5c4cf9b0e9dd9ba298665}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!osmo\+\_\+sccp\+\_\+user\+\_\+unbind@{osmo\+\_\+sccp\+\_\+user\+\_\+unbind}}
\index{osmo\+\_\+sccp\+\_\+user\+\_\+unbind@{osmo\+\_\+sccp\+\_\+user\+\_\+unbind}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{osmo\+\_\+sccp\+\_\+user\+\_\+unbind()}
{\footnotesize\ttfamily void osmo\+\_\+sccp\+\_\+user\+\_\+unbind (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu }\end{DoxyParamCaption})}



Unbind a given S\+C\+CP user. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em scu} & S\+C\+CP User which is to be un-\/bound. Will be destroyed at the time this function returns. \\
\hline
\end{DoxyParams}


References osmo\+\_\+sccp\+\_\+user\+::inst, osmo\+\_\+sccp\+\_\+user\+::list, osmo\+\_\+sccp\+\_\+user\+::name, osmo\+\_\+ss7\+\_\+pointcode\+\_\+print(), osmo\+\_\+sccp\+\_\+user\+::pc, osmo\+\_\+sccp\+\_\+instance\+::ss7, and osmo\+\_\+sccp\+\_\+user\+::ssn.



Referenced by osmo\+\_\+sccp\+\_\+instance\+\_\+destroy(), and osmo\+\_\+scu\+\_\+prim\+\_\+type\+\_\+name().

\mbox{\label{sccp__user_8c_a8e71c6e0cbb751c8019390b105afbe60}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!sccp\+\_\+user\+\_\+bind\+\_\+pc@{sccp\+\_\+user\+\_\+bind\+\_\+pc}}
\index{sccp\+\_\+user\+\_\+bind\+\_\+pc@{sccp\+\_\+user\+\_\+bind\+\_\+pc}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{sccp\+\_\+user\+\_\+bind\+\_\+pc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+sccp\+\_\+user}$\ast$ sccp\+\_\+user\+\_\+bind\+\_\+pc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{const char $\ast$}]{name,  }\item[{osmo\+\_\+prim\+\_\+cb}]{prim\+\_\+cb,  }\item[{uint16\+\_\+t}]{ssn,  }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Bind a S\+C\+CP User to a given Point Code. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em inst} & S\+C\+CP Instance \\
\hline
\mbox{\tt in}  & {\em name} & human-\/readable name \\
\hline
\mbox{\tt in}  & {\em ssn} & Sub-\/\+System Number to bind to \\
\hline
\mbox{\tt in}  & {\em pc} & Point Code to bind to, or O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+P\+C\+\_\+\+I\+N\+V\+A\+L\+ID if none. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Callee-\/allocated S\+C\+CP User on success; negative otherwise 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+user\+::inst, osmo\+\_\+sccp\+\_\+user\+::list, osmo\+\_\+sccp\+\_\+user\+::name, osmo\+\_\+ss7\+\_\+pointcode\+\_\+print(), osmo\+\_\+sccp\+\_\+user\+::pc, osmo\+\_\+sccp\+\_\+user\+::prim\+\_\+cb, sccp\+\_\+user\+\_\+find(), osmo\+\_\+sccp\+\_\+instance\+::ss7, osmo\+\_\+sccp\+\_\+user\+::ssn, and osmo\+\_\+sccp\+\_\+instance\+::users.



Referenced by osmo\+\_\+sccp\+\_\+user\+\_\+bind(), and osmo\+\_\+sccp\+\_\+user\+\_\+bind\+\_\+pc().

\mbox{\label{sccp__user_8c_a4eed9498fc7d3cc333a5661b779e1a8a}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!sccp\+\_\+user\+\_\+find@{sccp\+\_\+user\+\_\+find}}
\index{sccp\+\_\+user\+\_\+find@{sccp\+\_\+user\+\_\+find}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{sccp\+\_\+user\+\_\+find()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sccp\+\_\+user}$\ast$ sccp\+\_\+user\+\_\+find (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$}]{inst,  }\item[{uint16\+\_\+t}]{ssn,  }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})}



Find a S\+C\+CP User registered for given P\+C+\+S\+SN or S\+SN only First search all users with a valid PC for a full P\+C+\+S\+SN match. 

If no such match was found, search all users with an invalid PC for an S\+S\+N-\/only match. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em inst} & S\+C\+CP Instance in which to search \\
\hline
\mbox{\tt in}  & {\em ssn} & Sub-\/\+System Number to search for \\
\hline
\mbox{\tt in}  & {\em pc} & Point Code to search for \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Matching S\+C\+CP User; N\+U\+LL if none found 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+user\+::list, osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+valid(), osmo\+\_\+sccp\+\_\+user\+::pc, osmo\+\_\+sccp\+\_\+user\+::ssn, and osmo\+\_\+sccp\+\_\+instance\+::users.



Referenced by D\+E\+F\+U\+N(), osmo\+\_\+sccp\+\_\+user\+\_\+find(), sccp\+\_\+find\+\_\+user(), sccp\+\_\+user\+\_\+bind\+\_\+pc(), sclc\+\_\+rx\+\_\+cldr(), sclc\+\_\+rx\+\_\+cldt(), scmg\+\_\+rx\+\_\+sst(), and scrc\+\_\+node\+\_\+6().

\mbox{\label{sccp__user_8c_a26760477f3cab4b33aa24e964bb2d91a}} 
\index{sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}!sccp\+\_\+user\+\_\+prim\+\_\+up@{sccp\+\_\+user\+\_\+prim\+\_\+up}}
\index{sccp\+\_\+user\+\_\+prim\+\_\+up@{sccp\+\_\+user\+\_\+prim\+\_\+up}!sccp\+\_\+user.\+c@{sccp\+\_\+user.\+c}}
\subsubsection{sccp\+\_\+user\+\_\+prim\+\_\+up()}
{\footnotesize\ttfamily int sccp\+\_\+user\+\_\+prim\+\_\+up (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$}]{scu,  }\item[{struct \textbf{ osmo\+\_\+scu\+\_\+prim} $\ast$}]{prim }\end{DoxyParamCaption})}



Send a S\+C\+CP User S\+AP Primitive up to the User. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em scu} & S\+C\+CP User to whom to send the primitive \\
\hline
\mbox{\tt in}  & {\em prim} & Primitive to send to the user \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
return value of the S\+C\+CP User\textquotesingle{}s prim\+\_\+cb() function 
\end{DoxyReturn}


References osmo\+\_\+sccp\+\_\+user\+::name, osmo\+\_\+scu\+\_\+prim\+::oph, osmo\+\_\+scu\+\_\+prim\+\_\+name(), and osmo\+\_\+sccp\+\_\+user\+::prim\+\_\+cb.



Referenced by sccp\+\_\+lbcs\+\_\+local\+\_\+bcast\+\_\+pcstate(), sccp\+\_\+lbcs\+\_\+local\+\_\+bcast\+\_\+state(), sclc\+\_\+rx\+\_\+cldr(), sclc\+\_\+rx\+\_\+cldt(), and scu\+\_\+gen\+\_\+encode\+\_\+and\+\_\+send().