\doxysection{sctp.\+h}
\label{sctp_8h_source}\index{include/osmocom/netif/sctp.h@{include/osmocom/netif/sctp.h}}

\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{2 }
\DoxyCodeLine{3 \textcolor{preprocessor}{\#include <osmocom/core/utils.h>}}
\DoxyCodeLine{4 \textcolor{preprocessor}{\#include <netinet/sctp.h>}}
\DoxyCodeLine{5 }
\DoxyCodeLine{6 \textcolor{comment}{/* Relevant SCTP RFCs:}}
\DoxyCodeLine{7 \textcolor{comment}{ * rfc9260 (obsoletes rfc4960): SCTP protocol}}
\DoxyCodeLine{8 \textcolor{comment}{ * rfc5061: SCTP Dynamic Address Reconfiguration}}
\DoxyCodeLine{9 \textcolor{comment}{ * rfc6458: SCTP Sockets API Extensions}}
\DoxyCodeLine{10 \textcolor{comment}{ */}}
\DoxyCodeLine{11 }
\DoxyCodeLine{12 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_assoc\_chg\_strs[];}
\DoxyCodeLine{13 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_assoc\_chg\_str(\textcolor{keyword}{enum} sctp\_sac\_state val)}
\DoxyCodeLine{14 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_assoc\_chg\_strs, val); \}}
\DoxyCodeLine{15 }
\DoxyCodeLine{16 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_paddr\_chg\_strs[];}
\DoxyCodeLine{17 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_paddr\_chg\_str(\textcolor{keyword}{enum} sctp\_spc\_state val)}
\DoxyCodeLine{18 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_paddr\_chg\_strs, val); \}}
\DoxyCodeLine{19 }
\DoxyCodeLine{20 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_sn\_type\_strs[];}
\DoxyCodeLine{21 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_sn\_type\_str(\textcolor{keyword}{enum} sctp\_sn\_type val)}
\DoxyCodeLine{22 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_sn\_type\_strs, val); \}}
\DoxyCodeLine{23 }
\DoxyCodeLine{24 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_sn\_error\_strs[];}
\DoxyCodeLine{25 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_sn\_error\_str(\textcolor{keyword}{enum} sctp\_sn\_error val)}
\DoxyCodeLine{26 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_sn\_error\_strs, val); \}}
\DoxyCodeLine{27 }
\DoxyCodeLine{28 \textcolor{keyword}{enum} osmo\_sctp\_op\_error \{}
\DoxyCodeLine{29         OSMO\_SCTP\_OP\_ERR\_INVALID\_STREAM\_ID =  1,}
\DoxyCodeLine{30         OSMO\_SCTP\_OP\_ERR\_MISS\_MAND\_PARAM =  2,}
\DoxyCodeLine{31         OSMO\_SCTP\_OP\_ERR\_STALE\_COOKIE =  3,}
\DoxyCodeLine{32         OSMO\_SCTP\_OP\_ERR\_NO\_RESOURCES =  4,}
\DoxyCodeLine{33         OSMO\_SCTP\_OP\_ERR\_UNRESOLV\_ADDR =  5,}
\DoxyCodeLine{34         OSMO\_SCTP\_OP\_ERR\_UNKN\_CHUNK\_TYPE =  6,}
\DoxyCodeLine{35         OSMO\_SCTP\_OP\_ERR\_INVALID\_MAND\_PARAM =  7,}
\DoxyCodeLine{36         OSMO\_SCTP\_OP\_ERR\_UNKN\_PARAM =  8,}
\DoxyCodeLine{37         OSMO\_SCTP\_OP\_ERR\_NO\_USER\_DATA =  9,}
\DoxyCodeLine{38         OSMO\_SCTP\_OP\_ERR\_COOKIE\_RX\_WHILE\_SHUTDOWN = 10,}
\DoxyCodeLine{39         OSMO\_SCTP\_OP\_ERR\_RESTART\_ASSC\_NEW\_ADDR = 11,}
\DoxyCodeLine{40         OSMO\_SCTP\_OP\_ERR\_UNER\_INITED\_ABORT = 12,}
\DoxyCodeLine{41         OSMO\_SCTP\_OP\_ERR\_PROTO\_VERSION = 13,}
\DoxyCodeLine{42 \};}
\DoxyCodeLine{43 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_op\_error\_strs[];}
\DoxyCodeLine{44 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_op\_error\_str(\textcolor{keyword}{enum} osmo\_sctp\_op\_error val)}
\DoxyCodeLine{45 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_op\_error\_strs, val); \}}
\DoxyCodeLine{46 }
\DoxyCodeLine{47 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_spinfo\_state\_strs[];}
\DoxyCodeLine{48 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_spinfo\_state\_str(\textcolor{keyword}{enum} sctp\_spinfo\_state val)}
\DoxyCodeLine{49 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_spinfo\_state\_strs, val); \}}
\DoxyCodeLine{50 }
\DoxyCodeLine{51 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_sctp\_sstat\_state\_strs[];}
\DoxyCodeLine{52 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sctp\_sstat\_state\_str(\textcolor{keyword}{enum} sctp\_sstat\_state val)}
\DoxyCodeLine{53 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_sctp\_sstat\_state\_strs, val); \}}

\end{DoxyCode}
