\doxysection{src/mtp\+\_\+sap.c File Reference}
\label{mtp__sap_8c}\index{src/mtp\_sap.c@{src/mtp\_sap.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/mtp\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include \char`\"{}mtp3\+\_\+hmrt.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+user.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ss7\+\_\+internal.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static int \textbf{ mtp\+\_\+prim\+\_\+hdr\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buflen, const struct osmo\+\_\+prim\+\_\+hdr $\ast$oph)
\item 
char $\ast$ \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+name} (const struct osmo\+\_\+prim\+\_\+hdr $\ast$oph)
\item 
static struct msgb $\ast$ \textbf{ mtp\+\_\+prim\+\_\+msgb\+\_\+alloc} (void)
\item 
static struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ \textbf{ mtp\+\_\+prim\+\_\+resume\+\_\+ind\+\_\+alloc} (uint32\+\_\+t \textbf{ pc})
\item 
static struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ \textbf{ mtp\+\_\+prim\+\_\+pause\+\_\+ind\+\_\+alloc} (uint32\+\_\+t \textbf{ pc})
\item 
struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ \textbf{ mtp\+\_\+prim\+\_\+status\+\_\+ind\+\_\+alloc} (uint32\+\_\+t \textbf{ dpc}, enum \textbf{ mtp\+\_\+unavail\+\_\+cause} cause, bool cong\+\_\+level\+\_\+present, uint8\+\_\+t cong\+\_\+level)
\item 
struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ \textbf{ mtp\+\_\+prim\+\_\+xfer\+\_\+ind\+\_\+alloc} (const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$param, const uint8\+\_\+t $\ast$user\+\_\+data, size\+\_\+t user\+\_\+data\+\_\+len)
\item 
struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+xfer\+\_\+req\+\_\+prepend} (const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$param, struct msgb $\ast$msg)
\begin{DoxyCompactList}\small\item\em Wrap MTP payload into an MTP-\/\+TRANSFER.\+req primitive. \end{DoxyCompactList}\item 
void \textbf{ mtp\+\_\+resume\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users} (struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$s7i, uint32\+\_\+t \textbf{ pc})
\item 
void \textbf{ mtp\+\_\+pause\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users} (struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$s7i, uint32\+\_\+t \textbf{ pc})
\item 
void \textbf{ mtp\+\_\+status\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users} (struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$s7i, uint32\+\_\+t \textbf{ dpc}, enum \textbf{ mtp\+\_\+unavail\+\_\+cause} cause, bool cong\+\_\+level\+\_\+present, uint8\+\_\+t cong\+\_\+level)
\item 
int \textbf{ ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+up} (const struct \textbf{ osmo\+\_\+ss7\+\_\+user} $\ast$osu, struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$omp)
\begin{DoxyCompactList}\small\item\em Send a MTP SAP Primitive up to the MTP User. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+down} (struct \textbf{ osmo\+\_\+ss7\+\_\+user} $\ast$osu, struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$omp)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+type\+\_\+names} [$\,$]
\item 
static char \textbf{ prim\+\_\+name\+\_\+buf} [128]
\end{DoxyCompactItemize}


\doxysubsection{Function Documentation}
\mbox{\label{mtp__sap_8c_aa4bd57b5b9fcb889e4866120acad515b}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_pause\_ind\_up\_to\_all\_users@{mtp\_pause\_ind\_up\_to\_all\_users}}
\index{mtp\_pause\_ind\_up\_to\_all\_users@{mtp\_pause\_ind\_up\_to\_all\_users}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_pause\_ind\_up\_to\_all\_users()}
{\footnotesize\ttfamily void mtp\+\_\+pause\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{s7i,  }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})}



References \textbf{ mtp\+\_\+prim\+\_\+pause\+\_\+ind\+\_\+alloc()}, \textbf{ pc}, \textbf{ ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+up()}, and \textbf{ osmo\+\_\+ss7\+\_\+instance\+::user}.



Referenced by \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available\+\_\+to\+\_\+mtp\+\_\+users()}.

\mbox{\label{mtp__sap_8c_ae32ee6646506040563950ee2ea9a086d}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_prim\_hdr\_name\_buf@{mtp\_prim\_hdr\_name\_buf}}
\index{mtp\_prim\_hdr\_name\_buf@{mtp\_prim\_hdr\_name\_buf}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_prim\_hdr\_name\_buf()}
{\footnotesize\ttfamily static int mtp\+\_\+prim\+\_\+hdr\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buflen,  }\item[{const struct osmo\+\_\+prim\+\_\+hdr $\ast$}]{oph }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+type\+\_\+name()}.



Referenced by \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+name()}.

\mbox{\label{mtp__sap_8c_ac13e62e0dd60304c01d34edad7561377}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_prim\_msgb\_alloc@{mtp\_prim\_msgb\_alloc}}
\index{mtp\_prim\_msgb\_alloc@{mtp\_prim\_msgb\_alloc}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_prim\_msgb\_alloc()}
{\footnotesize\ttfamily static struct msgb $\ast$ mtp\+\_\+prim\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ m3ua\+\_\+msgb\+\_\+alloc()}.



Referenced by \textbf{ mtp\+\_\+prim\+\_\+pause\+\_\+ind\+\_\+alloc()}, \textbf{ mtp\+\_\+prim\+\_\+resume\+\_\+ind\+\_\+alloc()}, and \textbf{ mtp\+\_\+prim\+\_\+status\+\_\+ind\+\_\+alloc()}.

\mbox{\label{mtp__sap_8c_aa4883dafbe7d3d0030632d0006e97666}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_prim\_pause\_ind\_alloc@{mtp\_prim\_pause\_ind\_alloc}}
\index{mtp\_prim\_pause\_ind\_alloc@{mtp\_prim\_pause\_ind\_alloc}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_prim\_pause\_ind\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ mtp\+\_\+prim\+\_\+pause\+\_\+ind\+\_\+alloc (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+mtp\+\_\+pause\+\_\+param\+::affected\+\_\+dpc}, \textbf{ mtp\+\_\+prim\+\_\+msgb\+\_\+alloc()}, \textbf{ MTP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+MTP\+\_\+\+PRIM\+\_\+\+PAUSE}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::pause}, \textbf{ pc}, and \textbf{ osmo\+\_\+mtp\+\_\+prim\+::u}.



Referenced by \textbf{ mtp\+\_\+pause\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}.

\mbox{\label{mtp__sap_8c_a9a1958d6515ee3daecc98488c92829cb}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_prim\_resume\_ind\_alloc@{mtp\_prim\_resume\_ind\_alloc}}
\index{mtp\_prim\_resume\_ind\_alloc@{mtp\_prim\_resume\_ind\_alloc}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_prim\_resume\_ind\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ mtp\+\_\+prim\+\_\+resume\+\_\+ind\+\_\+alloc (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+mtp\+\_\+resume\+\_\+param\+::affected\+\_\+dpc}, \textbf{ mtp\+\_\+prim\+\_\+msgb\+\_\+alloc()}, \textbf{ MTP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+MTP\+\_\+\+PRIM\+\_\+\+RESUME}, \textbf{ pc}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::resume}, and \textbf{ osmo\+\_\+mtp\+\_\+prim\+::u}.



Referenced by \textbf{ mtp\+\_\+resume\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}.

\mbox{\label{mtp__sap_8c_a3f823236965b1626fcec73815287d095}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_prim\_status\_ind\_alloc@{mtp\_prim\_status\_ind\_alloc}}
\index{mtp\_prim\_status\_ind\_alloc@{mtp\_prim\_status\_ind\_alloc}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_prim\_status\_ind\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ mtp\+\_\+prim\+\_\+status\+\_\+ind\+\_\+alloc (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{dpc,  }\item[{enum \textbf{ mtp\+\_\+unavail\+\_\+cause}}]{cause,  }\item[{bool}]{cong\+\_\+level\+\_\+present,  }\item[{uint8\+\_\+t}]{cong\+\_\+level }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+mtp\+\_\+status\+\_\+param\+::affected\+\_\+dpc}, \textbf{ osmo\+\_\+mtp\+\_\+status\+\_\+param\+::cause}, \textbf{ osmo\+\_\+mtp\+\_\+status\+\_\+param\+::congestion\+\_\+level}, \textbf{ osmo\+\_\+mtp\+\_\+status\+\_\+param\+::congestion\+\_\+level\+\_\+present}, \textbf{ dpc}, \textbf{ mtp\+\_\+prim\+\_\+msgb\+\_\+alloc()}, \textbf{ MTP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+MTP\+\_\+\+PRIM\+\_\+\+STATUS}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::status}, and \textbf{ osmo\+\_\+mtp\+\_\+prim\+::u}.



Referenced by \textbf{ mtp\+\_\+status\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}, and \textbf{ xua\+\_\+snm\+\_\+upu()}.

\mbox{\label{mtp__sap_8c_a27105728fd0796805c7c2d68e860e09f}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_prim\_xfer\_ind\_alloc@{mtp\_prim\_xfer\_ind\_alloc}}
\index{mtp\_prim\_xfer\_ind\_alloc@{mtp\_prim\_xfer\_ind\_alloc}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_prim\_xfer\_ind\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ mtp\+\_\+prim\+\_\+xfer\+\_\+ind\+\_\+alloc (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$}]{param,  }\item[{const uint8\+\_\+t $\ast$}]{user\+\_\+data,  }\item[{size\+\_\+t}]{user\+\_\+data\+\_\+len }\end{DoxyParamCaption})}



References \textbf{ m3ua\+\_\+msgb\+\_\+alloc()}, \textbf{ MTP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+MTP\+\_\+\+PRIM\+\_\+\+TRANSFER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::transfer}, and \textbf{ osmo\+\_\+mtp\+\_\+prim\+::u}.



Referenced by \textbf{ m3ua\+\_\+to\+\_\+xfer\+\_\+ind()}.

\mbox{\label{mtp__sap_8c_adffcf34f24d768119f65e14bb4a362a7}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_resume\_ind\_up\_to\_all\_users@{mtp\_resume\_ind\_up\_to\_all\_users}}
\index{mtp\_resume\_ind\_up\_to\_all\_users@{mtp\_resume\_ind\_up\_to\_all\_users}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_resume\_ind\_up\_to\_all\_users()}
{\footnotesize\ttfamily void mtp\+\_\+resume\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{s7i,  }\item[{uint32\+\_\+t}]{pc }\end{DoxyParamCaption})}



References \textbf{ mtp\+\_\+prim\+\_\+resume\+\_\+ind\+\_\+alloc()}, \textbf{ pc}, \textbf{ ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+up()}, and \textbf{ osmo\+\_\+ss7\+\_\+instance\+::user}.



Referenced by \textbf{ xua\+\_\+snm\+\_\+pc\+\_\+available\+\_\+to\+\_\+mtp\+\_\+users()}.

\mbox{\label{mtp__sap_8c_a1b70a5ab4973673ce5c948d99810c908}} 
\index{mtp\_sap.c@{mtp\_sap.c}!mtp\_status\_ind\_up\_to\_all\_users@{mtp\_status\_ind\_up\_to\_all\_users}}
\index{mtp\_status\_ind\_up\_to\_all\_users@{mtp\_status\_ind\_up\_to\_all\_users}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{mtp\_status\_ind\_up\_to\_all\_users()}
{\footnotesize\ttfamily void mtp\+\_\+status\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$}]{s7i,  }\item[{uint32\+\_\+t}]{dpc,  }\item[{enum \textbf{ mtp\+\_\+unavail\+\_\+cause}}]{cause,  }\item[{bool}]{cong\+\_\+level\+\_\+present,  }\item[{uint8\+\_\+t}]{cong\+\_\+level }\end{DoxyParamCaption})}



References \textbf{ dpc}, \textbf{ mtp\+\_\+prim\+\_\+status\+\_\+ind\+\_\+alloc()}, \textbf{ ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+up()}, and \textbf{ osmo\+\_\+ss7\+\_\+instance\+::user}.



Referenced by \textbf{ xua\+\_\+snm\+\_\+scon\+\_\+to\+\_\+mtp\+\_\+users()}.

\mbox{\label{mtp__sap_8c_addd7861df51bb5d3e3ae90fafb258aff}} 
\index{mtp\_sap.c@{mtp\_sap.c}!osmo\_mtp\_prim\_name@{osmo\_mtp\_prim\_name}}
\index{osmo\_mtp\_prim\_name@{osmo\_mtp\_prim\_name}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{osmo\_mtp\_prim\_name()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mtp\+\_\+prim\+\_\+name (\begin{DoxyParamCaption}\item[{const struct osmo\+\_\+prim\+\_\+hdr $\ast$}]{oph }\end{DoxyParamCaption})}



References \textbf{ mtp\+\_\+prim\+\_\+hdr\+\_\+name\+\_\+buf()}, and \textbf{ prim\+\_\+name\+\_\+buf}.



Referenced by \textbf{ ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+up()}.

\mbox{\label{mtp__sap_8c_a184037c3586c341cab191f6759ac9ebe}} 
\index{mtp\_sap.c@{mtp\_sap.c}!osmo\_mtp\_prim\_xfer\_req\_prepend@{osmo\_mtp\_prim\_xfer\_req\_prepend}}
\index{osmo\_mtp\_prim\_xfer\_req\_prepend@{osmo\_mtp\_prim\_xfer\_req\_prepend}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{osmo\_mtp\_prim\_xfer\_req\_prepend()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ osmo\+\_\+mtp\+\_\+prim\+\_\+xfer\+\_\+req\+\_\+prepend (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+mtp\+\_\+transfer\+\_\+param} $\ast$}]{param,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



Wrap MTP payload into an MTP-\/\+TRANSFER.\+req primitive. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em param} & MTP-\/\+TRANSFER.\+req params to copy to the primitive (Optional, can be NULL) \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & msgb containing MTP payload and where primitive will be prepended \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
return MTP-\/\+TRANSFER.\+req prepended to msgb 
\end{DoxyReturn}


References \textbf{ MTP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+MTP\+\_\+\+PRIM\+\_\+\+TRANSFER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::transfer}, and \textbf{ osmo\+\_\+mtp\+\_\+prim\+::u}.



Referenced by \textbf{ sua2sccp\+\_\+tx\+\_\+m3ua()}.

\mbox{\label{mtp__sap_8c_a234749eaece462afb9863f9d802ae402}} 
\index{mtp\_sap.c@{mtp\_sap.c}!osmo\_ss7\_user\_mtp\_sap\_prim\_down@{osmo\_ss7\_user\_mtp\_sap\_prim\_down}}
\index{osmo\_ss7\_user\_mtp\_sap\_prim\_down@{osmo\_ss7\_user\_mtp\_sap\_prim\_down}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{osmo\_ss7\_user\_mtp\_sap\_prim\_down()}
{\footnotesize\ttfamily int osmo\+\_\+ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+down (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+user} $\ast$}]{osu,  }\item[{struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$}]{omp }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+ss7\+\_\+user\+::inst}, \textbf{ LOGPSS7U}, \textbf{ mtp3\+\_\+hmrt\+\_\+mtp\+\_\+xfer\+\_\+request\+\_\+l4\+\_\+to\+\_\+l3()}, \textbf{ MTP\+\_\+\+SAP\+\_\+\+USER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+MTP\+\_\+\+PRIM\+\_\+\+TRANSFER}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::transfer}, and \textbf{ osmo\+\_\+mtp\+\_\+prim\+::u}.



Referenced by \textbf{ sua2sccp\+\_\+tx\+\_\+m3ua()}.

\mbox{\label{mtp__sap_8c_a3f81d5e8bc8053c75d651ce79b95cc21}} 
\index{mtp\_sap.c@{mtp\_sap.c}!ss7\_user\_mtp\_sap\_prim\_up@{ss7\_user\_mtp\_sap\_prim\_up}}
\index{ss7\_user\_mtp\_sap\_prim\_up@{ss7\_user\_mtp\_sap\_prim\_up}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{ss7\_user\_mtp\_sap\_prim\_up()}
{\footnotesize\ttfamily int ss7\+\_\+user\+\_\+mtp\+\_\+sap\+\_\+prim\+\_\+up (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+ss7\+\_\+user} $\ast$}]{osu,  }\item[{struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$}]{omp }\end{DoxyParamCaption})}



Send a MTP SAP Primitive up to the MTP User. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em osu} & MTP User to whom to send the primitive \\
\hline
\mbox{\texttt{ in}}  & {\em prim} & Primitive to send to the user \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
return value of the MTP User\textquotesingle{}s prim\+\_\+cb() function
\end{DoxyReturn}
Ownership of prim-\/$>$oph-\/$>$msg is passed to the user of the registered callback 

References \textbf{ LOGPSS7U}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+name()}, \textbf{ osmo\+\_\+ss7\+\_\+user\+::prim\+\_\+cb}, and \textbf{ osmo\+\_\+ss7\+\_\+user\+::priv}.



Referenced by \textbf{ deliver\+\_\+to\+\_\+mtp\+\_\+user()}, \textbf{ mtp\+\_\+pause\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}, \textbf{ mtp\+\_\+resume\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}, \textbf{ mtp\+\_\+status\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users()}, and \textbf{ xua\+\_\+snm\+\_\+upu()}.



\doxysubsection{Variable Documentation}
\mbox{\label{mtp__sap_8c_a0df77e6fe70d2f7b17efdbcbf2de2c54}} 
\index{mtp\_sap.c@{mtp\_sap.c}!osmo\_mtp\_prim\_type\_names@{osmo\_mtp\_prim\_type\_names}}
\index{osmo\_mtp\_prim\_type\_names@{osmo\_mtp\_prim\_type\_names}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{osmo\_mtp\_prim\_type\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+mtp\+\_\+prim\+\_\+type\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ OSMO\_MTP\_PRIM\_TRANSFER, \textcolor{stringliteral}{"{}MTP-\/TRANSFER"{}} \},}
\DoxyCodeLine{        \{ OSMO\_MTP\_PRIM\_PAUSE,               \textcolor{stringliteral}{"{}MTP-\/PAUSE"{}} \},}
\DoxyCodeLine{        \{ OSMO\_MTP\_PRIM\_RESUME,             \textcolor{stringliteral}{"{}MTP-\/RESUME"{}} \},}
\DoxyCodeLine{        \{ OSMO\_MTP\_PRIM\_STATUS,             \textcolor{stringliteral}{"{}MTP-\/STATUS"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+type\+\_\+name()}.

\mbox{\label{mtp__sap_8c_ade03488aec056a43cb6713c56c331c04}} 
\index{mtp\_sap.c@{mtp\_sap.c}!prim\_name\_buf@{prim\_name\_buf}}
\index{prim\_name\_buf@{prim\_name\_buf}!mtp\_sap.c@{mtp\_sap.c}}
\doxysubsubsection{prim\_name\_buf}
{\footnotesize\ttfamily char prim\+\_\+name\+\_\+buf[128]\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ osmo\+\_\+mtp\+\_\+prim\+\_\+name()}.

