\doxysection{xua\+\_\+internal.\+h}
\label{xua__internal_8h_source}\index{src/xua\_internal.h@{src/xua\_internal.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 <unistd.h>}}
\DoxyCodeLine{4 \textcolor{preprocessor}{\#include <stdint.h>}}
\DoxyCodeLine{5 }
\DoxyCodeLine{6 \textcolor{preprocessor}{\#include <osmocom/core/tdef.h>}}
\DoxyCodeLine{7 \textcolor{preprocessor}{\#include <osmocom/sigtran/osmo\_ss7.h>}}
\DoxyCodeLine{8 \textcolor{preprocessor}{\#include "{}xua\_msg.h"{}}}
\DoxyCodeLine{9 }
\DoxyCodeLine{10 \textcolor{preprocessor}{\#define M3UA\_MSG\_SIZE 2048}}
\DoxyCodeLine{11 \textcolor{preprocessor}{\#define M3UA\_MSG\_HEADROOM 512}}
\DoxyCodeLine{12 }
\DoxyCodeLine{13 \textcolor{keyword}{struct }osmo\_sccp\_addr;}
\DoxyCodeLine{14 \textcolor{keyword}{struct }m3ua\_data\_hdr;}
\DoxyCodeLine{15 }
\DoxyCodeLine{16 \textcolor{keywordtype}{int} sua\_addr\_parse\_part(\textcolor{keyword}{struct} osmo\_sccp\_addr *out,}
\DoxyCodeLine{17                         \textcolor{keyword}{const} \textcolor{keyword}{struct} xua\_msg\_part *param);}
\DoxyCodeLine{18 \textcolor{keywordtype}{int} sua\_addr\_parse(\textcolor{keyword}{struct} osmo\_sccp\_addr *out, \textcolor{keyword}{struct} xua\_msg *xua, uint16\_t iei);}
\DoxyCodeLine{19 }
\DoxyCodeLine{20 \textcolor{keywordtype}{int} sua\_parse\_gt(\textcolor{keyword}{struct} osmo\_sccp\_gt *gt, \textcolor{keyword}{const} uint8\_t *data, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} datalen);}
\DoxyCodeLine{21 }
\DoxyCodeLine{22 \textcolor{keyword}{struct }xua\_msg *osmo\_sccp\_to\_xua(\textcolor{keyword}{const} \textcolor{keyword}{struct} msgb *msg);}
\DoxyCodeLine{23 \textcolor{keyword}{struct }msgb *osmo\_sua\_to\_sccp(\textcolor{keyword}{const} \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{24 }
\DoxyCodeLine{25 \textcolor{keywordtype}{int} sua\_rx\_msg(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} msgb *msg);}
\DoxyCodeLine{26 }
\DoxyCodeLine{27 \textcolor{keywordtype}{int} sua\_tx\_xua\_as(\textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{28 \textcolor{keywordtype}{void} sua\_tx\_snm\_available(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{29                           \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc, \textcolor{keyword}{const} uint32\_t *aff\_ssn,}
\DoxyCodeLine{30                           \textcolor{keyword}{const} uint32\_t *smi, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string, \textcolor{keywordtype}{bool} available);}
\DoxyCodeLine{31 \textcolor{keywordtype}{void} sua\_tx\_snm\_congestion(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{32                            \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc, \textcolor{keyword}{const} uint32\_t *ssn,}
\DoxyCodeLine{33                            \textcolor{keyword}{const} uint8\_t cong\_level, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{34 \textcolor{keywordtype}{void} sua\_tx\_snm\_daud(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{35                      \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc, \textcolor{keyword}{const} uint32\_t *aff\_ssn,}
\DoxyCodeLine{36                      \textcolor{keyword}{const} uint32\_t *smi, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{37 \textcolor{keywordtype}{void} sua\_tx\_dupu(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{38                  uint32\_t dpc, uint16\_t user, uint16\_t cause, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_str);}
\DoxyCodeLine{39 }
\DoxyCodeLine{40 \textcolor{keyword}{struct }xua\_msg *sua\_encode\_dupu(\textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{41                                 uint32\_t dpc, uint16\_t user, uint16\_t cause,}
\DoxyCodeLine{42                                 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{43 }
\DoxyCodeLine{44 \textcolor{keyword}{struct }xua\_msg *sua\_gen\_cldr(\textcolor{keyword}{const} \textcolor{keyword}{struct} xua\_msg *xua\_in, uint32\_t route\_ctx, uint32\_t ret\_cause);}
\DoxyCodeLine{45 }
\DoxyCodeLine{46 \textcolor{keyword}{struct }msgb *m3ua\_to\_msg(\textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{47 \textcolor{keywordtype}{int} m3ua\_tx\_xua\_as(\textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{48 \textcolor{keywordtype}{void} m3ua\_tx\_snm\_available(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{49                            \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc,}
\DoxyCodeLine{50                            \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string, \textcolor{keywordtype}{bool} available);}
\DoxyCodeLine{51 \textcolor{keywordtype}{void} m3ua\_tx\_snm\_congestion(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{52                             \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc,}
\DoxyCodeLine{53                             \textcolor{keyword}{const} uint32\_t *concerned\_dpc, \textcolor{keyword}{const} uint8\_t *cong\_level,}
\DoxyCodeLine{54                             \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{55 \textcolor{keywordtype}{void} m3ua\_tx\_snm\_daud(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{56                       \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{57 \textcolor{keywordtype}{void} m3ua\_tx\_dupu(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{58                   uint32\_t dpc, uint16\_t user, uint16\_t cause, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_str);}
\DoxyCodeLine{59 }
\DoxyCodeLine{60 \textcolor{keyword}{struct }xua\_msg *m3ua\_encode\_duna(\textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{61                                  \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc,}
\DoxyCodeLine{62                                  \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{63 \textcolor{keyword}{struct }xua\_msg *m3ua\_encode\_dupu(\textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{64                                  uint32\_t dpc, uint16\_t user, uint16\_t cause,}
\DoxyCodeLine{65                                  \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_string);}
\DoxyCodeLine{66 }
\DoxyCodeLine{67 \textcolor{keywordtype}{void} xua\_tx\_snm\_available(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{68                           \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc,}
\DoxyCodeLine{69                           \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_str, \textcolor{keywordtype}{bool} available);}
\DoxyCodeLine{70 }
\DoxyCodeLine{71 \textcolor{keywordtype}{void} xua\_snm\_rx\_daud(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{72 \textcolor{keywordtype}{void} xua\_snm\_rx\_duna(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{73 \textcolor{keywordtype}{void} xua\_snm\_rx\_dava(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{74 \textcolor{keywordtype}{void} xua\_snm\_rx\_dupu(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{75 \textcolor{keywordtype}{void} xua\_snm\_rx\_scon(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{76 \textcolor{keywordtype}{int} m3ua\_rx\_msg(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} msgb *msg);}
\DoxyCodeLine{77 }
\DoxyCodeLine{78 \textcolor{keyword}{struct }msgb *m3ua\_msgb\_alloc(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *name);}
\DoxyCodeLine{79 \textcolor{keyword}{struct }xua\_msg *m3ua\_xfer\_from\_data(\textcolor{keyword}{const} \textcolor{keyword}{struct} m3ua\_data\_hdr *data\_hdr,}
\DoxyCodeLine{80                                     \textcolor{keyword}{const} uint8\_t *data, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} data\_len);}
\DoxyCodeLine{81 \textcolor{keyword}{struct }m3ua\_data\_hdr *data\_hdr\_from\_m3ua(\textcolor{keyword}{const} \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{82 \textcolor{keywordtype}{void} m3ua\_dh\_to\_xfer\_param(\textcolor{keyword}{struct} osmo\_mtp\_transfer\_param *param,}
\DoxyCodeLine{83                            \textcolor{keyword}{const} \textcolor{keyword}{struct} m3ua\_data\_hdr *mdh);}
\DoxyCodeLine{84 \textcolor{keywordtype}{void} mtp\_xfer\_param\_to\_m3ua\_dh(\textcolor{keyword}{struct} m3ua\_data\_hdr *mdh,}
\DoxyCodeLine{85                                 \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_mtp\_transfer\_param *param);}
\DoxyCodeLine{86 }
\DoxyCodeLine{87 }
\DoxyCodeLine{88 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }xua\_msg\_class m3ua\_msg\_class\_mgmt;}
\DoxyCodeLine{89 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }xua\_msg\_class m3ua\_msg\_class\_snm;}
\DoxyCodeLine{90 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }xua\_msg\_class m3ua\_msg\_class\_rkm;}
\DoxyCodeLine{91 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }xua\_msg\_class m3ua\_msg\_class\_aspsm;}
\DoxyCodeLine{92 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }xua\_msg\_class m3ua\_msg\_class\_asptm;}
\DoxyCodeLine{93 }
\DoxyCodeLine{94 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_snm\_msgt\_names[];}
\DoxyCodeLine{95 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_err\_names[];}
\DoxyCodeLine{96 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_ntfy\_type\_names[];}
\DoxyCodeLine{97 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_ntfy\_stchg\_names[];}
\DoxyCodeLine{98 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_ntfy\_other\_names[];}
\DoxyCodeLine{99 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *m3ua\_ntfy\_info\_name(uint16\_t ntfy\_status\_type, uint16\_t ntfy\_status\_info);}
\DoxyCodeLine{100 }
\DoxyCodeLine{101 \textcolor{keyword}{struct }xua\_msg *m3ua\_encode\_notify(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_xlm\_prim\_notify *npar);}
\DoxyCodeLine{102 \textcolor{keywordtype}{int} m3ua\_decode\_notify(\textcolor{keyword}{struct} osmo\_xlm\_prim\_notify *npar, \textcolor{keywordtype}{void} *ctx,}
\DoxyCodeLine{103                         \textcolor{keyword}{const} \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{104 \textcolor{keywordtype}{int} m3ua\_rx\_rkm(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{105 }
\DoxyCodeLine{106 \textcolor{keyword}{struct }osmo\_xlm\_prim *xua\_xlm\_prim\_alloc(\textcolor{keyword}{enum} osmo\_xlm\_prim\_type prim\_type,}
\DoxyCodeLine{107                                          \textcolor{keyword}{enum} osmo\_prim\_operation op);}
\DoxyCodeLine{108 }
\DoxyCodeLine{109 \textcolor{keywordtype}{void} xua\_asp\_send\_xlm\_prim(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} osmo\_xlm\_prim *prim);}
\DoxyCodeLine{110 \textcolor{keywordtype}{void} xua\_asp\_send\_xlm\_prim\_simple(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp,}
\DoxyCodeLine{111                                 \textcolor{keyword}{enum} osmo\_xlm\_prim\_type prim\_type,}
\DoxyCodeLine{112                                 \textcolor{keyword}{enum} osmo\_prim\_operation op);}
\DoxyCodeLine{113 }
\DoxyCodeLine{114 \textcolor{keywordtype}{void} xua\_snm\_pc\_available(\textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{const} uint32\_t *aff\_pc,}
\DoxyCodeLine{115                           \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_str, \textcolor{keywordtype}{bool} available);}
\DoxyCodeLine{116 }
\DoxyCodeLine{117 \textcolor{keywordtype}{void} xua\_tx\_snm\_daud(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{const} uint32\_t *rctx, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_rctx,}
\DoxyCodeLine{118                      \textcolor{keyword}{const} uint32\_t *aff\_pc, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} num\_aff\_pc, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *info\_str);}
\DoxyCodeLine{119 }
\DoxyCodeLine{120 \textcolor{keyword}{enum} ss7\_asp\_lm\_timer \{}
\DoxyCodeLine{121         \textcolor{comment}{/* 0 kept unused on purpose since it's handled specially by osmo\_fsm */}}
\DoxyCodeLine{122         SS7\_ASP\_LM\_T\_WAIT\_ASP\_UP = 1,}
\DoxyCodeLine{123         SS7\_ASP\_LM\_T\_WAIT\_NOTIFY,}
\DoxyCodeLine{124         SS7\_ASP\_LM\_T\_WAIT\_NOTIY\_RKM,}
\DoxyCodeLine{125         SS7\_ASP\_LM\_T\_WAIT\_RK\_REG\_RESP,}
\DoxyCodeLine{126         \textcolor{comment}{/* This must remain the last item: */}}
\DoxyCodeLine{127         SS7\_ASP\_LM\_TIMERS\_LEN}
\DoxyCodeLine{128 \};}
\DoxyCodeLine{129 }
\DoxyCodeLine{130 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }osmo\_tdef ss7\_asp\_lm\_timer\_defaults[SS7\_ASP\_LM\_TIMERS\_LEN];}
\DoxyCodeLine{131 }
\DoxyCodeLine{132 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string ss7\_asp\_lm\_timer\_names[];}
\DoxyCodeLine{133 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *ss7\_asp\_lm\_timer\_name(\textcolor{keyword}{enum} ss7\_asp\_lm\_timer val)}
\DoxyCodeLine{134 \{ \textcolor{keywordflow}{return} get\_value\_string(ss7\_asp\_lm\_timer\_names, val); \}}
\DoxyCodeLine{135 }
\DoxyCodeLine{136 \textcolor{keyword}{extern} \textcolor{keyword}{struct }osmo\_fsm xua\_default\_lm\_fsm;}
\DoxyCodeLine{137 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_rkm\_reg\_status\_vals[];}
\DoxyCodeLine{138 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_rkm\_dereg\_status\_vals[];}
\DoxyCodeLine{139 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string m3ua\_rkm\_msgt\_names[];}
\DoxyCodeLine{140 }
\DoxyCodeLine{141 \textcolor{keywordtype}{int} xua\_as\_transmit\_msg(\textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{142 }
\DoxyCodeLine{143 \textcolor{keywordtype}{int} xua\_find\_as\_for\_asp(\textcolor{keyword}{struct} osmo\_ss7\_as **as, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_ss7\_asp *asp,}
\DoxyCodeLine{144                         \textcolor{keyword}{const} \textcolor{keyword}{struct} xua\_msg\_part *rctx\_ie);}
\DoxyCodeLine{145 }
\DoxyCodeLine{146 \textcolor{keyword}{struct }msgb *ipa\_gen\_ping(\textcolor{keywordtype}{void});}
\DoxyCodeLine{147 \textcolor{keyword}{struct }msgb *ipa\_to\_msg(\textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{148 \textcolor{keywordtype}{int} ipa\_tx\_xua\_as(\textcolor{keyword}{struct} osmo\_ss7\_as *as, \textcolor{keyword}{struct} xua\_msg *xua);}
\DoxyCodeLine{149 \textcolor{keywordtype}{int} ipa\_rx\_msg(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keyword}{struct} msgb *msg, uint8\_t sls);}
\DoxyCodeLine{150 }
\DoxyCodeLine{151 \textcolor{keywordtype}{int} osmo\_isup\_party\_parse(\textcolor{keywordtype}{char} *out\_digits, \textcolor{keyword}{const} uint8\_t *in,}
\DoxyCodeLine{152                         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} in\_num\_bytes, \textcolor{keywordtype}{bool} odd);}
\DoxyCodeLine{153 \textcolor{keywordtype}{int} osmo\_sccp\_addr\_parse(\textcolor{keyword}{struct} osmo\_sccp\_addr *out,}
\DoxyCodeLine{154                         \textcolor{keyword}{const} uint8\_t *addr, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} addrlen);}
\DoxyCodeLine{155 \textcolor{keywordtype}{int} osmo\_sccp\_addr\_encode(\textcolor{keyword}{struct} msgb *msg, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_sccp\_addr *in);}
\DoxyCodeLine{156 }
\DoxyCodeLine{157 \textcolor{keywordtype}{int} ss7\_asp\_rx\_unknown(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, \textcolor{keywordtype}{int} ppid\_mux, \textcolor{keyword}{struct} msgb *msg);}
\DoxyCodeLine{158 }
\DoxyCodeLine{159 \textcolor{keywordtype}{void} xua\_rkm\_send\_reg\_req(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp,}
\DoxyCodeLine{160                           \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_ss7\_routing\_key *rkey,}
\DoxyCodeLine{161                           \textcolor{keyword}{enum} osmo\_ss7\_as\_traffic\_mode traf\_mode);}
\DoxyCodeLine{162 \textcolor{keywordtype}{void} xua\_rkm\_send\_dereg\_req(\textcolor{keyword}{struct} osmo\_ss7\_asp *asp, uint32\_t route\_ctx);}

\end{DoxyCode}
