\doxysection{include/osmocom/gsm/gsm23003.h File Reference}
\label{gsm23003_8h}\index{include/osmocom/gsm/gsm23003.h@{include/osmocom/gsm/gsm23003.h}}
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+plmn\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps}
\item 
struct \textbf{ osmo\+\_\+lac\+\_\+and\+\_\+ci\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+shared\+\_\+network\+\_\+area\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+gsn\+\_\+address}
\item 
struct \textbf{ osmo\+\_\+tracking\+\_\+area\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+eutran\+\_\+cell\+\_\+global\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+mme\+\_\+id}
\item 
struct \textbf{ osmo\+\_\+gummei}
\item 
struct \textbf{ osmo\+\_\+guti}
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+cgi\+\_\+part} \{ \newline
\textbf{ OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+PLMN} = 1
, \newline
\textbf{ OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+LAC} = 2
, \newline
\textbf{ OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+CI} = 4
, \newline
\textbf{ OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+RAC} = 8
 \}
\begin{DoxyCompactList}\small\item\em Bitmask of items contained in a struct \doxyref{osmo\+\_\+cell\+\_\+global\+\_\+id}{p.}{structosmo__cell__global__id}. \end{DoxyCompactList}\item 
enum \textbf{ osmo\+\_\+gsn\+\_\+addr\+\_\+type} \{ \newline
\textbf{ GSN\+\_\+\+ADDR\+\_\+\+TYPE\+\_\+\+IPV4} = 0
, \newline
\textbf{ GSN\+\_\+\+ADDR\+\_\+\+TYPE\+\_\+\+IPV6} = 1
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
bool \textbf{ osmo\+\_\+imsi\+\_\+str\+\_\+valid} (const char $\ast$imsi)
\begin{DoxyCompactList}\small\item\em Determine whether the given IMSI is valid according to 3GPP TS 23.\+003. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+msisdn\+\_\+str\+\_\+valid} (const char $\ast$msisdn)
\begin{DoxyCompactList}\small\item\em Determine whether the given MSISDN is valid according to 3GPP TS 23.\+003. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+imei\+\_\+str\+\_\+valid} (const char $\ast$imei, bool with\+\_\+15th\+\_\+digit)
\begin{DoxyCompactList}\small\item\em Determine whether the given IMEI is valid according to 3GPP TS 23.\+003, Section 6.\+2.\+1. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mcc\+\_\+name} (uint16\+\_\+t mcc)
\begin{DoxyCompactList}\small\item\em Return MCC string as standardized 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, uint16\+\_\+t mcc)
\begin{DoxyCompactList}\small\item\em Return MCC string as standardized 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+c} (const void $\ast$ctx, uint16\+\_\+t mcc)
\begin{DoxyCompactList}\small\item\em Return MCC string as standardized 3-\/digit with leading zeros, into a talloc-\/allocated buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mnc\+\_\+name} (uint16\+\_\+t mnc, bool mnc\+\_\+3\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, uint16\+\_\+t mnc, bool mnc\+\_\+3\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+c} (const void $\ast$ctx, uint16\+\_\+t mnc, bool mnc\+\_\+3\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros, into a talloc-\/allocated buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name} (const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name2} (const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+plmn\+\_\+name()}{p.}{gsm23003_8c_a82c72499a602aa92b80418f3d11a9e22}, but returning in a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros, into a dynamically-\/allocated output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+lai\+\_\+name} (const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC as string, in a static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name2} (const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a static buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name2} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a static buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name2} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+cgi\+\_\+ps\+\_\+name()}{p.}{gsm23003_8c_ab255c392a7e013582fc771ae837cd47e}, but uses a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name} (const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a static buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name2} (const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+gummei\+\_\+name} (const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Return string representation of GUMMEI in static output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Return string representation of GUMMEI in caller-\/provided output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Return string representation of GUMMEI in static output buffer. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+plmn\+\_\+to\+\_\+bcd} (uint8\+\_\+t $\ast$bcd\+\_\+dst, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\item 
void \textbf{ osmo\+\_\+plmn\+\_\+from\+\_\+bcd} (const uint8\+\_\+t $\ast$bcd\+\_\+src, struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\item 
int \textbf{ osmo\+\_\+mnc\+\_\+from\+\_\+str} (const char $\ast$mnc\+\_\+str, uint16\+\_\+t $\ast$mnc, bool $\ast$mnc\+\_\+3\+\_\+digits)
\item 
static int \textbf{ osmo\+\_\+mcc\+\_\+from\+\_\+str} (const char $\ast$mcc\+\_\+str, uint16\+\_\+t $\ast$mcc)
\item 
int \textbf{ osmo\+\_\+mnc\+\_\+cmp} (uint16\+\_\+t a\+\_\+mnc, bool a\+\_\+mnc\+\_\+3\+\_\+digits, uint16\+\_\+t b\+\_\+mnc, bool b\+\_\+mnc\+\_\+3\+\_\+digits)
\item 
int \textbf{ osmo\+\_\+plmn\+\_\+cmp} (const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+lai\+\_\+cmp} (const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+rai\+\_\+cmp} (const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+cgi\+\_\+cmp} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+cmp} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$a, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$b)
\item 
int \textbf{ osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain} (char $\ast$out, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Generate TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+parse\+\_\+home\+\_\+network\+\_\+domain} (struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$out, const char $\ast$in)
\begin{DoxyCompactList}\small\item\em Parse a TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) into a \doxyref{osmo\+\_\+plmn\+\_\+id}{p.}{structosmo__plmn__id}. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+domain} (char $\ast$out, const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+group\+\_\+domain} (char $\ast$out, uint16\+\_\+t mmegi, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Group Domain (text form) \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+parse\+\_\+mme\+\_\+domain} (struct \textbf{ osmo\+\_\+gummei} $\ast$out, const char $\ast$in)
\begin{DoxyCompactList}\small\item\em Parse a TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) into a \doxyref{osmo\+\_\+gummei}{p.}{structosmo__gummei}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Enumeration Type Documentation}
\mbox{\label{gsm23003_8h_aa458d0dc9e35b67f3ffdb6391222e37e}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_part@{osmo\_cgi\_part}}
\index{osmo\_cgi\_part@{osmo\_cgi\_part}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_part}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+cgi\+\_\+part}}



