\doxysection{gsm23003.\+h}
\label{gsm23003_8h_source}\index{include/osmocom/gsm/gsm23003.h@{include/osmocom/gsm/gsm23003.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 }
\DoxyCodeLine{3 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{4 }
\DoxyCodeLine{5 \textcolor{preprocessor}{\#include <stddef.h>}}
\DoxyCodeLine{6 \textcolor{preprocessor}{\#include <stdint.h>}}
\DoxyCodeLine{7 \textcolor{preprocessor}{\#include <stdbool.h>}}
\DoxyCodeLine{8 }
\DoxyCodeLine{9 \textcolor{comment}{/* 23.003 Chapter 12.1 */}}
\DoxyCodeLine{10 \textcolor{keyword}{struct }osmo\_plmn\_id \{}
\DoxyCodeLine{11         uint16\_t mcc;}
\DoxyCodeLine{12         uint16\_t mnc;}
\DoxyCodeLine{13         \textcolor{keywordtype}{bool} mnc\_3\_digits; \textcolor{comment}{/*< ignored and implied true if mnc > 99, otherwise defines leading zeros. */}}
\DoxyCodeLine{14 \};}
\DoxyCodeLine{15 }
\DoxyCodeLine{16 \textcolor{comment}{/* 4.1 */}}
\DoxyCodeLine{17 \textcolor{keyword}{struct }osmo\_location\_area\_id \{}
\DoxyCodeLine{18         \textcolor{keyword}{struct }osmo\_plmn\_id plmn;}
\DoxyCodeLine{19         uint16\_t lac;}
\DoxyCodeLine{20 \};}
\DoxyCodeLine{21 }
\DoxyCodeLine{22 \textcolor{comment}{/* 4.2 */}}
\DoxyCodeLine{23 \textcolor{keyword}{struct }osmo\_routing\_area\_id \{}
\DoxyCodeLine{24         \textcolor{keyword}{struct }osmo\_location\_area\_id lac;}
\DoxyCodeLine{25         uint8\_t rac;}
\DoxyCodeLine{26 \};}
\DoxyCodeLine{27 }
\DoxyCodeLine{28 \textcolor{comment}{/* 4.3.1 */}}
\DoxyCodeLine{29 \textcolor{keyword}{struct }osmo\_cell\_global\_id \{}
\DoxyCodeLine{30         \textcolor{keyword}{struct }osmo\_location\_area\_id lai;}
\DoxyCodeLine{31         uint16\_t cell\_identity;}
\DoxyCodeLine{32 \};}
\DoxyCodeLine{33 }
\DoxyCodeLine{34 \textcolor{comment}{/* 3GPP TS 48.018:}}
\DoxyCodeLine{35 \textcolor{comment}{ * 8c.1.4.1.1 GERAN BSS identification (RIM)}}
\DoxyCodeLine{36 \textcolor{comment}{ * sec 11.3.9 Cell Identifier */}}
\DoxyCodeLine{37 \textcolor{keyword}{struct }osmo\_cell\_global\_id\_ps \{}
\DoxyCodeLine{38         \textcolor{keyword}{struct }osmo\_routing\_area\_id rai;}
\DoxyCodeLine{39         uint16\_t cell\_identity;}
\DoxyCodeLine{40 \};}
\DoxyCodeLine{41 }
\DoxyCodeLine{45 \textcolor{keyword}{enum} osmo\_cgi\_part \{}
\DoxyCodeLine{46         OSMO\_CGI\_PART\_PLMN = 1,}
\DoxyCodeLine{47         OSMO\_CGI\_PART\_LAC = 2,}
\DoxyCodeLine{48         OSMO\_CGI\_PART\_CI = 4,}
\DoxyCodeLine{49         OSMO\_CGI\_PART\_RAC = 8,}
\DoxyCodeLine{50 \};}
\DoxyCodeLine{51 }
\DoxyCodeLine{52 \textcolor{comment}{/* Actually defined in 3GPP TS 48.008 3.2.2.27 Cell Identifier List,}}
\DoxyCodeLine{53 \textcolor{comment}{ * but conceptually belongs with the above structures. */}}
\DoxyCodeLine{54 \textcolor{keyword}{struct }osmo\_lac\_and\_ci\_id \{}
\DoxyCodeLine{55         uint16\_t lac;}
\DoxyCodeLine{56         uint16\_t ci;}
\DoxyCodeLine{57 \};}
\DoxyCodeLine{58 }
\DoxyCodeLine{59 \textcolor{comment}{/* 12.4 */}}
\DoxyCodeLine{60 \textcolor{keyword}{struct }osmo\_rnc\_id \{}
\DoxyCodeLine{61         \textcolor{keyword}{struct }osmo\_plmn\_id plmn;}
\DoxyCodeLine{62         uint16\_t rnc\_id;}
\DoxyCodeLine{63 \};}
\DoxyCodeLine{64 }
\DoxyCodeLine{65 \textcolor{comment}{/* 12.5 */}}
\DoxyCodeLine{66 \textcolor{keyword}{struct }osmo\_service\_area\_id \{}
\DoxyCodeLine{67         \textcolor{keyword}{struct }osmo\_location\_area\_id lai;}
\DoxyCodeLine{68         uint16\_t sac;}
\DoxyCodeLine{69 \};}
\DoxyCodeLine{70 }
\DoxyCodeLine{71 \textcolor{comment}{/* 12.6 */}}
\DoxyCodeLine{72 \textcolor{keyword}{struct }osmo\_shared\_network\_area\_id \{}
\DoxyCodeLine{73         \textcolor{keyword}{struct }osmo\_plmn\_id plmn;}
\DoxyCodeLine{74         uint32\_t snac;}
\DoxyCodeLine{75 \};}
\DoxyCodeLine{76 }
\DoxyCodeLine{77 \textcolor{comment}{/* 5.1 */}}
\DoxyCodeLine{78 \textcolor{keyword}{enum} osmo\_gsn\_addr\_type \{}
\DoxyCodeLine{79         GSN\_ADDR\_TYPE\_IPV4    = 0,}
\DoxyCodeLine{80         GSN\_ADDR\_TYPE\_IPV6    = 1,}
\DoxyCodeLine{81 \};}
\DoxyCodeLine{82 }
\DoxyCodeLine{83 \textcolor{comment}{/* 5.1 */}}
\DoxyCodeLine{84 \textcolor{keyword}{struct }osmo\_gsn\_address \{}
\DoxyCodeLine{85         \textcolor{keyword}{enum} osmo\_gsn\_addr\_type type;}
\DoxyCodeLine{86         uint8\_t length;}
\DoxyCodeLine{87         uint8\_t addr[16];}
\DoxyCodeLine{88 \};}
\DoxyCodeLine{89 }
\DoxyCodeLine{90 \textcolor{comment}{/* 19.4.2.3 */}}
\DoxyCodeLine{91 \textcolor{keyword}{struct }osmo\_tracking\_area\_id \{}
\DoxyCodeLine{92         \textcolor{keyword}{struct }osmo\_plmn\_id plmn;}
\DoxyCodeLine{93         uint16\_t tac;}
\DoxyCodeLine{94 \};}
\DoxyCodeLine{95 }
\DoxyCodeLine{96 \textcolor{keyword}{struct }osmo\_eutran\_cell\_global\_id \{}
\DoxyCodeLine{97         \textcolor{keyword}{struct }osmo\_plmn\_id plmn;}
\DoxyCodeLine{98         uint32\_t eci; \textcolor{comment}{/* FIXME */}}
\DoxyCodeLine{99 \};}
\DoxyCodeLine{100 }
\DoxyCodeLine{101 \textcolor{comment}{/* 2.8.1 */}}
\DoxyCodeLine{102 \textcolor{keyword}{struct }osmo\_mme\_id \{}
\DoxyCodeLine{103         uint16\_t group\_id;}
\DoxyCodeLine{104         uint8\_t code;}
\DoxyCodeLine{105 \};}
\DoxyCodeLine{106 }
\DoxyCodeLine{107 \textcolor{comment}{/* 2.8.1 */}}
\DoxyCodeLine{108 \textcolor{keyword}{struct }osmo\_gummei \{}
\DoxyCodeLine{109         \textcolor{keyword}{struct }osmo\_plmn\_id plmn;}
\DoxyCodeLine{110         \textcolor{keyword}{struct }osmo\_mme\_id mme;}
\DoxyCodeLine{111 \};}
\DoxyCodeLine{112 }
\DoxyCodeLine{113 \textcolor{comment}{/* 2.8.1 */}}
\DoxyCodeLine{114 \textcolor{keyword}{struct }osmo\_guti \{}
\DoxyCodeLine{115         \textcolor{keyword}{struct }osmo\_gummei gummei;}
\DoxyCodeLine{116         uint32\_t mtmsi;}
\DoxyCodeLine{117 \};}
\DoxyCodeLine{118 }
\DoxyCodeLine{119 \textcolor{keywordtype}{bool} osmo\_imsi\_str\_valid(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *imsi);}
\DoxyCodeLine{120 \textcolor{keywordtype}{bool} osmo\_msisdn\_str\_valid(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *msisdn);}
\DoxyCodeLine{121 \textcolor{keywordtype}{bool} osmo\_imei\_str\_valid(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *imei, \textcolor{keywordtype}{bool} with\_15th\_digit);}
\DoxyCodeLine{122 }
\DoxyCodeLine{123 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_mcc\_name(uint16\_t mcc);}
\DoxyCodeLine{124 \textcolor{keywordtype}{char} *osmo\_mcc\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, uint16\_t mcc);}
\DoxyCodeLine{125 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_mcc\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, uint16\_t mcc);}
\DoxyCodeLine{126 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_mnc\_name(uint16\_t mnc, \textcolor{keywordtype}{bool} mnc\_3\_digits);}
\DoxyCodeLine{127 \textcolor{keywordtype}{char} *osmo\_mnc\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, uint16\_t mnc, \textcolor{keywordtype}{bool} mnc\_3\_digits);}
\DoxyCodeLine{128 \textcolor{keywordtype}{char} *osmo\_mnc\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, uint16\_t mnc, \textcolor{keywordtype}{bool} mnc\_3\_digits);}
\DoxyCodeLine{129 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_plmn\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{130 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_plmn\_name2(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{131 \textcolor{keywordtype}{char} *osmo\_plmn\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{132 \textcolor{keywordtype}{char} *osmo\_plmn\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{133 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_lai\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_location\_area\_id *lai);}
\DoxyCodeLine{134 \textcolor{keywordtype}{char} *osmo\_lai\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_location\_area\_id *lai);}
\DoxyCodeLine{135 \textcolor{keywordtype}{char} *osmo\_lai\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_location\_area\_id *lai);}
\DoxyCodeLine{136 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_rai\_name2(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_routing\_area\_id *rai);}
\DoxyCodeLine{137 \textcolor{keywordtype}{char} *osmo\_rai\_name2\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_routing\_area\_id *rai);}
\DoxyCodeLine{138 \textcolor{keywordtype}{char} *osmo\_rai\_name2\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_routing\_area\_id *rai);}
\DoxyCodeLine{139 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_cgi\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id *cgi);}
\DoxyCodeLine{140 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_cgi\_name2(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id *cgi);}
\DoxyCodeLine{141 \textcolor{keywordtype}{char} *osmo\_cgi\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id *cgi);}
\DoxyCodeLine{142 \textcolor{keywordtype}{char} *osmo\_cgi\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id *cgi);}
\DoxyCodeLine{143 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_cgi\_ps\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id\_ps *cgi\_ps);}
\DoxyCodeLine{144 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_cgi\_ps\_name2(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id\_ps *cgi\_ps);}
\DoxyCodeLine{145 \textcolor{keywordtype}{char} *osmo\_cgi\_ps\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id\_ps *cgi\_ps);}
\DoxyCodeLine{146 \textcolor{keywordtype}{char} *osmo\_cgi\_ps\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id\_ps *cgi\_ps);}
\DoxyCodeLine{147 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_rnc\_id\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_rnc\_id *rnc\_id);}
\DoxyCodeLine{148 \textcolor{keywordtype}{char} *osmo\_rnc\_id\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_rnc\_id *rnc\_id);}
\DoxyCodeLine{149 \textcolor{keywordtype}{char} *osmo\_rnc\_id\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_rnc\_id *rnc\_id);}
\DoxyCodeLine{150 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sai\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_service\_area\_id *sai);}
\DoxyCodeLine{151 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_sai\_name2(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_service\_area\_id *sai);}
\DoxyCodeLine{152 \textcolor{keywordtype}{char} *osmo\_sai\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_service\_area\_id *sai);}
\DoxyCodeLine{153 \textcolor{keywordtype}{char} *osmo\_sai\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_service\_area\_id *sai);}
\DoxyCodeLine{154 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_gummei\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gummei *gummei);}
\DoxyCodeLine{155 \textcolor{keywordtype}{char} *osmo\_gummei\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gummei *gummei);}
\DoxyCodeLine{156 \textcolor{keywordtype}{char} *osmo\_gummei\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gummei *gummei);}
\DoxyCodeLine{157 }
\DoxyCodeLine{158 \textcolor{keywordtype}{void} osmo\_plmn\_to\_bcd(uint8\_t *bcd\_dst, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{159 \textcolor{keywordtype}{void} osmo\_plmn\_from\_bcd(\textcolor{keyword}{const} uint8\_t *bcd\_src, \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{160 }
\DoxyCodeLine{161 \textcolor{keywordtype}{int} osmo\_mnc\_from\_str(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *mnc\_str, uint16\_t *mnc, \textcolor{keywordtype}{bool} *mnc\_3\_digits);}
\DoxyCodeLine{162 }
\DoxyCodeLine{163 \textcolor{comment}{/* Convert string to MCC.}}
\DoxyCodeLine{164 \textcolor{comment}{ * \(\backslash\)param mcc\_str[in]   String representation of an MCC, with or without leading zeros.}}
\DoxyCodeLine{165 \textcolor{comment}{ * \(\backslash\)param mcc[out]      MCC result buffer, or NULL.}}
\DoxyCodeLine{166 \textcolor{comment}{ * \(\backslash\)returns zero on success, -\/EINVAL in case of surplus characters, negative errno in case of conversion}}
\DoxyCodeLine{167 \textcolor{comment}{ *          errors. In case of error, do not modify the out-\/arguments.}}
\DoxyCodeLine{168 \textcolor{comment}{ */}}
\DoxyCodeLine{169 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{int} osmo\_mcc\_from\_str(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *mcc\_str, uint16\_t *mcc)}
\DoxyCodeLine{170 \{}
\DoxyCodeLine{171         \textcolor{keywordflow}{return} osmo\_mnc\_from\_str(mcc\_str, mcc, NULL);}
\DoxyCodeLine{172 \}}
\DoxyCodeLine{173 }
\DoxyCodeLine{174 \textcolor{keywordtype}{int} osmo\_mnc\_cmp(uint16\_t a\_mnc, \textcolor{keywordtype}{bool} a\_mnc\_3\_digits, uint16\_t b\_mnc, \textcolor{keywordtype}{bool} b\_mnc\_3\_digits);}
\DoxyCodeLine{175 \textcolor{keywordtype}{int} osmo\_plmn\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *b);}
\DoxyCodeLine{176 \textcolor{keywordtype}{int} osmo\_lai\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_location\_area\_id *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_location\_area\_id *b);}
\DoxyCodeLine{177 \textcolor{keywordtype}{int} osmo\_rai\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_routing\_area\_id *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_routing\_area\_id *b);}
\DoxyCodeLine{178 \textcolor{keywordtype}{int} osmo\_cgi\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id *b);}
\DoxyCodeLine{179 \textcolor{keywordtype}{int} osmo\_cgi\_ps\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id\_ps *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_cell\_global\_id\_ps *b);}
\DoxyCodeLine{180 \textcolor{keywordtype}{int} osmo\_rnc\_id\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_rnc\_id *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_rnc\_id *b);}
\DoxyCodeLine{181 \textcolor{keywordtype}{int} osmo\_mme\_id\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_mme\_id *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_mme\_id *b);}
\DoxyCodeLine{182 \textcolor{keywordtype}{int} osmo\_gummei\_cmp(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gummei *a, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gummei *b);}
\DoxyCodeLine{183 }
\DoxyCodeLine{184 \textcolor{keywordtype}{int} osmo\_gen\_home\_network\_domain(\textcolor{keywordtype}{char} *out, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{185 \textcolor{keywordtype}{int} osmo\_parse\_home\_network\_domain(\textcolor{keyword}{struct} osmo\_plmn\_id *out, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *in);}
\DoxyCodeLine{186 \textcolor{keywordtype}{int} osmo\_gen\_mme\_domain(\textcolor{keywordtype}{char} *out, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gummei *gummei);}
\DoxyCodeLine{187 \textcolor{keywordtype}{int} osmo\_gen\_mme\_group\_domain(\textcolor{keywordtype}{char} *out, uint16\_t mmegi, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *plmn);}
\DoxyCodeLine{188 \textcolor{keywordtype}{int} osmo\_parse\_mme\_domain(\textcolor{keyword}{struct} osmo\_gummei *out, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *in);}

\end{DoxyCode}
