<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18616">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Split GSM_BTS_TYPE_OSMOBTS to individual BTS types<br><br>Change-Id: I00a815cfa6daab126742d27843e700c07c1db183<br>---<br>M doc/examples/osmo-bsc/osmo-bsc-minimal.cfg<br>M doc/examples/osmo-bsc/osmo-bsc.cfg<br>M doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg<br>M doc/manuals/vty/bsc_vty_reference.xml<br>M include/osmocom/bsc/bss.h<br>M include/osmocom/bsc/gsm_data.h<br>M src/osmo-bsc/Makefile.am<br>M src/osmo-bsc/abis_nm.c<br>M src/osmo-bsc/abis_rsl.c<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/bts_init.c<br>A src/osmo-bsc/bts_osmobts.c<br>D src/osmo-bsc/bts_sysmobts.c<br>M src/osmo-bsc/e1_config.c<br>M src/osmo-bsc/gsm_data.c<br>M src/osmo-bsc/system_information.c<br>M tests/neighbor_ident.vty<br>17 files changed, 160 insertions(+), 155 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/16/18616/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/examples/osmo-bsc/osmo-bsc-minimal.cfg b/doc/examples/osmo-bsc/osmo-bsc-minimal.cfg</span><br><span>index b8cd78d..30eadcc 100644</span><br><span>--- a/doc/examples/osmo-bsc/osmo-bsc-minimal.cfg</span><br><span>+++ b/doc/examples/osmo-bsc/osmo-bsc-minimal.cfg</span><br><span>@@ -2,7 +2,8 @@</span><br><span>  network country code 901</span><br><span>  mobile network code 70</span><br><span>  bts 0</span><br><span style="color: hsl(0, 100%, 40%);">-  type sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+  ! Change this to your specific model (e.g. osmo-bts-sysmo)</span><br><span style="color: hsl(120, 100%, 40%);">+  type osmo-bts</span><br><span>   band GSM-1800</span><br><span>   location_area_code 23</span><br><span>   ipa unit-id 1800 0</span><br><span>diff --git a/doc/examples/osmo-bsc/osmo-bsc.cfg b/doc/examples/osmo-bsc/osmo-bsc.cfg</span><br><span>index 57000ae..7b3438a 100644</span><br><span>--- a/doc/examples/osmo-bsc/osmo-bsc.cfg</span><br><span>+++ b/doc/examples/osmo-bsc/osmo-bsc.cfg</span><br><span>@@ -20,7 +20,8 @@</span><br><span>  dyn_ts_allow_tch_f 0</span><br><span>  periodic location update 30</span><br><span>  bts 0</span><br><span style="color: hsl(0, 100%, 40%);">-  type sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+  ! Change this to your specific model (e.g. osmo-bts-sysmo)</span><br><span style="color: hsl(120, 100%, 40%);">+  type osmo-bts</span><br><span>   band DCS1800</span><br><span>   cell_identity 6969</span><br><span>   location_area_code 1</span><br><span>diff --git a/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg b/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg</span><br><span>index c250fac..e6977f2 100644</span><br><span>--- a/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg</span><br><span>+++ b/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg</span><br><span>@@ -19,7 +19,8 @@</span><br><span>  dyn_ts_allow_tch_f 0</span><br><span>  periodic location update 30</span><br><span>  bts 0</span><br><span style="color: hsl(0, 100%, 40%);">-  type sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+  ! Change this to your specific model (e.g. osmo-bts-sysmo)</span><br><span style="color: hsl(120, 100%, 40%);">+  type osmo-bts</span><br><span>   band DCS1800</span><br><span>   cell_identity 0</span><br><span>   location_area_code 1</span><br><span>diff --git a/doc/manuals/vty/bsc_vty_reference.xml b/doc/manuals/vty/bsc_vty_reference.xml</span><br><span>index 8f3edf9..f3f67c6 100644</span><br><span>--- a/doc/manuals/vty/bsc_vty_reference.xml</span><br><span>+++ b/doc/manuals/vty/bsc_vty_reference.xml</span><br><span>@@ -3025,7 +3025,7 @@</span><br><span>   </node></span><br><span>   <node id='config-net-bts'></span><br><span>     <name>config-net-bts</name></span><br><span style="color: hsl(0, 100%, 40%);">-    <command id='type (unknown|bs11|nanobts|rbs2000|nokia_site|sysmobts)'></span><br><span style="color: hsl(120, 100%, 40%);">+    <command id='type (unknown|bs11|nanobts|rbs2000|nokia_site|osmo-bts|osmo-bts-lc15|osmo-bts-octphy|osmo-bts-sysmo|osmo-bts-trx)'></span><br><span>       <params></span><br><span>         <param name='type' doc='BTS Vendor/Type' /></span><br><span>         <param name='unknown' doc='Unknown BTS Type' /></span><br><span>@@ -3033,7 +3033,11 @@</span><br><span>         <param name='nanobts' doc='ip.access nanoBTS or compatible' /></span><br><span>         <param name='rbs2000' doc='Ericsson RBS2000 Series' /></span><br><span>         <param name='nokia_site' doc='Nokia {Metro,Ultra,In}Site' /></span><br><span style="color: hsl(0, 100%, 40%);">-        <param name='sysmobts' doc='sysmocom sysmoBTS' /></span><br><span style="color: hsl(120, 100%, 40%);">+        <param name='osmo-bts' doc='Osmocom family (generic profile)' /></span><br><span style="color: hsl(120, 100%, 40%);">+        <param name='osmo-bts-lc15' doc='Osmocom family (NuRAN LiteCell15 PHY)' /></span><br><span style="color: hsl(120, 100%, 40%);">+        <param name='osmo-bts-octphy' doc='Osmocom family (Octasic OCTSDR PHY)' /></span><br><span style="color: hsl(120, 100%, 40%);">+        <param name='osmo-bts-sysmo' doc='Osmocom family (Sysmocom sysmoBTS PHY)' /></span><br><span style="color: hsl(120, 100%, 40%);">+        <param name='osmo-bts-trx' doc='Osmocom family (OsmoTRX SDR PHY)' /></span><br><span>       </params></span><br><span>     </command></span><br><span>     <command id='description .TEXT'></span><br><span>diff --git a/include/osmocom/bsc/bss.h b/include/osmocom/bsc/bss.h</span><br><span>index b8945db..0de4423 100644</span><br><span>--- a/include/osmocom/bsc/bss.h</span><br><span>+++ b/include/osmocom/bsc/bss.h</span><br><span>@@ -16,5 +16,5 @@</span><br><span> extern int bts_model_rbs2k_init(void);</span><br><span> extern int bts_model_nanobts_init(void);</span><br><span> extern int bts_model_nokia_site_init(void);</span><br><span style="color: hsl(0, 100%, 40%);">-extern int bts_model_sysmobts_init(void);</span><br><span style="color: hsl(120, 100%, 40%);">+extern int osmo_bts_model_init(enum gsm_bts_type type);</span><br><span> #endif</span><br><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index 1e7e88f..6f6c279 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -782,19 +782,14 @@</span><br><span>      GSM_BTS_TYPE_NANOBTS,</span><br><span>        GSM_BTS_TYPE_RBS2000,</span><br><span>        GSM_BTS_TYPE_NOKIA_SITE,</span><br><span style="color: hsl(0, 100%, 40%);">-        GSM_BTS_TYPE_OSMOBTS,</span><br><span style="color: hsl(120, 100%, 40%);">+ GSM_BTS_TYPE_OSMOBTS_GENERIC,   /* osmo-bts-{virtual,omldummy} */</span><br><span style="color: hsl(120, 100%, 40%);">+     GSM_BTS_TYPE_OSMOBTS_LC15,</span><br><span style="color: hsl(120, 100%, 40%);">+    GSM_BTS_TYPE_OSMOBTS_OCTPHY,</span><br><span style="color: hsl(120, 100%, 40%);">+  GSM_BTS_TYPE_OSMOBTS_SYSMO,</span><br><span style="color: hsl(120, 100%, 40%);">+   GSM_BTS_TYPE_OSMOBTS_TRX,</span><br><span>    _NUM_GSM_BTS_TYPE</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-enum gsm_bts_type_variant {</span><br><span style="color: hsl(0, 100%, 40%);">-  BTS_UNKNOWN,</span><br><span style="color: hsl(0, 100%, 40%);">-    BTS_OSMO_LITECELL15,</span><br><span style="color: hsl(0, 100%, 40%);">-    BTS_OSMO_OCTPHY,</span><br><span style="color: hsl(0, 100%, 40%);">-        BTS_OSMO_SYSMO,</span><br><span style="color: hsl(0, 100%, 40%);">- BTS_OSMO_TRX,</span><br><span style="color: hsl(0, 100%, 40%);">-   _NUM_BTS_VARIANT</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Used by OML layer for BTS Attribute reporting */</span><br><span> enum bts_attribute {</span><br><span>    BTS_TYPE_VARIANT,</span><br><span>@@ -808,7 +803,6 @@</span><br><span>      struct llist_head list;</span><br><span> </span><br><span>  enum gsm_bts_type type;</span><br><span style="color: hsl(0, 100%, 40%);">- enum gsm_bts_type_variant variant;</span><br><span>   const char *name;</span><br><span> </span><br><span>        bool started;</span><br><span>@@ -1024,7 +1018,6 @@</span><br><span>        uint8_t bsic;</span><br><span>        /* type of BTS */</span><br><span>    enum gsm_bts_type type;</span><br><span style="color: hsl(0, 100%, 40%);">- enum gsm_bts_type_variant variant;</span><br><span>   struct gsm_bts_model *model;</span><br><span>         enum gsm_band band;</span><br><span>  char version[MAX_VERSION_LENGTH];</span><br><span>@@ -1309,9 +1302,6 @@</span><br><span> enum bts_attribute str2btsattr(const char *s);</span><br><span> const char *btsatttr2str(enum bts_attribute v);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-enum gsm_bts_type_variant str2btsvariant(const char *arg);</span><br><span style="color: hsl(0, 100%, 40%);">-const char *btsvariant2str(enum gsm_bts_type_variant v);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> extern const struct value_string gsm_chreq_descs[];</span><br><span> extern const struct value_string gsm_pchant_names[];</span><br><span> extern const struct value_string gsm_pchant_descs[];</span><br><span>@@ -1726,12 +1716,31 @@</span><br><span> </span><br><span> extern void *tall_bsc_ctx;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static inline int is_osmo_bts(const struct gsm_bts *bts)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      switch (bts->type) {</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM_BTS_TYPE_OSMOBTS_GENERIC:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_LC15:</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM_BTS_TYPE_OSMOBTS_OCTPHY:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM_BTS_TYPE_OSMOBTS_SYSMO:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_BTS_TYPE_OSMOBTS_TRX:</span><br><span style="color: hsl(120, 100%, 40%);">+                return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     default:</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* this actually refers to the IPA transport, not the BTS model */</span><br><span> static inline int is_ipaccess_bts(const struct gsm_bts *bts)</span><br><span> {</span><br><span>    switch (bts->type) {</span><br><span>      case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_GENERIC:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_LC15:</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM_BTS_TYPE_OSMOBTS_OCTPHY:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM_BTS_TYPE_OSMOBTS_SYSMO:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_BTS_TYPE_OSMOBTS_TRX:</span><br><span>               return 1;</span><br><span>    default:</span><br><span>             break;</span><br><span>@@ -1742,7 +1751,7 @@</span><br><span> static inline int is_sysmobts_v2(const struct gsm_bts *bts)</span><br><span> {</span><br><span>   switch (bts->type) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_SYSMO:</span><br><span>             return 1;</span><br><span>    default:</span><br><span>             break;</span><br><span>diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am</span><br><span>index 51e0e7f9..fe9eef1 100644</span><br><span>--- a/src/osmo-bsc/Makefile.am</span><br><span>+++ b/src/osmo-bsc/Makefile.am</span><br><span>@@ -49,7 +49,7 @@</span><br><span>     bts_ipaccess_nanobts_omlattr.c \</span><br><span>     bts_nokia_site.c \</span><br><span>   bts_siemens_bs11.c \</span><br><span style="color: hsl(0, 100%, 40%);">-    bts_sysmobts.c \</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_osmobts.c \</span><br><span>      bts_unknown.c \</span><br><span>      chan_alloc.c \</span><br><span>       codec_pref.c \</span><br><span>diff --git a/src/osmo-bsc/abis_nm.c b/src/osmo-bsc/abis_nm.c</span><br><span>index 4ed0602..d1c4046 100644</span><br><span>--- a/src/osmo-bsc/abis_nm.c</span><br><span>+++ b/src/osmo-bsc/abis_nm.c</span><br><span>@@ -981,19 +981,15 @@</span><br><span> {</span><br><span>     int rc;</span><br><span>      struct e1inp_sign_link *sign_link = mb->dst;</span><br><span style="color: hsl(0, 100%, 40%);">- int bts_type = sign_link->trx->bts->type;</span><br><span style="color: hsl(120, 100%, 40%);">+    const struct gsm_bts *bts = sign_link->trx->bts;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      switch (bts_type) {</span><br><span style="color: hsl(0, 100%, 40%);">-     case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    if (is_ipaccess_bts(bts)) {</span><br><span>          rc = abis_nm_rx_ipacc(mb);</span><br><span>           abis_nm_queue_send_next(sign_link->trx->bts);</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%);">+      } else {</span><br><span>             LOGP(DNM, LOGL_ERROR, "don't know how to parse OML for this "</span><br><span style="color: hsl(0, 100%, 40%);">-                  "BTS type (%u)\n", bts_type);</span><br><span style="color: hsl(120, 100%, 40%);">+               "BTS type (%u)\n", bts->type); /* TODO: use btstype2str() */</span><br><span>               rc = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span>       }</span><br><span> </span><br><span>        return rc;</span><br><span>@@ -1760,7 +1756,7 @@</span><br><span>   struct abis_om_hdr *oh;</span><br><span>      struct msgb *msg;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (bts->type != GSM_BTS_TYPE_OSMOBTS && bts->type != GSM_BTS_TYPE_NANOBTS) {</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!is_osmo_bts(bts) && bts->type != GSM_BTS_TYPE_NANOBTS) {</span><br><span>             LOGPC(DNM, LOGL_NOTICE, "Getting attributes from BTS%d type %s is not supported.\n",</span><br><span>                     bts->nr, btstype2str(bts->type));</span><br><span>                return -EINVAL;</span><br><span>@@ -1974,9 +1970,6 @@</span><br><span>              }</span><br><span>            *reason = "Unknown combination";</span><br><span>           return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-              /* no known restrictions */</span><br><span style="color: hsl(0, 100%, 40%);">-             return 0;</span><br><span>    default:</span><br><span>             /* unknown BTS type */</span><br><span>               return 0;</span><br><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index 4a1d314..c0311ff 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -313,7 +313,7 @@</span><br><span> </span><br><span>         msgb_tv_put(msg, RSL_IE_MS_POWER, lchan->ms_power);</span><br><span>       /* indicate MS power control to be performed by BTS: */</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->type == GSM_BTS_TYPE_OSMOBTS)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (is_osmo_bts(bts))</span><br><span>                msgb_tl_put(msg, RSL_IE_MS_POWER_PARAM);</span><br><span>     /* else: Since IE MS_POWER_PARAM content is operator dependent, it's not</span><br><span>            known if non-osmocom BTS models will support an empty IE, so let's</span><br><span>@@ -546,7 +546,7 @@</span><br><span>      msgb_tv_put(msg, RSL_IE_MS_POWER, lchan->ms_power);</span><br><span>       msgb_tv_put(msg, RSL_IE_TIMING_ADVANCE, ta);</span><br><span>         /* indicate MS power control to be performed by BTS: */</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->type == GSM_BTS_TYPE_OSMOBTS)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (is_osmo_bts(bts))</span><br><span>                msgb_tl_put(msg, RSL_IE_MS_POWER_PARAM);</span><br><span>     /* else: Since IE MS_POWER_PARAM content is operator dependent, it's not</span><br><span>            known if non-osmocom BTS models will support an empty IE, so let's</span><br><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 80658ec..eb28e48 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -970,9 +970,14 @@</span><br><span>                bts->early_classmark_allowed ? "allowed" : "forbidden", VTY_NEWLINE);</span><br><span>         vty_out(vty, "  early-classmark-sending-3g %s%s",</span><br><span>          bts->early_classmark_allowed_3g ? "allowed" : "forbidden", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    switch (bts->type) {</span><br><span>      case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_GENERIC:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_LC15:</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM_BTS_TYPE_OSMOBTS_OCTPHY:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM_BTS_TYPE_OSMOBTS_SYSMO:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_BTS_TYPE_OSMOBTS_TRX:</span><br><span>               vty_out(vty, "  ipa unit-id %u %u%s",</span><br><span>                      bts->ip_access.site_id, bts->ip_access.bts_id, VTY_NEWLINE);</span><br><span>           if (bts->ip_access.rsl_ip) {</span><br><span>@@ -2099,6 +2104,24 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_DEPRECATED(cfg_bts_type_sysmo,</span><br><span style="color: hsl(120, 100%, 40%);">+             cfg_bts_type_sysmo_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+               "type sysmobts",</span><br><span style="color: hsl(120, 100%, 40%);">+            ".HIDDEN\n" "Obsolete\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     struct gsm_bts *bts = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     vty_out(vty, "%% Command 'type sysmobts' is deprecated, use "</span><br><span style="color: hsl(120, 100%, 40%);">+               "'type osmo-bts-sysmo' instead%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  rc = gsm_set_bts_type(bts, GSM_BTS_TYPE_OSMOBTS_SYSMO);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(cfg_bts_type,</span><br><span>       cfg_bts_type_cmd,</span><br><span>       "type TYPE", /* dynamically created */</span><br><span>@@ -2826,7 +2849,7 @@</span><br><span> {</span><br><span>    struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (bts->type != GSM_BTS_TYPE_OSMOBTS) {</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!is_osmo_bts(bts)) {</span><br><span>             vty_out(vty, "%% infinite radio link timeout not supported by this BTS%s", VTY_NEWLINE);</span><br><span>           return CMD_WARNING;</span><br><span>  }</span><br><span>@@ -5404,6 +5427,7 @@</span><br><span>    install_element(GSMNET_NODE, &cfg_bts_cmd);</span><br><span>      install_node(&bts_node, config_write_bts);</span><br><span>       install_element(BTS_NODE, &cfg_bts_type_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+     install_element(BTS_NODE, &cfg_bts_type_sysmo_cmd);</span><br><span>      install_element(BTS_NODE, &cfg_description_cmd);</span><br><span>         install_element(BTS_NODE, &cfg_no_description_cmd);</span><br><span>      install_element(BTS_NODE, &cfg_bts_band_cmd);</span><br><span>diff --git a/src/osmo-bsc/bts_init.c b/src/osmo-bsc/bts_init.c</span><br><span>index 18f1ed4..6c6a081 100644</span><br><span>--- a/src/osmo-bsc/bts_init.c</span><br><span>+++ b/src/osmo-bsc/bts_init.c</span><br><span>@@ -24,7 +24,14 @@</span><br><span>      bts_model_rbs2k_init();</span><br><span>      bts_model_nanobts_init();</span><br><span>    bts_model_nokia_site_init();</span><br><span style="color: hsl(0, 100%, 40%);">-    bts_model_sysmobts_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Osmocom family (see https://osmocom.org/projects/osmobts/wiki#Backends-Hardware-support) */</span><br><span style="color: hsl(120, 100%, 40%);">+        osmo_bts_model_init(GSM_BTS_TYPE_OSMOBTS_GENERIC);</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo_bts_model_init(GSM_BTS_TYPE_OSMOBTS_LC15);</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo_bts_model_init(GSM_BTS_TYPE_OSMOBTS_OCTPHY);</span><br><span style="color: hsl(120, 100%, 40%);">+     osmo_bts_model_init(GSM_BTS_TYPE_OSMOBTS_SYSMO);</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo_bts_model_init(GSM_BTS_TYPE_OSMOBTS_TRX);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     /* Your new BTS here. */</span><br><span>     return 0;</span><br><span> }</span><br><span>diff --git a/src/osmo-bsc/bts_osmobts.c b/src/osmo-bsc/bts_osmobts.c</span><br><span>new file mode 100644</span><br><span>index 0000000..5aaa1af</span><br><span>--- /dev/null</span><br><span>+++ b/src/osmo-bsc/bts_osmobts.c</span><br><span>@@ -0,0 +1,56 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/* Osmocom family BTS model definition */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* (C) 2010-2012 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * All Rights Reserved</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU Affero General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; either version 3 of the License, or</span><br><span style="color: hsl(120, 100%, 40%);">+ * (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU Affero General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * You should have received a copy of the GNU Affero General Public License</span><br><span style="color: hsl(120, 100%, 40%);">+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/gsm/bts_features.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bsc/gsm_data.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+extern struct gsm_bts_model bts_model_nanobts;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int osmo_bts_model_init(enum gsm_bts_type type)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm_bts_model *model;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Allocate a new BTS model on heap */</span><br><span style="color: hsl(120, 100%, 40%);">+        model = talloc(tall_bsc_ctx, struct gsm_bts_model);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!model)</span><br><span style="color: hsl(120, 100%, 40%);">+           return -ENOMEM;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Inherit a new model from nanoBTS */</span><br><span style="color: hsl(120, 100%, 40%);">+        *model = bts_model_nanobts;</span><br><span style="color: hsl(120, 100%, 40%);">+   model->name = btstype2str(type);</span><br><span style="color: hsl(120, 100%, 40%);">+   model->type = type;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Unlike nanoBTS, osmo-bts supports SI2bis and SI2ter fine */</span><br><span style="color: hsl(120, 100%, 40%);">+        model->force_combined_si = false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Initialize the vector of supported features */</span><br><span style="color: hsl(120, 100%, 40%);">+     memset(&model->_features_data[0], 0, sizeof(model->_features_data));</span><br><span style="color: hsl(120, 100%, 40%);">+        model->features = (struct bitvec) {</span><br><span style="color: hsl(120, 100%, 40%);">+                .data_len = sizeof(model->_features_data),</span><br><span style="color: hsl(120, 100%, 40%);">+         .data = &model->_features_data[0],</span><br><span style="color: hsl(120, 100%, 40%);">+     };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* The following features are common to all osmo-bts-* models */</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo_bts_set_feature(&model->features, BTS_FEAT_GPRS);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_bts_set_feature(&model->features, BTS_FEAT_EGPRS);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      return gsm_bts_model_register(model);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/osmo-bsc/bts_sysmobts.c b/src/osmo-bsc/bts_sysmobts.c</span><br><span>deleted file mode 100644</span><br><span>index ad12733..0000000</span><br><span>--- a/src/osmo-bsc/bts_sysmobts.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,63 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* sysmocom sysmoBTS specific code */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* (C) 2010-2012 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * All Rights Reserved</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU Affero General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; either version 3 of the License, or</span><br><span style="color: hsl(0, 100%, 40%);">- * (at your option) any later version.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU Affero General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * You should have received a copy of the GNU Affero General Public License</span><br><span style="color: hsl(0, 100%, 40%);">- * along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <arpa/inet.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/tlv.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/signal.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/abis_nm.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/abis/e1_input.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/tlv.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/msgb.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/talloc.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/abis_nm.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/abis_rsl.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/debug.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/abis/subchan_demux.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/abis/ipaccess.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/logging.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-extern struct gsm_bts_model bts_model_nanobts;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct gsm_bts_model model_sysmobts;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int bts_model_sysmobts_init(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   model_sysmobts = bts_model_nanobts;</span><br><span style="color: hsl(0, 100%, 40%);">-     model_sysmobts.name = "sysmobts";</span><br><span style="color: hsl(0, 100%, 40%);">-     model_sysmobts.type = GSM_BTS_TYPE_OSMOBTS;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     /* Unlike nanoBTS, sysmoBTS supports SI2bis and SI2ter fine */</span><br><span style="color: hsl(0, 100%, 40%);">-  model_sysmobts.force_combined_si = false;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       model_sysmobts.features.data = &model_sysmobts._features_data[0];</span><br><span style="color: hsl(0, 100%, 40%);">-   model_sysmobts.features.data_len =</span><br><span style="color: hsl(0, 100%, 40%);">-                              sizeof(model_sysmobts._features_data);</span><br><span style="color: hsl(0, 100%, 40%);">-  memset(model_sysmobts.features.data, 0, model_sysmobts.features.data_len);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_bts_set_feature(&model_sysmobts.features, BTS_FEAT_GPRS);</span><br><span style="color: hsl(0, 100%, 40%);">-    osmo_bts_set_feature(&model_sysmobts.features, BTS_FEAT_EGPRS);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     return gsm_bts_model_register(&model_sysmobts);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-bsc/e1_config.c b/src/osmo-bsc/e1_config.c</span><br><span>index 4389f66..8e90a54 100644</span><br><span>--- a/src/osmo-bsc/e1_config.c</span><br><span>+++ b/src/osmo-bsc/e1_config.c</span><br><span>@@ -174,8 +174,7 @@</span><br><span>              bts->model->e1line_bind_ops(line);</span><br><span> </span><br><span>         /* skip signal link initialization, this is done later for these BTS. */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (bts->type == GSM_BTS_TYPE_NANOBTS ||</span><br><span style="color: hsl(0, 100%, 40%);">-         bts->type == GSM_BTS_TYPE_OSMOBTS)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (bts->type == GSM_BTS_TYPE_NANOBTS || is_osmo_bts(bts))</span><br><span>                return e1inp_line_update(line);</span><br><span> </span><br><span>  /* OML link */</span><br><span>diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c</span><br><span>index 46e26ac..08e8ccb 100644</span><br><span>--- a/src/osmo-bsc/gsm_data.c</span><br><span>+++ b/src/osmo-bsc/gsm_data.c</span><br><span>@@ -85,7 +85,11 @@</span><br><span>         { GSM_BTS_TYPE_NANOBTS,         "ip.access nanoBTS or compatible" },</span><br><span>       { GSM_BTS_TYPE_RBS2000,         "Ericsson RBS2000 Series" },</span><br><span>       { GSM_BTS_TYPE_NOKIA_SITE,      "Nokia {Metro,Ultra,In}Site" },</span><br><span style="color: hsl(0, 100%, 40%);">-       { GSM_BTS_TYPE_OSMOBTS,         "sysmocom sysmoBTS" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { GSM_BTS_TYPE_OSMOBTS_GENERIC, "Osmocom family (generic profile)" },</span><br><span style="color: hsl(120, 100%, 40%);">+       { GSM_BTS_TYPE_OSMOBTS_LC15,    "Osmocom family (NuRAN LiteCell15 PHY)" },</span><br><span style="color: hsl(120, 100%, 40%);">+  { GSM_BTS_TYPE_OSMOBTS_OCTPHY,  "Osmocom family (Octasic OCTSDR PHY)" },</span><br><span style="color: hsl(120, 100%, 40%);">+    { GSM_BTS_TYPE_OSMOBTS_SYSMO,   "Osmocom family (Sysmocom sysmoBTS PHY)" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { GSM_BTS_TYPE_OSMOBTS_TRX,     "Osmocom family (OsmoTRX SDR PHY)" },</span><br><span>      { 0,                            NULL }</span><br><span> };</span><br><span> </span><br><span>@@ -184,7 +188,11 @@</span><br><span> </span><br><span>  switch (bts->type) {</span><br><span>      case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_GENERIC:</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_BTS_TYPE_OSMOBTS_LC15:</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM_BTS_TYPE_OSMOBTS_OCTPHY:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM_BTS_TYPE_OSMOBTS_SYSMO:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_BTS_TYPE_OSMOBTS_TRX:</span><br><span>               /* Set the default OML Stream ID to 0xff */</span><br><span>          bts->oml_tei = 0xff;</span><br><span>              bts->c0->nominal_power = 23;</span><br><span>@@ -413,32 +421,17 @@</span><br><span>   return get_value_string(bts_attribute_names, v);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const struct value_string osmo_bts_variant_names[_NUM_BTS_VARIANT + 1] = {</span><br><span style="color: hsl(0, 100%, 40%);">-     { BTS_UNKNOWN,          "unknown" },</span><br><span style="color: hsl(0, 100%, 40%);">-  { BTS_OSMO_LITECELL15,  "osmo-bts-lc15" },</span><br><span style="color: hsl(0, 100%, 40%);">-    { BTS_OSMO_OCTPHY,      "osmo-bts-octphy" },</span><br><span style="color: hsl(0, 100%, 40%);">-  { BTS_OSMO_SYSMO,       "osmo-bts-sysmo" },</span><br><span style="color: hsl(0, 100%, 40%);">-   { BTS_OSMO_TRX,         "omso-bts-trx" },</span><br><span style="color: hsl(0, 100%, 40%);">-     { 0, NULL }</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-enum gsm_bts_type_variant str2btsvariant(const char *arg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return get_string_value(osmo_bts_variant_names, arg);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-const char *btsvariant2str(enum gsm_bts_type_variant v)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  return get_value_string(osmo_bts_variant_names, v);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> const struct value_string bts_type_names[_NUM_GSM_BTS_TYPE + 1] = {</span><br><span>  { GSM_BTS_TYPE_UNKNOWN,         "unknown" },</span><br><span>       { GSM_BTS_TYPE_BS11,            "bs11" },</span><br><span>  { GSM_BTS_TYPE_NANOBTS,         "nanobts" },</span><br><span>       { GSM_BTS_TYPE_RBS2000,         "rbs2000" },</span><br><span>       { GSM_BTS_TYPE_NOKIA_SITE,      "nokia_site" },</span><br><span style="color: hsl(0, 100%, 40%);">-       { GSM_BTS_TYPE_OSMOBTS,         "sysmobts" },</span><br><span style="color: hsl(120, 100%, 40%);">+       { GSM_BTS_TYPE_OSMOBTS_GENERIC, "osmo-bts" },</span><br><span style="color: hsl(120, 100%, 40%);">+       { GSM_BTS_TYPE_OSMOBTS_LC15,    "osmo-bts-lc15" },</span><br><span style="color: hsl(120, 100%, 40%);">+  { GSM_BTS_TYPE_OSMOBTS_OCTPHY,  "osmo-bts-octphy" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { GSM_BTS_TYPE_OSMOBTS_SYSMO,   "osmo-bts-sysmo" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { GSM_BTS_TYPE_OSMOBTS_TRX,     "osmo-bts-trx" },</span><br><span>  { 0, NULL }</span><br><span> };</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/system_information.c b/src/osmo-bsc/system_information.c</span><br><span>index d5be3f2..4ee73fa 100644</span><br><span>--- a/src/osmo-bsc/system_information.c</span><br><span>+++ b/src/osmo-bsc/system_information.c</span><br><span>@@ -995,14 +995,9 @@</span><br><span>        memset(output, GSM_MACBLOCK_PADDING, GSM_MACBLOCK_LEN);</span><br><span> </span><br><span>  /* ip.access nanoBTS needs l2_plen!! */</span><br><span style="color: hsl(0, 100%, 40%);">- switch (bts->type) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    if (bts->type == GSM_BTS_TYPE_NANOBTS || is_osmo_bts(bts)) {</span><br><span>              *output++ = GSM48_LEN2PLEN(l2_plen);</span><br><span>                 l2_plen++;</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(0, 100%, 40%);">-                break;</span><br><span>       }</span><br><span> </span><br><span>        si5 = (struct gsm48_system_information_type_5 *) output;</span><br><span>@@ -1031,14 +1026,9 @@</span><br><span>    memset(output, GSM_MACBLOCK_PADDING, GSM_MACBLOCK_LEN);</span><br><span> </span><br><span>  /* ip.access nanoBTS needs l2_plen!! */</span><br><span style="color: hsl(0, 100%, 40%);">- switch (bts->type) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    if (bts->type == GSM_BTS_TYPE_NANOBTS || is_osmo_bts(bts)) {</span><br><span>              *output++ = GSM48_LEN2PLEN(l2_plen);</span><br><span>                 l2_plen++;</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(0, 100%, 40%);">-                break;</span><br><span>       }</span><br><span> </span><br><span>        si5b = (struct gsm48_system_information_type_5bis *) output;</span><br><span>@@ -1075,14 +1065,9 @@</span><br><span>        memset(output, GSM_MACBLOCK_PADDING, GSM_MACBLOCK_LEN);</span><br><span> </span><br><span>  /* ip.access nanoBTS needs l2_plen!! */</span><br><span style="color: hsl(0, 100%, 40%);">- switch (bts->type) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    if (bts->type == GSM_BTS_TYPE_NANOBTS || is_osmo_bts(bts)) {</span><br><span>              *output++ = GSM48_LEN2PLEN(l2_plen);</span><br><span>                 l2_plen++;</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(0, 100%, 40%);">-                break;</span><br><span>       }</span><br><span> </span><br><span>        si5t = (struct gsm48_system_information_type_5ter *) output;</span><br><span>@@ -1113,14 +1098,9 @@</span><br><span>        memset(output, GSM_MACBLOCK_PADDING, GSM_MACBLOCK_LEN);</span><br><span> </span><br><span>  /* ip.access nanoBTS needs l2_plen!! */</span><br><span style="color: hsl(0, 100%, 40%);">- switch (bts->type) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_BTS_TYPE_NANOBTS:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_BTS_TYPE_OSMOBTS:</span><br><span style="color: hsl(120, 100%, 40%);">+    if (bts->type == GSM_BTS_TYPE_NANOBTS || is_osmo_bts(bts)) {</span><br><span>              *output++ = GSM48_LEN2PLEN(l2_plen);</span><br><span>                 l2_plen++;</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(0, 100%, 40%);">-                break;</span><br><span>       }</span><br><span> </span><br><span>        si6 = (struct gsm48_system_information_type_6 *) output;</span><br><span>diff --git a/tests/neighbor_ident.vty b/tests/neighbor_ident.vty</span><br><span>index ce414e1..250da89 100644</span><br><span>--- a/tests/neighbor_ident.vty</span><br><span>+++ b/tests/neighbor_ident.vty</span><br><span>@@ -15,7 +15,7 @@</span><br><span> OsmoBSC(config)# network</span><br><span> </span><br><span> OsmoBSC(config-net)# bts 0</span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# type sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoBSC(config-net-bts)# type osmo-bts</span><br><span> OsmoBSC(config-net-bts)# base_station_id_code 10</span><br><span> OsmoBSC(config-net-bts)# location_area_code 20</span><br><span> OsmoBSC(config-net-bts)# cell_identity 30</span><br><span>@@ -25,7 +25,7 @@</span><br><span> OsmoBSC(config-net-bts)# exit</span><br><span> </span><br><span> OsmoBSC(config-net)# bts 1</span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# type sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoBSC(config-net-bts)# type osmo-bts</span><br><span> OsmoBSC(config-net-bts)# base_station_id_code 11</span><br><span> OsmoBSC(config-net-bts)# location_area_code 21</span><br><span> OsmoBSC(config-net-bts)# cell_identity 31</span><br><span>@@ -35,7 +35,7 @@</span><br><span> OsmoBSC(config-net-bts)# exit</span><br><span> </span><br><span> OsmoBSC(config-net)# bts 2</span><br><span style="color: hsl(0, 100%, 40%);">-OsmoBSC(config-net-bts)# type sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoBSC(config-net-bts)# type osmo-bts</span><br><span> OsmoBSC(config-net-bts)# base_station_id_code 12</span><br><span> OsmoBSC(config-net-bts)# location_area_code 22</span><br><span> OsmoBSC(config-net-bts)# cell_identity 65535</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18616">change 18616</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/c/osmo-bsc/+/18616"/><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-Change-Id: I00a815cfa6daab126742d27843e700c07c1db183 </div>
<div style="display:none"> Gerrit-Change-Number: 18616 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>