Bitmask of items contained in a struct \doxyref{osmo\+\_\+cell\+\_\+global\+\_\+id}{p.}{structosmo__cell__global__id}. 

See also \doxyref{gsm0808\+\_\+cell\+\_\+id\+\_\+to\+\_\+cgi()}{p.}{group__gsm0808_gaee1cc1c00b5bfb2a6b8c78d9b4207711}. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_CGI\_PART\_PLMN@{OSMO\_CGI\_PART\_PLMN}!gsm23003.h@{gsm23003.h}}\index{gsm23003.h@{gsm23003.h}!OSMO\_CGI\_PART\_PLMN@{OSMO\_CGI\_PART\_PLMN}}}\mbox{\label{gsm23003_8h_aa458d0dc9e35b67f3ffdb6391222e37eafeb49628ee819926d98b0e432db577c4}} 
OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+PLMN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_CGI\_PART\_LAC@{OSMO\_CGI\_PART\_LAC}!gsm23003.h@{gsm23003.h}}\index{gsm23003.h@{gsm23003.h}!OSMO\_CGI\_PART\_LAC@{OSMO\_CGI\_PART\_LAC}}}\mbox{\label{gsm23003_8h_aa458d0dc9e35b67f3ffdb6391222e37eaedcfc5b48932329f0a4cb8a30db93daa}} 
OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+LAC&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_CGI\_PART\_CI@{OSMO\_CGI\_PART\_CI}!gsm23003.h@{gsm23003.h}}\index{gsm23003.h@{gsm23003.h}!OSMO\_CGI\_PART\_CI@{OSMO\_CGI\_PART\_CI}}}\mbox{\label{gsm23003_8h_aa458d0dc9e35b67f3ffdb6391222e37ea88ab553acd9f5a4e1b7f6800c5d4b5e4}} 
OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+CI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_CGI\_PART\_RAC@{OSMO\_CGI\_PART\_RAC}!gsm23003.h@{gsm23003.h}}\index{gsm23003.h@{gsm23003.h}!OSMO\_CGI\_PART\_RAC@{OSMO\_CGI\_PART\_RAC}}}\mbox{\label{gsm23003_8h_aa458d0dc9e35b67f3ffdb6391222e37ead7343e35df8a1057cb35aa1229be2ef3}} 
OSMO\+\_\+\+CGI\+\_\+\+PART\+\_\+\+RAC&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gsm23003_8h_ade7cb9969570373fd229e3afefb10955}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gsn\_addr\_type@{osmo\_gsn\_addr\_type}}
\index{osmo\_gsn\_addr\_type@{osmo\_gsn\_addr\_type}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gsn\_addr\_type}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+gsn\+\_\+addr\+\_\+type}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{GSN\_ADDR\_TYPE\_IPV4@{GSN\_ADDR\_TYPE\_IPV4}!gsm23003.h@{gsm23003.h}}\index{gsm23003.h@{gsm23003.h}!GSN\_ADDR\_TYPE\_IPV4@{GSN\_ADDR\_TYPE\_IPV4}}}\mbox{\label{gsm23003_8h_ade7cb9969570373fd229e3afefb10955a37be3c11284bb282dc56b162c863f335}} 
GSN\+\_\+\+ADDR\+\_\+\+TYPE\+\_\+\+IPV4&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{GSN\_ADDR\_TYPE\_IPV6@{GSN\_ADDR\_TYPE\_IPV6}!gsm23003.h@{gsm23003.h}}\index{gsm23003.h@{gsm23003.h}!GSN\_ADDR\_TYPE\_IPV6@{GSN\_ADDR\_TYPE\_IPV6}}}\mbox{\label{gsm23003_8h_ade7cb9969570373fd229e3afefb10955a1b05153064ce364e04b91a73224aaf6f}} 
GSN\+\_\+\+ADDR\+\_\+\+TYPE\+\_\+\+IPV6&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{gsm23003_8h_a812c50d21076570156b8a16df2cb053b}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_cmp@{osmo\_cgi\_cmp}}
\index{osmo\_cgi\_cmp@{osmo\_cgi\_cmp}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+cgi\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::lai}, and \textbf{ osmo\+\_\+lai\+\_\+cmp()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+match()}.

