Hello community,

here is the log from the commit of package libosmocore for openSUSE:Factory 
checked in at 2019-02-06 14:07:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libosmocore (Old)
 and      /work/SRC/openSUSE:Factory/.libosmocore.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libosmocore"

Wed Feb  6 14:07:28 2019 rev:20 rq:671921 version:1.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/libosmocore/libosmocore.changes  2019-02-01 
11:45:13.856565702 +0100
+++ /work/SRC/openSUSE:Factory/.libosmocore.new.28833/libosmocore.changes       
2019-02-06 14:07:31.926648015 +0100
@@ -2 +2 @@
-Tue Jan 29 08:53:26 UTC 2019 - [email protected]
+Thu Jan 31 14:47:59 UTC 2019 - [email protected]

Old:
----
  libosmocore-1.0.0.tar.xz

New:
----
  libosmocore-1.0.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libosmocore.spec ++++++
--- /var/tmp/diff_new_pack.xp3cKZ/_old  2019-02-06 14:07:32.710647871 +0100
+++ /var/tmp/diff_new_pack.xp3cKZ/_new  2019-02-06 14:07:32.714647870 +0100
@@ -16,10 +16,8 @@
 #
 
 
-%define version_unconverted 1.0.0
-
 Name:           libosmocore
-Version:        1.0.0
+Version:        1.0.1
 Release:        0
 Summary:        The Open Source Mobile Communications Core Library
 License:        GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND 
AGPL-3.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.xp3cKZ/_old  2019-02-06 14:07:32.758647862 +0100
+++ /var/tmp/diff_new_pack.xp3cKZ/_new  2019-02-06 14:07:32.758647862 +0100
@@ -2,9 +2,8 @@
        <service name="tar_scm" mode="disabled">
                <param name="scm">git</param>
                <param name="url">git://git.osmocom.org/libosmocore</param>
-               <param name="revision">master</param>
-               <param name="parent-tag">1.0.0</param>
-               <param name="versionformat">1.0.0</param>
+               <param name="revision">1.0.1</param>
+               <param name="versionformat">1.0.1</param>
        </service>
        <service name="recompress" mode="disabled">
                <param name="file">*.tar</param>

++++++ libosmocore-1.0.0.tar.xz -> libosmocore-1.0.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/include/osmocom/core/fsm.h 
new/libosmocore-1.0.1/include/osmocom/core/fsm.h
--- old/libosmocore-1.0.0/include/osmocom/core/fsm.h    2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/core/fsm.h    2019-01-21 
14:50:43.000000000 +0100
@@ -220,7 +220,7 @@
 
 /*! return the name of the state the FSM instance is currently in. */
 static inline const char *osmo_fsm_inst_state_name(struct osmo_fsm_inst *fi)
-{ return fi ? osmo_fsm_state_name(fi->fsm, fi->state) : "NULL"; }
+{ return osmo_fsm_state_name(fi->fsm, fi->state); }
 
 /*! perform a state change of the given FSM instance
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/include/osmocom/core/utils.h 
new/libosmocore-1.0.1/include/osmocom/core/utils.h
--- old/libosmocore-1.0.0/include/osmocom/core/utils.h  2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/core/utils.h  2019-01-21 
14:50:43.000000000 +0100
@@ -56,9 +56,6 @@
 char *osmo_ubit_dump(const uint8_t *bits, unsigned int len);
 char *osmo_hexdump(const unsigned char *buf, int len);
 char *osmo_hexdump_nospc(const unsigned char *buf, int len);
-const char *osmo_hexdump_buf(char *out_buf, size_t out_buf_size, const 
unsigned char *buf, int len, const char *delim,
-                            bool delim_after_last);
-
 char *osmo_osmo_hexdump_nospc(const unsigned char *buf, int len) 
__attribute__((__deprecated__));
 
 #define osmo_static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1] 
__attribute__((__unused__));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libosmocore-1.0.0/include/osmocom/gsm/gsm0808_utils.h 
new/libosmocore-1.0.1/include/osmocom/gsm/gsm0808_utils.h
--- old/libosmocore-1.0.0/include/osmocom/gsm/gsm0808_utils.h   2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/gsm/gsm0808_utils.h   2019-01-21 
14:50:43.000000000 +0100
@@ -78,9 +78,6 @@
 int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct 
gsm0808_cell_id_list2 *cil);
 int gsm0808_cell_id_u_name(char *buf, size_t buflen,
                           enum CELL_IDENT id_discr, const union 
gsm0808_cell_id_u *u);
-bool gsm0808_cell_ids_match(const struct gsm0808_cell_id *id1, const struct 
gsm0808_cell_id *id2, bool exact_match);
-int gsm0808_cell_id_matches_list(const struct gsm0808_cell_id *id, const 
struct gsm0808_cell_id_list2 *list,
-                                unsigned int match_nr, bool exact_match);
 
 uint8_t gsm0808_enc_cause(struct msgb *msg, uint16_t cause);
 uint8_t gsm0808_enc_aoip_trasp_addr(struct msgb *msg,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/include/osmocom/gsm/gsm23003.h 
new/libosmocore-1.0.1/include/osmocom/gsm/gsm23003.h
--- old/libosmocore-1.0.0/include/osmocom/gsm/gsm23003.h        2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/gsm/gsm23003.h        2019-01-21 
14:50:43.000000000 +0100
@@ -122,8 +122,6 @@
 
 int osmo_mnc_cmp(uint16_t a_mnc, bool a_mnc_3_digits, uint16_t b_mnc, bool 
b_mnc_3_digits);
 int osmo_plmn_cmp(const struct osmo_plmn_id *a, const struct osmo_plmn_id *b);
-int osmo_lai_cmp(const struct osmo_location_area_id *a, const struct 
osmo_location_area_id *b);
-int osmo_cgi_cmp(const struct osmo_cell_global_id *a, const struct 
osmo_cell_global_id *b);
 
 int osmo_gen_home_network_domain(char *out, const struct osmo_plmn_id *plmn);
 int osmo_parse_home_network_domain(struct osmo_plmn_id *out, const char *in);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/include/osmocom/gsm/gsm48.h 
new/libosmocore-1.0.1/include/osmocom/gsm/gsm48.h
--- old/libosmocore-1.0.0/include/osmocom/gsm/gsm48.h   2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/gsm/gsm48.h   2019-01-21 
14:50:43.000000000 +0100
@@ -45,7 +45,6 @@
        OSMO_DEPRECATED("Use gsm48_generate_lai2() instead, to not lose leading 
zeros in the MNC");
 void gsm48_generate_lai2(struct gsm48_loc_area_id *lai48, const struct 
osmo_location_area_id *lai);
 
-#define GSM48_MID_MAX_SIZE     11
 int gsm48_generate_mid_from_tmsi(uint8_t *buf, uint32_t tmsi);
 int gsm48_generate_mid_from_imsi(uint8_t *buf, const char *imsi);
 uint8_t gsm48_generate_mid(uint8_t *buf, const char *id, uint8_t mi_type);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libosmocore-1.0.0/include/osmocom/gsm/protocol/gsm_04_08.h 
new/libosmocore-1.0.1/include/osmocom/gsm/protocol/gsm_04_08.h
--- old/libosmocore-1.0.0/include/osmocom/gsm/protocol/gsm_04_08.h      
2019-01-29 00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/gsm/protocol/gsm_04_08.h      
2019-01-21 14:50:43.000000000 +0100
@@ -56,22 +56,6 @@
 #endif
 } __attribute__ ((packed));
 
-struct osmo_gsm48_classmark {
-       bool classmark1_set;
-       struct gsm48_classmark1 classmark1;
-       uint8_t classmark2_len;
-       struct gsm48_classmark2 classmark2;
-       uint8_t classmark3_len;
-       uint8_t classmark3[14]; /* if cm3 gets extended by spec, it will be 
truncated */
-};
-
-bool osmo_gsm48_classmark_is_r99(const struct osmo_gsm48_classmark *cm);
-bool osmo_gsm48_classmark1_is_r99(const struct gsm48_classmark1 *cm1);
-bool osmo_gsm48_classmark2_is_r99(const struct gsm48_classmark2 *cm2, uint8_t 
cm2_len);
-int osmo_gsm48_classmark_supports_a5(const struct osmo_gsm48_classmark *cm, 
uint8_t a5);
-const char *osmo_gsm48_classmark_a5_name(const struct osmo_gsm48_classmark 
*cm);
-void osmo_gsm48_classmark_update(struct osmo_gsm48_classmark *dst, const 
struct osmo_gsm48_classmark *src);
-
 /* Chapter 10.5.2.1b.3 */
 #if OSMO_IS_LITTLE_ENDIAN == 1
 struct gsm48_range_1024 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libosmocore-1.0.0/include/osmocom/gsm/protocol/gsm_23_003.h 
new/libosmocore-1.0.1/include/osmocom/gsm/protocol/gsm_23_003.h
--- old/libosmocore-1.0.0/include/osmocom/gsm/protocol/gsm_23_003.h     
2019-01-29 00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/include/osmocom/gsm/protocol/gsm_23_003.h     
2019-01-21 14:50:43.000000000 +0100
@@ -24,9 +24,6 @@
                                         GSM23003_IMEI_SNR_NUM_DIGITS + 1)
 #define GSM23003_IMEISV_NUM_DIGITS     (GSM23003_IMEI_TAC_NUM_DIGITS + \
                                         GSM23003_IMEI_SNR_NUM_DIGITS + 2)
