<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/24220">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">open5gs: Pre-configure tun device for UPF<br><br>open5gs requires the tun device to be pre-created and pre-configured<br>before using it. A ticket was opened in order to allow upfd itself<br>configuring it in [1]<br><br>[1] https://github.com/open5gs/open5gs/issues/899<br><br>Change-Id: I3b1857f09017cacee1c86f41dae1463c11b50490<br>---<br>M src/osmo_gsm_tester/obj/epc_open5gs.py<br>M src/osmo_gsm_tester/obj/upf_open5gs.py<br>M src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl<br>M src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl<br>A utils/bin/osmo-gsm-tester_open5gs_tun_setup.sh<br>A utils/sudoers.d/osmo-gsm-tester_open5gs_tun_setup<br>6 files changed, 40 insertions(+), 4 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/20/24220/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/obj/epc_open5gs.py b/src/osmo_gsm_tester/obj/epc_open5gs.py</span><br><span>index 6db513b..99849f0 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/epc_open5gs.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/epc_open5gs.py</span><br><span>@@ -61,7 +61,10 @@</span><br><span>         db_host = values['epc']['db_host']</span><br><span>         db_uri = 'mongodb://'+db_host+'/open5gs'</span><br><span>         config.overlay(values, dict(epc=dict(db_uri=db_uri,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             apn_name=self.apn_name(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             tun_name=self.tun_name(),</span><br><span>                                              tun_addr=self.tun_addr(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             tun_netmask=self.tun_netmask(),</span><br><span>                                              addr_smf=self.priv_addr_smf(),</span><br><span>                                              addr_upf=self.priv_addr_upf(),</span><br><span>                                              addr_sgwc=self.priv_addr_sgwc(),</span><br><span>@@ -121,6 +124,15 @@</span><br><span>     def priv_addr_sgwu(self):</span><br><span>         return self.gen_priv_addr(4)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def tun_name(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return "ogstun"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def tun_netmask(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return "16"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def apn_name(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return "internet"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> ###################</span><br><span> # PUBLIC (test API included)</span><br><span> ###################</span><br><span>@@ -170,7 +182,7 @@</span><br><span>                 "default_indicator": True, \</span><br><span>                 "session": [ \</span><br><span>                     { \</span><br><span style="color: hsl(0, 100%, 40%);">-                    "name": "internet", \</span><br><span style="color: hsl(120, 100%, 40%);">+                    "name": self.apn_name(), \</span><br><span>                     "type": 3, "pcc_rule": [], "ambr": {"uplink": {"value": 1, "unit": 0}, "downlink": {"value": 1, "unit": 0}}, \</span><br><span>                     "qos": { "index": 9, "arp": {"priority_level": 8, "pre_emption_capability": 1, "pre_emption_vulnerability": 1} } \</span><br><span>                     } \</span><br><span>@@ -209,7 +221,7 @@</span><br><span>                self.sgwu.running()</span><br><span> </span><br><span>     def tun_addr(self):</span><br><span style="color: hsl(0, 100%, 40%);">-        return '172.16.0.1'</span><br><span style="color: hsl(120, 100%, 40%);">+        return '10.45.0.1'</span><br><span> </span><br><span>     def get_kpis(self):</span><br><span>         return {}</span><br><span>diff --git a/src/osmo_gsm_tester/obj/upf_open5gs.py b/src/osmo_gsm_tester/obj/upf_open5gs.py</span><br><span>index 78a520f..344c177 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/upf_open5gs.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/upf_open5gs.py</span><br><span>@@ -34,6 +34,7 @@</span><br><span>     CFGFILE = 'open5gs-upfd.yaml'</span><br><span>     LOGFILE = 'open5gs-upfd.log'</span><br><span>     DIAMETERFILE = 'open5gs-freediameter.conf'</span><br><span style="color: hsl(120, 100%, 40%);">+    O5GS_TUN_SETUP_BIN = 'osmo-gsm-tester_open5gs_tun_setup.sh'</span><br><span> </span><br><span>     def __init__(self, testenv, o5gs_epc):</span><br><span>         super().__init__(log.C_RUN, 'open5gs-upfd')</span><br><span>@@ -137,6 +138,9 @@</span><br><span>             f.write(r)</span><br><span> </span><br><span>         if not self._run_node.is_local():</span><br><span style="color: hsl(120, 100%, 40%);">+            self.rem_host.run_remote_sync('tun-setup', ('sudo', Open5gsUPF.O5GS_TUN_SETUP_BIN,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          self.o5gs_epc.tun_name(), self.o5gs_epc.tun_addr(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                          self.o5gs_epc.tun_netmask()))</span><br><span>             self.rem_host.recreate_remote_dir(self.remote_inst)</span><br><span>             self.rem_host.scp('scp-inst-to-remote', str(self.inst), remote_prefix_dir)</span><br><span>             self.rem_host.recreate_remote_dir(remote_run_dir)</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl</span><br><span>index f2bd807..00a0eae 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl</span><br><span>@@ -318,7 +318,7 @@</span><br><span>       - addr: ${epc.run_addr}</span><br><span>         port: 2153</span><br><span>     subnet:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.tun_addr}/16</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.tun_addr}/${epc.tun_netmask}</span><br><span>     dns:</span><br><span>       - 8.8.8.8</span><br><span>       - 8.8.4.4</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl</span><br><span>index 87066d6..757c0ec 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl</span><br><span>@@ -110,7 +110,9 @@</span><br><span>       - addr: ${epc.run_addr}</span><br><span>         port: 2154</span><br><span>     subnet:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.tun_addr}/16</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.tun_addr}/${epc.tun_netmask}</span><br><span style="color: hsl(120, 100%, 40%);">+        dnn: ${epc.apn_name}</span><br><span style="color: hsl(120, 100%, 40%);">+        dev: ${epc.tun_name}</span><br><span> </span><br><span> #</span><br><span> # smf:</span><br><span>diff --git a/utils/bin/osmo-gsm-tester_open5gs_tun_setup.sh b/utils/bin/osmo-gsm-tester_open5gs_tun_setup.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..c9cc28c</span><br><span>--- /dev/null</span><br><span>+++ b/utils/bin/osmo-gsm-tester_open5gs_tun_setup.sh</span><br><span>@@ -0,0 +1,17 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/bash -e</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ifname="$1"</span><br><span style="color: hsl(120, 100%, 40%);">+ifaddr="$2"</span><br><span style="color: hsl(120, 100%, 40%);">+ifmask="$3"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+echo "*** Configuring tun $ifname with addr $ifaddr/$ifmask"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if grep "$ifname" /proc/net/dev > /dev/null; then</span><br><span style="color: hsl(120, 100%, 40%);">+        ip tuntap del name "$ifname" mode tun</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip tuntap add name "$ifname" mode tun</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip addr add "$ifaddr/$ifmask" dev "$ifname"</span><br><span style="color: hsl(120, 100%, 40%);">+ip link set "$ifname" up</span><br><span style="color: hsl(120, 100%, 40%);">+echo "*** done configuring tun interface $ifname"</span><br><span>diff --git a/utils/sudoers.d/osmo-gsm-tester_open5gs_tun_setup b/utils/sudoers.d/osmo-gsm-tester_open5gs_tun_setup</span><br><span>new file mode 100644</span><br><span>index 0000000..9b8ed83</span><br><span>--- /dev/null</span><br><span>+++ b/utils/sudoers.d/osmo-gsm-tester_open5gs_tun_setup</span><br><span>@@ -0,0 +1 @@</span><br><span style="color: hsl(120, 100%, 40%);">+%osmo-gsm-tester ALL=(root) NOPASSWD: /usr/local/bin/osmo-gsm-tester_open5gs_tun_setup.sh</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/24220">change 24220</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/+/24220"/><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: I3b1857f09017cacee1c86f41dae1463c11b50490 </div>
<div style="display:none"> Gerrit-Change-Number: 24220 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>