\mbox{\label{gsm23003_8h_aefd2465415517b530e66bd0d081b2d1c}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_name@{osmo\_cgi\_name}}
\index{osmo\_cgi\_name@{osmo\_cgi\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}.

\mbox{\label{gsm23003_8h_a14a9714deb805f194750d94a8265fbd9}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_name2@{osmo\_cgi\_name2}}
\index{osmo\_cgi\_name2@{osmo\_cgi\_name2}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. 

Useful for printing two distinct CGIs in the same printf format. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a147dff07936b4dc8539ac97dd51be864}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_name\_buf@{osmo\_cgi\_name\_buf}}
\index{osmo\_cgi\_name\_buf@{osmo\_cgi\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::lai}, and \textbf{ osmo\+\_\+lai\+\_\+name()}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+name()}, \textbf{ osmo\+\_\+cgi\+\_\+name2()}, and \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8h_a0ec1a24992445b3effa127ea48280cbe}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_name\_c@{osmo\_cgi\_name\_c}}
\index{osmo\_cgi\_name\_c@{osmo\_cgi\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of CGI in dynamically-\/allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a3ceb86873192ea2dbe0e8f9b1b6a6ad4}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_ps\_cmp@{osmo\_cgi\_ps\_cmp}}
\index{osmo\_cgi\_ps\_cmp@{osmo\_cgi\_ps\_cmp}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_ps\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+cgi\+\_\+ps\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+rai\+\_\+cmp()}, and \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::rai}.

\mbox{\label{gsm23003_8h_ab255c392a7e013582fc771ae837cd47e}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_ps\_name@{osmo\_cgi\_ps\_name}}
\index{osmo\_cgi\_ps\_name@{osmo\_cgi\_ps\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_ps\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi\+\_\+ps} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}.

\mbox{\label{gsm23003_8h_ac7c647c2aa8b624bae7ac4a1367ee6d0}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_ps\_name2@{osmo\_cgi\_ps\_name2}}
\index{osmo\_cgi\_ps\_name2@{osmo\_cgi\_ps\_name2}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_ps\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+cgi\+\_\+ps\+\_\+name()}{p.}{gsm23003_8c_ab255c392a7e013582fc771ae837cd47e}, but uses a different static buffer. 

