\doxysection{sccp\+\_\+instance.\+h}
\label{sccp__instance_8h_source}\index{src/sccp\_instance.h@{src/sccp\_instance.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{2 }
\DoxyCodeLine{3 \textcolor{preprocessor}{\#include <inttypes.h>}}
\DoxyCodeLine{4 }
\DoxyCodeLine{5 \textcolor{preprocessor}{\#include <osmocom/core/fsm.h>}}
\DoxyCodeLine{6 \textcolor{preprocessor}{\#include <osmocom/core/prim.h>}}
\DoxyCodeLine{7 \textcolor{preprocessor}{\#include <osmocom/core/linuxlist.h>}}
\DoxyCodeLine{8 \textcolor{preprocessor}{\#include <osmocom/core/linuxrbtree.h>}}
\DoxyCodeLine{9 \textcolor{preprocessor}{\#include <osmocom/core/tdef.h>}}
\DoxyCodeLine{10 \textcolor{preprocessor}{\#include <osmocom/sigtran/sccp\_sap.h>}}
\DoxyCodeLine{11 \textcolor{preprocessor}{\#include <osmocom/sigtran/osmo\_ss7.h>}}
\DoxyCodeLine{12 \textcolor{preprocessor}{\#include <osmocom/sigtran/protocol/mtp.h>}}
\DoxyCodeLine{13 }
\DoxyCodeLine{14 \textcolor{keyword}{struct }osmo\_ss7\_user;}
\DoxyCodeLine{15 }
\DoxyCodeLine{16 \textcolor{comment}{/* Appendix C.4 of Q.714 */}}
\DoxyCodeLine{17 \textcolor{keyword}{enum} osmo\_sccp\_timer \{}
\DoxyCodeLine{18         \textcolor{comment}{/* 0 kept unused on purpose since it's handled specially by osmo\_fsm */}}
\DoxyCodeLine{19         OSMO\_SCCP\_TIMER\_CONN\_EST = 1,}
\DoxyCodeLine{20         OSMO\_SCCP\_TIMER\_IAS,}
\DoxyCodeLine{21         OSMO\_SCCP\_TIMER\_IAR,}
\DoxyCodeLine{22         OSMO\_SCCP\_TIMER\_REL,}
\DoxyCodeLine{23         OSMO\_SCCP\_TIMER\_REPEAT\_REL,}
\DoxyCodeLine{24         OSMO\_SCCP\_TIMER\_INT,}
\DoxyCodeLine{25         OSMO\_SCCP\_TIMER\_GUARD,}
\DoxyCodeLine{26         OSMO\_SCCP\_TIMER\_RESET,}
\DoxyCodeLine{27         OSMO\_SCCP\_TIMER\_REASSEMBLY,}
\DoxyCodeLine{28         \textcolor{comment}{/* This must remain the last item: */}}
\DoxyCodeLine{29         OSMO\_SCCP\_TIMERS\_LEN}
\DoxyCodeLine{30 \};}
\DoxyCodeLine{31 }
\DoxyCodeLine{32 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }osmo\_tdef osmo\_sccp\_timer\_defaults[OSMO\_SCCP\_TIMERS\_LEN];}
\DoxyCodeLine{33 }
\DoxyCodeLine{34 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sccp\_timer\_names[];}
\DoxyCodeLine{35 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sccp\_timer\_name(\textcolor{keyword}{enum} osmo\_sccp\_timer val)}
\DoxyCodeLine{36 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sccp\_timer\_names, val); \}}
\DoxyCodeLine{37 }
\DoxyCodeLine{38 \textcolor{keyword}{struct }sccp\_pending\_rout\_fail \{}
\DoxyCodeLine{39         \textcolor{comment}{/* Item in inst-\/>rout\_fail\_pending.queue: */}}
\DoxyCodeLine{40         \textcolor{keyword}{struct }llist\_head list;}
\DoxyCodeLine{41         \textcolor{keyword}{struct }xua\_msg *xua;}
\DoxyCodeLine{42         uint32\_t cause;}
\DoxyCodeLine{43         \textcolor{keywordtype}{bool} scoc; \textcolor{comment}{/* true if it's for SCOC, false if it's for SCLC. */}}
\DoxyCodeLine{44 \};}
\DoxyCodeLine{45 }
\DoxyCodeLine{46 \textcolor{comment}{/* an instance of the SCCP stack */}}
\DoxyCodeLine{47 \textcolor{keyword}{struct }osmo\_sccp\_instance \{}
\DoxyCodeLine{48         \textcolor{comment}{/* entry in global list of ss7 instances */}}
\DoxyCodeLine{49         \textcolor{keyword}{struct }llist\_head list;}
\DoxyCodeLine{50         \textcolor{comment}{/* rbtree root of 'struct sccp\_connection' in this instance */}}
\DoxyCodeLine{51         \textcolor{keyword}{struct }rb\_root connections;}
\DoxyCodeLine{52         \textcolor{comment}{/* list of SCCP users in this instance */}}
\DoxyCodeLine{53         \textcolor{keyword}{struct }llist\_head users;}
\DoxyCodeLine{54         \textcolor{comment}{/* routing context to be used in all outbound messages */}}
\DoxyCodeLine{55         uint32\_t route\_ctx;}
\DoxyCodeLine{56         \textcolor{comment}{/* next connection ID to allocate */}}
\DoxyCodeLine{57         uint32\_t next\_id;}
\DoxyCodeLine{58         \textcolor{keyword}{struct }osmo\_ss7\_instance *ss7;}
\DoxyCodeLine{59         \textcolor{keywordtype}{void} *priv;}
\DoxyCodeLine{60 }
\DoxyCodeLine{61         \textcolor{keyword}{struct }osmo\_ss7\_user *ss7\_user;}
\DoxyCodeLine{62 }
\DoxyCodeLine{63         \textcolor{keyword}{struct }osmo\_tdef *tdefs;}
\DoxyCodeLine{64 }
\DoxyCodeLine{65         uint32\_t max\_optional\_data;}
\DoxyCodeLine{66 }
\DoxyCodeLine{67         \textcolor{comment}{/* Queued Routing Failures to transmit asynchronously up the stack: */}}
\DoxyCodeLine{68         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{69                 \textcolor{keyword}{struct }osmo\_timer\_list timer;}
\DoxyCodeLine{70                 \textcolor{keyword}{struct }llist\_head queue;}
\DoxyCodeLine{71         \} rout\_fail\_pending;}
\DoxyCodeLine{72 \};}
\DoxyCodeLine{73 }
\DoxyCodeLine{74 \textcolor{keyword}{struct }osmo\_sccp\_user *}
\DoxyCodeLine{75 sccp\_user\_find(\textcolor{keyword}{struct} osmo\_sccp\_instance *inst, uint16\_t ssn, uint32\_t pc);}
\DoxyCodeLine{76 }
\DoxyCodeLine{77 \textcolor{preprocessor}{\#define \_LOGPSCI(sci, subsys, level, fmt, args ...) \(\backslash\)}}
\DoxyCodeLine{78 \textcolor{preprocessor}{        \_LOGSS7((sci)-\/>ss7, subsys, level, "{}SCCP(rctx=\%"{}} PRIu32 "{}) "{} fmt, (sci)-\/>route\_ctx, \#\# args)}
\DoxyCodeLine{79 \textcolor{preprocessor}{\#define LOGPSCI(sci, level, fmt, args ...) \(\backslash\)}}
\DoxyCodeLine{80 \textcolor{preprocessor}{        \_LOGPSCI(sci, DLSCCP, level, fmt, \#\# args)}}
\DoxyCodeLine{81 }

\end{DoxyCode}
