\doxysection{src/sccp\+\_\+instance.h File Reference}
\label{sccp__instance_8h}\index{src/sccp\_instance.h@{src/sccp\_instance.h}}
{\ttfamily \#include $<$inttypes.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxrbtree.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/tdef.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sccp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/mtp.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ sccp\+\_\+pending\+\_\+rout\+\_\+fail}
\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+instance}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ \+\_\+\+LOGPSCI}(sci,  subsys,  level,  fmt,  args ...)~ \textbf{ \+\_\+\+LOGSS7}((sci)-\/$>$ss7, subsys, level, \char`\"{}SCCP(rctx=\%\char`\"{} PRIu32 \char`\"{}) \char`\"{} fmt, (sci)-\/$>$route\+\_\+ctx, \#\# args)
\item 
\#define \textbf{ LOGPSCI}(sci,  level,  fmt,  args ...)~ \textbf{ \+\_\+\+LOGPSCI}(sci, DLSCCP, level, fmt, \#\# args)
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+sccp\+\_\+timer} \{ \newline
\textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+CONN\+\_\+\+EST} = 1
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+IAS}
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+IAR}
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+REL}
, \newline
\textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+REPEAT\+\_\+\+REL}
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+INT}
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+GUARD}
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+RESET}
, \newline
\textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+REASSEMBLY}
, \textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMERS\+\_\+\+LEN}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static const char $\ast$ \textbf{ osmo\+\_\+sccp\+\_\+timer\+\_\+name} (enum \textbf{ osmo\+\_\+sccp\+\_\+timer} val)
\item 
struct \textbf{ osmo\+\_\+sccp\+\_\+user} $\ast$ \textbf{ sccp\+\_\+user\+\_\+find} (struct \textbf{ osmo\+\_\+sccp\+\_\+instance} $\ast$inst, uint16\+\_\+t \textbf{ ssn}, uint32\+\_\+t \textbf{ pc})
\begin{DoxyCompactList}\small\item\em Find a SCCP User registered for given PC+\+SSN or SSN only First search all users with a valid PC for a full PC+\+SSN match. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct osmo\+\_\+tdef \textbf{ osmo\+\_\+sccp\+\_\+timer\+\_\+defaults} [\textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMERS\+\_\+\+LEN}]
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+sccp\+\_\+timer\+\_\+names} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{sccp__instance_8h_abf490894826513b3bd17d64424010887}} 
\index{sccp\_instance.h@{sccp\_instance.h}!\_LOGPSCI@{\_LOGPSCI}}
\index{\_LOGPSCI@{\_LOGPSCI}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{\_LOGPSCI}
{\footnotesize\ttfamily \#define \+\_\+\+LOGPSCI(\begin{DoxyParamCaption}\item[{}]{sci,  }\item[{}]{subsys,  }\item[{}]{level,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ \+\_\+\+LOGSS7}((sci)-\/$>$ss7, subsys, level, \char`\"{}SCCP(rctx=\%\char`\"{} PRIu32 \char`\"{}) \char`\"{} fmt, (sci)-\/$>$route\+\_\+ctx, \#\# args)}

\mbox{\label{sccp__instance_8h_a5fe8652a0f6fd20326e44b277e2c2c06}} 
\index{sccp\_instance.h@{sccp\_instance.h}!LOGPSCI@{LOGPSCI}}
\index{LOGPSCI@{LOGPSCI}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{LOGPSCI}
{\footnotesize\ttfamily \#define LOGPSCI(\begin{DoxyParamCaption}\item[{}]{sci,  }\item[{}]{level,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ \+\_\+\+LOGPSCI}(sci, DLSCCP, level, fmt, \#\# args)}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14}} 
\index{sccp\_instance.h@{sccp\_instance.h}!osmo\_sccp\_timer@{osmo\_sccp\_timer}}
\index{osmo\_sccp\_timer@{osmo\_sccp\_timer}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{osmo\_sccp\_timer}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+sccp\+\_\+timer}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_CONN\_EST@{OSMO\_SCCP\_TIMER\_CONN\_EST}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_CONN\_EST@{OSMO\_SCCP\_TIMER\_CONN\_EST}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14ae4ed5869e21520b16e4b0f2cd878516f}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+CONN\+\_\+\+EST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_IAS@{OSMO\_SCCP\_TIMER\_IAS}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_IAS@{OSMO\_SCCP\_TIMER\_IAS}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14ae39ee3132d645374f9110373c651e33b}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+IAS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_IAR@{OSMO\_SCCP\_TIMER\_IAR}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_IAR@{OSMO\_SCCP\_TIMER\_IAR}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14af773199473ee326757b50818c6a50e3a}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+IAR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_REL@{OSMO\_SCCP\_TIMER\_REL}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_REL@{OSMO\_SCCP\_TIMER\_REL}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14ac8dc9ae42a9b305d4fe4c9940d7c48b3}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+REL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_REPEAT\_REL@{OSMO\_SCCP\_TIMER\_REPEAT\_REL}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_REPEAT\_REL@{OSMO\_SCCP\_TIMER\_REPEAT\_REL}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14a31c206a7d13023be866802fadb811697}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+REPEAT\+\_\+\+REL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_INT@{OSMO\_SCCP\_TIMER\_INT}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_INT@{OSMO\_SCCP\_TIMER\_INT}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14a6cf826de2f97fa78507b8da7f6aac674}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+INT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_GUARD@{OSMO\_SCCP\_TIMER\_GUARD}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_GUARD@{OSMO\_SCCP\_TIMER\_GUARD}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14aa093571f840d3c0647dbf49fb174e97f}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+GUARD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_RESET@{OSMO\_SCCP\_TIMER\_RESET}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_RESET@{OSMO\_SCCP\_TIMER\_RESET}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14af4e02ea8c9b11acfefb361fe045c5514}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMER\_REASSEMBLY@{OSMO\_SCCP\_TIMER\_REASSEMBLY}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMER\_REASSEMBLY@{OSMO\_SCCP\_TIMER\_REASSEMBLY}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14ab0f8b986256e7d3c73c99b9c68a8171a}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMER\+\_\+\+REASSEMBLY&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_SCCP\_TIMERS\_LEN@{OSMO\_SCCP\_TIMERS\_LEN}!sccp\_instance.h@{sccp\_instance.h}}\index{sccp\_instance.h@{sccp\_instance.h}!OSMO\_SCCP\_TIMERS\_LEN@{OSMO\_SCCP\_TIMERS\_LEN}}}\mbox{\label{sccp__instance_8h_a47b8e3df2fb2f2c26ad96d5988144f14ab333867710241fb0cfe60000555104af}} 
OSMO\+\_\+\+SCCP\+\_\+\+TIMERS\+\_\+\+LEN&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{sccp__instance_8h_ad2135c93b65cbc3c7c23558c1de7e2a4}} 
\index{sccp\_instance.h@{sccp\_instance.h}!osmo\_sccp\_timer\_name@{osmo\_sccp\_timer\_name}}
\index{osmo\_sccp\_timer\_name@{osmo\_sccp\_timer\_name}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{osmo\_sccp\_timer\_name()}
{\footnotesize\ttfamily static const char $\ast$ osmo\+\_\+sccp\+\_\+timer\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+sccp\+\_\+timer}}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ osmo\+\_\+sccp\+\_\+timer\+\_\+names}.

