\doxysection{src/osmo\+\_\+ss7.c File Reference} \label{osmo__ss7_8c}\index{src/osmo\_ss7.c@{src/osmo\_ss7.c}} {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include $<$errno.\+h$>$}\newline {\ttfamily \#include $<$unistd.\+h$>$}\newline {\ttfamily \#include $<$inttypes.\+h$>$}\newline {\ttfamily \#include $<$netdb.\+h$>$}\newline {\ttfamily \#include $<$netinet/in.\+h$>$}\newline {\ttfamily \#include $<$netinet/sctp.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/mtp\+\_\+sap.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/mtp.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline {\ttfamily \#include $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/select.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/socket.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/sockaddr\+\_\+str.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/stream.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/ipa.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/sctp.\+h$>$}\newline {\ttfamily \#include \char`\"{}sccp\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+as.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+asp.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+linkset.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+route.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ss7\+\_\+route\+\_\+table.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+asp\+\_\+fsm.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}xua\+\_\+as\+\_\+fsm.\+h\char`\"{}}\newline \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item \textbf{ LLIST\+\_\+\+HEAD} (\textbf{ osmo\+\_\+ss7\+\_\+instances}) \item struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+ss7\+\_\+instances\+\_\+llist\+\_\+entry} (struct llist\+\_\+head $\ast$list) \item uint8\+\_\+t \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+width} (const struct \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+fmt} $\ast$pc\+\_\+fmt) \item uint32\+\_\+t \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+normalize} (const struct \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+fmt} $\ast$pc\+\_\+fmt, uint32\+\_\+t pc) \item struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+find} (uint32\+\_\+t id) \begin{DoxyCompactList}\small\item\em Find a SS7 Instance with given ID. \end{DoxyCompactList}\item struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+find\+\_\+or\+\_\+create} (void $\ast$ctx, uint32\+\_\+t id) \begin{DoxyCompactList}\small\item\em Find or create a SS7 Instance. \end{DoxyCompactList}\item bool \textbf{ ss7\+\_\+ipv6\+\_\+sctp\+\_\+supported} (const char $\ast$host, bool bind) \item int \textbf{ osmo\+\_\+ss7\+\_\+init} (void) \item int \textbf{ osmo\+\_\+ss7\+\_\+tmode\+\_\+to\+\_\+xua} (enum \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode} tmod) \item enum \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode} \textbf{ osmo\+\_\+ss7\+\_\+tmode\+\_\+from\+\_\+xua} (uint32\+\_\+t in) \end{DoxyCompactItemize} \doxysubsection*{Variables} \begin{DoxyCompactItemize} \item bool \textbf{ ss7\+\_\+initialized} = false \item const struct value\+\_\+string \textbf{ mtp\+\_\+unavail\+\_\+cause\+\_\+vals} [$\,$] \end{DoxyCompactItemize} \doxysubsection{Function Documentation} \mbox{\label{osmo__ss7_8c_a9f0ebdc6d2b270403d8616275fa12314}} \index{osmo\_ss7.c@{osmo\_ss7.c}!LLIST\_HEAD@{LLIST\_HEAD}} \index{LLIST\_HEAD@{LLIST\_HEAD}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{LLIST\_HEAD()} {\footnotesize\ttfamily LLIST\+\_\+\+HEAD (\begin{DoxyParamCaption}\item[{\textbf{ osmo\+\_\+ss7\+\_\+instances}}]{ }\end{DoxyParamCaption})} \mbox{\label{osmo__ss7_8c_aa0eea948b1e7bbb0764ecc89e5b2a124}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_init@{osmo\_ss7\_init}} \index{osmo\_ss7\_init@{osmo\_ss7\_init}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_init()} {\footnotesize\ttfamily int osmo\+\_\+ss7\+\_\+init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} References \textbf{ ipa\+\_\+asp\+\_\+fsm}, \textbf{ sccp\+\_\+scoc\+\_\+fsm}, \textbf{ ss7\+\_\+initialized}, \textbf{ xua\+\_\+as\+\_\+fsm}, \textbf{ xua\+\_\+asp\+\_\+fsm}, and \textbf{ xua\+\_\+default\+\_\+lm\+\_\+fsm}. \mbox{\label{osmo__ss7_8c_ac60e71c943c7bff06a27813c2b5ca6c0}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_instance\_find@{osmo\_ss7\_instance\_find}} \index{osmo\_ss7\_instance\_find@{osmo\_ss7\_instance\_find}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_instance\_find()} {\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ osmo\+\_\+ss7\+\_\+instance\+\_\+find (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{id }\end{DoxyParamCaption})} Find a SS7 Instance with given ID. \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em id} & ID for which to search \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} \doxyref{osmo\+\_\+ss7\+\_\+instance}{p.}{structosmo__ss7__instance} on success; NULL on error \end{DoxyReturn} References \textbf{ osmo\+\_\+ss7\+\_\+instance\+::cfg}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::id}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+::list}, \textbf{ osmo\+\_\+ss7\+\_\+instances}, and \textbf{ ss7\+\_\+initialized}. Referenced by \textbf{ DEFUN()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ show\+\_\+asp()}, \textbf{ show\+\_\+asp\+\_\+assoc\+\_\+status()}, and \textbf{ show\+\_\+asp\+\_\+remaddr()}. \mbox{\label{osmo__ss7_8c_a950f22310d21bb0e18e65b6405b1c135}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_instance\_find\_or\_create@{osmo\_ss7\_instance\_find\_or\_create}} \index{osmo\_ss7\_instance\_find\_or\_create@{osmo\_ss7\_instance\_find\_or\_create}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_instance\_find\_or\_create()} {\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ osmo\+\_\+ss7\+\_\+instance\+\_\+find\+\_\+or\+\_\+create (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx, }\item[{uint32\+\_\+t}]{id }\end{DoxyParamCaption})} Find or create a SS7 Instance. \begin{DoxyParams}[1]{Parameters} \mbox{\texttt{ in}} & {\em ctx} & talloc allocation context to use for allocations \\ \hline \mbox{\texttt{ in}} & {\em id} & ID of SS7 Instance \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} \doxyref{osmo\+\_\+ss7\+\_\+instance}{p.}{structosmo__ss7__instance} on success; NULL on error \end{DoxyReturn} References \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+find()}, \textbf{ ss7\+\_\+initialized}, and \textbf{ ss7\+\_\+instance\+\_\+alloc()}. Referenced by \textbf{ DEFUN\+\_\+\+ATTR()}, \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+client\+\_\+on\+\_\+ss7\+\_\+id()}, and \textbf{ osmo\+\_\+sccp\+\_\+simple\+\_\+server\+\_\+on\+\_\+ss7\+\_\+id()}. \mbox{\label{osmo__ss7_8c_af658b1a5dd0dc4ba7eb604f1810e05ab}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_instances\_llist\_entry@{osmo\_ss7\_instances\_llist\_entry}} \index{osmo\_ss7\_instances\_llist\_entry@{osmo\_ss7\_instances\_llist\_entry}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_instances\_llist\_entry()} {\footnotesize\ttfamily struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$ osmo\+\_\+ss7\+\_\+instances\+\_\+llist\+\_\+entry (\begin{DoxyParamCaption}\item[{struct llist\+\_\+head $\ast$}]{list }\end{DoxyParamCaption})} References \textbf{ osmo\+\_\+ss7\+\_\+instance\+::list}. \mbox{\label{osmo__ss7_8c_a63840039b641779d68a0010bc7f24fd5}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_pc\_normalize@{osmo\_ss7\_pc\_normalize}} \index{osmo\_ss7\_pc\_normalize@{osmo\_ss7\_pc\_normalize}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_pc\_normalize()} {\footnotesize\ttfamily uint32\+\_\+t osmo\+\_\+ss7\+\_\+pc\+\_\+normalize (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+fmt} $\ast$}]{pc\+\_\+fmt, }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})} References \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+width()}. Referenced by \textbf{ ss7\+\_\+route\+\_\+alloc()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find\+\_\+route\+\_\+by\+\_\+dpc()}, and \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find\+\_\+route\+\_\+by\+\_\+dpc\+\_\+mask()}. \mbox{\label{osmo__ss7_8c_a9cc83a7969a30ca6748f27cf0b442e5e}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_pc\_width@{osmo\_ss7\_pc\_width}} \index{osmo\_ss7\_pc\_width@{osmo\_ss7\_pc\_width}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_pc\_width()} {\footnotesize\ttfamily uint8\+\_\+t osmo\+\_\+ss7\+\_\+pc\+\_\+width (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+fmt} $\ast$}]{pc\+\_\+fmt }\end{DoxyParamCaption})} References \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+fmt\+::component\+\_\+len}. Referenced by \textbf{ get\+\_\+pc\+\_\+comp\+\_\+shift()}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+normalize()}, \textbf{ osmo\+\_\+ss7\+\_\+pointcode\+\_\+parse\+\_\+mask\+\_\+or\+\_\+len()}, and \textbf{ osmo\+\_\+ss7\+\_\+route\+\_\+print()}. \mbox{\label{osmo__ss7_8c_af325ee0eb2ff3e3df09cc7e49b6bb6b9}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_tmode\_from\_xua@{osmo\_ss7\_tmode\_from\_xua}} \index{osmo\_ss7\_tmode\_from\_xua@{osmo\_ss7\_tmode\_from\_xua}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_tmode\_from\_xua()} {\footnotesize\ttfamily enum \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode} osmo\+\_\+ss7\+\_\+tmode\+\_\+from\+\_\+xua (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{in }\end{DoxyParamCaption})} References \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+LOADSHARE}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+LOADSHARE}, and \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}. Referenced by \textbf{ handle\+\_\+rkey\+\_\+reg()}, and \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive()}. \mbox{\label{osmo__ss7_8c_a41c5d0c1bcae4257834073d3c109f12c}} \index{osmo\_ss7.c@{osmo\_ss7.c}!osmo\_ss7\_tmode\_to\_xua@{osmo\_ss7\_tmode\_to\_xua}} \index{osmo\_ss7\_tmode\_to\_xua@{osmo\_ss7\_tmode\_to\_xua}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{osmo\_ss7\_tmode\_to\_xua()} {\footnotesize\ttfamily int osmo\+\_\+ss7\+\_\+tmode\+\_\+to\+\_\+xua (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode}}]{tmod }\end{DoxyParamCaption})} References \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+LOADSHARE}, \textbf{ M3\+UA\+\_\+\+TMOD\+\_\+\+OVERRIDE}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+BCAST}, \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+LOADSHARE}, and \textbf{ OSMO\+\_\+\+SS7\+\_\+\+AS\+\_\+\+TMOD\+\_\+\+OVERRIDE}. Referenced by \textbf{ peer\+\_\+send()}, and \textbf{ xua\+\_\+rkm\+\_\+send\+\_\+reg\+\_\+req()}. \mbox{\label{osmo__ss7_8c_a477fa52a1c6b284e17f273c52dbb594c}} \index{osmo\_ss7.c@{osmo\_ss7.c}!ss7\_ipv6\_sctp\_supported@{ss7\_ipv6\_sctp\_supported}} \index{ss7\_ipv6\_sctp\_supported@{ss7\_ipv6\_sctp\_supported}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{ss7\_ipv6\_sctp\_supported()} {\footnotesize\ttfamily bool ss7\+\_\+ipv6\+\_\+sctp\+\_\+supported (\begin{DoxyParamCaption}\item[{const char $\ast$}]{host, }\item[{bool}]{bind }\end{DoxyParamCaption})} Referenced by \textbf{ ss7\+\_\+asp\+\_\+set\+\_\+default\+\_\+peer\+\_\+hosts()}, and \textbf{ ss7\+\_\+xua\+\_\+server\+\_\+set\+\_\+default\+\_\+local\+\_\+hosts()}. \doxysubsection{Variable Documentation} \mbox{\label{osmo__ss7_8c_aa7ef388acf6473b86619b4eea1ce9654}} \index{osmo\_ss7.c@{osmo\_ss7.c}!mtp\_unavail\_cause\_vals@{mtp\_unavail\_cause\_vals}} \index{mtp\_unavail\_cause\_vals@{mtp\_unavail\_cause\_vals}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{mtp\_unavail\_cause\_vals} {\footnotesize\ttfamily const struct value\+\_\+string mtp\+\_\+unavail\+\_\+cause\+\_\+vals[$\,$]} {\bfseries Initial value\+:} \begin{DoxyCode}{0} \DoxyCodeLine{= \{} \DoxyCodeLine{ \{ MTP\_UNAVAIL\_C\_UNKNOWN, \textcolor{stringliteral}{"{}unknown"{}} \},} \DoxyCodeLine{ \{ MTP\_UNAVAIL\_C\_UNEQUIP\_REM\_USER, \textcolor{stringliteral}{"{}unequipped-\/remote-\/user"{}} \},} \DoxyCodeLine{ \{ MTP\_UNAVAIL\_C\_INACC\_REM\_USER, \textcolor{stringliteral}{"{}inaccessible-\/remote-\/user"{}} \},} \DoxyCodeLine{ \{ 0, NULL \}} \DoxyCodeLine{\}} \end{DoxyCode} Referenced by \textbf{ mtp\+\_\+unavail\+\_\+cause\+\_\+str()}. \mbox{\label{osmo__ss7_8c_a78806f653f55e3d87d93650a55b5f70a}} \index{osmo\_ss7.c@{osmo\_ss7.c}!ss7\_initialized@{ss7\_initialized}} \index{ss7\_initialized@{ss7\_initialized}!osmo\_ss7.c@{osmo\_ss7.c}} \doxysubsubsection{ss7\_initialized} {\footnotesize\ttfamily bool ss7\+\_\+initialized = false} Referenced by \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+del\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+destroy()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+l\+\_\+rk\+\_\+id()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+proto()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+rctx()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+destroy()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+find2()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+find\+\_\+or\+\_\+create2()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+restart()}, \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+send()}, \textbf{ osmo\+\_\+ss7\+\_\+init()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+destroy()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+find()}, \textbf{ osmo\+\_\+ss7\+\_\+instance\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ osmo\+\_\+ss7\+\_\+pc\+\_\+is\+\_\+local()}, \textbf{ osmo\+\_\+ss7\+\_\+route\+\_\+lookup()}, \textbf{ ss7\+\_\+asp\+\_\+find\+\_\+by\+\_\+socket\+\_\+addr()}, \textbf{ ss7\+\_\+link\+\_\+destroy()}, \textbf{ ss7\+\_\+link\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ ss7\+\_\+linkset\+\_\+destroy()}, \textbf{ ss7\+\_\+linkset\+\_\+find\+\_\+by\+\_\+name()}, \textbf{ ss7\+\_\+linkset\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ ss7\+\_\+route\+\_\+alloc()}, \textbf{ ss7\+\_\+route\+\_\+destroy()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find\+\_\+or\+\_\+create()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find\+\_\+route\+\_\+by\+\_\+dpc()}, \textbf{ ss7\+\_\+route\+\_\+table\+\_\+find\+\_\+route\+\_\+by\+\_\+dpc\+\_\+mask()}, \textbf{ ss7\+\_\+xua\+\_\+server\+\_\+create2()}, \textbf{ ss7\+\_\+xua\+\_\+server\+\_\+find2()}, and \textbf{ ss7\+\_\+xua\+\_\+server\+\_\+set\+\_\+local\+\_\+hosts()}.