-/* IMEI without Luhn checksum */
-#define GSM23003_IMEI_NUM_DIGITS_NO_CHK        (GSM23003_IMEI_TAC_NUM_DIGITS + 
\
-                                        GSM23003_IMEI_SNR_NUM_DIGITS)
 
 /* Chapter 19.2 "epc.mnc000.mcc000.3gppnetwork.org" */
 #define GSM23003_HOME_NETWORK_DOMAIN_LEN       33
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/gb/gprs_bssgp.c 
new/libosmocore-1.0.1/src/gb/gprs_bssgp.c
--- old/libosmocore-1.0.0/src/gb/gprs_bssgp.c   2019-01-29 00:59:32.000000000 
+0100
+++ new/libosmocore-1.0.1/src/gb/gprs_bssgp.c   2019-01-21 14:50:43.000000000 
+0100
@@ -1156,18 +1156,11 @@
 
        /* IMSI */
        if (dup->imsi && strlen(dup->imsi)) {
-               uint8_t mi[GSM48_MID_MAX_SIZE];
-/* gsm48_generate_mid_from_imsi() is guaranteed to never return more than 11,
- * but somehow gcc (8.2) is not smart enough to figure this out and claims that
- * the memcpy in msgb_tvlv_put() below will cause and out-of-bounds access up 
to
- * mi[131], which is wrong */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Warray-bounds"
+               uint8_t mi[10];
                int imsi_len = gsm48_generate_mid_from_imsi(mi, dup->imsi);
                if (imsi_len > 2)
                        msgb_tvlv_push(msg, BSSGP_IE_IMSI,
                                imsi_len-2, mi+2);
-#pragma GCC diagnostic pop
        }
 
        /* DRX parameters */
@@ -1212,7 +1205,7 @@
        struct bssgp_normal_hdr *bgph =
                        (struct bssgp_normal_hdr *) msgb_put(msg, 
sizeof(*bgph));
        uint16_t drx_params = osmo_htons(pinfo->drx_params);
-       uint8_t mi[GSM48_MID_MAX_SIZE];
+       uint8_t mi[10];
        int imsi_len = gsm48_generate_mid_from_imsi(mi, pinfo->imsi);
        struct gsm48_ra_id ra;
 
@@ -1227,14 +1220,7 @@
        else
                bgph->pdu_type = BSSGP_PDUT_PAGING_CS;
        /* IMSI */
-/* gsm48_generate_mid_from_imsi() is guaranteed to never return more than 11,
- * but somehow gcc (8.2) is not smart enough to figure this out and claims that
- * the memcpy in msgb_tvlv_put() below will cause and out-of-bounds access up 
to
- * mi[131], which is wrong */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Warray-bounds"
        msgb_tvlv_put(msg, BSSGP_IE_IMSI, imsi_len-2, mi+2);
-#pragma GCC diagnostic pop
        /* DRX Parameters */
        msgb_tvlv_put(msg, BSSGP_IE_DRX_PARAMS, 2,
                        (uint8_t *) &drx_params);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/gb/gprs_bssgp_bss.c 
new/libosmocore-1.0.1/src/gb/gprs_bssgp_bss.c
--- old/libosmocore-1.0.0/src/gb/gprs_bssgp_bss.c       2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/src/gb/gprs_bssgp_bss.c       2019-01-21 
14:50:43.000000000 +0100
@@ -178,21 +178,15 @@
                                const char *imsi)
 {
        struct msgb *msg = common_tx_radio_status(bctx);
-       uint8_t mi[GSM48_MID_MAX_SIZE];
+       uint8_t mi[10];
        int imsi_len = gsm48_generate_mid_from_imsi(mi, imsi);
 
        if (!msg)
                return -ENOMEM;
-/* gsm48_generate_mid_from_imsi() is guaranteed to never return more than 11,
- * but somehow gcc (8.2) is not smart enough to figure this out and claims that
- * the memcpy in msgb_tvlv_put() below will cause and out-of-bounds access up 
to
- * mi[131], which is wrong */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Warray-bounds"
+
        /* strip the MI type and length values (2 bytes) */
        if (imsi_len > 2)
                msgb_tvlv_put(msg, BSSGP_IE_IMSI, imsi_len-2, mi+2);
-#pragma GCC diagnostic pop
        LOGPC(DBSSGP, LOGL_NOTICE, "IMSI=%s ", imsi);
 
        return common_tx_radio_status2(msg, cause);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/gsm/gsm0808_utils.c 
new/libosmocore-1.0.1/src/gsm/gsm0808_utils.c
--- old/libosmocore-1.0.0/src/gsm/gsm0808_utils.c       2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/src/gsm/gsm0808_utils.c       2019-01-21 
14:50:43.000000000 +0100
@@ -1391,151 +1391,6 @@
        }
 }
 
-/* Store individual Cell Identifier information in a CGI, without clearing the 
remaining ones.
- * This is useful to supplement one CGI with information from more than one 
Cell Identifier,
- * which in turn is useful to match Cell Identifiers of differing kinds to 
each other.
- * Before first invocation, clear the *dst struct externally, this function 
does only write those members
- * that are present in parameter u.
- */
-static void cell_id_to_cgi(struct osmo_cell_global_id *dst,
-                          enum CELL_IDENT discr, const union gsm0808_cell_id_u 
*u)
-{
-       switch (discr) {
-       case CELL_IDENT_WHOLE_GLOBAL:
-               *dst = u->global;
-               return;
-
-       case CELL_IDENT_LAC_AND_CI:
-               dst->lai.lac = u->lac_and_ci.lac;
-               dst->cell_identity = u->lac_and_ci.ci;
-               return;
-
-       case CELL_IDENT_CI:
-               dst->cell_identity = u->ci;
-               return;
-
-       case CELL_IDENT_LAI_AND_LAC:
-               dst->lai = u->lai_and_lac;
-               return;
-
-       case CELL_IDENT_LAC:
-               dst->lai.lac = u->lac;
-               return;
-
-       case CELL_IDENT_NO_CELL:
-       case CELL_IDENT_BSS:
-       case CELL_IDENT_UTRAN_PLMN_LAC_RNC:
-       case CELL_IDENT_UTRAN_RNC:
-       case CELL_IDENT_UTRAN_LAC_RNC:
-               /* No values to set. */
-               return;
-       }
-}
-
-/*! Return true if the common information between the two Cell Identifiers 
match.
- * For example, if a LAC+CI is compared to LAC, return true if the LAC are the 
same.
- * Note that CELL_IDENT_NO_CELL will always return false.
- * Also CELL_IDENT_BSS will always return false, since this function cannot 
possibly
- * know the bounds of the BSS, so the caller must handle CELL_IDENT_BSS 
specially.
- * \param[in] discr1  Cell Identifier type.
- * \param[in] u1  Cell Identifier value.
- * \param[in] discr2  Other Cell Identifier type.
- * \param[in] u2  Other Cell Identifier value.
- * \param[in] exact_match  If true, return true only if the CELL_IDENT types 
and all values are identical.
- * \returns True if the common fields of the above match.
- */
-static bool gsm0808_cell_id_u_match(enum CELL_IDENT discr1, const union 
gsm0808_cell_id_u *u1,
-                                   enum CELL_IDENT discr2, const union 
gsm0808_cell_id_u *u2,
-                                   bool exact_match)
-{
-       struct osmo_cell_global_id a = {};
-       struct osmo_cell_global_id b = {};
-
-       if (exact_match && discr1 != discr2)
-               return false;
-
-       /* First handle the odd wildcard like CELL_IDENT kinds. We can't really 
match any of these. */
-       switch (discr1) {
-       case CELL_IDENT_NO_CELL:
-       case CELL_IDENT_BSS:
-               return discr1 == discr2;
-       case CELL_IDENT_UTRAN_PLMN_LAC_RNC:
-       case CELL_IDENT_UTRAN_RNC:
-       case CELL_IDENT_UTRAN_LAC_RNC:
-               return false;
-       default:
-               break;
-       }
-       switch (discr2) {
-       case CELL_IDENT_NO_CELL:
-       case CELL_IDENT_UTRAN_PLMN_LAC_RNC:
-       case CELL_IDENT_UTRAN_RNC:
-       case CELL_IDENT_UTRAN_LAC_RNC:
-       case CELL_IDENT_BSS:
-               return false;
-       default:
-               break;
-       }
-
-       /* Enrich both sides to full CGI, then compare those. First set the 
*other* ID's values in case
-        * they assign more items. For example:
-        * u1 = LAC:42
-        * u2 = LAC+CI:23+5
-        * 1) a <- LAC+CI:23+5
-        * 2) a <- LAC:42 so that a = LAC+CI:42+5
-        * Now we can compare those two and find a mismatch. If the LAC were 
the same, we would get
-        * identical LAC+CI and hence a match. */
-
-       cell_id_to_cgi(&a, discr2, u2);
-       cell_id_to_cgi(&a, discr1, u1);
-
-       cell_id_to_cgi(&b, discr1, u1);
-       cell_id_to_cgi(&b, discr2, u2);
-
-       return osmo_cgi_cmp(&a, &b) == 0;
-}
-
-/*! Return true if the common information between the two Cell Identifiers 
match.
- * For example, if a LAC+CI is compared to LAC, return true if the LAC are the 
same.
- * Note that CELL_IDENT_NO_CELL will always return false.
- * Also CELL_IDENT_BSS will always return false, since this function cannot 
possibly
- * know the bounds of the BSS, so the caller must handle CELL_IDENT_BSS 
specially.
- * \param[in] id1  Cell Identifier.
- * \param[in] id2  Other Cell Identifier.
- * \param[in] exact_match  If true, return true only if the CELL_IDENT types 
and all values are identical.
- * \returns True if the common fields of the above match.
- */
-bool gsm0808_cell_ids_match(const struct gsm0808_cell_id *id1, const struct 
gsm0808_cell_id *id2, bool exact_match)
-{
-       return gsm0808_cell_id_u_match(id1->id_discr, &id1->id, id2->id_discr, 
&id2->id, exact_match);
-}
-
-/*! Find an index in a Cell Identifier list that matches a given single Cell 
Identifer.
- * Compare \a id against each entry in \a list using gsm0808_cell_ids_match(), 
and return the list index
- * if a match is found. \a match_nr allows iterating all matches in the list. 
A match_nr <= 0 returns the
- * first match in the list, match_nr == 1 the second match, etc., and if 
match_nr exceeds the available
- * matches in the list, -1 is returned.
- * \param[in] id  Cell Identifier to match.
- * \param[in] list  Cell Identifier list to search in.
- * \param[in] match_nr  Ignore this many matches.
- * \param[in] exact_match  If true, consider as match only if the CELL_IDENT 
types and all values are identical.
- * \returns -1 if no match is found, list index if a match is found.
- */
-int gsm0808_cell_id_matches_list(const struct gsm0808_cell_id *id, const 
struct gsm0808_cell_id_list2 *list,
-                                unsigned int match_nr, bool exact_match)
-{
-       int i;
-       for (i = 0; i < list->id_list_len; i++) {
-               if (gsm0808_cell_id_u_match(id->id_discr, &id->id, 
list->id_discr, &list->id_list[i], exact_match)) {
-                       if (match_nr)
-                               match_nr--;
-                       else
-                               return i;
-               }
-       }
-       return -1;
-}
-
 /*! value_string[] for enum CELL_IDENT. */
 const struct value_string gsm0808_cell_id_discr_names[] = {
        { CELL_IDENT_WHOLE_GLOBAL, "CGI" },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/gsm/gsm23003.c 
new/libosmocore-1.0.1/src/gsm/gsm23003.c
--- old/libosmocore-1.0.0/src/gsm/gsm23003.c    2019-01-29 00:59:32.000000000 
+0100
+++ new/libosmocore-1.0.1/src/gsm/gsm23003.c    2019-01-21 14:50:43.000000000 
+0100
@@ -324,40 +324,6 @@
        return osmo_mnc_cmp(a->mnc, a->mnc_3_digits, b->mnc, b->mnc_3_digits);
 }
 
