pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40405?usp=email )
Change subject: 5gc: Fix upfd failing to start outside podman
......................................................................
5gc: Fix upfd failing to start outside podman
tuns need to be recreated beforehand with sudo, as already done in
ttcn3-ggsn-tests-ogs, otherwise upfd would need root access to create
them.
Change-Id: I5d3e0c3b7391d312304190acf07b347320481275
---
M 5gc/open5gs/open5gs-upf.yaml
A 5gc/open5gs/testenv.sh
M 5gc/testenv.cfg
3 files changed, 98 insertions(+), 8 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/05/40405/1
diff --git a/5gc/open5gs/open5gs-upf.yaml b/5gc/open5gs/open5gs-upf.yaml
index 5b86b67..f73cbc3 100644
--- a/5gc/open5gs/open5gs-upf.yaml
+++ b/5gc/open5gs/open5gs-upf.yaml
@@ -18,10 +18,22 @@
server:
- address: 127.0.0.7
session:
- - subnet: 10.45.0.0/16
- gateway: 10.45.0.1
- - subnet: 2001:db8:cafe::/48
- gateway: 2001:db8:cafe::1
+ - subnet: 176.16.16.0/20
+ #gateway: 176.16.16.1
+ dnn: internet
+ dev: ogstun4
+ - subnet: 2001:780:44:2000:0:0:0:0/56
+ #gateway: 2001:780:44:2000:0:0:0:1/56
+ dnn: inet6
+ dev: ogstun6
+ - subnet: 176.16.32.0/20
+ #gateway: 176.16.32.1
+ dnn: inet46
+ dev: ogstun4
+ - subnet: 2001:780:44:2100:0:0:0:0/56
+ #gateway: 2001:780:44:2100:0:0:0:1/56
+ dnn: inet46
+ dev: ogstun46
metrics:
server:
- address: 127.0.0.7
diff --git a/5gc/open5gs/testenv.sh b/5gc/open5gs/testenv.sh
new file mode 100755
index 0000000..904f6b2
--- /dev/null
+++ b/5gc/open5gs/testenv.sh
@@ -0,0 +1,80 @@
+#!/bin/sh -ex
+
+check_usage() {
+ if [ -z "$TESTENV_CLEAN_REASON" ]; then
+ set +x
+ echo "Do not run this script manually."
+ echo "Run 'testenv.py run ggsn' instead."
+ exit 1
+ fi
+}
+
+setcap_open5gs_upfd() {
+ sudo setcap CAP_NET_RAW=+eip $(which open5gs-upfd)
+}
+
+add_tun() {
+ local name="$1"
+ if ! grep "$name" /proc/net/dev > /dev/null; then
+ sudo ip tuntap add name $name mode tun
+ fi
+}
+
+add_addr() {
+ local name="$1"
+ local addr="$2"
+
+ sudo ip addr add "$addr" dev "$name"
+}
+
+add_tun_all() {
+ add_tun "ogstun4"
+ add_tun "ogstun6"
+ add_tun "ogstun46"
+
+ add_addr "ogstun4" "176.16.16.1/20"
+ add_addr "ogstun6" "2001:780:44:2000:0:0:0:1/56"
+ add_addr "ogstun46" "176.16.32.1/20"
+ add_addr "ogstun46" "2001:780:44:2100:0:0:0:1/56"
+
+ sudo ip link set ogstun4 up
+ sudo ip link set ogstun6 up
+ sudo ip link set ogstun46 up
+}
+
+del_tun() {
+ local name="$1"
+
+ if ip link ls dev "$name" >/dev/null 2>&1; then
+ sudo ip link set "$name" down
+ sudo ip link del "$name"
+ fi
+}
+
+del_tun_all() {
+ del_tun "ogstun4"
+ del_tun "ogstun6"
+ del_tun "ogstun46"
+}
+
+check_usage
+
+# Add a bridge reachable through the GTP tunnel that can answer ICMP
+# pings (for e.g. TC_pdp4_act_deact_gtpu_access). The bridge is also used to
+# connect the SUT when it runs in QEMU.
+EXTRA_IPS="172.18.3.201 fd02:db8:3::201" add_remove_testenv0_bridge.sh
+
+case "$TESTENV_CLEAN_REASON" in
+ prepare)
+ setcap_open5gs_upfd
+ del_tun_all
+ add_tun_all
+ ;;
+ crashed|finished)
+ ;;
+ *)
+ set +x
+ echo "ERROR: unexpected TESTENV_CLEAN_REASON: $TESTENV_CLEAN_REASON"
+ exit 1
+ ;;
+esac
diff --git a/5gc/testenv.cfg b/5gc/testenv.cfg
index a20e9a4..89c4727 100644
--- a/5gc/testenv.cfg
+++ b/5gc/testenv.cfg
@@ -52,10 +52,8 @@
program=open5gs-upfd -c open5gs-upf.yaml
make=open5gs
package=open5gs-upf
-copy=open5gs/open5gs-upf.yaml
-# TODO: add tuns manually, see ggsn_tests/open5gs/testenv.sh
-#copy=open5gs/open5gs-upf.yaml open5gs/testenv.sh
-#clean=./testenv.sh
+copy=open5gs/open5gs-upf.yaml open5gs/testenv.sh
+clean=./testenv.sh
[ausf]
program=open5gs-ausfd -c open5gs-ausf.yaml
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40405?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I5d3e0c3b7391d312304190acf07b347320481275
Gerrit-Change-Number: 40405
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>