Useful for printing two distinct CGI-\/\+PSs in the same printf format. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_abd8aa509a254a66e3fdb8e898103ae03}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_ps\_name\_buf@{osmo\_cgi\_ps\_name\_buf}}
\index{osmo\_cgi\_ps\_name\_buf@{osmo\_cgi\_ps\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_ps\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em cgi\+\_\+ps} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+rai\+\_\+name2()}, and \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::rai}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name()}, \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name2()}, and \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8h_ae5f5f53cc1272fc7d2de17d9904d1c9b}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_cgi\_ps\_name\_c@{osmo\_cgi\_ps\_name\_c}}
\index{osmo\_cgi\_ps\_name\_c@{osmo\_cgi\_ps\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_cgi\_ps\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em cgi\+\_\+ps} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of CGI in dynamically-\/allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a15b0328ac44ae0c9b920755676064f44}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gen\_home\_network\_domain@{osmo\_gen\_home\_network\_domain}}
\index{osmo\_gen\_home\_network\_domain@{osmo\_gen\_home\_network\_domain}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gen\_home\_network\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain (\begin{DoxyParamCaption}\item[{char $\ast$}]{out,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Generate TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/provided output buffer, at least 33 bytes long \\
\hline
{\em plmn\mbox{[}in\mbox{]}} & Osmocom representation of PLMN ID (MCC + MNC) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of characters printed (excluding NUL); negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, and \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}.



Referenced by \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+domain()}, and \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+group\+\_\+domain()}.

\mbox{\label{gsm23003_8h_aeb44a0c8c7a7a2f60fdba9f95457c0a8}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gen\_mme\_domain@{osmo\_gen\_mme\_domain}}
\index{osmo\_gen\_mme\_domain@{osmo\_gen\_mme\_domain}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gen\_mme\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+gen\+\_\+mme\+\_\+domain (\begin{DoxyParamCaption}\item[{char $\ast$}]{out,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/provided output buffer, at least 56 bytes long \\
\hline
{\em gummei\mbox{[}in\mbox{]}} & Structure representing the Globally Unique MME Identifier \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of characters printed (excluding NUL); negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}, \textbf{ GSM23003\+\_\+\+HOME\+\_\+\+NETWORK\+\_\+\+DOMAIN\+\_\+\+LEN}, \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain()}, and \textbf{ osmo\+\_\+gummei\+::plmn}.

\mbox{\label{gsm23003_8h_af4f9ec40d8d8121c57961228854f28a8}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gen\_mme\_group\_domain@{osmo\_gen\_mme\_group\_domain}}
\index{osmo\_gen\_mme\_group\_domain@{osmo\_gen\_mme\_group\_domain}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gen\_mme\_group\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+gen\+\_\+mme\+\_\+group\+\_\+domain (\begin{DoxyParamCaption}\item[{char $\ast$}]{out,  }\item[{uint16\+\_\+t}]{mmegi,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Group Domain (text form) 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/provided output buffer, at least 56 bytes long \\
\hline
{\em mmegi\mbox{[}in\mbox{]}} & MME Group Identifier \\
\hline
{\em plmn\mbox{[}in\mbox{]}} & Osmocom representation of PLMN ID (MCC + MNC) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of characters printed (excluding NUL); negative on error 
\end{DoxyReturn}


References \textbf{ GSM23003\+\_\+\+HOME\+\_\+\+NETWORK\+\_\+\+DOMAIN\+\_\+\+LEN}, and \textbf{ osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain()}.

\mbox{\label{gsm23003_8h_a391be2cd5ea9138b2834a18c6987e615}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gummei\_name@{osmo\_gummei\_name}}
\index{osmo\_gummei\_name@{osmo\_gummei\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gummei\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+gummei\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Return string representation of GUMMEI in static output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em gummei} & GUMMEI to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to static output buffer 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_abea50682518f9fa950df8ea5926c0fa0}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gummei\_name\_buf@{osmo\_gummei\_name\_buf}}
\index{osmo\_gummei\_name\_buf@{osmo\_gummei\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gummei\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+gummei\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Return string representation of GUMMEI in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & pointer to caller-\/provided output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em gummei} & GUMMEI to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}, \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}, and \textbf{ osmo\+\_\+gummei\+::plmn}.



Referenced by \textbf{ osmo\+\_\+gummei\+\_\+name()}, and \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8h_ab8d78cb94e6f0a4de3cbda361a515349}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_gummei\_name\_c@{osmo\_gummei\_name\_c}}
\index{osmo\_gummei\_name\_c@{osmo\_gummei\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_gummei\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+gummei\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Return string representation of GUMMEI in static output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & pointer to caller-\/provided output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em gummei} & GUMMEI to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to static output buffer 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_ad0de5ffd112d4c82117e01db507b0919}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_imei\_str\_valid@{osmo\_imei\_str\_valid}}
\index{osmo\_imei\_str\_valid@{osmo\_imei\_str\_valid}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_imei\_str\_valid()}
{\footnotesize\ttfamily bool osmo\+\_\+imei\+\_\+str\+\_\+valid (\begin{DoxyParamCaption}\item[{const char $\ast$}]{imei,  }\item[{bool}]{with\+\_\+15th\+\_\+digit }\end{DoxyParamCaption})}