-/* Compare two LAI.
- * The order of comparison is MCC, MNC, LAC. See also osmo_plmn_cmp().
- * \param a[in]  "Left" side LAI.
- * \param b[in]  "Right" side LAI.
- * \returns 0 if the LAI are equal, -1 if a < b, 1 if a > b. */
-int osmo_lai_cmp(const struct osmo_location_area_id *a, const struct 
osmo_location_area_id *b)
-{
-       int rc = osmo_plmn_cmp(&a->plmn, &b->plmn);
-       if (rc)
-               return rc;
-       if (a->lac < b->lac)
-               return -1;
-       if (a->lac > b->lac)
-               return 1;
-       return 0;
-}
-
-/* Compare two CGI.
- * The order of comparison is MCC, MNC, LAC, CI. See also osmo_lai_cmp().
- * \param a[in]  "Left" side CGI.
- * \param b[in]  "Right" side CGI.
- * \returns 0 if the CGI are equal, -1 if a < b, 1 if a > b. */
-int osmo_cgi_cmp(const struct osmo_cell_global_id *a, const struct 
osmo_cell_global_id *b)
-{
-       int rc = osmo_lai_cmp(&a->lai, &b->lai);
-       if (rc)
-               return rc;
-       if (a->cell_identity < b->cell_identity)
-               return -1;
-       if (a->cell_identity > b->cell_identity)
-               return 1;
-       return 0;
-}
-
 /*! Generate TS 23.003 Section 19.2 Home Network Realm/Domain (text form)
  *  \param out[out] caller-provided output buffer, at least 33 bytes long
  *  \param plmn[in] Osmocom representation of PLMN ID (MCC + MNC)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/gsm/gsm48.c 
new/libosmocore-1.0.1/src/gsm/gsm48.c
--- old/libosmocore-1.0.0/src/gsm/gsm48.c       2019-01-29 00:59:32.000000000 
+0100
+++ new/libosmocore-1.0.1/src/gsm/gsm48.c       2019-01-21 14:50:43.000000000 
+0100
@@ -637,23 +637,20 @@
        return 7;
 }
 
-/*! Generate TS 24.008 §10.5.1.4 Mobile ID of BCD type from ASCII string
- *  \param[out] buf Caller-provided output buffer of at least 
GSM48_MID_MAX_SIZE bytes
+/*! Generate TS 24.008 §10.5.1.4 Mobile ID
+ *  \param[out] buf Caller-provided output buffer
  *  \param[in] id Identity to be encoded
- *  \param[in] mi_type Type of identity (e.g. GSM_MI_TYPE_IMSI, IMEI, IMEISV)
+ *  \param[in] mi_type Type of identity (e.g. GSM_MI_TYPE_TMSI)
  *  \returns number of bytes used in \a buf */
 uint8_t gsm48_generate_mid(uint8_t *buf, const char *id, uint8_t mi_type)
 {
-       uint8_t length = strnlen(id, 16), i, off = 0, odd = (length & 1) == 1;
-       /* maximum length == 16 (IMEISV) */
+       uint8_t length = strnlen(id, 255), i, off = 0, odd = (length & 1) == 1;
 
        buf[0] = GSM48_IE_MOBILE_ID;
        buf[2] = osmo_char2bcd(id[0]) << 4 | (mi_type & GSM_MI_TYPE_MASK) | 
(odd << 3);
 
        /* if the length is even we will fill half of the last octet */
        buf[1] = (length + (odd ? 1 : 2)) >> 1;
-       /* buf[1] maximum = 18/2 = 9 */
-       OSMO_ASSERT(buf[1] <= 9);
 
        for (i = 1; i < buf[1]; ++i) {
                uint8_t upper, lower = osmo_char2bcd(id[++off]);
@@ -665,7 +662,6 @@
                buf[2 + i] = (upper << 4) | lower;
        }
 
-       /* maximum return value: 2 + 9 = 11 */
        return 2 + buf[1];
 }
 
@@ -1160,130 +1156,4 @@
        {}
 };
 
