\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`\"{}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 pc) \item static struct \textbf{ osmo\+\_\+mtp\+\_\+prim} $\ast$ \textbf{ mtp\+\_\+prim\+\_\+pause\+\_\+ind\+\_\+alloc} (uint32\+\_\+t 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 pc) \item void \textbf{ mtp\+\_\+pause\+\_\+ind\+\_\+up\+\_\+to\+\_\+all\+\_\+users} (struct \textbf{ osmo\+\_\+ss7\+\_\+instance} $\ast$s7i, uint32\+\_\+t 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{ 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}, 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{ 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{ 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{ hmrt\+\_\+mtp\+\_\+xfer\+\_\+request\+\_\+l4\+\_\+to\+\_\+l3()}, \textbf{ osmo\+\_\+ss7\+\_\+user\+::inst}, \textbf{ LOGPSS7U}, \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()}.