\mbox{\label{sccp__instance_8h_a5e91462e8e3dd81c8e1255b872c1b941}} 
\index{sccp\_instance.h@{sccp\_instance.h}!sccp\_user\_find@{sccp\_user\_find}}
\index{sccp\_user\_find@{sccp\_user\_find}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{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 SCCP User registered for given PC+\+SSN or SSN only First search all users with a valid PC for a full PC+\+SSN match. 

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


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



Referenced by \textbf{ DEFUN()}, \textbf{ osmo\+\_\+sccp\+\_\+user\+\_\+find()}, \textbf{ sccp\+\_\+find\+\_\+user()}, \textbf{ sccp\+\_\+user\+\_\+bind\+\_\+pc()}, \textbf{ sclc\+\_\+rx\+\_\+cldr()}, \textbf{ sclc\+\_\+rx\+\_\+cldt()}, \textbf{ scmg\+\_\+rx\+\_\+sst()}, and \textbf{ scrc\+\_\+node\+\_\+6()}.



\doxysubsection{Variable Documentation}
\mbox{\label{sccp__instance_8h_ae4f0f4b8faf5d7ba93d5d5ead401c2b3}} 
\index{sccp\_instance.h@{sccp\_instance.h}!osmo\_sccp\_timer\_defaults@{osmo\_sccp\_timer\_defaults}}
\index{osmo\_sccp\_timer\_defaults@{osmo\_sccp\_timer\_defaults}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{osmo\_sccp\_timer\_defaults}
{\footnotesize\ttfamily const struct osmo\+\_\+tdef osmo\+\_\+sccp\+\_\+timer\+\_\+defaults[\textbf{ OSMO\+\_\+\+SCCP\+\_\+\+TIMERS\+\_\+\+LEN}]\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ gen\+\_\+sccp\+\_\+timer\+\_\+cmd\+\_\+strs()}, and \textbf{ osmo\+\_\+sccp\+\_\+instance\+\_\+create()}.

\mbox{\label{sccp__instance_8h_adb142ce6fd39a4884c7fa9144ff15c3f}} 
\index{sccp\_instance.h@{sccp\_instance.h}!osmo\_sccp\_timer\_names@{osmo\_sccp\_timer\_names}}
\index{osmo\_sccp\_timer\_names@{osmo\_sccp\_timer\_names}!sccp\_instance.h@{sccp\_instance.h}}
\doxysubsubsection{osmo\_sccp\_timer\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+sccp\+\_\+timer\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ gen\+\_\+sccp\+\_\+timer\+\_\+cmd\+\_\+strs()}, \textbf{ osmo\+\_\+sccp\+\_\+timer\+\_\+name()}, and \textbf{ write\+\_\+sccp\+\_\+timers()}.