-bool osmo_gsm48_classmark1_is_r99(const struct gsm48_classmark1 *cm1)
-{
-       return cm1->rev_lev >= 2;
-}
-
-bool osmo_gsm48_classmark2_is_r99(const struct gsm48_classmark2 *cm2, uint8_t 
cm2_len)
-{
-       if (!cm2_len)
-               return false;
-       return cm2->rev_lev >= 2;
-}
-
-/*! Return true if any of Classmark 1 or Classmark 2 are present and indicate 
R99 capability.
- * \param[in] cm  Classmarks.
- * \returns True if R99 or later, false if pre-R99 or no Classmarks are 
present.
- */
-bool osmo_gsm48_classmark_is_r99(const struct osmo_gsm48_classmark *cm)
-{
-       if (cm->classmark1_set)
-               return osmo_gsm48_classmark1_is_r99(&cm->classmark1);
-       return osmo_gsm48_classmark2_is_r99(&cm->classmark2, 
cm->classmark2_len);
-}
-
-/*! Return a string representation of A5 cipher algorithms indicated by 
Classmark 1, 2 and 3.
- * \param[in] cm  Classmarks.
- * \returns A statically allocated string like "cm1{a5/1=supported} cm2{0x23= 
A5/2 A5/3} no-cm3"
- */
-const char *osmo_gsm48_classmark_a5_name(const struct osmo_gsm48_classmark *cm)
-{
-       static char buf[128];
-       char cm1[42] = "no-cm1";
-       char cm2[42] = " no-cm2";
-       char cm3[42] = " no-cm2";
-
-       if (cm->classmark1_set)
-               snprintf(cm1, sizeof(cm1), "cm1{a5/1=%s}",
-                    cm->classmark1.a5_1 ? "not-supported":"supported" /* 
inverted logic */);
-
-       if (cm->classmark2_len >= 3)
-               snprintf(cm2, sizeof(cm2), " cm2{0x%x=%s%s}",
-                        cm->classmark2.a5_2 + (cm->classmark2.a5_3 << 1),
-                        cm->classmark2.a5_2 ? " A5/2" : "",
-                        cm->classmark2.a5_3 ? " A5/3" : "");
-
-       if (cm->classmark3_len >= 1)
-               snprintf(cm3, sizeof(cm3), " cm3{0x%x=%s%s%s%s}",
-                        cm->classmark3[0],
-                        cm->classmark3[0] & (1 << 0) ? " A5/4" : "",
-                        cm->classmark3[0] & (1 << 1) ? " A5/5" : "",
-                        cm->classmark3[0] & (1 << 2) ? " A5/6" : "",
-                        cm->classmark3[0] & (1 << 3) ? " A5/7" : "");
-
-       snprintf(buf, sizeof(buf), "%s%s%s", cm1, cm2, cm3);
-       return buf;
-}
-
-/*! Overwrite dst with the Classmark information present in src.
- * Add an new Classmark and overwrite in dst what src has to offer, but where 
src has no Classmark information, leave
- * dst unchanged. (For Classmark 2 and 3, dst will exactly match any non-zero 
Classmark length from src, hence may end
- * up with a shorter Classmark after this call.)
- * \param[out] dst  The target Classmark storage to be updated.
- * \param[in] src  The new Classmark information to read from.
- */
-void osmo_gsm48_classmark_update(struct osmo_gsm48_classmark *dst, const 
struct osmo_gsm48_classmark *src)
-{
-       if (src->classmark1_set) {
-               dst->classmark1 = src->classmark1;
-               dst->classmark1_set = true;
-       }
-       if (src->classmark2_len) {
-               dst->classmark2_len = src->classmark2_len;
-               dst->classmark2 = src->classmark2;
-       }
-       if (src->classmark3_len) {
-               dst->classmark3_len = src->classmark3_len;
-               memcpy(dst->classmark3, src->classmark3, 
OSMO_MIN(sizeof(dst->classmark3), src->classmark3_len));
-       }
-}
-
-
-/*! Determine if the given Classmark (1/2/3) value permits a given A5/n cipher.
- * \param[in] cm  Classmarks.
- * \param[in] a5  The N in A5/N for which to query whether support is 
indicated.
- * \return 1 when the given A5/n is permitted, 0 when not (or a5 > 7), and 
negative if the respective MS Classmark is
- *         not known, where the negative number indicates the classmark type: 
-2 means Classmark 2 is not available. The
- *         idea is that when e.g. A5/3 is requested and the corresponding 
Classmark 3 is not available, that the caller
- *         can react by obtaining Classmark 3 and calling again once it is 
available.
- */
-int osmo_gsm48_classmark_supports_a5(const struct osmo_gsm48_classmark *cm, 
uint8_t a5)
-{
-       switch (a5) {
-       case 0:
-               /* all phones must implement A5/0, see 3GPP TS 43.020 4.9 */
-               return 1;
-       case 1:
-               /* 3GPP TS 43.020 4.9 requires A5/1 to be suppored by all 
phones and actually states:
-                * "The network shall not provide service to an MS which 
indicates that it does not
-                *  support the ciphering algorithm A5/1.".  However, let's be 
more tolerant based
-                * on policy here */
-               /* See 3GPP TS 24.008 10.5.1.7 */
-               if (!cm->classmark1_set)
-                       return -1;
-               /* Inverted logic for this bit! */
-               return cm->classmark1.a5_1 ? 0 : 1;
-       case 2:
-               /* See 3GPP TS 24.008 10.5.1.6 */
-               if (cm->classmark2_len < 3)
-                       return -2;
-               return cm->classmark2.a5_2 ? 1 : 0;
-       case 3:
-               if (cm->classmark2_len < 3)
-                       return -2;
-               return cm->classmark2.a5_3 ? 1 : 0;
-       case 4:
-       case 5:
-       case 6:
-       case 7:
-               /* See 3GPP TS 24.008 10.5.1.7 */
-               if (!cm->classmark3_len)
-                       return -3;
-               return (cm->classmark3[0] & (1 << (a5-4))) ? 1 : 0;
-       default:
-               return 0;
-       }
-}
-
 /*! @} */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/gsm/libosmogsm.map 
new/libosmocore-1.0.1/src/gsm/libosmogsm.map
--- old/libosmocore-1.0.0/src/gsm/libosmogsm.map        2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/src/gsm/libosmogsm.map        2019-01-21 
14:50:43.000000000 +0100
@@ -210,8 +210,6 @@
 gsm0808_cell_id_list_name_buf;
 gsm0808_cell_id_discr_names;
 gsm0808_cell_id_u_name;
-gsm0808_cell_ids_match;
-gsm0808_cell_id_matches_list;
 gsm0808_chan_type_to_speech_codec;
 gsm0808_speech_codec_from_chan_type;
 gsm0808_sc_cfg_from_gsm48_mr_cfg;
@@ -580,12 +578,5 @@
 osmo_lu_type_names;
 osmo_cm_service_type_names;
 
-osmo_classmark_is_r99;
-osmo_classmark1_is_r99;
-osmo_classmark2_is_r99;
-osmo_classmark_supports_a5;
-osmo_classmark_a5_name;
-osmo_classmark_update;
-
 local: *;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/src/utils.c 
new/libosmocore-1.0.1/src/utils.c
--- old/libosmocore-1.0.0/src/utils.c   2019-01-29 00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/src/utils.c   2019-01-21 14:50:43.000000000 +0100
@@ -219,55 +219,30 @@
 static char hexd_buff[4096];
 static const char hex_chars[] = "0123456789abcdef";
 
-/*! Convert binary sequence to hexadecimal ASCII string.
- *  \param[out] out_buf  Output buffer to write the resulting string to.
- *  \param[in] out_buf_size  sizeof(out_buf).
- *  \param[in] buf  Input buffer, pointer to sequence of bytes.
- *  \param[in] len  Length of input buf in number of bytes.
- *  \param[in] delim  String to separate each byte; NULL or "" for no delim.
- *  \param[in] delim_after_last  If true, end the string in delim (true: 
"1a:ef:d9:", false: "1a:ef:d9");
- *                               if out_buf has insufficient space, the string 
will always end in a delim.
- *  \returns out_buf, containing a zero-terminated string, or "" (empty 
string) if out_buf == NULL or out_buf_size < 1.
- *
- * This function will print a sequence of bytes as hexadecimal numbers, adding 
one delim between each byte (e.g. for
- * delim passed as ":", return a string like "1a:ef:d9").
- *
- * The delim_after_last argument exists to be able to exactly show the 
original osmo_hexdump() behavior, which always
- * ends the string with a delimiter.
- */
-const char *osmo_hexdump_buf(char *out_buf, size_t out_buf_size, const 
unsigned char *buf, int len, const char *delim,
-                            bool delim_after_last)
+static char *_osmo_hexdump(const unsigned char *buf, int len, char *delim)
 {
        int i;
-       char *cur = out_buf;
-       size_t delim_len;
-
-       if (!out_buf || !out_buf_size)
-               return "";
-
-       delim = delim ? : "";
-       delim_len = strlen(delim);
+       char *cur = hexd_buff;
 
+       hexd_buff[0] = 0;
        for (i = 0; i < len; i++) {
                const char *delimp = delim;
-               int len_remain = out_buf_size - (cur - out_buf) - 1;
-               if (len_remain < (2 + delim_len)
-                   && !(!delim_after_last && i == (len - 1) && len_remain >= 
2))
+               int len_remain = sizeof(hexd_buff) - (cur - hexd_buff);
+               if (len_remain < 3)
                        break;
 
                *cur++ = hex_chars[buf[i] >> 4];
                *cur++ = hex_chars[buf[i] & 0xf];
 
-               if (i == (len - 1) && !delim_after_last)
-                       break;
-
                while (len_remain > 1 && *delimp) {
                        *cur++ = *delimp++;
                        len_remain--;
                }
+
+               *cur = 0;
        }
-       *cur = '\0';
-       return out_buf;
+       hexd_buff[sizeof(hexd_buff)-1] = 0;
+       return hexd_buff;
 }
 
 /*! Convert a sequence of unpacked bits to ASCII string
@@ -317,8 +292,7 @@
  */
 char *osmo_hexdump(const unsigned char *buf, int len)
 {
-       osmo_hexdump_buf(hexd_buff, sizeof(hexd_buff), buf, len, " ", true);
-       return hexd_buff;
+       return _osmo_hexdump(buf, len, " ");
 }
 
 /*! Convert binary sequence to hexadecimal ASCII string
@@ -334,8 +308,7 @@
  */
 char *osmo_hexdump_nospc(const unsigned char *buf, int len)
 {
-       osmo_hexdump_buf(hexd_buff, sizeof(hexd_buff), buf, len, "", true);
-       return hexd_buff;
+       return _osmo_hexdump(buf, len, "");
 }
 
 /* Compat with previous typo to preserve abi */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/tests/gsm0408/gsm0408_test.c 
