This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/docker-playground/+/21263 ) Change subject: Introduce osmo-ran docker image set up ...................................................................... Introduce osmo-ran docker image set up See osmo-ran/README.md in this commit for a description. Related: SYS#4889 Change-Id: If5d22e9fa818310cbb4adc34bd7aceb4416ec969 --- M jenkins-common.sh M make/Makefile A osmo-ran/Dockerfile A osmo-ran/Makefile A osmo-ran/README.md A osmo-ran/Release.key A osmo-ran/jenkins.sh A osmo-ran/osmocom/osmo-bsc.cfg A osmo-ran/osmocom/osmo-bts-trx.cfg A osmo-ran/osmocom/osmo-mgw.cfg A osmo-ran/osmocom/osmo-pcu.cfg A osmo-ran/osmocom/osmo-trx-ipc.cfg A osmo-ran/osmocom/osmo-trx-uhd.cfg 13 files changed, 499 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/63/21263/1 diff --git a/jenkins-common.sh b/jenkins-common.sh index fdcfd40..0832f0d 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -108,6 +108,24 @@ docker network create --internal --subnet $SUB4 --ipv6 --subnet $SUB6 $NET_NAME } +network_bridge_create() { + NET=$1 + if docker network ls | grep -q $NET_NAME; then + echo removing stale network and containers... + network_clean + network_remove + fi + SUB4="172.18.$NET.0/24" + SUB6="fd02:db8:$NET::/64" + echo Creating network $NET_NAME + docker network create \ + --driver=bridge \ + --subnet $SUB4 \ + --ipv6 --subnet $SUB6 \ + -o "com.docker.network.bridge.host_binding_ipv4"="172.18.$NET.1" \ + $NET_NAME +} + network_remove() { echo Removing network $NET_NAME docker network remove $NET_NAME diff --git a/make/Makefile b/make/Makefile index 4f2263b..7bb0345 100644 --- a/make/Makefile +++ b/make/Makefile @@ -37,6 +37,8 @@ DISTRO?=debian-stretch OSMOCOM_REPO_MIRROR?=http://download.opensuse.org # Use if down: OSMOCOM_REPO_MIRROR=http://ftp.uni-stuttgart.de/opensuse +OSMOCOM_REPO_VERSION?=latest +# Use "nightly" to use the nightly repo RELEASE_SUPPORT := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))/.make-release-support IMAGE?=$(REGISTRY_HOST)/$(USER)/$(NAME) @@ -67,6 +69,7 @@ --build-arg UPSTREAM_DISTRO=$(UPSTREAM_DISTRO) \ --build-arg DISTRO=$(DISTRO) \ --build-arg OSMOCOM_REPO_MIRROR=$(OSMOCOM_REPO_MIRROR) \ + --build-arg OSMOCOM_REPO_VERSION=$(OSMOCOM_REPO_VERSION) \ --build-arg LIBOSMOCORE_BRANCH=$(LIBOSMOCORE_BRANCH) \ --build-arg OSMO_BB_BRANCH=$(OSMO_BB_BRANCH) \ --build-arg OSMO_BSC_BRANCH=$(OSMO_BSC_BRANCH) \ diff --git a/osmo-ran/Dockerfile b/osmo-ran/Dockerfile new file mode 100644 index 0000000..21e3619 --- /dev/null +++ b/osmo-ran/Dockerfile @@ -0,0 +1,128 @@ +ARG REGISTRY=docker.io +ARG UPSTREAM_DISTRO=centos:centos8 +FROM ${REGISTRY}/${UPSTREAM_DISTRO} +# Arguments used after FROM must be specified again +ARG DISTRO +ARG OSMOCOM_REPO_MIRROR +ARG OSMOCOM_REPO_VERSION=latest + +MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de> + +ARG OSMOCOM_REPO_DEBIAN="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/Debian_9.0/" +ARG OSMOCOM_REPO_CENTOS="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/CentOS_8_Stream/" + + +COPY Release.key /tmp/Release.key + +RUN case "$DISTRO" in \ + debian*) \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + gnupg && \ + apt-key add /tmp/Release.key && \ + rm /tmp/Release.key && \ + echo "deb " $OSMOCOM_REPO_DEBIAN " ./" > /etc/apt/sources.list.d/osmocom-$OSMOCOM_REPO_VERSION.list \ + ;; \ + centos*) \ + echo "metadata_expire=60" >> /etc/dnf/dnf.conf && cat /etc/dnf/dnf.conf && \ + dnf install -y dnf-utils wget && \ + yum config-manager --set-enabled PowerTools && \ + cd /etc/yum.repos.d/ && \ + wget ${OSMOCOM_REPO_CENTOS}/network:osmocom:$OSMOCOM_REPO_VERSION.repo \ + ;; \ + esac + +# we need to add this to invalidate the cache once the repository is updated. +# unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM +ADD $OSMOCOM_REPO_DEBIAN/Release /tmp/Release +ADD $OSMOCOM_REPO_CENTOS/repodata/repomd.xml /tmp/repomd.xml + +# set up systemd +# container=docker: systemd likes to know it is running inside a container +ENV container docker +RUN case "$DISTRO" in \ + debian*) \ + apt-get update && \ + apt-get install -y --no-install-recommends systemd; \ + (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do test "$i" = "systemd-tmpfiles-setup.service" || rm -f $i; done); \ + rm -f /lib/systemd/system/multi-user.target.wants/*; \ + rm -f /etc/systemd/system/*.wants/*; \ + rm -f /lib/systemd/system/local-fs.target.wants/*; \ + rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ + rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ + rm -f /lib/systemd/system/basic.target.wants/*; \ + rm -f /lib/systemd/system/anaconda.target.wants/*; \ + ;; \ + centos*) \ + yum -y install systemd; yum clean all; \ + (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do test "$i" = "systemd-tmpfiles-setup.service" || rm -f $i; done); \ + rm -f /lib/systemd/system/multi-user.target.wants/*; \ + rm -f /etc/systemd/system/*.wants/*; \ + rm -f /lib/systemd/system/local-fs.target.wants/*; \ + rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ + rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ + rm -f /lib/systemd/system/basic.target.wants/*; \ + rm -f /lib/systemd/system/anaconda.target.wants/*; \ + ;; \ + esac +VOLUME [ "/sys/fs/cgroup" ] + +RUN case "$DISTRO" in \ + debian*) \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + less \ + apt-utils \ + strace \ + tcpdump \ + telnet \ + vim \ + osmo-bsc \ + osmo-bsc-ipaccess-utils \ + osmo-bts-trx \ + osmo-mgw \ + osmo-pcu \ + osmo-trx-ipc \ + osmo-trx-uhd && \ + apt-get clean \ + ;; \ + centos*) \ + dnf install -y \ + less \ + strace \ + tcpdump \ + telnet \ + vim \ + osmo-bsc \ + osmo-bsc-ipaccess-utils \ + osmo-bts \ + osmo-mgw \ + osmo-pcu \ + osmo-trx-ipc \ + osmo-trx-uhd \ + ;; \ + esac + +RUN systemctl enable osmo-bsc osmo-bts-trx osmo-mgw osmo-pcu + +CMD [“/usr/sbin/init”] + +WORKDIR /tmp +RUN cp -r /etc/osmocom /etc/osmocom-default +VOLUME /data +VOLUME /etc/osmocom + +COPY osmocom/osmo-bsc.cfg /etc/osmocom/osmo-bsc.cfg + +CMD ["/lib/systemd/systemd", "--system", "--unit=multi-user.target"] + +#osmo-bsc: VTY CTRL +EXPOSE 4242 4249 +#osmo-bts: VTY CTRL +EXPOSE 4241 4238 +#osmo-mgw: VTY CTRL +EXPOSE 4243 4267 +#osmo-pcu: VTY CTRL +EXPOSE 4240 +#osmo-trx: VTY CTRL +#EXPOSE 4237 4236 diff --git a/osmo-ran/Makefile b/osmo-ran/Makefile new file mode 100644 index 0000000..80b1069 --- /dev/null +++ b/osmo-ran/Makefile @@ -0,0 +1,2 @@ +RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.200 -v bsc-vol:/data +include ../make/Makefile diff --git a/osmo-ran/README.md b/osmo-ran/README.md new file mode 100644 index 0000000..90886d8 --- /dev/null +++ b/osmo-ran/README.md @@ -0,0 +1,36 @@ +This directory provides an environment to set up and run an Osmocom RAN +(osmo-bts, osmo-pcu, osmo-bsc, osmo-mgw) managed by systemd, all run inside a +docker container. + +Easiest way to build + run the setup is to execute _jenkins.sh_ in this same +directory. + +This script will build the Dockerfile image, then set up a bridge network on +subnet `172.18.$SUBNET.0/24`, where the IP address `172.18.$SUBNET.200` is assigned to the +internal network interface inside the docker container (and which RAN processes +will be using), and `172.18.$SUBNET.1` is assigned to the bridge network interface +outside the docker container. All The VTY and CTRL ports are available on both +`172.18.$SUBNET.200` and also on `172.18.$SUBNET.1` (through docker port mapping). + +The script has the following parameters (environment variables): +- `SUBNET`: The IPv4 subnet to configure and use (`172.18.$SUBNET.0/24`) when + running the container (defaults to `25`) +- `SGSN_IP`: The IP address where the SGSN outside the docker container listens to (Gb interface) +- `STP_IP`: The IP address where the STP outside the docker container listens to (A interface) +- `TRX_IP`: The IP address where the OsmoTRX outside the docker container listens to (TRXC/TRXD interface) +- `IMAGE_SUFFIX`: Type of base image to use: Leave unset to build on top of + Debian (default), set to `centos8` to run on top of CentOS8 distribution +- `OSMOCOM_REPO_VERSION`: Osmocom OBS repository version to use: `nightly` or `latest` (default). + +The above IP addresses will be replaced by _jenkins.sh_ from tokens of the same name in the provided configuration files, available in _osmocom/_ directory, which will be then placer inside docker image's `/etc/osmocom/` directory, where the osmocom projects will read the configuration by default (see systemd services). + +Example: +Run Osmocom RAN on a Centos8 distro with osmocom's nightly repository on subnet 26: +``` +OSMOCOM_REPO_VERSION="nightly" IMAGE_SUFFIX="centos8" SUBNET=26 ./jenkins.sh +``` + +If several independent RANs are to be set up by the user, it's up to them to +configure iptables rules to forbid access from one docker container to another. +It should be doable pretty easily by rejecting connections between +`172.18.$subnetA.0/24` and `172.18.$subnetB.0/24`. diff --git a/osmo-ran/Release.key b/osmo-ran/Release.key new file mode 100644 index 0000000..a737316 --- /dev/null +++ b/osmo-ran/Release.key @@ -0,0 +1,20 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.5 (GNU/Linux) + +mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc +a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl +CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4 +5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee +S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y +CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy +b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCXm/4 +pgIbAwUJEEzwqgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3f/1AH +/A7WVSpfM4wV/DMqZPTsSjChB4JyDotxpV7qHZzBC5aaP2dINZyi9PayIwZWbvCY +VKvt+Fw8oCGC9F9mdh10Xe+ElHeVNSihzABPuu1RkRkb1nvkymScy0yxydodYOBi +K4WQ+BhpijXWmYvOekIwbS5Hi9BHpfgK4TinK0xsvh1bVLeQJ8YjrnNFIAR2CnBa +X7Y72Up/kKL08DdQzuS+mKrJtAQlGMtIsukWC2ajYQMkNwm8Gvhpn8za113dCkBW +XAFnlQqQobKwC7b19QgEtJI/YpGSrRc6WaZxPyAjscbWQlFEAB900sVj4BWT55ig +7O2uSdsCVhTuU7T0ztwsgvmIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v +d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4= +=/Tek +-----END PGP PUBLIC KEY BLOCK----- diff --git a/osmo-ran/jenkins.sh b/osmo-ran/jenkins.sh new file mode 100755 index 0000000..1021473 --- /dev/null +++ b/osmo-ran/jenkins.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +. ../jenkins-common.sh +IMAGE_SUFFIX="${IMAGE_SUFFIX:-centos8}" +docker_images_require \ + "osmo-ran-$IMAGE_SUFFIX" + +mkdir $VOL_BASE_DIR/ran +mkdir $VOL_BASE_DIR/ran/data +mkdir $VOL_BASE_DIR/ran/osmocom +cp osmocom/* $VOL_BASE_DIR/ran/osmocom/ + +SUBNET=${SUBNET:-25} +IPSUFFIX=200 +network_bridge_create $SUBNET + +DOCKER_IN_IP="172.18.$SUBNET.$IPSUFFIX" +SGSN_IP="${SGSN_IP:-192.168.30.1}" +STP_IP="${STP_IP:-192.168.30.1}" +TRX_IP="${TRX_IP:-192.168.30.100}" +sed -i "s/\$DOCKER_IN_IP/${DOCKER_IN_IP}/g" $VOL_BASE_DIR/ran/osmocom/* +sed -i "s/\$SGSN_IP/${SGSN_IP}/g" $VOL_BASE_DIR/ran/osmocom/* +sed -i "s/\$STP_IP/${STP_IP}/g" $VOL_BASE_DIR/ran/osmocom/* +sed -i "s/\$TRX_IP/${TRX_IP}/g" $VOL_BASE_DIR/ran/osmocom/* + +echo Starting container with RAN +docker run --rm \ + $(docker_network_params $SUBNET 200) \ + --privileged \ + --ulimit core=-1 \ + -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ + -v $VOL_BASE_DIR/ran/data:/data \ + -v $VOL_BASE_DIR/ran/osmocom:/etc/osmocom \ + -p 4242:4242 -p 4249:4249 \ + -p 4241:4241 -p 4238:4238 \ + -p 4243:4243 -p 4267:4267 \ + -p 4240:4240 -p 23010:23010 \ + --name ${BUILD_TAG}-ran \ + $DOCKER_ARGS \ + $REPO_USER/osmo-ran-$IMAGE_SUFFIX +#sleep 30 +docker container kill ${BUILD_TAG}-ran + +#network_remove +collect_logs diff --git a/osmo-ran/osmocom/osmo-bsc.cfg b/osmo-ran/osmocom/osmo-bsc.cfg new file mode 100644 index 0000000..af53647 --- /dev/null +++ b/osmo-ran/osmocom/osmo-bsc.cfg @@ -0,0 +1,123 @@ +line vty + no login + bind 0.0.0.0 +! +e1_input + e1_line 0 driver ipa +network + network country code 234 + mobile network code 70 + encryption a5 0 + neci 1 + paging any use tch 0 + handover 0 + handover algorithm 1 + handover1 window rxlev averaging 10 + handover1 window rxqual averaging 1 + handover1 window rxlev neighbor averaging 10 + handover1 power budget interval 6 + handover1 power budget hysteresis 3 + handover1 maximum distance 9999 + periodic location update 30 + bts 0 + type sysmobts + band DCS1800 + cell_identity 0 + location_area_code 5 + base_station_id_code 63 + ms max power 15 + cell reselection hysteresis 4 + rxlev access min 0 + radio-link-timeout 32 + channel allocator ascending + rach tx integer 9 + rach max transmission 7 + channel-description attach 1 + channel-description bs-pa-mfrms 5 + channel-description bs-ag-blks-res 1 + early-classmark-sending forbidden + ip.access unit_id 6969 0 + oml ip.access stream_id 255 line 0 + codec-support fr amr + gprs mode egprs + gprs routing area 0 + gprs network-control-order nc1 + gprs cell bvci 1800 + gprs nsei 1800 + gprs nsvc 0 nsvci 1800 + gprs nsvc 0 local udp port 23020 + gprs nsvc 0 remote udp port 23000 + gprs nsvc 0 remote ip $SGSN_IP + trx 0 + rf_locked 0 + arfcn 871 + nominal power 23 + ! to use full TRX power, set max_power_red 0 + max_power_red 4 + rsl e1 tei 0 + timeslot 0 + phys_chan_config CCCH+SDCCH4 + hopping enabled 0 + timeslot 1 + phys_chan_config TCH/F + hopping enabled 0 + timeslot 2 + phys_chan_config TCH/F + hopping enabled 0 + timeslot 3 + phys_chan_config TCH/F + hopping enabled 0 + timeslot 4 + phys_chan_config TCH/F + hopping enabled 0 + timeslot 5 + phys_chan_config PDCH + hopping enabled 0 + timeslot 6 + phys_chan_config PDCH + !phys_chan_config TCH/F + hopping enabled 0 + timeslot 7 + phys_chan_config PDCH + !phys_chan_config TCH/F + hopping enabled 0 +! +cs7 instance 0 + point-code 0.0.2 + asp asp0 2905 0 m3ua + local-ip $DOCKER_IN_IP + remote-ip $STP_IP + as as0 m3ua + asp asp0 + routing-key 30 0.0.2 + traffic-mode loadshare + sccp-address bsc_local + point-code 0.0.2 + routing-indicator PC + sccp-address msc_remote + point-code 0.23.1 + routing-indicator PC +! +msc 0 + no bsc-welcome-text + no bsc-msc-lost-text + no bsc-grace-text + type normal + allow-emergency allow + codec-list hr3 fr3 + !mgw remote-ip 192.168.30.1 + mgw remote-ip 127.0.0.1 + mgw remote-port 2427 + amr-config 12_2k forbidden + amr-config 10_2k forbidden + amr-config 7_95k forbidden + amr-config 7_40k forbidden + amr-config 6_70k forbidden + amr-config 5_90k allowed + amr-config 5_15k forbidden + amr-config 4_75k forbidden + msc-addr msc_remote + bsc-addr bsc_local +bsc + mid-call-timeout 0 + no missing-msc-text diff --git a/osmo-ran/osmocom/osmo-bts-trx.cfg b/osmo-ran/osmocom/osmo-bts-trx.cfg new file mode 100644 index 0000000..20aeae0 --- /dev/null +++ b/osmo-ran/osmocom/osmo-bts-trx.cfg @@ -0,0 +1,36 @@ +! +! OsmoBTS () configuration saved from vty +!! +! +log stderr + logging color 1 + logging timestamp 0 + logging level rsl notice + logging level oml notice + logging level rll notice + logging level rr notice + logging level meas error + logging level pag error + logging level l1c error + logging level l1p error + logging level dsp error + logging level abis error +! +line vty + no login + bind 0.0.0.0 +! +phy 0 + instance 0 + osmotrx ip local $DOCKER_IN_IP + osmotrx ip remote $TRX_IP +bts 0 + band 1800 + ipa unit-id 6969 0 + oml remote-ip 127.0.0.1 + gsmtap-sapi ccch + gsmtap-sapi pdtch + trx 0 + phy 0 instance 0 +cpu-sched + policy rr 1 diff --git a/osmo-ran/osmocom/osmo-mgw.cfg b/osmo-ran/osmocom/osmo-mgw.cfg new file mode 100644 index 0000000..421816f --- /dev/null +++ b/osmo-ran/osmocom/osmo-mgw.cfg @@ -0,0 +1,22 @@ +! +! MGCP configuration example +! +line vty + no login + bind 0.0.0.0 +! +mgcp + bind ip 127.0.0.1 + rtp port-range 4002 16000 + rtp bind-ip $DOCKER_IN_IP + rtp ip-probing + rtp ip-tos 184 + bind port 2427 + sdp audio payload number 98 + sdp audio payload name GSM + number endpoints 31 + loop 0 + force-realloc 1 + rtcp-omit + rtp-patch ssrc + rtp-patch timestamp diff --git a/osmo-ran/osmocom/osmo-pcu.cfg b/osmo-ran/osmocom/osmo-pcu.cfg new file mode 100644 index 0000000..2e31cbc --- /dev/null +++ b/osmo-ran/osmocom/osmo-pcu.cfg @@ -0,0 +1,11 @@ +! +line vty + no login + bind 0.0.0.0 +! +pcu + flow-control-interval 10 + cs 2 + alloc-algorithm dynamic + alpha 0 + gamma 0 diff --git a/osmo-ran/osmocom/osmo-trx-ipc.cfg b/osmo-ran/osmocom/osmo-trx-ipc.cfg new file mode 100644 index 0000000..3241950 --- /dev/null +++ b/osmo-ran/osmocom/osmo-trx-ipc.cfg @@ -0,0 +1,33 @@ +log stderr + logging filter all 1 + logging color 1 + logging print category 1 + logging timestamp 1 + logging print file basename + logging level set-all notice +! +line vty +no login +bind 0.0.0.0 +! +cpu-sched + policy rr 18 +trx + bind-ip 127.0.0.1 + remote-ip 127.0.0.1 + ! 28 dB offset below is valid only for the B2xx in 1800 MHz band, see + ! https://osmocom.org/issues/4468 for more details + rssi-offset 28.000000 + tx-sps 4 + rx-sps 4 + clock-ref external + egprs disable + ext-rach disable + dev-args ipc_msock=/tmp/ipc_sock0 + multi-arfcn disable + chan 0 + tx-path TX/RX + rx-path RX2 + chan 1 + tx-path TX/RX + rx-path RX2 diff --git a/osmo-ran/osmocom/osmo-trx-uhd.cfg b/osmo-ran/osmocom/osmo-trx-uhd.cfg new file mode 100644 index 0000000..234a2ee --- /dev/null +++ b/osmo-ran/osmocom/osmo-trx-uhd.cfg @@ -0,0 +1,22 @@ +log stderr + logging filter all 1 + logging color 1 + logging print category 1 + logging timestamp 1 + logging print file basename + logging level set-all notice +! +line vty +no login +bind 0.0.0.0 +! +cpu-sched + policy rr 18 +trx + bind-ip 127.0.0.1 + remote-ip 127.0.0.1 + egprs disable + tx-sps 4 + rx-sps 4 + clock-ref external + chan 0 -- To view, visit https://gerrit.osmocom.org/c/docker-playground/+/21263 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Change-Id: If5d22e9fa818310cbb4adc34bd7aceb4416ec969 Gerrit-Change-Number: 21263 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201120/f41a9df8/attachment.htm>