Determine whether the given IMEI is valid according to 3GPP TS 23.\+003, Section 6.\+2.\+1. 

It consists of 14 digits, the 15th check digit is not intended for digital transmission. 
\begin{DoxyParams}{Parameters}
{\em imei} & IMEI digits in ASCII string representation. \\
\hline
{\em with\+\_\+15th\+\_\+digit} & when true, expect the 15th digit to be present and verify it. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when the IMEI is valid, false for invalid characters or number of digits. 
\end{DoxyReturn}


References \textbf{ is\+\_\+n\+\_\+digits()}, and \textbf{ osmo\+\_\+luhn()}.

\mbox{\label{gsm23003_8h_a8766c8f8ed9765b4cdd6cee1047d18a5}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_imsi\_str\_valid@{osmo\_imsi\_str\_valid}}
\index{osmo\_imsi\_str\_valid@{osmo\_imsi\_str\_valid}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_imsi\_str\_valid()}
{\footnotesize\ttfamily bool osmo\+\_\+imsi\+\_\+str\+\_\+valid (\begin{DoxyParamCaption}\item[{const char $\ast$}]{imsi }\end{DoxyParamCaption})}



Determine whether the given IMSI is valid according to 3GPP TS 23.\+003. 


\begin{DoxyParams}{Parameters}
{\em imsi} & IMSI digits in ASCII string representation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when the IMSI is valid, false for invalid characters or number of digits. 
\end{DoxyReturn}


References \textbf{ GSM23003\+\_\+\+IMSI\+\_\+\+MAX\+\_\+\+DIGITS}, \textbf{ GSM23003\+\_\+\+IMSI\+\_\+\+MIN\+\_\+\+DIGITS}, and \textbf{ is\+\_\+n\+\_\+digits()}.

\mbox{\label{gsm23003_8h_aadd30eb1e9a03e5137e6c1d11999f0cf}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_lai\_cmp@{osmo\_lai\_cmp}}
\index{osmo\_lai\_cmp@{osmo\_lai\_cmp}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_lai\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+lai\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+plmn\+\_\+cmp()}, and \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::plmn}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+cmp()}, and \textbf{ osmo\+\_\+rai\+\_\+cmp()}.

\mbox{\label{gsm23003_8h_a5711213c323cfbcdb123abd79f562729}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_lai\_name@{osmo\_lai\_name}}
\index{osmo\_lai\_name@{osmo\_lai\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_lai\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+lai\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{lai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em lai} & LAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ lai}, and \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}, \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}, and \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_ad186fec00a69640e8a2c01a0486835b6}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_lai\_name\_buf@{osmo\_lai\_name\_buf}}
\index{osmo\_lai\_name\_buf@{osmo\_lai\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_lai\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+lai\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{lai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em lai} & LAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ gsm48\+\_\+loc\+\_\+area\+\_\+id\+::lac}, \textbf{ lai}, and \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+lai\+\_\+name()}, and \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8h_a7ed8678227edee0f0d9ed1731139b47c}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_lai\_name\_c@{osmo\_lai\_name\_c}}
\index{osmo\_lai\_name\_c@{osmo\_lai\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_lai\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+lai\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{lai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em lai} & LAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of lai in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ lai}, and \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_ab7dd9246af940d5d0ff53bcac53d8f07}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mcc\_from\_str@{osmo\_mcc\_from\_str}}
\index{osmo\_mcc\_from\_str@{osmo\_mcc\_from\_str}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mcc\_from\_str()}
{\footnotesize\ttfamily static int osmo\+\_\+mcc\+\_\+from\+\_\+str (\begin{DoxyParamCaption}\item[{const char $\ast$}]{mcc\+\_\+str,  }\item[{uint16\+\_\+t $\ast$}]{mcc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ osmo\+\_\+mnc\+\_\+from\+\_\+str()}.

\mbox{\label{gsm23003_8h_a1e37b2a138a0d812095d452fd4effc78}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mcc\_name@{osmo\_mcc\_name}}
\index{osmo\_mcc\_name@{osmo\_mcc\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mcc\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+mcc\+\_\+name (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{mcc }\end{DoxyParamCaption})}



Return MCC string as standardized 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mcc} & MCC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+rai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a2f04e1521f8853628a830dd867cc96cf}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mcc\_name\_buf@{osmo\_mcc\_name\_buf}}
\index{osmo\_mcc\_name\_buf@{osmo\_mcc\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mcc\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mcc\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{uint16\+\_\+t}]{mcc }\end{DoxyParamCaption})}



