\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 ssn, uint32\+\_\+t 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{ osmo\+\_\+sccp\+\_\+user\+::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()}.