new/libosmocore-1.0.1/tests/gsm0408/gsm0408_test.c
--- old/libosmocore-1.0.0/tests/gsm0408/gsm0408_test.c  2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/tests/gsm0408/gsm0408_test.c  2019-01-21 
14:50:43.000000000 +0100
@@ -422,17 +422,17 @@
        },
        {
                .mi_type = GSM_MI_TYPE_IMEISV,
-               .mi_str = "9876543210987654",
-               .mi_name = "IMEI-SV-9876543210987654",
-               .expect_mi_tlv_hex = "17099378563412907856f4",
+               .mi_str = "987654321098765432",
+               .mi_name = "IMEI-SV-987654321098765432",
+               .expect_mi_tlv_hex = "170a937856341290785634f2",
        },
        {
                .mi_type = GSM_MI_TYPE_IMEISV,
-               .mi_str = "9876543210987654",
-               .mi_name = "IMEI-SV-9876543210987654",
-               .expect_mi_tlv_hex = "17099378563412907856f4",
-               .str_size = 17,
-               .expect_str = "9876543210987654",
+               .mi_str = "987654321098765432",
+               .mi_name = "IMEI-SV-987654321098765432",
+               .expect_mi_tlv_hex = "170a937856341290785634f2",
+               .str_size = 16,
+               .expect_str = "987654321098765",
        },
        {
                /* gsm48 treats TMSI as decimal string */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/tests/gsm0408/gsm0408_test.ok 
new/libosmocore-1.0.1/tests/gsm0408/gsm0408_test.ok
--- old/libosmocore-1.0.0/tests/gsm0408/gsm0408_test.ok 2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/tests/gsm0408/gsm0408_test.ok 2019-01-21 
14:50:43.000000000 +0100
@@ -40,14 +40,14 @@
   -> MI-TLV-hex='17089a78563412907856'
   -> MI-str="987654321098765" rc=16
   -> MI-name="IMEI-987654321098765"
-- IMEI-SV 9876543210987654
-  -> MI-TLV-hex='17099378563412907856f4'
-  -> MI-str="9876543210987654" rc=17
-  -> MI-name="IMEI-SV-9876543210987654"
-- IMEI-SV 9876543210987654
-  -> MI-TLV-hex='17099378563412907856f4'
-  -> MI-str="9876543210987654" rc=17
-  -> MI-name="IMEI-SV-9876543210987654"
+- IMEI-SV 987654321098765432
+  -> MI-TLV-hex='170a937856341290785634f2'
+  -> MI-str="987654321098765432" rc=19
+  -> MI-name="IMEI-SV-987654321098765432"
+- IMEI-SV 987654321098765432
+  -> MI-TLV-hex='170a937856341290785634f2'
+  -> MI-str="987654321098765" rc=16
+  -> MI-name="IMEI-SV-987654321098765432"
 - TMSI 305419896
   -> MI-TLV-hex='1705f412345678'
   -> MI-str="305419896" rc=9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/tests/gsm0808/gsm0808_test.c 
new/libosmocore-1.0.1/tests/gsm0808/gsm0808_test.c
--- old/libosmocore-1.0.0/tests/gsm0808/gsm0808_test.c  2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/tests/gsm0808/gsm0808_test.c  2019-01-21 
14:50:43.000000000 +0100
@@ -1937,275 +1937,6 @@
            (GSM0808_SC_CFG_DEFAULT_AMR_7_95 | GSM0808_SC_CFG_DEFAULT_AMR_12_2);
 }
 
