<p>ninjab3s has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/21582">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">enb: Set cipher and integrity via scenario file<br><br>This patch enables setting cipher and integrity algorithms<br>in Amarisoft eNB and srsENB via scenario files. If no<br>settings are defined following defaults are applied:<br>- Cipher algorithm: EEA0, EEA2, EEA1<br>- Integrity algorithm: EIA2, EIA1, EIA0<br><br>Example of setting chipher algorithms:<br>- 4g:srsue-rftype@uhd+srsenb-rftype@uhd+mod-amarisoftenb-cipher@1+mod-amarisoftenb-cipher@0+mod-enb-nprb@6<br>- 4g:srsue-rftype@uhd+srsenb-rftype@uhd+mod-srsenb-cipher@EEA1+mod-srsenb-cipher@EEA0+mod-enb-nprb@6<br><br>Change-Id: I595206b7d49016fb6d0aec175c828d9537c53886<br>---<br>M src/osmo_gsm_tester/core/schema.py<br>M src/osmo_gsm_tester/obj/bts.py<br>M src/osmo_gsm_tester/obj/enb.py<br>M src/osmo_gsm_tester/obj/ms.py<br>M src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl<br>M src/osmo_gsm_tester/templates/srsenb.conf.tmpl<br>M sysmocom/defaults.conf<br>A sysmocom/scenarios/mod-amarisoftenb-cipher@.conf<br>A sysmocom/scenarios/mod-amarisoftenb-integrity@.conf<br>A sysmocom/scenarios/mod-srsenb-cipher@.conf<br>A sysmocom/scenarios/mod-srsenb-integrity@.conf<br>11 files changed, 65 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/82/21582/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/core/schema.py b/src/osmo_gsm_tester/core/schema.py</span><br><span>index d56d6ec..9d6bc11 100644</span><br><span>--- a/src/osmo_gsm_tester/core/schema.py</span><br><span>+++ b/src/osmo_gsm_tester/core/schema.py</span><br><span>@@ -105,11 +105,29 @@</span><br><span>         raise ValueError('Positive value >0 expected instead of %d' % n)</span><br><span>     return True</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-def cipher(val):</span><br><span style="color: hsl(120, 100%, 40%);">+def cipher_2g(val):</span><br><span>     if val in ('a5_0', 'a5_1', 'a5_2', 'a5_3', 'a5_4', 'a5_5', 'a5_6', 'a5_7'):</span><br><span>         return True</span><br><span>     raise ValueError('Unknown Cipher value: %r' % val)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def cipher_4g(val):</span><br><span style="color: hsl(120, 100%, 40%);">+    if val in ('EEA0', 'EEA1', 'EEA2'):</span><br><span style="color: hsl(120, 100%, 40%);">+        # srsENB</span><br><span style="color: hsl(120, 100%, 40%);">+        return True</span><br><span style="color: hsl(120, 100%, 40%);">+    if val in ('0', '1', '2'):</span><br><span style="color: hsl(120, 100%, 40%);">+        # Amarisoft eNB</span><br><span style="color: hsl(120, 100%, 40%);">+        return True</span><br><span style="color: hsl(120, 100%, 40%);">+    raise ValueError('Unknown 4G cipher value: %r' % val)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def integrity_4g(val):</span><br><span style="color: hsl(120, 100%, 40%);">+    if val in ('EIA0', 'EIA1', 'EIA2'):</span><br><span style="color: hsl(120, 100%, 40%);">+        # srsENB</span><br><span style="color: hsl(120, 100%, 40%);">+        return True</span><br><span style="color: hsl(120, 100%, 40%);">+    if val in ('0', '1', '2',):</span><br><span style="color: hsl(120, 100%, 40%);">+        # Amarisoft eNB</span><br><span style="color: hsl(120, 100%, 40%);">+        return True</span><br><span style="color: hsl(120, 100%, 40%);">+    raise ValueError('Unknown 4G integrity value %r' % val)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def modem_feature(val):</span><br><span>     if val in ('sms', 'gprs', 'voice', 'ussd', 'sim', '2g', '3g', '4g', 'dl_qam256', 'ul_qam64'):</span><br><span>         return True</span><br><span>@@ -165,7 +183,9 @@</span><br><span> MSISDN = 'msisdn'</span><br><span> AUTH_ALGO = 'auth_algo'</span><br><span> TIMES='times'</span><br><span style="color: hsl(0, 100%, 40%);">-CIPHER = 'cipher'</span><br><span style="color: hsl(120, 100%, 40%);">+CIPHER_2G = 'cipher_2g'</span><br><span style="color: hsl(120, 100%, 40%);">+CIPHER_4G = 'cipher_4g'</span><br><span style="color: hsl(120, 100%, 40%);">+INTEGRITY_4G = 'integrity_4g'</span><br><span> MODEM_FEATURE = 'modem_feature'</span><br><span> PHY_CHAN = 'chan'</span><br><span> CHAN_ALLOCATOR = 'chan_allocator'</span><br><span>@@ -189,7 +209,8 @@</span><br><span>         MSISDN: msisdn,</span><br><span>         AUTH_ALGO: auth_algo,</span><br><span>         TIMES: times,</span><br><span style="color: hsl(0, 100%, 40%);">-        CIPHER: cipher,</span><br><span style="color: hsl(120, 100%, 40%);">+        CIPHER_2G: cipher_2g,</span><br><span style="color: hsl(120, 100%, 40%);">+        CIPHER_4G: cipher_4g,</span><br><span>         MODEM_FEATURE: modem_feature,</span><br><span>         PHY_CHAN: phy_channel_config,</span><br><span>         CHAN_ALLOCATOR: channel_allocator,</span><br><span>@@ -198,6 +219,7 @@</span><br><span>         OSMO_TRX_CLOCK_REF: osmo_trx_clock_ref,</span><br><span>         LTE_TRANSMISSION_MODE: lte_transmission_mode,</span><br><span>         DURATION: duration,</span><br><span style="color: hsl(120, 100%, 40%);">+        INTEGRITY_4G: integrity_4g,</span><br><span>     }</span><br><span> </span><br><span> def add(dest, src):</span><br><span>diff --git a/src/osmo_gsm_tester/obj/bts.py b/src/osmo_gsm_tester/obj/bts.py</span><br><span>index 5b43642..2453fef 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/bts.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/bts.py</span><br><span>@@ -31,7 +31,7 @@</span><br><span>         'addr': schema.IPV4,</span><br><span>         'band': schema.BAND,</span><br><span>         'direct_pcu': schema.BOOL_STR,</span><br><span style="color: hsl(0, 100%, 40%);">-        'ciphers[]': schema.CIPHER,</span><br><span style="color: hsl(120, 100%, 40%);">+        'ciphers[]': schema.CIPHER_2G,</span><br><span>         'channel_allocator': schema.CHAN_ALLOCATOR,</span><br><span>         'gprs_mode': schema.GPRS_MODE,</span><br><span>         'emergency_calls_allowed': schema.BOOL_STR,</span><br><span>diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py</span><br><span>index cdf9505..ce4a8fb 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb.py</span><br><span>@@ -44,6 +44,8 @@</span><br><span>         'enable_measurements': schema.BOOL_STR,</span><br><span>         'enable_dl_awgn': schema.BOOL_STR,</span><br><span>         'dl_awgn_snr': schema.INT,</span><br><span style="color: hsl(120, 100%, 40%);">+        'cipher_list[]': schema.CIPHER_4G,</span><br><span style="color: hsl(120, 100%, 40%);">+        'integrity_list[]': schema.INTEGRITY_4G,</span><br><span>         'a1_report_type': schema.STR,</span><br><span>         'a1_report_value': schema.INT,</span><br><span>         'a1_hysteresis': schema.INT,</span><br><span>diff --git a/src/osmo_gsm_tester/obj/ms.py b/src/osmo_gsm_tester/obj/ms.py</span><br><span>index 7257769..3d0827d 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/ms.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/ms.py</span><br><span>@@ -31,7 +31,7 @@</span><br><span>         'opc': schema.OPC,</span><br><span>         'auth_algo': schema.AUTH_ALGO,</span><br><span>         'apn_ipaddr': schema.IPV4,</span><br><span style="color: hsl(0, 100%, 40%);">-        'ciphers[]': schema.CIPHER,</span><br><span style="color: hsl(120, 100%, 40%);">+        'ciphers[]': schema.CIPHER_2G,</span><br><span>         'features[]': schema.MODEM_FEATURE</span><br><span>         }</span><br><span>     schema.register_resource_schema('modem', resource_schema)</span><br><span>diff --git a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</span><br><span>index 4c7aa33..fb41fb1 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</span><br><span>@@ -224,9 +224,9 @@</span><br><span>     dpc_pucch_snr_target: 10,</span><br><span> </span><br><span>     /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */</span><br><span style="color: hsl(0, 100%, 40%);">-    cipher_algo_pref: [],</span><br><span style="color: hsl(120, 100%, 40%);">+    cipher_algo_pref: [${', '.join(list(dict.fromkeys(enb.cipher_algo)))}],</span><br><span>     /* RRC integrity algorithm preference. EIA0 is always the last. */</span><br><span style="color: hsl(0, 100%, 40%);">-    integ_algo_pref: [2, 1],</span><br><span style="color: hsl(120, 100%, 40%);">+    integ_algo_pref: [${', '.join(list(dict.fromkeys(enb.integrity_algo)))}],</span><br><span> </span><br><span>     /* (in ms) send RRC connection release after this time of network</span><br><span>        inactivity */</span><br><span>diff --git a/src/osmo_gsm_tester/templates/srsenb.conf.tmpl b/src/osmo_gsm_tester/templates/srsenb.conf.tmpl</span><br><span>index 5df432b..3bcb9ac 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/srsenb.conf.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/srsenb.conf.tmpl</span><br><span>@@ -282,5 +282,5 @@</span><br><span> #link_failure_nof_err = 50</span><br><span> rrc_inactivity_timer = ${enb.inactivity_timer}</span><br><span> #max_prach_offset_us  = 30</span><br><span style="color: hsl(0, 100%, 40%);">-#eea_pref_list = EEA0, EEA2, EEA1</span><br><span style="color: hsl(0, 100%, 40%);">-#eia_pref_list = EIA2, EIA1, EIA0</span><br><span style="color: hsl(120, 100%, 40%);">+eea_pref_list = ${', '.join(list(dict.fromkeys(enb.cipher_list)))}</span><br><span style="color: hsl(120, 100%, 40%);">+eia_pref_list = ${', '.join(list(dict.fromkeys(enb.integrity_list)))}</span><br><span>diff --git a/sysmocom/defaults.conf b/sysmocom/defaults.conf</span><br><span>index 7704857..c0ebf30 100644</span><br><span>--- a/sysmocom/defaults.conf</span><br><span>+++ b/sysmocom/defaults.conf</span><br><span>@@ -153,6 +153,14 @@</span><br><span>   tx_gain: 80</span><br><span>   rx_gain: 40</span><br><span>   log_all_level: warning</span><br><span style="color: hsl(120, 100%, 40%);">+  cipher_4g:</span><br><span style="color: hsl(120, 100%, 40%);">+    - EEA0</span><br><span style="color: hsl(120, 100%, 40%);">+    - EEA2</span><br><span style="color: hsl(120, 100%, 40%);">+    - EEA1</span><br><span style="color: hsl(120, 100%, 40%);">+  integrity_4g:</span><br><span style="color: hsl(120, 100%, 40%);">+    - EIA2</span><br><span style="color: hsl(120, 100%, 40%);">+    - EIA1</span><br><span style="color: hsl(120, 100%, 40%);">+    - EIA0</span><br><span>   cell_list:</span><br><span>    - dl_rfemu:</span><br><span>        type: srsenb_stdin</span><br><span>@@ -165,6 +173,10 @@</span><br><span>   tx_gain: 89</span><br><span>   rx_gain: 60</span><br><span>   rf_dev_sync: none</span><br><span style="color: hsl(120, 100%, 40%);">+  cipher_4g: []</span><br><span style="color: hsl(120, 100%, 40%);">+  integrity_4g:</span><br><span style="color: hsl(120, 100%, 40%);">+    - 2</span><br><span style="color: hsl(120, 100%, 40%);">+    - 1</span><br><span>   log_options: all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,s1ap.level=debug,s1ap.max_size=1,x2ap.level=debug,x2ap.max_size=1,rrc.level=debug,rrc.max_size=1</span><br><span> </span><br><span> srsue:</span><br><span>diff --git a/sysmocom/scenarios/mod-amarisoftenb-cipher@.conf b/sysmocom/scenarios/mod-amarisoftenb-cipher@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..38a8002</span><br><span>--- /dev/null</span><br><span>+++ b/sysmocom/scenarios/mod-amarisoftenb-cipher@.conf</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+    - type: amarisoftenb</span><br><span style="color: hsl(120, 100%, 40%);">+      cipher_list:</span><br><span style="color: hsl(120, 100%, 40%);">+        - ${param1}</span><br><span>diff --git a/sysmocom/scenarios/mod-amarisoftenb-integrity@.conf b/sysmocom/scenarios/mod-amarisoftenb-integrity@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..ce58fbd</span><br><span>--- /dev/null</span><br><span>+++ b/sysmocom/scenarios/mod-amarisoftenb-integrity@.conf</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+    - type: amarisoftenb</span><br><span style="color: hsl(120, 100%, 40%);">+      integrity_list:</span><br><span style="color: hsl(120, 100%, 40%);">+        - ${param1}</span><br><span>diff --git a/sysmocom/scenarios/mod-srsenb-cipher@.conf b/sysmocom/scenarios/mod-srsenb-cipher@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..36c798e</span><br><span>--- /dev/null</span><br><span>+++ b/sysmocom/scenarios/mod-srsenb-cipher@.conf</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+    - type: srsenb</span><br><span style="color: hsl(120, 100%, 40%);">+      cipher_list:</span><br><span style="color: hsl(120, 100%, 40%);">+        - ${param1}</span><br><span>diff --git a/sysmocom/scenarios/mod-srsenb-integrity@.conf b/sysmocom/scenarios/mod-srsenb-integrity@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..013399e</span><br><span>--- /dev/null</span><br><span>+++ b/sysmocom/scenarios/mod-srsenb-integrity@.conf</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+    - type: srsenb</span><br><span style="color: hsl(120, 100%, 40%);">+      integrity_list:</span><br><span style="color: hsl(120, 100%, 40%);">+        - ${param1}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/21582">change 21582</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-gsm-tester/+/21582"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I595206b7d49016fb6d0aec175c828d9537c53886 </div>
<div style="display:none"> Gerrit-Change-Number: 21582 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: ninjab3s <nils.fuerste@softwareradiosystems.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>