<p>Neels Hofmeyr has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/10164">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">inter-BSC HO: neighbor_ident API: drop 9bit BSIC<br><br>9-bit BSIC exist in the 3GPP specs, but we don't use them anywhere. Rather<br>remove that choice from the API and UI.<br><br>Change-Id: I29b92f47da2636d3a19f073755f9382fa98f9010<br>---<br>M include/osmocom/bsc/neighbor_ident.h<br>M src/osmo-bsc/handover_logic.c<br>M src/osmo-bsc/neighbor_ident.c<br>M src/osmo-bsc/neighbor_ident_vty.c<br>M tests/handover/neighbor_ident_test.c<br>M tests/handover/neighbor_ident_test.ok<br>M tests/neighbor_ident.vty<br>7 files changed, 113 insertions(+), 257 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/64/10164/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/neighbor_ident.h b/include/osmocom/bsc/neighbor_ident.h</span><br><span>index bba18c3..17bffbc 100644</span><br><span>--- a/include/osmocom/bsc/neighbor_ident.h</span><br><span>+++ b/include/osmocom/bsc/neighbor_ident.h</span><br><span>@@ -12,19 +12,14 @@</span><br><span> struct neighbor_ident_list;</span><br><span> struct gsm0808_cell_id_list2;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-enum bsic_kind {</span><br><span style="color: hsl(0, 100%, 40%);">-   BSIC_NONE,</span><br><span style="color: hsl(0, 100%, 40%);">-      BSIC_6BIT,</span><br><span style="color: hsl(0, 100%, 40%);">-      BSIC_9BIT,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> #define NEIGHBOR_IDENT_KEY_ANY_BTS -1</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define BSIC_ANY 0xff</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct neighbor_ident_key {</span><br><span>    int from_bts; /*< BTS nr 0..255 or NEIGHBOR_IDENT_KEY_ANY_BTS */</span><br><span>  uint16_t arfcn;</span><br><span style="color: hsl(0, 100%, 40%);">- enum bsic_kind bsic_kind;</span><br><span style="color: hsl(0, 100%, 40%);">-       uint16_t bsic;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t bsic;</span><br><span> };</span><br><span> </span><br><span> const char *neighbor_ident_key_name(const struct neighbor_ident_key *ni_key);</span><br><span>@@ -52,10 +47,10 @@</span><br><span> void neighbor_ident_vty_init(struct gsm_network *net, struct neighbor_ident_list *nil);</span><br><span> void neighbor_ident_vty_write(struct vty *vty, const char *indent, struct gsm_bts *bts);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define NEIGHBOR_IDENT_VTY_KEY_PARAMS "arfcn <0-1023> (bsic|bsic9) (<0-511>|any)"</span><br><span style="color: hsl(120, 100%, 40%);">+#define NEIGHBOR_IDENT_VTY_KEY_PARAMS "arfcn <0-1023> bsic (<0-63>|any)"</span><br><span> #define NEIGHBOR_IDENT_VTY_KEY_DOC \</span><br><span>     "ARFCN of neighbor cell\n" "ARFCN value\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-        "BSIC of neighbor cell\n" "9-bit BSIC of neighbor cell\n" "BSIC value\n" \</span><br><span style="color: hsl(120, 100%, 40%);">+      "BSIC of neighbor cell\n" "BSIC value\n" \</span><br><span>       "for all BSICs / use any BSIC in this ARFCN\n"</span><br><span> bool neighbor_ident_vty_parse_key_params(struct vty *vty, const char **argv,</span><br><span>                                      struct neighbor_ident_key *key);</span><br><span>diff --git a/src/osmo-bsc/handover_logic.c b/src/osmo-bsc/handover_logic.c</span><br><span>index 0f664c6..028b2d4 100644</span><br><span>--- a/src/osmo-bsc/handover_logic.c</span><br><span>+++ b/src/osmo-bsc/handover_logic.c</span><br><span>@@ -400,7 +400,6 @@</span><br><span>             struct neighbor_ident_key entry = {</span><br><span>                  .from_bts = NEIGHBOR_IDENT_KEY_ANY_BTS,</span><br><span>                      .arfcn = bts->c0->arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">-                  .bsic_kind = BSIC_6BIT,</span><br><span>                      .bsic = bts->bsic,</span><br><span>                };</span><br><span>           if (neighbor_ident_key_match(&entry, search_for, true)) {</span><br><span>@@ -427,7 +426,6 @@</span><br><span>  static struct neighbor_ident_key key;</span><br><span>        key = (struct neighbor_ident_key){</span><br><span>           .arfcn = bts->c0->arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">-          .bsic_kind = BSIC_6BIT,</span><br><span>              .bsic = bts->bsic,</span><br><span>        };</span><br><span>   return &key;</span><br><span>diff --git a/src/osmo-bsc/neighbor_ident.c b/src/osmo-bsc/neighbor_ident.c</span><br><span>index 8a7c580..4a0cd47 100644</span><br><span>--- a/src/osmo-bsc/neighbor_ident.c</span><br><span>+++ b/src/osmo-bsc/neighbor_ident.c</span><br><span>@@ -67,18 +67,10 @@</span><br><span>              APPEND_STR("invalid(%d)", ni_key->from_bts);</span><br><span> </span><br><span>        APPEND_STR(" to ");</span><br><span style="color: hsl(0, 100%, 40%);">-   switch (ni_key->bsic_kind) {</span><br><span style="color: hsl(0, 100%, 40%);">- default:</span><br><span style="color: hsl(0, 100%, 40%);">-        case BSIC_NONE:</span><br><span style="color: hsl(120, 100%, 40%);">+       if (ni_key->bsic == BSIC_ANY)</span><br><span>             APPEND_STR("ARFCN %u (any BSIC)", ni_key->arfcn);</span><br><span style="color: hsl(0, 100%, 40%);">-          break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case BSIC_6BIT:</span><br><span style="color: hsl(120, 100%, 40%);">+       else</span><br><span>                 APPEND_STR("ARFCN %u BSIC %u", ni_key->arfcn, ni_key->bsic & 0x3f);</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case BSIC_9BIT:</span><br><span style="color: hsl(0, 100%, 40%);">-         APPEND_STR("ARFCN %u BSIC %u(9bit)", ni_key->arfcn, ni_key->bsic & 0x1ff);</span><br><span style="color: hsl(0, 100%, 40%);">-          break;</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span>    return buf;</span><br><span> }</span><br><span> </span><br><span>@@ -104,18 +96,16 @@</span><br><span> }</span><br><span> </span><br><span> /* Return true when the entry matches the search_for requirements.</span><br><span style="color: hsl(0, 100%, 40%);">- * If exact_match is false, a BSIC_NONE entry acts as wildcard to match any search_for on that ARFCN,</span><br><span style="color: hsl(0, 100%, 40%);">- * and a BSIC_NONE in search_for likewise returns any one entry that matches the ARFCN;</span><br><span style="color: hsl(120, 100%, 40%);">+ * If exact_match is false, a BSIC_ANY entry acts as wildcard to match any search_for on that ARFCN,</span><br><span style="color: hsl(120, 100%, 40%);">+ * and a BSIC_ANY in search_for likewise returns any one entry that matches the ARFCN;</span><br><span>  * also a from_bts == NEIGHBOR_IDENT_KEY_ANY_BTS in either entry or search_for will match.</span><br><span style="color: hsl(0, 100%, 40%);">- * If exact_match is true, only identical bsic_kind values and identical from_bts values return a match.</span><br><span style="color: hsl(120, 100%, 40%);">+ * If exact_match is true, only identical bsic values and identical from_bts values return a match.</span><br><span>  * Note, typically wildcard BSICs are only in entry, e.g. the user configured list, and search_for</span><br><span>  * contains a specific BSIC, e.g. as received from a Measurement Report. */</span><br><span> bool neighbor_ident_key_match(const struct neighbor_ident_key *entry,</span><br><span>                              const struct neighbor_ident_key *search_for,</span><br><span>                         bool exact_match)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t bsic_mask;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (exact_match</span><br><span>          && entry->from_bts != search_for->from_bts)</span><br><span>                return false;</span><br><span>@@ -128,32 +118,13 @@</span><br><span>        if (entry->arfcn != search_for->arfcn)</span><br><span>                 return false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       switch (entry->bsic_kind) {</span><br><span style="color: hsl(0, 100%, 40%);">-  default:</span><br><span style="color: hsl(120, 100%, 40%);">+      if (exact_match && entry->bsic != search_for->bsic)</span><br><span>            return false;</span><br><span style="color: hsl(0, 100%, 40%);">-   case BSIC_NONE:</span><br><span style="color: hsl(0, 100%, 40%);">-         if (!exact_match) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     /* The neighbor identifier list entry matches any BSIC for this ARFCN. */</span><br><span style="color: hsl(0, 100%, 40%);">-                       return true;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-               /* Match exact entry */</span><br><span style="color: hsl(0, 100%, 40%);">-         bsic_mask = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-          break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case BSIC_6BIT:</span><br><span style="color: hsl(0, 100%, 40%);">-         bsic_mask = 0x3f;</span><br><span style="color: hsl(0, 100%, 40%);">-               break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case BSIC_9BIT:</span><br><span style="color: hsl(0, 100%, 40%);">-         bsic_mask = 0x1ff;</span><br><span style="color: hsl(0, 100%, 40%);">-              break;</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!exact_match && search_for->bsic_kind == BSIC_NONE) {</span><br><span style="color: hsl(0, 100%, 40%);">-            /* The search is looking only for an ARFCN with any BSIC */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (entry->bsic == BSIC_ANY || search_for->bsic == BSIC_ANY)</span><br><span>           return true;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (search_for->bsic_kind == entry->bsic_kind</span><br><span style="color: hsl(0, 100%, 40%);">-         && (search_for->bsic & bsic_mask) == (entry->bsic & bsic_mask))</span><br><span style="color: hsl(0, 100%, 40%);">-               return true;</span><br><span style="color: hsl(0, 100%, 40%);">-    return false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       return entry->bsic == search_for->bsic;</span><br><span> }</span><br><span> </span><br><span> static struct neighbor_ident *_neighbor_ident_get(const struct neighbor_ident_list *nil,</span><br><span>@@ -189,20 +160,8 @@</span><br><span>        && (key->from_bts < 0 || key->from_bts > 255))</span><br><span>               return false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       switch (key->bsic_kind) {</span><br><span style="color: hsl(0, 100%, 40%);">-    case BSIC_6BIT:</span><br><span style="color: hsl(0, 100%, 40%);">-         if (key->bsic > 0x3f)</span><br><span style="color: hsl(0, 100%, 40%);">-                     return false;</span><br><span style="color: hsl(0, 100%, 40%);">-           break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case BSIC_9BIT:</span><br><span style="color: hsl(0, 100%, 40%);">-         if (key->bsic > 0x1ff)</span><br><span style="color: hsl(0, 100%, 40%);">-                    return false;</span><br><span style="color: hsl(0, 100%, 40%);">-           break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case BSIC_NONE:</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span style="color: hsl(0, 100%, 40%);">-  default:</span><br><span style="color: hsl(120, 100%, 40%);">+      if (key->bsic != BSIC_ANY && key->bsic > 0x3f)</span><br><span>              return false;</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span>    return true;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/neighbor_ident_vty.c b/src/osmo-bsc/neighbor_ident_vty.c</span><br><span>index 44830ab..a38d123 100644</span><br><span>--- a/src/osmo-bsc/neighbor_ident_vty.c</span><br><span>+++ b/src/osmo-bsc/neighbor_ident_vty.c</span><br><span>@@ -52,8 +52,7 @@</span><br><span>                                    struct neighbor_ident_key *key)</span><br><span> {</span><br><span>        const char *arfcn_str = argv[0];</span><br><span style="color: hsl(0, 100%, 40%);">-        const char *bsic_kind = argv[1];</span><br><span style="color: hsl(0, 100%, 40%);">-        const char *bsic_str = argv[2];</span><br><span style="color: hsl(120, 100%, 40%);">+       const char *bsic_str = argv[1];</span><br><span> </span><br><span>  OSMO_ASSERT(bts);</span><br><span> </span><br><span>@@ -63,16 +62,9 @@</span><br><span>   };</span><br><span> </span><br><span>       if (!strcmp(bsic_str, "any"))</span><br><span style="color: hsl(0, 100%, 40%);">-         key->bsic_kind = BSIC_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-  else {</span><br><span style="color: hsl(0, 100%, 40%);">-          key->bsic_kind = (!strcmp(bsic_kind, "bsic9")) ? BSIC_9BIT : BSIC_6BIT;</span><br><span style="color: hsl(120, 100%, 40%);">+          key->bsic = BSIC_ANY;</span><br><span style="color: hsl(120, 100%, 40%);">+      else</span><br><span>                 key->bsic = atoi(bsic_str);</span><br><span style="color: hsl(0, 100%, 40%);">-          if (key->bsic_kind == BSIC_6BIT && key->bsic > 0x3f) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 vty_out(vty, "%% Error: BSIC value surpasses 6-bit range: %u, use 'bsic9' instead%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                         key->bsic, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-                     return false;</span><br><span style="color: hsl(0, 100%, 40%);">-           }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span>    return true;</span><br><span> }</span><br><span> </span><br><span>@@ -239,7 +231,7 @@</span><br><span>  if (!bts || !key)</span><br><span>            return false;</span><br><span>        return key->arfcn == bts->c0->arfcn</span><br><span style="color: hsl(0, 100%, 40%);">-            && (key->bsic_kind == BSIC_NONE || key->bsic == bts->bsic);</span><br><span style="color: hsl(120, 100%, 40%);">+          && (key->bsic == BSIC_ANY || key->bsic == bts->bsic);</span><br><span> }</span><br><span> </span><br><span> static int add_remote_or_local_bts(struct vty *vty, const struct gsm0808_cell_id *cell_id,</span><br><span>@@ -431,18 +423,10 @@</span><br><span> </span><br><span> #define NEIGH_BSS_WRITE(fmt, args...) do { \</span><br><span>            vty_out(vty, "%sneighbor add " fmt " arfcn %u ", d->indent, ## args, key->arfcn); \</span><br><span style="color: hsl(0, 100%, 40%);">-           switch (key->bsic_kind) { \</span><br><span style="color: hsl(0, 100%, 40%);">-          default: \</span><br><span style="color: hsl(0, 100%, 40%);">-              case BSIC_NONE: \</span><br><span style="color: hsl(120, 100%, 40%);">+             if (key->bsic == BSIC_ANY) \</span><br><span>                      vty_out(vty, "bsic any"); \</span><br><span style="color: hsl(0, 100%, 40%);">-                   break; \</span><br><span style="color: hsl(0, 100%, 40%);">-                case BSIC_6BIT: \</span><br><span style="color: hsl(120, 100%, 40%);">+             else \</span><br><span>                       vty_out(vty, "bsic %u", key->bsic & 0x3f); \</span><br><span style="color: hsl(0, 100%, 40%);">-                   break; \</span><br><span style="color: hsl(0, 100%, 40%);">-                case BSIC_9BIT: \</span><br><span style="color: hsl(0, 100%, 40%);">-                       vty_out(vty, "bsic9 %u", key->bsic & 0x1ff); \</span><br><span style="color: hsl(0, 100%, 40%);">-                 break; \</span><br><span style="color: hsl(0, 100%, 40%);">-                } \</span><br><span>          vty_out(vty, "%s", VTY_NEWLINE); \</span><br><span>         } while(0)</span><br><span> </span><br><span>diff --git a/tests/handover/neighbor_ident_test.c b/tests/handover/neighbor_ident_test.c</span><br><span>index b67219c..4eddd4a 100644</span><br><span>--- a/tests/handover/neighbor_ident_test.c</span><br><span>+++ b/tests/handover/neighbor_ident_test.c</span><br><span>@@ -30,13 +30,12 @@</span><br><span> </span><br><span> struct neighbor_ident_list *nil;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static const struct neighbor_ident_key *k(int from_bts, uint16_t arfcn, enum bsic_kind kind, uint16_t bsic)</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct neighbor_ident_key *k(int from_bts, uint16_t arfcn, uint8_t bsic)</span><br><span> {</span><br><span>         static struct neighbor_ident_key key;</span><br><span>        key = (struct neighbor_ident_key){</span><br><span>           .from_bts = from_bts,</span><br><span>                .arfcn = arfcn,</span><br><span style="color: hsl(0, 100%, 40%);">-         .bsic_kind = kind,</span><br><span>           .bsic = bsic,</span><br><span>        };</span><br><span>   return &key;</span><br><span>@@ -187,61 +186,54 @@</span><br><span> </span><br><span>         printf("\n--- testing NULL neighbor_ident_list\n");</span><br><span>        nil = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-     check_add(k(0, 1, BSIC_6BIT, 2), &cgi1, -ENOMEM);</span><br><span style="color: hsl(0, 100%, 40%);">-   check_get(k(0, 1, BSIC_6BIT, 2), false);</span><br><span style="color: hsl(0, 100%, 40%);">-        check_del(k(0, 1, BSIC_6BIT, 2), false);</span><br><span style="color: hsl(120, 100%, 40%);">+      check_add(k(0, 1, 2), &cgi1, -ENOMEM);</span><br><span style="color: hsl(120, 100%, 40%);">+    check_get(k(0, 1, 2), false);</span><br><span style="color: hsl(120, 100%, 40%);">+ check_del(k(0, 1, 2), false);</span><br><span> </span><br><span>    printf("\n--- adding entries, test that no two identical entries are added\n");</span><br><span>    nil = neighbor_ident_init(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_6BIT, 2), &cgi1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(0, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_6BIT, 2), &cgi1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_6BIT, 2), &cgi2, 2);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_6BIT, 2), &cgi2, 2);</span><br><span style="color: hsl(0, 100%, 40%);">- check_del(k(0, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+       check_add(k(0, 1, 2), &cgi1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(0, 1, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_add(k(0, 1, 2), &cgi1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_add(k(0, 1, 2), &cgi2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_add(k(0, 1, 2), &cgi2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_del(k(0, 1, 2), true);</span><br><span> </span><br><span>     printf("\n--- Cannot mix cell identifier types for one entry\n");</span><br><span style="color: hsl(0, 100%, 40%);">-     check_add(k(0, 1, BSIC_6BIT, 2), &cgi1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_6BIT, 2), &lac1, -EINVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-   check_del(k(0, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+       check_add(k(0, 1, 2), &cgi1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_add(k(0, 1, 2), &lac1, -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+    check_del(k(0, 1, 2), true);</span><br><span>         neighbor_ident_free(nil);</span><br><span> </span><br><span>        printf("\n--- BTS matching: specific BTS is stronger\n");</span><br><span>  nil = neighbor_ident_init(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, BSIC_6BIT, 2), &lac1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-        check_add(k(3, 1, BSIC_6BIT, 2), &lac2, 2);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(2, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(3, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(4, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+      check_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, 2), &lac1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ check_add(k(3, 1, 2), &lac2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(2, 1, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(3, 1, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(4, 1, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, 2), true);</span><br><span>        neighbor_ident_free(nil);</span><br><span> </span><br><span>        printf("\n--- BSIC matching: 6bit and 9bit are different realms, and wildcard match is weaker\n");</span><br><span>         nil = neighbor_ident_init(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_NONE, 0), &cgi1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_6BIT, 2), &lac1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 1, BSIC_9BIT, 2), &lac2, 2);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(0, 1, BSIC_6BIT, 2), true);</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(0, 1, BSIC_9BIT, 2), true);</span><br><span style="color: hsl(0, 100%, 40%);">- printf("--- wildcard matches both 6bit and 9bit BSIC regardless:\n");</span><br><span style="color: hsl(0, 100%, 40%);">- check_get(k(0, 1, BSIC_6BIT, 23), true);</span><br><span style="color: hsl(0, 100%, 40%);">-        check_get(k(0, 1, BSIC_9BIT, 23), true);</span><br><span style="color: hsl(120, 100%, 40%);">+      check_add(k(0, 1, BSIC_ANY), &cgi1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   check_add(k(0, 1, 2), &lac1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_add(k(0, 1, 2), &lac2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(0, 1, 2), true);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_get(k(0, 1, 2), true);</span><br><span>         neighbor_ident_free(nil);</span><br><span> </span><br><span>        printf("\n--- Value ranges\n");</span><br><span>    nil = neighbor_ident_init(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 6, BSIC_6BIT, 1 << 6), &lac1, -ERANGE);</span><br><span style="color: hsl(0, 100%, 40%);">-        check_add(k(0, 9, BSIC_9BIT, 1 << 9), &lac1, -ERANGE);</span><br><span style="color: hsl(0, 100%, 40%);">-        check_add(k(0, 6, BSIC_6BIT, -1), &lac1, -ERANGE);</span><br><span style="color: hsl(0, 100%, 40%);">-  check_add(k(0, 9, BSIC_9BIT, -1), &lac1, -ERANGE);</span><br><span style="color: hsl(0, 100%, 40%);">-  check_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS - 1, 1, BSIC_NONE, 1), &cgi2, -ERANGE);</span><br><span style="color: hsl(0, 100%, 40%);">-      check_add(k(256, 1, BSIC_NONE, 1), &cgi2, -ERANGE);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(0, 0, BSIC_NONE, 0), &cgi1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(255, 65535, BSIC_NONE, 65535), &lac1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-       check_add(k(0, 0, BSIC_6BIT, 0), &cgi2, 2);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(255, 65535, BSIC_6BIT, 0x3f), &lac2, 2);</span><br><span style="color: hsl(0, 100%, 40%);">-        check_add(k(0, 0, BSIC_9BIT, 0), &cgi1, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- check_add(k(255, 65535, BSIC_9BIT, 0x1ff), &cgi2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+     check_add(k(0, 6, 1 << 6), &lac1, -ERANGE);</span><br><span style="color: hsl(120, 100%, 40%);">+ check_add(k(0, 6, BSIC_ANY - 1), &lac1, -ERANGE);</span><br><span style="color: hsl(120, 100%, 40%);">+ check_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS - 1, 1, BSIC_ANY), &cgi2, -ERANGE);</span><br><span style="color: hsl(120, 100%, 40%);">+        check_add(k(256, 1, BSIC_ANY), &cgi2, -ERANGE);</span><br><span style="color: hsl(120, 100%, 40%);">+   check_add(k(0, 0, BSIC_ANY), &cgi1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   check_add(k(255, 65535, BSIC_ANY), &lac1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+     check_add(k(0, 0, 0), &cgi2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+  check_add(k(255, 65535, 0x3f), &lac2, 2);</span><br><span> </span><br><span>    neighbor_ident_free(nil);</span><br><span> </span><br><span>@@ -262,9 +254,9 @@</span><br><span> </span><br><span>              nil = neighbor_ident_init(ctx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-             i = neighbor_ident_add(nil, k(0, 1, BSIC_6BIT, 2), &a);</span><br><span style="color: hsl(120, 100%, 40%);">+           i = neighbor_ident_add(nil, k(0, 1, 2), &a);</span><br><span>             printf("Added first cell identifier list (added %u) --> rc = %d\n", a.id_list_len, i);</span><br><span style="color: hsl(0, 100%, 40%);">-             i = neighbor_ident_add(nil, k(0, 1, BSIC_6BIT, 2), &b);</span><br><span style="color: hsl(120, 100%, 40%);">+           i = neighbor_ident_add(nil, k(0, 1, 2), &b);</span><br><span>             printf("Added second cell identifier list (tried to add %u) --> rc = %d\n", b.id_list_len, i);</span><br><span>          if (i != -ENOSPC)</span><br><span>                    printf("ERROR: expected rc=%d\n", -ENOSPC);</span><br><span>diff --git a/tests/handover/neighbor_ident_test.ok b/tests/handover/neighbor_ident_test.ok</span><br><span>index 280b6f2..961a33c 100644</span><br><span>--- a/tests/handover/neighbor_ident_test.ok</span><br><span>+++ b/tests/handover/neighbor_ident_test.ok</span><br><span>@@ -1,62 +1,62 @@</span><br><span> </span><br><span> --- testing NULL neighbor_ident_list</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &cgi1) --> expect rc=-ENOMEM, got -12</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &cgi1) --> expect rc=-ENOMEM, got -12</span><br><span>      (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(0, 1, BSIC_6BIT, 2)) --> NULL</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_del(k(0, 1, BSIC_6BIT, 2)) --> nothing deleted</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(0, 1, 2)) --> NULL</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_del(k(0, 1, 2)) --> nothing deleted</span><br><span>      (empty)</span><br><span> </span><br><span> --- adding entries, test that no two identical entries are added</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &cgi1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &cgi1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 1 BSIC 2</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(0, 1, BSIC_6BIT, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(0, 1, 2)) --> entry returned</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &cgi1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &cgi1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 1 BSIC 2</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &cgi2) --> expect rc=2, got 2</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &cgi2) --> expect rc=2, got 2</span><br><span>   0: BTS 0 to ARFCN 1 BSIC 2</span><br><span>      cell_id_list cgi[2] = {</span><br><span>         0: 001-02-3-4</span><br><span>         1: 005-006-7-8</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &cgi2) --> expect rc=2, got 2</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &cgi2) --> expect rc=2, got 2</span><br><span>   0: BTS 0 to ARFCN 1 BSIC 2</span><br><span>      cell_id_list cgi[2] = {</span><br><span>         0: 001-02-3-4</span><br><span>         1: 005-006-7-8</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_del(k(0, 1, BSIC_6BIT, 2)) --> entry deleted</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_del(k(0, 1, 2)) --> entry deleted</span><br><span>      (empty)</span><br><span> </span><br><span> --- Cannot mix cell identifier types for one entry</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &cgi1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &cgi1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 1 BSIC 2</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &lac1) --> expect rc=-EINVAL, got -22</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &lac1) --> expect rc=-EINVAL, got -22</span><br><span>   0: BTS 0 to ARFCN 1 BSIC 2</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_del(k(0, 1, BSIC_6BIT, 2)) --> entry deleted</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_del(k(0, 1, 2)) --> entry deleted</span><br><span>      (empty)</span><br><span> </span><br><span> --- BTS matching: specific BTS is stronger</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, BSIC_6BIT, 2), &lac1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, 2), &lac1) --> expect rc=1, got 1</span><br><span>   0: BTS * to ARFCN 1 BSIC 2</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(3, 1, BSIC_6BIT, 2), &lac2) --> expect rc=2, got 2</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(3, 1, 2), &lac2) --> expect rc=2, got 2</span><br><span>   0: BTS * to ARFCN 1 BSIC 2</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>@@ -66,31 +66,31 @@</span><br><span>        0: 456</span><br><span>        1: 789</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(2, 1, BSIC_6BIT, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(2, 1, 2)) --> entry returned</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(3, 1, BSIC_6BIT, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(3, 1, 2)) --> entry returned</span><br><span>      cell_id_list lac[2] = {</span><br><span>        0: 456</span><br><span>        1: 789</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(4, 1, BSIC_6BIT, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(4, 1, 2)) --> entry returned</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, BSIC_6BIT, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(NEIGHBOR_IDENT_KEY_ANY_BTS, 1, 2)) --> entry returned</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>      }</span><br><span> </span><br><span> --- BSIC matching: 6bit and 9bit are different realms, and wildcard match is weaker</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_NONE, 0), &cgi1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, BSIC_ANY), &cgi1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 1 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_6BIT, 2), &lac1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &lac1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 1 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>@@ -99,58 +99,46 @@</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 1, BSIC_9BIT, 2), &lac2) --> expect rc=2, got 2</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 1, 2), &lac2) --> expect rc=2, got 3</span><br><span style="color: hsl(120, 100%, 40%);">+ERROR</span><br><span>   0: BTS 0 to ARFCN 1 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span>   1: BTS 0 to ARFCN 1 BSIC 2</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+     cell_id_list lac[3] = {</span><br><span>        0: 123</span><br><span style="color: hsl(120, 100%, 40%);">+       1: 456</span><br><span style="color: hsl(120, 100%, 40%);">+       2: 789</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-  2: BTS 0 to ARFCN 1 BSIC 2(9bit)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-       0: 456</span><br><span style="color: hsl(0, 100%, 40%);">-       1: 789</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(0, 1, BSIC_6BIT, 2)) --> entry returned</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(0, 1, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+     cell_id_list lac[3] = {</span><br><span>        0: 123</span><br><span style="color: hsl(120, 100%, 40%);">+       1: 456</span><br><span style="color: hsl(120, 100%, 40%);">+       2: 789</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(0, 1, BSIC_9BIT, 2)) --> entry returned</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-       0: 456</span><br><span style="color: hsl(0, 100%, 40%);">-       1: 789</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span>---- wildcard matches both 6bit and 9bit BSIC regardless:</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(0, 1, BSIC_6BIT, 23)) --> entry returned</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_get(k(0, 1, BSIC_9BIT, 23)) --> entry returned</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_get(k(0, 1, 2)) --> entry returned</span><br><span style="color: hsl(120, 100%, 40%);">+     cell_id_list lac[3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+       0: 123</span><br><span style="color: hsl(120, 100%, 40%);">+       1: 456</span><br><span style="color: hsl(120, 100%, 40%);">+       2: 789</span><br><span>      }</span><br><span> </span><br><span> --- Value ranges</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 6, BSIC_6BIT, 1 << 6), &lac1) --> expect rc=-ERANGE, got -34</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 6, 1 << 6), &lac1) --> expect rc=-ERANGE, got -34</span><br><span>      (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 9, BSIC_9BIT, 1 << 9), &lac1) --> expect rc=-ERANGE, got -34</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 6, BSIC_ANY - 1), &lac1) --> expect rc=-ERANGE, got -34</span><br><span>      (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 6, BSIC_6BIT, -1), &lac1) --> expect rc=-ERANGE, got -34</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS - 1, 1, BSIC_ANY), &cgi2) --> expect rc=-ERANGE, got -34</span><br><span>      (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 9, BSIC_9BIT, -1), &lac1) --> expect rc=-ERANGE, got -34</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(256, 1, BSIC_ANY), &cgi2) --> expect rc=-ERANGE, got -34</span><br><span>      (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(NEIGHBOR_IDENT_KEY_ANY_BTS - 1, 1, BSIC_NONE, 1), &cgi2) --> expect rc=-ERANGE, got -34</span><br><span style="color: hsl(0, 100%, 40%);">-     (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(256, 1, BSIC_NONE, 1), &cgi2) --> expect rc=-ERANGE, got -34</span><br><span style="color: hsl(0, 100%, 40%);">-     (empty)</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 0, BSIC_NONE, 0), &cgi1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 0, BSIC_ANY), &cgi1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 0 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(255, 65535, BSIC_NONE, 65535), &lac1) --> expect rc=1, got 1</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(255, 65535, BSIC_ANY), &lac1) --> expect rc=1, got 1</span><br><span>   0: BTS 0 to ARFCN 0 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>@@ -159,7 +147,7 @@</span><br><span>      cell_id_list lac[1] = {</span><br><span>        0: 123</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 0, BSIC_6BIT, 0), &cgi2) --> expect rc=2, got 2</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(0, 0, 0), &cgi2) --> expect rc=2, got 2</span><br><span>   0: BTS 0 to ARFCN 0 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>@@ -173,7 +161,7 @@</span><br><span>         0: 001-02-3-4</span><br><span>         1: 005-006-7-8</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(255, 65535, BSIC_6BIT, 0x3f), &lac2) --> expect rc=2, got 2</span><br><span style="color: hsl(120, 100%, 40%);">+neighbor_ident_add(k(255, 65535, 0x3f), &lac2) --> expect rc=2, got 2</span><br><span>   0: BTS 0 to ARFCN 0 (any BSIC)</span><br><span>      cell_id_list cgi[1] = {</span><br><span>         0: 001-02-3-4</span><br><span>@@ -192,57 +180,6 @@</span><br><span>        0: 456</span><br><span>        1: 789</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(0, 0, BSIC_9BIT, 0), &cgi1) --> expect rc=1, got 1</span><br><span style="color: hsl(0, 100%, 40%);">-  0: BTS 0 to ARFCN 0 (any BSIC)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  1: BTS 255 to ARFCN 65535 (any BSIC)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-       0: 123</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  2: BTS 0 to ARFCN 0 BSIC 0</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-        1: 005-006-7-8</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  3: BTS 255 to ARFCN 65535 BSIC 63</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-       0: 456</span><br><span style="color: hsl(0, 100%, 40%);">-       1: 789</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  4: BTS 0 to ARFCN 0 BSIC 0(9bit)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-neighbor_ident_add(k(255, 65535, BSIC_9BIT, 0x1ff), &cgi2) --> expect rc=2, got 2</span><br><span style="color: hsl(0, 100%, 40%);">-  0: BTS 0 to ARFCN 0 (any BSIC)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  1: BTS 255 to ARFCN 65535 (any BSIC)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-       0: 123</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  2: BTS 0 to ARFCN 0 BSIC 0</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-        1: 005-006-7-8</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  3: BTS 255 to ARFCN 65535 BSIC 63</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list lac[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-       0: 456</span><br><span style="color: hsl(0, 100%, 40%);">-       1: 789</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  4: BTS 0 to ARFCN 0 BSIC 0(9bit)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-  5: BTS 255 to ARFCN 65535 BSIC 511(9bit)</span><br><span style="color: hsl(0, 100%, 40%);">-     cell_id_list cgi[2] = {</span><br><span style="color: hsl(0, 100%, 40%);">-        0: 001-02-3-4</span><br><span style="color: hsl(0, 100%, 40%);">-        1: 005-006-7-8</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span> </span><br><span> --- size limits</span><br><span> Added first cell identifier list (added 127) --> rc = 127</span><br><span>diff --git a/tests/neighbor_ident.vty b/tests/neighbor_ident.vty</span><br><span>index 11227ed..692d894 100644</span><br><span>--- a/tests/neighbor_ident.vty</span><br><span>+++ b/tests/neighbor_ident.vty</span><br><span>@@ -2,13 +2,13 @@</span><br><span> </span><br><span> OsmoBSC> list</span><br><span> ...</span><br><span style="color: hsl(0, 100%, 40%);">-  show bts <0-255> neighbor arfcn <0-1023> (bsic|bsic9) (<0-511>|any)</span><br><span style="color: hsl(120, 100%, 40%);">+  show bts <0-255> neighbor arfcn <0-1023> bsic (<0-63>|any)</span><br><span> ...</span><br><span> </span><br><span> OsmoBSC> enable</span><br><span> OsmoBSC# list</span><br><span> ...</span><br><span style="color: hsl(0, 100%, 40%);">-  show bts <0-255> neighbor arfcn <0-1023> (bsic|bsic9) (<0-511>|any)</span><br><span style="color: hsl(120, 100%, 40%);">+  show bts <0-255> neighbor arfcn <0-1023> bsic (<0-63>|any)</span><br><span> ...</span><br><span> </span><br><span> OsmoBSC# configure terminal</span><br><span>@@ -83,18 +83,18 @@</span><br><span>   neighbor add bts <0-255></span><br><span>   neighbor add lac <0-65535></span><br><span>   neighbor add lac-ci <0-65535> <0-255></span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac <0-65535> arfcn <0-1023> (bsic|bsic9) (<0-511>|any)</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci <0-65535> <0-255> arfcn <0-1023> (bsic|bsic9) (<0-511>|any)</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add cgi <0-999> <0-999> <0-65535> <0-255> arfcn <0-1023> (bsic|bsic9) (<0-511>|any)</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add lac <0-65535> arfcn <0-1023> bsic (<0-63>|any)</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add lac-ci <0-65535> <0-255> arfcn <0-1023> bsic (<0-63>|any)</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add cgi <0-999> <0-999> <0-65535> <0-255> arfcn <0-1023> bsic (<0-63>|any)</span><br><span>   neighbor del bts <0-255></span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor del arfcn <0-1023> (bsic|bsic9) (<0-511>|any)</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor del arfcn <0-1023> bsic (<0-63>|any)</span><br><span> ...</span><br><span> </span><br><span> OsmoBSC(config-net-bts)# show running-config</span><br><span> ... !neighbor add</span><br><span> </span><br><span> OsmoBSC(config-net-bts)# neighbor add cgi 23 42 423 5 arfcn 23 bsic 64</span><br><span style="color: hsl(0, 100%, 40%);">-% Error: BSIC value surpasses 6-bit range: 64, use 'bsic9' instead</span><br><span style="color: hsl(120, 100%, 40%);">+% Unknown command.</span><br><span> </span><br><span> OsmoBSC(config-net-bts)# neighbor add bts 0</span><br><span> % Error: cannot add local BTS 0 as neighbor to BTS 0: Invalid argument</span><br><span>@@ -135,11 +135,8 @@</span><br><span> OsmoBSC(config-net-bts)# neighbor add lac-ci 789 10 arfcn 423 bsic any</span><br><span> % BTS 0 to ARFCN 423 (any BSIC) now has 1 remote BSS Cell Identifier List entry</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# neighbor add lac-ci 789 10 arfcn 423 bsic9 511</span><br><span style="color: hsl(0, 100%, 40%);">-% BTS 0 to ARFCN 423 BSIC 511(9bit) now has 1 remote BSS Cell Identifier List entry</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# neighbor add lac-ci 789 10 arfcn 423 bsic9 1</span><br><span style="color: hsl(0, 100%, 40%);">-% BTS 0 to ARFCN 423 BSIC 1(9bit) now has 1 remote BSS Cell Identifier List entry</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoBSC(config-net-bts)# neighbor add lac-ci 789 10 arfcn 423 bsic 63</span><br><span style="color: hsl(120, 100%, 40%);">+% BTS 0 to ARFCN 423 BSIC 63 now has 1 remote BSS Cell Identifier List entry</span><br><span> </span><br><span> OsmoBSC(config-net-bts)# neighbor add lac-ci 789 10 arfcn 423 bsic 1</span><br><span> % BTS 0 to ARFCN 423 BSIC 1 now has 1 remote BSS Cell Identifier List entry</span><br><span>@@ -157,8 +154,7 @@</span><br><span>   neighbor add cgi 023 042 234 56 arfcn 23 bsic 42</span><br><span>   neighbor add lac 456 arfcn 123 bsic 45</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic any</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 511</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 1</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add lac-ci 789 10 arfcn 423 bsic 63</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic 1</span><br><span> ... !neighbor add</span><br><span> </span><br><span>@@ -186,8 +182,7 @@</span><br><span>   neighbor add lac-ci 22 32</span><br><span>   neighbor add lac 456 arfcn 123 bsic 45</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic any</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 511</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 1</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add lac-ci 789 10 arfcn 423 bsic 63</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic 1</span><br><span> ... !neighbor add</span><br><span> </span><br><span>@@ -199,8 +194,7 @@</span><br><span>   neighbor add lac-ci 21 31</span><br><span>   neighbor add lac-ci 22 32</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic any</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 511</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 1</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add lac-ci 789 10 arfcn 423 bsic 63</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic 1</span><br><span> ... !neighbor add</span><br><span> </span><br><span>@@ -211,15 +205,12 @@</span><br><span> ... !neighbor add</span><br><span>   neighbor add lac-ci 21 31</span><br><span>   neighbor add lac-ci 22 32</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 511</span><br><span style="color: hsl(0, 100%, 40%);">-  neighbor add lac-ci 789 10 arfcn 423 bsic9 1</span><br><span style="color: hsl(120, 100%, 40%);">+  neighbor add lac-ci 789 10 arfcn 423 bsic 63</span><br><span>   neighbor add lac-ci 789 10 arfcn 423 bsic 1</span><br><span> ... !neighbor add</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# neighbor del arfcn 423 bsic9 511</span><br><span style="color: hsl(0, 100%, 40%);">-% Removed remote BSS neighbor BTS 0 to ARFCN 423 BSIC 511(9bit)</span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# neighbor del arfcn 423 bsic9 1</span><br><span style="color: hsl(0, 100%, 40%);">-% Removed remote BSS neighbor BTS 0 to ARFCN 423 BSIC 1(9bit)</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoBSC(config-net-bts)# neighbor del arfcn 423 bsic 63</span><br><span style="color: hsl(120, 100%, 40%);">+% Removed remote BSS neighbor BTS 0 to ARFCN 423 BSIC 63</span><br><span> </span><br><span> OsmoBSC(config-net-bts)# show running-config</span><br><span> ... !neighbor add</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10164">change 10164</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/10164"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I29b92f47da2636d3a19f073755f9382fa98f9010 </div>
<div style="display:none"> Gerrit-Change-Number: 10164 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>