open5gs: Pre-configure tun device for UPF

open5gs requires the tun device to be pre-created and pre-configured
before using it. A ticket was opened in order to allow upfd itself
configuring it in [1]

[1] https://github.com/open5gs/open5gs/issues/899

Change-Id: I3b1857f09017cacee1c86f41dae1463c11b50490
diff --git a/src/osmo_gsm_tester/obj/upf_open5gs.py b/src/osmo_gsm_tester/obj/upf_open5gs.py
index 78a520f..344c177 100644
--- a/src/osmo_gsm_tester/obj/upf_open5gs.py
+++ b/src/osmo_gsm_tester/obj/upf_open5gs.py
@@ -34,6 +34,7 @@
     CFGFILE = 'open5gs-upfd.yaml'
     LOGFILE = 'open5gs-upfd.log'
     DIAMETERFILE = 'open5gs-freediameter.conf'
+    O5GS_TUN_SETUP_BIN = 'osmo-gsm-tester_open5gs_tun_setup.sh'
 
     def __init__(self, testenv, o5gs_epc):
         super().__init__(log.C_RUN, 'open5gs-upfd')
@@ -137,6 +138,9 @@
             f.write(r)
 
         if not self._run_node.is_local():
+            self.rem_host.run_remote_sync('tun-setup', ('sudo', Open5gsUPF.O5GS_TUN_SETUP_BIN,
+                                          self.o5gs_epc.tun_name(), self.o5gs_epc.tun_addr(),
+                                          self.o5gs_epc.tun_netmask()))
             self.rem_host.recreate_remote_dir(self.remote_inst)
             self.rem_host.scp('scp-inst-to-remote', str(self.inst), remote_prefix_dir)
             self.rem_host.recreate_remote_dir(remote_run_dir)