Return MCC string as standardized 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em mcc} & MCC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in user-\/supplied output buffer 
\end{DoxyReturn}


Referenced by \textbf{ osmo\+\_\+mcc\+\_\+name()}, \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+c()}, and \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a648cdca36bf8685b712e2d58dff05fa2}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mcc\_name\_c@{osmo\_mcc\_name\_c}}
\index{osmo\_mcc\_name\_c@{osmo\_mcc\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mcc\_name\_c()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+mcc\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{uint16\+\_\+t}]{mcc }\end{DoxyParamCaption})}



Return MCC string as standardized 3-\/digit with leading zeros, into a talloc-\/allocated buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em mcc} & MCC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_aa3513d871d4632695e4b4c7780cdd39a}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mnc\_cmp@{osmo\_mnc\_cmp}}
\index{osmo\_mnc\_cmp@{osmo\_mnc\_cmp}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mnc\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+mnc\+\_\+cmp (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{a\+\_\+mnc,  }\item[{bool}]{a\+\_\+mnc\+\_\+3\+\_\+digits,  }\item[{uint16\+\_\+t}]{b\+\_\+mnc,  }\item[{bool}]{b\+\_\+mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Referenced by \textbf{ osmo\+\_\+plmn\+\_\+cmp()}.

\mbox{\label{gsm23003_8h_aecaffb04c72e63ad834a1064f586174a}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mnc\_from\_str@{osmo\_mnc\_from\_str}}
\index{osmo\_mnc\_from\_str@{osmo\_mnc\_from\_str}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mnc\_from\_str()}
{\footnotesize\ttfamily int osmo\+\_\+mnc\+\_\+from\+\_\+str (\begin{DoxyParamCaption}\item[{const char $\ast$}]{mnc\+\_\+str,  }\item[{uint16\+\_\+t $\ast$}]{mnc,  }\item[{bool $\ast$}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+str\+\_\+to\+\_\+int()}.



Referenced by \textbf{ osmo\+\_\+mcc\+\_\+from\+\_\+str()}.

\mbox{\label{gsm23003_8h_a258ead3e7e644239373b7e4f9b9c75cd}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mnc\_name@{osmo\_mnc\_name}}
\index{osmo\_mnc\_name@{osmo\_mnc\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mnc\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+mnc\+\_\+name (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{mnc,  }\item[{bool}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mnc} & MNC value. \\
\hline
\mbox{\texttt{ in}}  & {\em mnc\+\_\+3\+\_\+digits} & True if an MNC should fill three digits, only has an effect if MNC $<$ 100. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+rai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_af96dea73e6009d961a07381202ec8562}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mnc\_name\_buf@{osmo\_mnc\_name\_buf}}
\index{osmo\_mnc\_name\_buf@{osmo\_mnc\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mnc\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mnc\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{uint16\+\_\+t}]{mnc,  }\item[{bool}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em mnc} & MNC value. \\
\hline
\mbox{\texttt{ in}}  & {\em mnc\+\_\+3\+\_\+digits} & True if an MNC should fill three digits, only has an effect if MNC $<$ 100. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


Referenced by \textbf{ osmo\+\_\+mnc\+\_\+name()}, \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+c()}, and \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a455278bc743801015031b33060542b49}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_mnc\_name\_c@{osmo\_mnc\_name\_c}}
\index{osmo\_mnc\_name\_c@{osmo\_mnc\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_mnc\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mnc\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{uint16\+\_\+t}]{mnc,  }\item[{bool}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros, into a talloc-\/allocated buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em mnc} & MNC value. \\
\hline
\mbox{\texttt{ in}}  & {\em mnc\+\_\+3\+\_\+digits} & True if an MNC should fill three digits, only has an effect if MNC $<$ 100. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_add7e01a847d17b403dca9a1c58072f79}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_msisdn\_str\_valid@{osmo\_msisdn\_str\_valid}}
\index{osmo\_msisdn\_str\_valid@{osmo\_msisdn\_str\_valid}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_msisdn\_str\_valid()}
{\footnotesize\ttfamily bool osmo\+\_\+msisdn\+\_\+str\+\_\+valid (\begin{DoxyParamCaption}\item[{const char $\ast$}]{msisdn }\end{DoxyParamCaption})}



Determine whether the given MSISDN is valid according to 3GPP TS 23.\+003. 


\begin{DoxyParams}{Parameters}
{\em msisdn} & MSISDN digits in ASCII string representation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when the MSISDN is valid, false for invalid characters or number of digits. 
\end{DoxyReturn}


References \textbf{ GSM23003\+\_\+\+MSISDN\+\_\+\+MAX\+\_\+\+DIGITS}, \textbf{ GSM23003\+\_\+\+MSISDN\+\_\+\+MIN\+\_\+\+DIGITS}, and \textbf{ is\+\_\+n\+\_\+digits()}.

\mbox{\label{gsm23003_8h_a3ce658c252a4323e2eb9d5279fe2e2e8}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_parse\_home\_network\_domain@{osmo\_parse\_home\_network\_domain}}
\index{osmo\_parse\_home\_network\_domain@{osmo\_parse\_home\_network\_domain}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_parse\_home\_network\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+parse\+\_\+home\+\_\+network\+\_\+domain (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{out,  }\item[{const char $\ast$}]{in }\end{DoxyParamCaption})}



Parse a TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) into a \doxyref{osmo\+\_\+plmn\+\_\+id}{p.}{structosmo__plmn__id}. 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/allocated output structure \\
\hline
{\em in\mbox{[}in\mbox{]}} & character string representation to be parsed \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, and \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}.

\mbox{\label{gsm23003_8h_a638c10c477d06ed8d78f8ce06bd6b824}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_parse\_mme\_domain@{osmo\_parse\_mme\_domain}}
\index{osmo\_parse\_mme\_domain@{osmo\_parse\_mme\_domain}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_parse\_mme\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+parse\+\_\+mme\+\_\+domain (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+gummei} $\ast$}]{out,  }\item[{const char $\ast$}]{in }\end{DoxyParamCaption})}



