\doxysection{osmo\+\_\+ss7.\+h}
\label{osmo__ss7_8h_source}\index{include/osmocom/sigtran/osmo\_ss7.h@{include/osmocom/sigtran/osmo\_ss7.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#pragma\ once}}
\DoxyCodeLine{00002\ }
\DoxyCodeLine{00003\ \textcolor{preprocessor}{\#include\ <stdint.h>}}
\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <stdbool.h>}}
\DoxyCodeLine{00005\ }
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <osmocom/core/linuxlist.h>}}
\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <osmocom/core/utils.h>}}
\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <osmocom/core/fsm.h>}}
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <osmocom/core/msgb.h>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <osmocom/core/prim.h>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <osmocom/core/socket.h>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <osmocom/core/rate\_ctr.h>}}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ \textcolor{comment}{/*\ Maximum\ number\ of\ supported\ RCTXs\ present\ in\ RFC4666\ Routing\ Context\ IE.\ */}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#define\ OSMO\_SS7\_MAX\_RCTX\_COUNT\ 128}}
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00017\ \textcolor{keyword}{struct\ }osmo\_ss7\_instance;}
\DoxyCodeLine{00018\ }
\DoxyCodeLine{00019\ \textcolor{keyword}{extern}\ \textcolor{keyword}{struct\ }llist\_head\ osmo\_ss7\_instances;}
\DoxyCodeLine{00020\ \textcolor{comment}{/*\ Get\ an\ entry\ pointer\ from\ a\ list\ item\ in\ osmo\_ss7\_instances:\ */}}
\DoxyCodeLine{00021\ \textcolor{keyword}{struct\ }osmo\_ss7\_instance\ *osmo\_ss7\_instances\_llist\_entry(\textcolor{keyword}{struct}\ llist\_head\ *list);}
\DoxyCodeLine{00022\ }
\DoxyCodeLine{00023\ \textcolor{keywordtype}{int}\ osmo\_ss7\_init(\textcolor{keywordtype}{void});}
\DoxyCodeLine{00024\ }
\DoxyCodeLine{00025\ \textcolor{comment}{/*\ All\ known\ point-\/code\ formats\ have\ a\ length\ of\ or\ below\ 24\ bit.}}
\DoxyCodeLine{00026\ \textcolor{comment}{\ *\ A\ point-\/code\ value\ exceeding\ that\ is\ used\ to\ indicate\ an\ unset\ PC.\ */}}
\DoxyCodeLine{00027\ \textcolor{preprocessor}{\#define\ OSMO\_SS7\_PC\_INVALID\ 0xffffffff}}
\DoxyCodeLine{00028\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_pc\_is\_valid(uint32\_t\ pc)}
\DoxyCodeLine{00029\ \{}
\DoxyCodeLine{00030\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ pc\ <=\ 0x00ffffff;}
\DoxyCodeLine{00031\ \}}
\DoxyCodeLine{00032\ }
\DoxyCodeLine{00033\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00034\ \textcolor{comment}{\ *\ xUA\ Servers}}
\DoxyCodeLine{00035\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00036\ }
\DoxyCodeLine{00037\ \textcolor{keyword}{struct\ }osmo\_xua\_layer\_manager;}
\DoxyCodeLine{00038\ }
\DoxyCodeLine{00039\ \textcolor{keyword}{struct\ }osmo\_xua\_server;}
\DoxyCodeLine{00040\ }
\DoxyCodeLine{00041\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00042\ \textcolor{comment}{\ *\ SS7\ Instances}}
\DoxyCodeLine{00043\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00044\ }
\DoxyCodeLine{00045\ \textcolor{keyword}{struct\ }osmo\_ss7\_pc\_fmt;}
\DoxyCodeLine{00046\ \textcolor{keyword}{struct\ }osmo\_ss7\_instance;}
\DoxyCodeLine{00047\ }
\DoxyCodeLine{00048\ \textcolor{keyword}{struct\ }osmo\_ss7\_instance\ *osmo\_ss7\_instance\_find(uint32\_t\ \textcolor{keywordtype}{id});}
\DoxyCodeLine{00049\ \textcolor{keyword}{struct\ }osmo\_ss7\_instance\ *}
\DoxyCodeLine{00050\ osmo\_ss7\_instance\_find\_or\_create(\textcolor{keywordtype}{void}\ *ctx,\ uint32\_t\ \textcolor{keywordtype}{id});}
\DoxyCodeLine{00051\ \textcolor{keywordtype}{void}\ osmo\_ss7\_instance\_destroy(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00052\ }
\DoxyCodeLine{00053\ uint32\_t\ osmo\_ss7\_instance\_get\_id(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00054\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_instance\_get\_name(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00055\ }
\DoxyCodeLine{00056\ \textcolor{keywordtype}{int}\ osmo\_ss7\_instance\_set\_pc\_fmt(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,}
\DoxyCodeLine{00057\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint8\_t\ c0,\ uint8\_t\ c1,\ uint8\_t\ c2);}
\DoxyCodeLine{00058\ \textcolor{keyword}{const}\ \textcolor{keyword}{struct\ }osmo\_ss7\_pc\_fmt\ *}
\DoxyCodeLine{00059\ osmo\_ss7\_instance\_get\_pc\_fmt(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00060\ }
\DoxyCodeLine{00061\ uint32\_t\ osmo\_ss7\_instance\_get\_primary\_pc(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00062\ }
\DoxyCodeLine{00063\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *osmo\_ss7\_ensure\_sccp(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00064\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *osmo\_ss7\_get\_sccp(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00065\ }
\DoxyCodeLine{00066\ \textcolor{keywordtype}{int}\ osmo\_ss7\_find\_free\_rctx(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst);}
\DoxyCodeLine{00067\ }
\DoxyCodeLine{00068\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_pc\_is\_local(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ pc);}
\DoxyCodeLine{00069\ \textcolor{keywordtype}{int}\ osmo\_ss7\_pointcode\_parse(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str);}
\DoxyCodeLine{00070\ \textcolor{keywordtype}{int}\ osmo\_ss7\_pointcode\_parse\_mask\_or\_len(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *in);}
\DoxyCodeLine{00071\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_pointcode\_print\_buf(\textcolor{keywordtype}{char}\ *buf,\ \textcolor{keywordtype}{size\_t}\ buf\_len,\ \textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ pc);}
\DoxyCodeLine{00072\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_pointcode\_print(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ pc);}
\DoxyCodeLine{00073\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_pointcode\_print2(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ pc);}
\DoxyCodeLine{00074\ }
\DoxyCodeLine{00075\ uint8\_t\ osmo\_ss7\_pc\_width(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_pc\_fmt\ *pc\_fmt);}
\DoxyCodeLine{00076\ uint32\_t\ osmo\_ss7\_pc\_normalize(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_pc\_fmt\ *pc\_fmt,\ uint32\_t\ pc);}
\DoxyCodeLine{00077\ }
\DoxyCodeLine{00078\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00079\ \textcolor{comment}{\ *\ MTP\ Users\ (Users\ of\ MTP,\ such\ as\ SCCP\ or\ ISUP)}}
\DoxyCodeLine{00080\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00082\ \textcolor{keyword}{struct\ }osmo\_ss7\_user;}
\DoxyCodeLine{00083\ \textcolor{keyword}{struct\ }osmo\_mtp\_prim;}
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00085\ }
\DoxyCodeLine{00086\ \textcolor{keyword}{struct\ }osmo\_ss7\_user\ *osmo\_ss7\_user\_create(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name);}
\DoxyCodeLine{00087\ \textcolor{keywordtype}{void}\ osmo\_ss7\_user\_destroy(\textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user);}
\DoxyCodeLine{00088\ }
\DoxyCodeLine{00089\ \textcolor{keyword}{struct\ }osmo\_ss7\_instance\ *osmo\_ss7\_user\_get\_instance(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user);}
\DoxyCodeLine{00090\ \textcolor{keywordtype}{void}\ osmo\_ss7\_user\_set\_prim\_cb(\textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user,\ osmo\_prim\_cb\ prim\_cb);}
\DoxyCodeLine{00091\ \textcolor{keywordtype}{void}\ osmo\_ss7\_user\_set\_priv(\textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user,\ \textcolor{keywordtype}{void}\ *priv);}
\DoxyCodeLine{00092\ \textcolor{keywordtype}{void}\ *osmo\_ss7\_user\_get\_priv(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user);}
\DoxyCodeLine{00093\ }
\DoxyCodeLine{00094\ \textcolor{keywordtype}{int}\ osmo\_ss7\_user\_register(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint8\_t\ service\_ind,}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user);}
\DoxyCodeLine{00096\ \textcolor{keywordtype}{int}\ osmo\_ss7\_user\_unregister(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint8\_t\ service\_ind,}
\DoxyCodeLine{00097\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ osmo\_ss7\_user\ *user);}
\DoxyCodeLine{00098\ }
\DoxyCodeLine{00099\ \textcolor{comment}{/*\ SS7\ User\ wants\ to\ issue\ MTP-\/TRANSFER.req\ */}}
\DoxyCodeLine{00100\ \textcolor{keywordtype}{int}\ osmo\_ss7\_user\_mtp\_xfer\_req(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,}
\DoxyCodeLine{00101\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ osmo\_mtp\_prim\ *omp);}
\DoxyCodeLine{00102\ }
\DoxyCodeLine{00103\ }
\DoxyCodeLine{00104\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00105\ \textcolor{comment}{\ *\ SCCP\ Instance}}
\DoxyCodeLine{00106\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00107\ }
\DoxyCodeLine{00108\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance;}
\DoxyCodeLine{00109\ }
\DoxyCodeLine{00110\ \textcolor{keywordtype}{void}\ osmo\_sccp\_set\_max\_optional\_data(\textcolor{keyword}{struct}\ osmo\_sccp\_instance\ *inst,\ \textcolor{keywordtype}{int}\ val);}
\DoxyCodeLine{00111\ }
\DoxyCodeLine{00112\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00113\ \textcolor{comment}{\ *\ SS7\ Links}}
\DoxyCodeLine{00114\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00115\ }
\DoxyCodeLine{00116\ \textcolor{keyword}{struct\ }osmo\_ss7\_link;}
\DoxyCodeLine{00117\ }
\DoxyCodeLine{00118\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00119\ \textcolor{comment}{\ *\ SS7\ Linksets}}
\DoxyCodeLine{00120\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00122\ \textcolor{keyword}{struct\ }osmo\_ss7\_linkset;}
\DoxyCodeLine{00123\ }
\DoxyCodeLine{00124\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00125\ \textcolor{comment}{\ *\ SS7\ Routes}}
\DoxyCodeLine{00126\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00128\ \textcolor{keyword}{struct\ }osmo\_ss7\_route;}
\DoxyCodeLine{00129\ }
\DoxyCodeLine{00130\ \textcolor{keyword}{struct\ }osmo\_ss7\_route\ *}
\DoxyCodeLine{00131\ osmo\_ss7\_route\_lookup(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ dpc)}
\DoxyCodeLine{00132\ \ \ \ \ \ \ \ \ OSMO\_DEPRECATED(\textcolor{stringliteral}{"{}Use\ internal\ ss7\_instance\_lookup\_route()\ instead"{}});}
\DoxyCodeLine{00133\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_route\_print(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_route\ *rt);}
\DoxyCodeLine{00134\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_route\_name(\textcolor{keyword}{struct}\ osmo\_ss7\_route\ *rt,\ \textcolor{keywordtype}{bool}\ list\_asps);}
\DoxyCodeLine{00135\ \textcolor{keyword}{struct\ }osmo\_ss7\_as\ *}
\DoxyCodeLine{00136\ osmo\_ss7\_route\_get\_dest\_as(\textcolor{keyword}{struct}\ osmo\_ss7\_route\ *rt);}
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00138\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00139\ \textcolor{comment}{\ *\ SS7\ Routing\ key}}
\DoxyCodeLine{00140\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00142\ \textcolor{keyword}{struct\ }osmo\_ss7\_routing\_key\ \{}
\DoxyCodeLine{00143\ \ \ \ \ \ \ \ \ uint32\_t\ context;}
\DoxyCodeLine{00144\ \ \ \ \ \ \ \ \ uint32\_t\ l\_rk\_id;}
\DoxyCodeLine{00145\ }
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ uint32\_t\ pc;}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ uint8\_t\ si;}
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ uint32\_t\ ssn;}
\DoxyCodeLine{00149\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ FIXME:\ more\ complex\ routing\ keys\ */}}
\DoxyCodeLine{00150\ \};}
\DoxyCodeLine{00151\ }
\DoxyCodeLine{00152\ }
\DoxyCodeLine{00153\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00154\ \textcolor{comment}{\ *\ SS7\ ASP\ Protocols}}
\DoxyCodeLine{00155\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00156\ }
\DoxyCodeLine{00157\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ \{}
\DoxyCodeLine{00158\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_PROT\_NONE,}
\DoxyCodeLine{00159\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_PROT\_SUA,}
\DoxyCodeLine{00160\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_PROT\_M3UA,}
\DoxyCodeLine{00161\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_PROT\_IPA,}
\DoxyCodeLine{00162\ \ \ \ \ \ \ \ \ \_NUM\_OSMO\_SS7\_ASP\_PROT}
\DoxyCodeLine{00163\ \};}
\DoxyCodeLine{00164\ }
\DoxyCodeLine{00165\ \textcolor{keyword}{extern}\ \textcolor{keyword}{struct\ }value\_string\ osmo\_ss7\_asp\_protocol\_vals[];}
\DoxyCodeLine{00166\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *}
\DoxyCodeLine{00167\ osmo\_ss7\_asp\_protocol\_name(\textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ mode)}
\DoxyCodeLine{00168\ \{}
\DoxyCodeLine{00169\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ get\_value\_string(osmo\_ss7\_asp\_protocol\_vals,\ mode);}
\DoxyCodeLine{00170\ \}}
\DoxyCodeLine{00171\ }
\DoxyCodeLine{00172\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_protocol\_port(\textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ prot);}
\DoxyCodeLine{00173\ }
\DoxyCodeLine{00174\ }
\DoxyCodeLine{00175\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00176\ \textcolor{comment}{\ *\ SS7\ AS\ Traffic\ Mode}}
\DoxyCodeLine{00177\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00178\ }
\DoxyCodeLine{00179\ \ \textcolor{comment}{/*\ Traffic\ mode\ implementations\ which\ can\ be\ configured\ on\ an\ AS,\ either\ by}}
\DoxyCodeLine{00180\ \textcolor{comment}{\ \ *\ peer\ (eg.\ RFC4666\ M3UA\ "{}Traffic\ Mode\ Type"{})\ or\ locally\ through\ VTY.}}
\DoxyCodeLine{00181\ \textcolor{comment}{\ \ *\ Note:\ This\ is\ related\ but\ not\ exactly\ RFC4666\ M3UA\ "{}Traffic\ Mode\ Type"{}\ (enum}}
\DoxyCodeLine{00182\ \textcolor{comment}{\ \ *\ m3ua\_traffic\_mode).\ */}}
\DoxyCodeLine{00183\ \textcolor{keyword}{enum}\ osmo\_ss7\_as\_traffic\_mode\ \{}
\DoxyCodeLine{00184\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ RFC4666\ M3UA\ "{}Traffic\ Mode\ Type"{}\ "{}Override"{}.\ Default\ traffic\ mode:\ */}}
\DoxyCodeLine{00185\ \ \ \ \ \ \ \ \ OSMO\_SS7\_AS\_TMOD\_OVERRIDE\ =\ 0,}
\DoxyCodeLine{00186\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ RFC4666\ M3UA\ "{}Traffic\ Mode\ Type"{}\ "{}Broadcast"{}:\ */}}
\DoxyCodeLine{00187\ \ \ \ \ \ \ \ \ OSMO\_SS7\_AS\_TMOD\_BCAST,}
\DoxyCodeLine{00188\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ RFC4666\ M3UA\ "{}Traffic\ Mode\ Type"{}\ "{}Loadshare"{},}}
\DoxyCodeLine{00189\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ *\ traffic\ distribution\ based\ on\ OPC+SLS:\ */}}
\DoxyCodeLine{00190\ \ \ \ \ \ \ \ \ OSMO\_SS7\_AS\_TMOD\_LOADSHARE,}
\DoxyCodeLine{00191\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ RFC4666\ M3UA\ "{}Traffic\ Mode\ Type"{}\ "{}Loadshare"{},}}
\DoxyCodeLine{00192\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ *\ traffic\ distribution\ implemented\ as\ round-\/robin:\ */}}
\DoxyCodeLine{00193\ \ \ \ \ \ \ \ \ OSMO\_SS7\_AS\_TMOD\_ROUNDROBIN,}
\DoxyCodeLine{00194\ \ \ \ \ \ \ \ \ \_NUM\_OSMO\_SS7\_ASP\_TMOD}
\DoxyCodeLine{00195\ \};}
\DoxyCodeLine{00196\ }
\DoxyCodeLine{00197\ \textcolor{keyword}{extern}\ \textcolor{keyword}{struct\ }value\_string\ osmo\_ss7\_as\_traffic\_mode\_vals[];}
\DoxyCodeLine{00198\ }
\DoxyCodeLine{00199\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *}
\DoxyCodeLine{00200\ osmo\_ss7\_as\_traffic\_mode\_name(\textcolor{keyword}{enum}\ osmo\_ss7\_as\_traffic\_mode\ mode)}
\DoxyCodeLine{00201\ \{}
\DoxyCodeLine{00202\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ get\_value\_string(osmo\_ss7\_as\_traffic\_mode\_vals,\ mode);}
\DoxyCodeLine{00203\ \}}
\DoxyCodeLine{00204\ }
\DoxyCodeLine{00205\ \textcolor{keyword}{enum}\ osmo\_ss7\_as\_traffic\_mode\ osmo\_ss7\_tmode\_from\_xua(uint32\_t\ in);}
\DoxyCodeLine{00206\ \textcolor{keywordtype}{int}\ osmo\_ss7\_tmode\_to\_xua(\textcolor{keyword}{enum}\ osmo\_ss7\_as\_traffic\_mode\ tmod);}
\DoxyCodeLine{00207\ }
\DoxyCodeLine{00208\ }
\DoxyCodeLine{00209\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00210\ \textcolor{comment}{\ *\ SS7\ Application\ Servers}}
\DoxyCodeLine{00211\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00212\ }
\DoxyCodeLine{00213\ \textcolor{keyword}{struct\ }osmo\_ss7\_as;}
\DoxyCodeLine{00214\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp;}
\DoxyCodeLine{00215\ }
\DoxyCodeLine{00216\ \textcolor{keyword}{struct\ }osmo\_ss7\_as\ *}
\DoxyCodeLine{00217\ osmo\_ss7\_as\_find\_by\_name(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name);}
\DoxyCodeLine{00218\ \textcolor{keyword}{struct\ }osmo\_ss7\_as\ *}
\DoxyCodeLine{00219\ osmo\_ss7\_as\_find\_by\_rctx(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ rctx);}
\DoxyCodeLine{00220\ \textcolor{keyword}{struct\ }osmo\_ss7\_as\ *}
\DoxyCodeLine{00221\ osmo\_ss7\_as\_find\_by\_l\_rk\_id(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ uint32\_t\ l\_rk\_id);}
\DoxyCodeLine{00222\ \textcolor{keyword}{struct\ }osmo\_ss7\_as\ *osmo\_ss7\_as\_find\_by\_proto(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,}
\DoxyCodeLine{00223\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto);}
\DoxyCodeLine{00224\ \textcolor{keyword}{struct\ }osmo\_ss7\_as\ *}
\DoxyCodeLine{00225\ osmo\_ss7\_as\_find\_or\_create(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,}
\DoxyCodeLine{00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto);}
\DoxyCodeLine{00227\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ osmo\_ss7\_as\_get\_asp\_protocol(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as);}
\DoxyCodeLine{00228\ \textcolor{keywordtype}{int}\ osmo\_ss7\_as\_add\_asp(\textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *asp\_name);}
\DoxyCodeLine{00229\ \textcolor{keywordtype}{int}\ osmo\_ss7\_as\_del\_asp(\textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *asp\_name);}
\DoxyCodeLine{00230\ \textcolor{keywordtype}{void}\ osmo\_ss7\_as\_destroy(\textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as);}
\DoxyCodeLine{00231\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_as\_has\_asp(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as,}
\DoxyCodeLine{00232\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00233\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *osmo\_ss7\_as\_select\_asp(\textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as);}
\DoxyCodeLine{00234\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_as\_down(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as);}
\DoxyCodeLine{00235\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_as\_active(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as);}
\DoxyCodeLine{00236\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_as\_tmode\_compatible\_xua(\textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as,\ uint32\_t\ m3ua\_tmt);}
\DoxyCodeLine{00237\ }
\DoxyCodeLine{00238\ }
\DoxyCodeLine{00239\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00240\ \textcolor{comment}{\ *\ SS7\ Application\ Server\ Processes}}
\DoxyCodeLine{00241\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00242\ }
\DoxyCodeLine{00243\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_admin\_state\ \{}
\DoxyCodeLine{00245\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_ADM\_S\_SHUTDOWN,}
\DoxyCodeLine{00247\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_ADM\_S\_BLOCKED,}
\DoxyCodeLine{00249\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_ADM\_S\_ENABLED,}
\DoxyCodeLine{00250\ \};}
\DoxyCodeLine{00251\ \textcolor{keyword}{extern}\ \textcolor{keyword}{const}\ \textcolor{keyword}{struct\ }value\_string\ osmo\_ss7\_asp\_admin\_state\_names[];}
\DoxyCodeLine{00252\ }
\DoxyCodeLine{00253\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_role\ \{}
\DoxyCodeLine{00254\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_ROLE\_ASP,}
\DoxyCodeLine{00255\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_ROLE\_SG,}
\DoxyCodeLine{00256\ \ \ \ \ \ \ \ \ OSMO\_SS7\_ASP\_ROLE\_IPSP,}
\DoxyCodeLine{00257\ \};}
\DoxyCodeLine{00258\ }
\DoxyCodeLine{00259\ \textcolor{keyword}{extern}\ \textcolor{keyword}{const}\ \textcolor{keyword}{struct\ }value\_string\ osmo\_ss7\_asp\_role\_names[];}
\DoxyCodeLine{00260\ }
\DoxyCodeLine{00261\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp;}
\DoxyCodeLine{00262\ }
\DoxyCodeLine{00264\ \textcolor{preprocessor}{\#define\ OSMO\_SS7\_ASP\_QUIRK\_NO\_NOTIFY\ \ \ \ \ \ \ \ \ \ \ \ 0x00000001}}
\DoxyCodeLine{00266\ \textcolor{preprocessor}{\#define\ OSMO\_SS7\_ASP\_QUIRK\_DAUD\_IN\_ASP\ \ \ \ \ \ \ \ \ \ 0x00000002}}
\DoxyCodeLine{00268\ \textcolor{preprocessor}{\#define\ OSMO\_SS7\_ASP\_QUIRK\_SNM\_INACTIVE\ \ \ \ \ \ \ \ \ 0x00000004}}
\DoxyCodeLine{00269\ }
\DoxyCodeLine{00270\ }
\DoxyCodeLine{00271\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *}
\DoxyCodeLine{00272\ osmo\_ss7\_asp\_find\_by\_name(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name);}
\DoxyCodeLine{00273\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *}
\DoxyCodeLine{00274\ osmo\_ss7\_asp\_find\_by\_proto(\textcolor{keyword}{struct}\ osmo\_ss7\_as\ *as,}
\DoxyCodeLine{00275\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto);}
\DoxyCodeLine{00276\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *}
\DoxyCodeLine{00277\ osmo\_ss7\_asp\_find(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,}
\DoxyCodeLine{00278\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ remote\_port,\ uint16\_t\ local\_port,}
\DoxyCodeLine{00279\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto)}
\DoxyCodeLine{00280\ \ \ \ \ \ \ \ \ OSMO\_DEPRECATED(\textcolor{stringliteral}{"{}Use\ osmo\_ss7\_asp\_find2()\ instead"{}});}
\DoxyCodeLine{00281\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *}
\DoxyCodeLine{00282\ osmo\_ss7\_asp\_find2(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,}
\DoxyCodeLine{00283\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ remote\_port,\ uint16\_t\ local\_port,}
\DoxyCodeLine{00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ trans\_proto,\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto);}
\DoxyCodeLine{00285\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *}
\DoxyCodeLine{00286\ osmo\_ss7\_asp\_find\_or\_create(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,}
\DoxyCodeLine{00287\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ remote\_port,\ uint16\_t\ local\_port,}
\DoxyCodeLine{00288\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto)}
\DoxyCodeLine{00289\ \ \ \ \ \ \ \ \ OSMO\_DEPRECATED(\textcolor{stringliteral}{"{}Use\ osmo\_ss7\_asp\_find\_or\_create2()\ instead"{}});}
\DoxyCodeLine{00290\ \textcolor{keyword}{struct\ }osmo\_ss7\_asp\ *}
\DoxyCodeLine{00291\ osmo\_ss7\_asp\_find\_or\_create2(\textcolor{keyword}{struct}\ osmo\_ss7\_instance\ *inst,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,}
\DoxyCodeLine{00292\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ remote\_port,\ uint16\_t\ local\_port,}
\DoxyCodeLine{00293\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ trans\_proto,\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ proto);}
\DoxyCodeLine{00294\ \textcolor{keywordtype}{void}\ osmo\_ss7\_asp\_disconnect(\textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00295\ \textcolor{keywordtype}{void}\ osmo\_ss7\_asp\_destroy(\textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00296\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_send(\textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp,\ \textcolor{keyword}{struct}\ msgb\ *msg);}
\DoxyCodeLine{00297\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_restart(\textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00298\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_use\_default\_lm(\textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp,\ \textcolor{keywordtype}{int}\ log\_level);}
\DoxyCodeLine{00299\ \textcolor{keywordtype}{bool}\ osmo\_ss7\_asp\_active(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00300\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_get\_log\_subsys(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00301\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *osmo\_ss7\_asp\_get\_name(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00302\ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ osmo\_ss7\_asp\_get\_proto(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00303\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_get\_trans\_proto(\textcolor{keyword}{const}\ \textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp);}
\DoxyCodeLine{00304\ }
\DoxyCodeLine{00312\ \textcolor{keyword}{typedef}\ \textcolor{keywordtype}{int}\ osmo\_ss7\_asp\_rx\_unknown\_cb(\textcolor{keyword}{struct}\ osmo\_ss7\_asp\ *asp,\ \textcolor{keywordtype}{int}\ ppid\_mux,\ \textcolor{keyword}{struct}\ msgb\ *msg);}
\DoxyCodeLine{00313\ }
\DoxyCodeLine{00314\ \textcolor{keywordtype}{void}\ osmo\_ss7\_register\_rx\_unknown\_cb(osmo\_ss7\_asp\_rx\_unknown\_cb\ *cb);}
\DoxyCodeLine{00315\ }
\DoxyCodeLine{00316\ }
\DoxyCodeLine{00317\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00318\ \textcolor{comment}{\ *\ Simple\ Client}}
\DoxyCodeLine{00319\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00320\ }
\DoxyCodeLine{00321\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *}
\DoxyCodeLine{00322\ osmo\_sccp\_simple\_client(\textcolor{keywordtype}{void}\ *ctx,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,\ uint32\_t\ default\_pc,}
\DoxyCodeLine{00323\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ prot,\ \textcolor{keywordtype}{int}\ default\_local\_port,}
\DoxyCodeLine{00324\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *default\_local\_ip,\ \textcolor{keywordtype}{int}\ default\_remote\_port,}
\DoxyCodeLine{00325\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *default\_remote\_ip);}
\DoxyCodeLine{00326\ }
\DoxyCodeLine{00327\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *}
\DoxyCodeLine{00328\ osmo\_sccp\_simple\_client\_on\_ss7\_id(\textcolor{keywordtype}{void}\ *ctx,\ uint32\_t\ ss7\_id,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,}
\DoxyCodeLine{00329\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint32\_t\ default\_pc,}
\DoxyCodeLine{00330\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ prot,}
\DoxyCodeLine{00331\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ default\_local\_port,}
\DoxyCodeLine{00332\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *default\_local\_ip,}
\DoxyCodeLine{00333\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ default\_remote\_port,}
\DoxyCodeLine{00334\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *default\_remote\_ip);}
\DoxyCodeLine{00335\ }
\DoxyCodeLine{00336\ \textcolor{comment}{/***********************************************************************}}
\DoxyCodeLine{00337\ \textcolor{comment}{\ *\ Simple\ Server}}
\DoxyCodeLine{00338\ \textcolor{comment}{\ ***********************************************************************/}}
\DoxyCodeLine{00339\ }
\DoxyCodeLine{00340\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *}
\DoxyCodeLine{00341\ osmo\_sccp\_simple\_server(\textcolor{keywordtype}{void}\ *ctx,\ uint32\_t\ pc,}
\DoxyCodeLine{00342\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ prot,\ \textcolor{keywordtype}{int}\ local\_port,}
\DoxyCodeLine{00343\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *local\_ip);}
\DoxyCodeLine{00344\ }
\DoxyCodeLine{00345\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *}
\DoxyCodeLine{00346\ osmo\_sccp\_simple\_server\_on\_ss7\_id(\textcolor{keywordtype}{void}\ *ctx,\ uint32\_t\ ss7\_id,\ uint32\_t\ pc,}
\DoxyCodeLine{00347\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ prot,}
\DoxyCodeLine{00348\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ local\_port,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *local\_ip);}
\DoxyCodeLine{00349\ }
\DoxyCodeLine{00350\ \textcolor{keyword}{struct\ }osmo\_sccp\_instance\ *}
\DoxyCodeLine{00351\ osmo\_sccp\_simple\_server\_add\_clnt(\textcolor{keyword}{struct}\ osmo\_sccp\_instance\ *inst,}
\DoxyCodeLine{00352\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ osmo\_ss7\_asp\_protocol\ prot,}
\DoxyCodeLine{00353\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,\ uint32\_t\ pc,}
\DoxyCodeLine{00354\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ local\_port,\ \textcolor{keywordtype}{int}\ remote\_port,}
\DoxyCodeLine{00355\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *remote\_ip);}
\DoxyCodeLine{00356\ }
\DoxyCodeLine{00357\ \textcolor{comment}{/*\ VTY\ related\ */}}
\DoxyCodeLine{00358\ \textcolor{keyword}{struct\ }vty;}
\DoxyCodeLine{00359\ \textcolor{keywordtype}{void}\ osmo\_ss7\_vty\_init\_asp(\textcolor{keywordtype}{void}\ *ctx);}
\DoxyCodeLine{00360\ \textcolor{keywordtype}{void}\ osmo\_ss7\_vty\_init\_sg(\textcolor{keywordtype}{void}\ *ctx);}
\DoxyCodeLine{00361\ \textcolor{keywordtype}{int}\ osmo\_ss7\_vty\_go\_parent(\textcolor{keyword}{struct}\ vty\ *vty);}
\DoxyCodeLine{00362\ \textcolor{keywordtype}{int}\ osmo\_ss7\_is\_config\_node(\textcolor{keyword}{struct}\ vty\ *vty,\ \textcolor{keywordtype}{int}\ node)}
\DoxyCodeLine{00363\ \ \ \ \ \ \ \ \ OSMO\_DEPRECATED(\textcolor{stringliteral}{"{}Implicit\ parent\ node\ tracking\ has\ replaced\ the\ use\ of\ this\ callback.\ "{}}}
\DoxyCodeLine{00364\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}This\ callback\ is\ no\ longer\ called,\ ever,\ and\ can\ be\ left\ NULL."{}});}

\end{DoxyCode}
