pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40405?usp=email )
(
6 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )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, 99 insertions(+), 8 deletions(-)
Approvals: osmith: Looks good to me, approved Jenkins Builder: Verified
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..718dee0 --- /dev/null +++ b/5gc/open5gs/testenv.sh @@ -0,0 +1,81 @@ +#!/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 5gc' 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) + del_tun_all + ;; + *) + 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