Parse a TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) into a \doxyref{osmo\+\_\+gummei}{p.}{structosmo__gummei}. 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/allocated output GUMMEI structure \\
\hline
{\em in\mbox{[}in\mbox{]}} & character string representation to be parsed \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, and \textbf{ osmo\+\_\+gummei\+::plmn}.

\mbox{\label{gsm23003_8h_a6e5fad9eb2065463fbe1266246896f4c}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_cmp@{osmo\_plmn\_cmp}}
\index{osmo\_plmn\_cmp@{osmo\_plmn\_cmp}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+plmn\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}, and \textbf{ osmo\+\_\+mnc\+\_\+cmp()}.



Referenced by \textbf{ osmo\+\_\+lai\+\_\+cmp()}.

\mbox{\label{gsm23003_8h_ae8a971afee2120261b82eb7a8d3a4f2c}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_from\_bcd@{osmo\_plmn\_from\_bcd}}
\index{osmo\_plmn\_from\_bcd@{osmo\_plmn\_from\_bcd}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_from\_bcd()}
{\footnotesize\ttfamily void osmo\+\_\+plmn\+\_\+from\+\_\+bcd (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{bcd\+\_\+src,  }\item[{struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, and \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}.



Referenced by \textbf{ gsm48\+\_\+decode\+\_\+lai2()}, and \textbf{ gsm48\+\_\+mcc\+\_\+mnc\+\_\+from\+\_\+bcd()}.

\mbox{\label{gsm23003_8h_a82c72499a602aa92b80418f3d11a9e22}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_name@{osmo\_plmn\_name}}
\index{osmo\_plmn\_name@{osmo\_plmn\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+plmn\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_ada111597152a978afb5ad234e0352bfb}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_name2@{osmo\_plmn\_name2}}
\index{osmo\_plmn\_name2@{osmo\_plmn\_name2}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+plmn\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+plmn\+\_\+name()}{p.}{gsm23003_8c_a82c72499a602aa92b80418f3d11a9e22}, but returning in a different static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a9b9e02a0cb07baf36b3550e1b6ae24aa}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_name\_buf@{osmo\_plmn\_name\_buf}}
\index{osmo\_plmn\_name\_buf@{osmo\_plmn\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+plmn\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}, \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf()}, and \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+plmn\+\_\+name()}, \textbf{ osmo\+\_\+plmn\+\_\+name2()}, \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+c()}, and \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf()}.