-struct test_cell_id_matching_data {
-       struct gsm0808_cell_id id;
-       struct gsm0808_cell_id match_id;
-       bool expect_match;
-       bool expect_exact_match;
-};
-
-#define lac_23 { .id_discr = CELL_IDENT_LAC, .id.lac = 23, }
-#define lac_42 { .id_discr = CELL_IDENT_LAC, .id.lac = 42, }
-#define ci_5 { .id_discr = CELL_IDENT_CI, .id.ci = 5, }
-#define ci_6 { .id_discr = CELL_IDENT_CI, .id.ci = 6, }
-#define lac_ci_23_5 { \
-               .id_discr = CELL_IDENT_LAC_AND_CI, \
-               .id.lac_and_ci = { .lac = 23, .ci = 5, }, \
-       }
-#define lac_ci_42_6 { \
-               .id_discr = CELL_IDENT_LAC_AND_CI, \
-               .id.lac_and_ci = { .lac = 42, .ci = 6, }, \
-       }
-#define lai_23_042_23 { \
-               .id_discr = CELL_IDENT_LAI_AND_LAC, \
-               .id.lai_and_lac = { .plmn = { .mcc = 23, .mnc = 42, 
.mnc_3_digits = true }, .lac = 23, }, \
-       }
-#define lai_23_042_42 { \
-               .id_discr = CELL_IDENT_LAI_AND_LAC, \
-               .id.lai_and_lac = { .plmn = { .mcc = 23, .mnc = 42, 
.mnc_3_digits = true }, .lac = 42, }, \
-       }
-#define lai_23_99_23 { \
-               .id_discr = CELL_IDENT_LAI_AND_LAC, \
-               .id.lai_and_lac = { .plmn = { .mcc = 23, .mnc = 99, 
.mnc_3_digits = false }, .lac = 23, }, \
-       }
-#define lai_23_42_23 { \
-               .id_discr = CELL_IDENT_LAI_AND_LAC, \
-               .id.lai_and_lac = { .plmn = { .mcc = 23, .mnc = 42, 
.mnc_3_digits = false }, .lac = 23, }, \
-       }
-#define cgi_23_042_23_5 { \
-               .id_discr = CELL_IDENT_WHOLE_GLOBAL, \
-               .id.global = { \
-                       .lai = { .plmn = { .mcc = 23, .mnc = 42, .mnc_3_digits 
= true }, .lac = 23, }, \
-                       .cell_identity = 5, \
-               }, \
-       }
-#define cgi_23_042_42_6 { \
-               .id_discr = CELL_IDENT_WHOLE_GLOBAL, \
-               .id.global = { \
-                       .lai = { .plmn = { .mcc = 23, .mnc = 42, .mnc_3_digits 
= true }, .lac = 42, }, \
-                       .cell_identity = 6, \
-               }, \
-       }
-#define cgi_23_99_23_5 { \
-               .id_discr = CELL_IDENT_WHOLE_GLOBAL, \
-               .id.global = { \
-                       .lai = { .plmn = { .mcc = 23, .mnc = 99, .mnc_3_digits 
= false }, .lac = 23, }, \
-                       .cell_identity = 5, \
-               }, \
-       }
-
-
-static const struct test_cell_id_matching_data test_cell_id_matching_tests[] = 
{
-       { .id = lac_23, .match_id = lac_23, .expect_match = true, 
.expect_exact_match = true },
-       { .id = lac_23, .match_id = lac_42, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = ci_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = ci_6, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = lac_ci_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = lac_ci_42_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = lai_23_042_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = lai_23_042_42, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = lai_23_99_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = lai_23_42_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = cgi_23_042_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = cgi_23_042_42_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_23, .match_id = cgi_23_99_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lac_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lac_42, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = ci_5, .expect_match = true, 
.expect_exact_match = true },
-       { .id = ci_5, .match_id = ci_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lac_ci_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lac_ci_42_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lai_23_042_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lai_23_042_42, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lai_23_99_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = lai_23_42_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = cgi_23_042_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = cgi_23_042_42_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = ci_5, .match_id = cgi_23_99_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lac_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lac_42, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = ci_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = ci_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lac_ci_23_5, .expect_match = true, 
.expect_exact_match = true },
-       { .id = lac_ci_23_5, .match_id = lac_ci_42_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lai_23_042_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lai_23_042_42, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lai_23_99_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = lai_23_42_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = cgi_23_042_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = cgi_23_042_42_6, .expect_match = 
false, .expect_exact_match = false },
-       { .id = lac_ci_23_5, .match_id = cgi_23_99_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lac_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lac_42, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = ci_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = ci_6, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lac_ci_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lac_ci_42_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lai_23_042_23, .expect_match = true, 
.expect_exact_match = true },
-       { .id = lai_23_042_23, .match_id = lai_23_042_42, .expect_match = 
false, .expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lai_23_99_23, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = lai_23_42_23, .expect_match = false, 
.expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = cgi_23_042_23_5, .expect_match = 
true, .expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = cgi_23_042_42_6, .expect_match = 
false, .expect_exact_match = false },
-       { .id = lai_23_042_23, .match_id = cgi_23_99_23_5, .expect_match = 
false, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lac_23, .expect_match = true, 
.expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lac_42, .expect_match = false, 
.expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = ci_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = ci_6, .expect_match = false, 
.expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lac_ci_23_5, .expect_match = true, 
.expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lac_ci_42_6, .expect_match = 
false, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lai_23_042_23, .expect_match = 
true, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lai_23_042_42, .expect_match = 
false, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lai_23_99_23, .expect_match = 
false, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = lai_23_42_23, .expect_match = 
false, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = cgi_23_042_23_5, .expect_match = 
true, .expect_exact_match = true },
-       { .id = cgi_23_042_23_5, .match_id = cgi_23_042_42_6, .expect_match = 
false, .expect_exact_match = false },
-       { .id = cgi_23_042_23_5, .match_id = cgi_23_99_23_5, .expect_match = 
false, .expect_exact_match = false },
-};
-
-static void test_cell_id_matching()
-{
-       int i;
-       bool ok = true;
-       printf("\n%s\n", __func__);
-
-       for (i = 0; i < ARRAY_SIZE(test_cell_id_matching_tests); i++) {
-               const struct test_cell_id_matching_data *d = 
&test_cell_id_matching_tests[i];
-               int exact_match;
-
-               for (exact_match = 0; exact_match < 2; exact_match++) {
-                       bool result;
-                       bool expect_result = exact_match ? 
d->expect_exact_match : d->expect_match;
-
-                       result = gsm0808_cell_ids_match(&d->id, &d->match_id, 
(bool)exact_match);
-
-                       printf("[%d] %s %s %s%s\n",
-                              i,
-                              gsm0808_cell_id_name(&d->id),
-                              gsm0808_cell_id_name2(&d->match_id),
-                              result ? "MATCH" : "don't match",
-                              exact_match ? " exactly" : "");
-                       if (result != expect_result) {
-                               printf("  ERROR: expected %s\n", 
d->expect_match ? "MATCH" : "no match");
-                               ok = false;
-                       }
-               }
-       }
-
-       OSMO_ASSERT(ok);
-}
-
-static bool test_cell_id_list_matching_discrs(bool test_match,
-                                             enum CELL_IDENT id_discr,
-                                             enum CELL_IDENT list_discr)
-{
-       int i, j;
-       const struct gsm0808_cell_id *id = NULL;
-       struct gsm0808_cell_id_list2 list = {};
-       int match_idx = -1;
-       int result;
-
-       for (i = 0; i < ARRAY_SIZE(test_cell_id_matching_tests); i++) {
-               const struct test_cell_id_matching_data *d = 
&test_cell_id_matching_tests[i];
-               if (id_discr != d->id.id_discr)
-                       continue;
-               id = &d->id;
-               break;
-       }
-
-       if (!id) {
-               printf("Did not find any entry for %s\n", 
gsm0808_cell_id_discr_name(id_discr));
-               return true;
-       }
-
-       /* Collect those entries with exactly this id on the left, of type 
list_discr on the right.
-        * Collect the mismatches first, for more interesting match indexes in 
the results. */
-       for (j = 0; j < 2; j++) {
-               bool collect_matches = (bool)j;
-
-               /* If we want to have a mismatching list, don't add any entries 
that match. */
-               if (!test_match && collect_matches)
-                       continue;
-
-               for (i = 0; i < ARRAY_SIZE(test_cell_id_matching_tests); i++) {
-                       const struct test_cell_id_matching_data *d = 
&test_cell_id_matching_tests[i];
-                       struct gsm0808_cell_id_list2 add;
-
-                       /* Ignore those with a different d->id */
-                       if (!gsm0808_cell_ids_match(&d->id, id, true))
-                               continue;
-
-                       /* Ignore those with a different d->match_id discr */
-                       if (d->match_id.id_discr != list_discr)
-                               continue;
-
-                       if (collect_matches != d->expect_match)
-                               continue;
-
-                       if (match_idx < 0 && d->expect_match) {
-                               match_idx = list.id_list_len;
-                       }
-
-                       gsm0808_cell_id_to_list(&add, &d->match_id);
-                       gsm0808_cell_id_list_add(&list, &add);
-               }
-       }
-
-       if (!list.id_list_len) {
-               printf("%s vs. %s: No match_id entries to test %s\n",
-                      gsm0808_cell_id_name(id),
-                      gsm0808_cell_id_discr_name(list_discr),
-                      test_match ? "MATCH" : "mismatch");
-               return true;
-       }
-
-       result = gsm0808_cell_id_matches_list(id, &list, 0, false);
-
-       printf("%s and %s: ",
-              gsm0808_cell_id_name(id),
-              gsm0808_cell_id_list_name(&list));
-       if (result >= 0)
-               printf("MATCH at [%d]\n", result);
-       else
-               printf("mismatch\n");
-
-       if (test_match
-           && (result < 0 || result != match_idx)) {
-               printf("  ERROR: expected MATCH at %d\n", match_idx);
-               return false;
-       }
-
-       if (!test_match && result >= 0) {
-               printf("  ERROR: expected mismatch\n");
-               return false;
-       }
-
-       return true;
-}
-
-static void test_cell_id_list_matching(bool test_match)
-{
-       int i, j;
-       bool ok = true;
-
-       const enum CELL_IDENT discrs[] = {
-               CELL_IDENT_LAC, CELL_IDENT_CI, CELL_IDENT_LAC_AND_CI, 
CELL_IDENT_LAI_AND_LAC,
-               CELL_IDENT_WHOLE_GLOBAL,
-       };
-
-       printf("\n%s(%s)\n", __func__, test_match ? "test match" : "test 
mismatch");
-
-       /* Autogenerate Cell ID lists from above dataset, which should match / 
not match. */
-       for (i = 0; i < ARRAY_SIZE(discrs); i++) {
-               for (j = 0; j < ARRAY_SIZE(discrs); j++)
-                       if (!test_cell_id_list_matching_discrs(test_match,
-                                                              discrs[i], 
discrs[j]))
-                               ok = false;
-       }
-
-       OSMO_ASSERT(ok);
-}
-
 int main(int argc, char **argv)
 {
        void *ctx = talloc_named_const(NULL, 0, "gsm0808 test");
@@ -2271,10 +2002,6 @@
        test_gsm0808_sc_cfg_from_gsm48_mr_cfg();
        test_gsm48_mr_cfg_from_gsm0808_sc_cfg();
 
-       test_cell_id_matching();
-       test_cell_id_list_matching(true);
-       test_cell_id_list_matching(false);
-
        printf("Done\n");
        return EXIT_SUCCESS;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/tests/gsm0808/gsm0808_test.ok 
new/libosmocore-1.0.1/tests/gsm0808/gsm0808_test.ok
--- old/libosmocore-1.0.0/tests/gsm0808/gsm0808_test.ok 2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/tests/gsm0808/gsm0808_test.ok 2019-01-21 
14:50:43.000000000 +0100
@@ -439,190 +439,4 @@
  m10_2= 0
  m12_2= 1
 
-
-test_cell_id_matching
-[0] LAC:23 LAC:23 MATCH
-[0] LAC:23 LAC:23 MATCH exactly
-[1] LAC:23 LAC:42 don't match
-[1] LAC:23 LAC:42 don't match exactly
-[2] LAC:23 CI:5 MATCH
-[2] LAC:23 CI:5 don't match exactly
-[3] LAC:23 CI:6 MATCH
-[3] LAC:23 CI:6 don't match exactly
-[4] LAC:23 LAC-CI:23-5 MATCH
-[4] LAC:23 LAC-CI:23-5 don't match exactly
-[5] LAC:23 LAC-CI:42-6 don't match
-[5] LAC:23 LAC-CI:42-6 don't match exactly
-[6] LAC:23 LAI:023-042-23 MATCH
-[6] LAC:23 LAI:023-042-23 don't match exactly
-[7] LAC:23 LAI:023-042-42 don't match
-[7] LAC:23 LAI:023-042-42 don't match exactly
-[8] LAC:23 LAI:023-99-23 MATCH
-[8] LAC:23 LAI:023-99-23 don't match exactly
-[9] LAC:23 LAI:023-42-23 MATCH
-[9] LAC:23 LAI:023-42-23 don't match exactly
-[10] LAC:23 CGI:023-042-23-5 MATCH
-[10] LAC:23 CGI:023-042-23-5 don't match exactly
-[11] LAC:23 CGI:023-042-42-6 don't match
-[11] LAC:23 CGI:023-042-42-6 don't match exactly
-[12] LAC:23 CGI:023-99-23-5 MATCH
-[12] LAC:23 CGI:023-99-23-5 don't match exactly
-[13] CI:5 LAC:23 MATCH
-[13] CI:5 LAC:23 don't match exactly
-[14] CI:5 LAC:42 MATCH
-[14] CI:5 LAC:42 don't match exactly
-[15] CI:5 CI:5 MATCH
-[15] CI:5 CI:5 MATCH exactly
-[16] CI:5 CI:6 don't match
-[16] CI:5 CI:6 don't match exactly
-[17] CI:5 LAC-CI:23-5 MATCH
-[17] CI:5 LAC-CI:23-5 don't match exactly
-[18] CI:5 LAC-CI:42-6 don't match
-[18] CI:5 LAC-CI:42-6 don't match exactly
-[19] CI:5 LAI:023-042-23 MATCH
-[19] CI:5 LAI:023-042-23 don't match exactly
-[20] CI:5 LAI:023-042-42 MATCH
-[20] CI:5 LAI:023-042-42 don't match exactly
-[21] CI:5 LAI:023-99-23 MATCH
-[21] CI:5 LAI:023-99-23 don't match exactly
-[22] CI:5 LAI:023-42-23 MATCH
-[22] CI:5 LAI:023-42-23 don't match exactly
-[23] CI:5 CGI:023-042-23-5 MATCH
-[23] CI:5 CGI:023-042-23-5 don't match exactly
-[24] CI:5 CGI:023-042-42-6 don't match
-[24] CI:5 CGI:023-042-42-6 don't match exactly
-[25] CI:5 CGI:023-99-23-5 MATCH
-[25] CI:5 CGI:023-99-23-5 don't match exactly
-[26] LAC-CI:23-5 LAC:23 MATCH
-[26] LAC-CI:23-5 LAC:23 don't match exactly
-[27] LAC-CI:23-5 LAC:42 don't match
-[27] LAC-CI:23-5 LAC:42 don't match exactly
-[28] LAC-CI:23-5 CI:5 MATCH
-[28] LAC-CI:23-5 CI:5 don't match exactly
-[29] LAC-CI:23-5 CI:6 don't match
-[29] LAC-CI:23-5 CI:6 don't match exactly
-[30] LAC-CI:23-5 LAC-CI:23-5 MATCH
-[30] LAC-CI:23-5 LAC-CI:23-5 MATCH exactly
-[31] LAC-CI:23-5 LAC-CI:42-6 don't match
-[31] LAC-CI:23-5 LAC-CI:42-6 don't match exactly
-[32] LAC-CI:23-5 LAI:023-042-23 MATCH
-[32] LAC-CI:23-5 LAI:023-042-23 don't match exactly
-[33] LAC-CI:23-5 LAI:023-042-42 don't match
-[33] LAC-CI:23-5 LAI:023-042-42 don't match exactly
-[34] LAC-CI:23-5 LAI:023-99-23 MATCH
-[34] LAC-CI:23-5 LAI:023-99-23 don't match exactly
-[35] LAC-CI:23-5 LAI:023-42-23 MATCH
-[35] LAC-CI:23-5 LAI:023-42-23 don't match exactly
-[36] LAC-CI:23-5 CGI:023-042-23-5 MATCH
-[36] LAC-CI:23-5 CGI:023-042-23-5 don't match exactly
-[37] LAC-CI:23-5 CGI:023-042-42-6 don't match
-[37] LAC-CI:23-5 CGI:023-042-42-6 don't match exactly
-[38] LAC-CI:23-5 CGI:023-99-23-5 MATCH
-[38] LAC-CI:23-5 CGI:023-99-23-5 don't match exactly
-[39] LAI:023-042-23 LAC:23 MATCH
-[39] LAI:023-042-23 LAC:23 don't match exactly
-[40] LAI:023-042-23 LAC:42 don't match
-[40] LAI:023-042-23 LAC:42 don't match exactly
-[41] LAI:023-042-23 CI:5 MATCH
-[41] LAI:023-042-23 CI:5 don't match exactly
-[42] LAI:023-042-23 CI:6 MATCH
-[42] LAI:023-042-23 CI:6 don't match exactly
-[43] LAI:023-042-23 LAC-CI:23-5 MATCH
-[43] LAI:023-042-23 LAC-CI:23-5 don't match exactly
-[44] LAI:023-042-23 LAC-CI:42-6 don't match
-[44] LAI:023-042-23 LAC-CI:42-6 don't match exactly
-[45] LAI:023-042-23 LAI:023-042-23 MATCH
-[45] LAI:023-042-23 LAI:023-042-23 MATCH exactly
-[46] LAI:023-042-23 LAI:023-042-42 don't match
-[46] LAI:023-042-23 LAI:023-042-42 don't match exactly
-[47] LAI:023-042-23 LAI:023-99-23 don't match
-[47] LAI:023-042-23 LAI:023-99-23 don't match exactly
-[48] LAI:023-042-23 LAI:023-42-23 don't match
-[48] LAI:023-042-23 LAI:023-42-23 don't match exactly
-[49] LAI:023-042-23 CGI:023-042-23-5 MATCH
-[49] LAI:023-042-23 CGI:023-042-23-5 don't match exactly
-[50] LAI:023-042-23 CGI:023-042-42-6 don't match
-[50] LAI:023-042-23 CGI:023-042-42-6 don't match exactly
-[51] LAI:023-042-23 CGI:023-99-23-5 don't match
-[51] LAI:023-042-23 CGI:023-99-23-5 don't match exactly
-[52] CGI:023-042-23-5 LAC:23 MATCH
-[52] CGI:023-042-23-5 LAC:23 don't match exactly
-[53] CGI:023-042-23-5 LAC:42 don't match
-[53] CGI:023-042-23-5 LAC:42 don't match exactly
-[54] CGI:023-042-23-5 CI:5 MATCH
-[54] CGI:023-042-23-5 CI:5 don't match exactly
-[55] CGI:023-042-23-5 CI:6 don't match
-[55] CGI:023-042-23-5 CI:6 don't match exactly
-[56] CGI:023-042-23-5 LAC-CI:23-5 MATCH
-[56] CGI:023-042-23-5 LAC-CI:23-5 don't match exactly
-[57] CGI:023-042-23-5 LAC-CI:42-6 don't match
-[57] CGI:023-042-23-5 LAC-CI:42-6 don't match exactly
-[58] CGI:023-042-23-5 LAI:023-042-23 MATCH
-[58] CGI:023-042-23-5 LAI:023-042-23 don't match exactly
-[59] CGI:023-042-23-5 LAI:023-042-42 don't match
-[59] CGI:023-042-23-5 LAI:023-042-42 don't match exactly
-[60] CGI:023-042-23-5 LAI:023-99-23 don't match
-[60] CGI:023-042-23-5 LAI:023-99-23 don't match exactly
-[61] CGI:023-042-23-5 LAI:023-42-23 don't match
-[61] CGI:023-042-23-5 LAI:023-42-23 don't match exactly
-[62] CGI:023-042-23-5 CGI:023-042-23-5 MATCH
-[62] CGI:023-042-23-5 CGI:023-042-23-5 MATCH exactly
-[63] CGI:023-042-23-5 CGI:023-042-42-6 don't match
-[63] CGI:023-042-23-5 CGI:023-042-42-6 don't match exactly
-[64] CGI:023-042-23-5 CGI:023-99-23-5 don't match
-[64] CGI:023-042-23-5 CGI:023-99-23-5 don't match exactly
-
-test_cell_id_list_matching(test match)
-LAC:23 and LAC[2]:{42, 23}: MATCH at [1]
-LAC:23 and CI[2]:{5, 6}: MATCH at [0]
-LAC:23 and LAC-CI[2]:{42-6, 23-5}: MATCH at [1]
-LAC:23 and LAI[4]:{023-042-42, 023-042-23, 023-99-23, 023-42-23}: MATCH at [1]
-LAC:23 and CGI[3]:{023-042-42-6, 023-042-23-5, 023-99-23-5}: MATCH at [1]
-CI:5 and LAC[2]:{23, 42}: MATCH at [0]
-CI:5 and CI[2]:{6, 5}: MATCH at [1]
-CI:5 and LAC-CI[2]:{42-6, 23-5}: MATCH at [1]
-CI:5 and LAI[4]:{023-042-23, 023-042-42, 023-99-23, 023-42-23}: MATCH at [0]
-CI:5 and CGI[3]:{023-042-42-6, 023-042-23-5, 023-99-23-5}: MATCH at [1]
-LAC-CI:23-5 and LAC[2]:{42, 23}: MATCH at [1]
-LAC-CI:23-5 and CI[2]:{6, 5}: MATCH at [1]
-LAC-CI:23-5 and LAC-CI[2]:{42-6, 23-5}: MATCH at [1]
-LAC-CI:23-5 and LAI[4]:{023-042-42, 023-042-23, 023-99-23, 023-42-23}: MATCH 
at [1]
-LAC-CI:23-5 and CGI[3]:{023-042-42-6, 023-042-23-5, 023-99-23-5}: MATCH at [1]
-LAI:023-042-23 and LAC[2]:{42, 23}: MATCH at [1]
-LAI:023-042-23 and CI[2]:{5, 6}: MATCH at [0]
-LAI:023-042-23 and LAC-CI[2]:{42-6, 23-5}: MATCH at [1]
-LAI:023-042-23 and LAI[4]:{023-042-42, 023-99-23, 023-42-23, 023-042-23}: 
MATCH at [3]
-LAI:023-042-23 and CGI[3]:{023-042-42-6, 023-99-23-5, 023-042-23-5}: MATCH at 
[2]
-CGI:023-042-23-5 and LAC[2]:{42, 23}: MATCH at [1]
-CGI:023-042-23-5 and CI[2]:{6, 5}: MATCH at [1]
-CGI:023-042-23-5 and LAC-CI[2]:{42-6, 23-5}: MATCH at [1]
-CGI:023-042-23-5 and LAI[4]:{023-042-42, 023-99-23, 023-42-23, 023-042-23}: 
MATCH at [3]
-CGI:023-042-23-5 and CGI[3]:{023-042-42-6, 023-99-23-5, 023-042-23-5}: MATCH 
at [2]
-
-test_cell_id_list_matching(test mismatch)
-LAC:23 and LAC[1]:{42}: mismatch
-LAC:23 vs. CI: No match_id entries to test mismatch
-LAC:23 and LAC-CI[1]:{42-6}: mismatch
-LAC:23 and LAI[1]:{023-042-42}: mismatch
-LAC:23 and CGI[1]:{023-042-42-6}: mismatch
-CI:5 vs. LAC: No match_id entries to test mismatch
-CI:5 and CI[1]:{6}: mismatch
-CI:5 and LAC-CI[1]:{42-6}: mismatch
-CI:5 vs. LAI: No match_id entries to test mismatch
-CI:5 and CGI[1]:{023-042-42-6}: mismatch
-LAC-CI:23-5 and LAC[1]:{42}: mismatch
-LAC-CI:23-5 and CI[1]:{6}: mismatch
-LAC-CI:23-5 and LAC-CI[1]:{42-6}: mismatch
-LAC-CI:23-5 and LAI[1]:{023-042-42}: mismatch
-LAC-CI:23-5 and CGI[1]:{023-042-42-6}: mismatch
-LAI:023-042-23 and LAC[1]:{42}: mismatch
-LAI:023-042-23 vs. CI: No match_id entries to test mismatch
-LAI:023-042-23 and LAC-CI[1]:{42-6}: mismatch
-LAI:023-042-23 and LAI[3]:{023-042-42, 023-99-23, 023-42-23}: mismatch
-LAI:023-042-23 and CGI[2]:{023-042-42-6, 023-99-23-5}: mismatch
-CGI:023-042-23-5 and LAC[1]:{42}: mismatch
-CGI:023-042-23-5 and CI[1]:{6}: mismatch
-CGI:023-042-23-5 and LAC-CI[1]:{42-6}: mismatch
-CGI:023-042-23-5 and LAI[3]:{023-042-42, 023-99-23, 023-42-23}: mismatch
-CGI:023-042-23-5 and CGI[2]:{023-042-42-6, 023-99-23-5}: mismatch
 Done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/tests/utils/utils_test.c 
new/libosmocore-1.0.1/tests/utils/utils_test.c
--- old/libosmocore-1.0.0/tests/utils/utils_test.c      2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/tests/utils/utils_test.c      2019-01-21 
14:50:43.000000000 +0100
@@ -37,7 +37,6 @@
 static void hexdump_test(void)
 {
        uint8_t data[4098];
-       char buf[256];
        int i;
 
        for (i = 0; i < ARRAY_SIZE(data); ++i)
@@ -45,34 +44,10 @@
 
        printf("Plain dump\n");
        printf("%s\n", osmo_hexdump(data, 4));
-       printf("%s\n", osmo_hexdump_nospc(data, 4));
 
        printf("Corner case\n");
        printf("%s\n", osmo_hexdump(data, ARRAY_SIZE(data)));
        printf("%s\n", osmo_hexdump_nospc(data, ARRAY_SIZE(data)));
-
-#define _HEXDUMP_BUF_TEST(SIZE, DELIM, DELIM_AFTER) \
-       buf[0] = '!'; \
-       buf[1] = '\0'; \
-       printf("osmo_hexdump_buf(buf, " #SIZE ", data, 4, %s, " #DELIM_AFTER 
")\n = \"%s\"\n", \
-              DELIM ? #DELIM : "NULL", \
-              osmo_hexdump_buf(buf, SIZE, data, 4, DELIM, DELIM_AFTER))
-#define HEXDUMP_BUF_TEST(DELIM) \
-       _HEXDUMP_BUF_TEST(sizeof(buf), DELIM, false); \
-       _HEXDUMP_BUF_TEST(sizeof(buf), DELIM, true); \
-       _HEXDUMP_BUF_TEST(6, DELIM, false); \
-       _HEXDUMP_BUF_TEST(7, DELIM, false); \
-       _HEXDUMP_BUF_TEST(8, DELIM, false); \
-       _HEXDUMP_BUF_TEST(6, DELIM, true); \
-       _HEXDUMP_BUF_TEST(7, DELIM, true); \
-       _HEXDUMP_BUF_TEST(8, DELIM, true)
-
-       HEXDUMP_BUF_TEST("[delim]");
-       HEXDUMP_BUF_TEST(" ");
-       HEXDUMP_BUF_TEST(":");
-       HEXDUMP_BUF_TEST("::");
-       HEXDUMP_BUF_TEST("");
-       HEXDUMP_BUF_TEST(NULL);
 }
 
 static void hexparse_test(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmocore-1.0.0/tests/utils/utils_test.ok 
new/libosmocore-1.0.1/tests/utils/utils_test.ok
--- old/libosmocore-1.0.0/tests/utils/utils_test.ok     2019-01-29 
00:59:32.000000000 +0100
+++ new/libosmocore-1.0.1/tests/utils/utils_test.ok     2019-01-21 
14:50:43.000000000 +0100
@@ -1,105 +1,8 @@
 Plain dump
 00 01 02 03 
-00010203
 Corner case
 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 
1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 
34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 
4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 
68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 
82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 
9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 
b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf 
d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 
ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 
04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 
1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 
38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 
52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 
6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 
86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f 
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 
ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 
d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed 
ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 
08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 
22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 
3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 
56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 
70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 
8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 
a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd 
be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 
d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 
f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 
0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 
26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 
5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 
74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 
8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 
a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 
c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db 
dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 
f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 
2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 
44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 
5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 
78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 
92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab 
ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 
c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df 
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 
fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 
14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 
2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 
48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 
 
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, "[delim]", false)
- = "00[delim]01[delim]02[delim]03"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, "[delim]", true)
- = "00[delim]01[delim]02[delim]03[delim]"
-osmo_hexdump_buf(buf, 6, data, 4, "[delim]", false)
- = ""
-osmo_hexdump_buf(buf, 7, data, 4, "[delim]", false)
- = ""
-osmo_hexdump_buf(buf, 8, data, 4, "[delim]", false)
- = ""
-osmo_hexdump_buf(buf, 6, data, 4, "[delim]", true)
- = ""
-osmo_hexdump_buf(buf, 7, data, 4, "[delim]", true)
- = ""
-osmo_hexdump_buf(buf, 8, data, 4, "[delim]", true)
- = ""
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, " ", false)
- = "00 01 02 03"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, " ", true)
- = "00 01 02 03 "
-osmo_hexdump_buf(buf, 6, data, 4, " ", false)
- = "00 "
-osmo_hexdump_buf(buf, 7, data, 4, " ", false)
- = "00 01 "
-osmo_hexdump_buf(buf, 8, data, 4, " ", false)
- = "00 01 "
-osmo_hexdump_buf(buf, 6, data, 4, " ", true)
- = "00 "
-osmo_hexdump_buf(buf, 7, data, 4, " ", true)
- = "00 01 "
-osmo_hexdump_buf(buf, 8, data, 4, " ", true)
- = "00 01 "
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, ":", false)
- = "00:01:02:03"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, ":", true)
- = "00:01:02:03:"
-osmo_hexdump_buf(buf, 6, data, 4, ":", false)
- = "00:"
-osmo_hexdump_buf(buf, 7, data, 4, ":", false)
- = "00:01:"
-osmo_hexdump_buf(buf, 8, data, 4, ":", false)
- = "00:01:"
-osmo_hexdump_buf(buf, 6, data, 4, ":", true)
- = "00:"
-osmo_hexdump_buf(buf, 7, data, 4, ":", true)
- = "00:01:"
-osmo_hexdump_buf(buf, 8, data, 4, ":", true)
- = "00:01:"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, "::", false)
- = "00::01::02::03"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, "::", true)
- = "00::01::02::03::"
-osmo_hexdump_buf(buf, 6, data, 4, "::", false)
- = "00::"
-osmo_hexdump_buf(buf, 7, data, 4, "::", false)
- = "00::"
-osmo_hexdump_buf(buf, 8, data, 4, "::", false)
- = "00::"
-osmo_hexdump_buf(buf, 6, data, 4, "::", true)
- = "00::"
-osmo_hexdump_buf(buf, 7, data, 4, "::", true)
- = "00::"
-osmo_hexdump_buf(buf, 8, data, 4, "::", true)
- = "00::"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, "", false)
- = "00010203"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, "", true)
- = "00010203"
-osmo_hexdump_buf(buf, 6, data, 4, "", false)
- = "0001"
-osmo_hexdump_buf(buf, 7, data, 4, "", false)
- = "000102"
-osmo_hexdump_buf(buf, 8, data, 4, "", false)
- = "000102"
-osmo_hexdump_buf(buf, 6, data, 4, "", true)
- = "0001"
-osmo_hexdump_buf(buf, 7, data, 4, "", true)
- = "000102"
-osmo_hexdump_buf(buf, 8, data, 4, "", true)
- = "000102"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, NULL, false)
- = "00010203"
-osmo_hexdump_buf(buf, sizeof(buf), data, 4, NULL, true)
- = "00010203"
-osmo_hexdump_buf(buf, 6, data, 4, NULL, false)
- = "0001"
-osmo_hexdump_buf(buf, 7, data, 4, NULL, false)
- = "000102"
-osmo_hexdump_buf(buf, 8, data, 4, NULL, false)
- = "000102"
-osmo_hexdump_buf(buf, 6, data, 4, NULL, true)
- = "0001"
-osmo_hexdump_buf(buf, 7, data, 4, NULL, true)
- = "000102"
-osmo_hexdump_buf(buf, 8, data, 4, NULL, true)
- = "000102"
 
 Hexparse 0..255 in lower case
 rc = 256


Reply via email to