\mbox{\label{gsm23003_8h_ace5d736b988f5c681e4372d28082d3d8}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_name\_c@{osmo\_plmn\_name\_c}}
\index{osmo\_plmn\_name\_c@{osmo\_plmn\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+plmn\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros, into a dynamically-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a5a734cb91e447b4127f9aa2cf6d775fe}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_plmn\_to\_bcd@{osmo\_plmn\_to\_bcd}}
\index{osmo\_plmn\_to\_bcd@{osmo\_plmn\_to\_bcd}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_plmn\_to\_bcd()}
{\footnotesize\ttfamily void osmo\+\_\+plmn\+\_\+to\+\_\+bcd (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{bcd\+\_\+dst,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}, and \textbf{ to\+\_\+bcd()}.



Referenced by \textbf{ gsm0808\+\_\+create\+\_\+common\+\_\+id()}, \textbf{ gsm48\+\_\+generate\+\_\+lai2()}, \textbf{ gsm48\+\_\+mcc\+\_\+mnc\+\_\+to\+\_\+bcd()}, and \textbf{ put\+\_\+old\+\_\+bss\+\_\+to\+\_\+new\+\_\+bss\+\_\+information()}.

\mbox{\label{gsm23003_8h_a3a3ba28b8569d7fcc5956d94b1731860}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_rai\_cmp@{osmo\_rai\_cmp}}
\index{osmo\_rai\_cmp@{osmo\_rai\_cmp}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_rai\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+rai\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+lai\+\_\+cmp()}, and \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::rac}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+cmp()}.

\mbox{\label{gsm23003_8h_a89798a86e9a4a354dfc1e23d5ba0e30b}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_rai\_name2@{osmo\_rai\_name2}}
\index{osmo\_rai\_name2@{osmo\_rai\_name2}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_rai\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+rai\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{rai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em rai} & RAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a82630c48fa1ae4e3ffeacedd72ab5222}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_rai\_name2\_buf@{osmo\_rai\_name2\_buf}}
\index{osmo\_rai\_name2\_buf@{osmo\_rai\_name2\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_rai\_name2\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+rai\+\_\+name2\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{rai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em rai} & RAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::plmn}, and \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::rac}.



Referenced by \textbf{ osmo\+\_\+rai\+\_\+name2()}, and \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+c()}.

\mbox{\label{gsm23003_8h_aab325fedd81035fab50d0edf222f63ff}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_rai\_name2\_c@{osmo\_rai\_name2\_c}}
\index{osmo\_rai\_name2\_c@{osmo\_rai\_name2\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_rai\_name2\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+rai\+\_\+name2\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{rai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em rai} & RAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of lai in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a6d91a72ad4d80f54160762da3c71e1c3}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_sai\_name@{osmo\_sai\_name}}
\index{osmo\_sai\_name@{osmo\_sai\_name}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_sai\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+sai\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}.

\mbox{\label{gsm23003_8h_aaff6dbe29a9a35a44b2c47a400502406}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_sai\_name2@{osmo\_sai\_name2}}
\index{osmo\_sai\_name2@{osmo\_sai\_name2}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_sai\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+sai\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. 

Useful for printing two distinct CGIs in the same printf format. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8h_a029c57e0ced4bfeb34f49452b55a68bf}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_sai\_name\_buf@{osmo\_sai\_name\_buf}}
\index{osmo\_sai\_name\_buf@{osmo\_sai\_name\_buf}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_sai\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sai\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id\+::lai}, \textbf{ osmo\+\_\+lai\+\_\+name()}, and \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id\+::sac}.



Referenced by \textbf{ osmo\+\_\+sai\+\_\+name()}, \textbf{ osmo\+\_\+sai\+\_\+name2()}, and \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8h_abb4d7f96b41a747bde7eec263185c7d0}} 
\index{gsm23003.h@{gsm23003.h}!osmo\_sai\_name\_c@{osmo\_sai\_name\_c}}
\index{osmo\_sai\_name\_c@{osmo\_sai\_name\_c}!gsm23003.h@{gsm23003.h}}
\doxysubsubsection{osmo\_sai\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sai\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of CGI in dynamically-\/allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.

