<p>osmith <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/docker-playground/+/23005">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  osmith: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ttcn3-ggsn-test: add kernel test<br><br>Make it possible to run ttcn3-ggsn-test against osmo-ggsn with the GTP<br>kernel module. This feature is enabled by environment variables<br>explained in ttcn3-ggsn-test/jenkins.sh, and can either use the<br>pre-built kernel from Debian, or build a kernel from source.<br><br>The kernel runs inside QEMU inside the usual osmo-ggsn-master docker<br>image.<br><br>Thanks to Pau for providing the kernel config and kernel-test scripts<br>that this patch is based on! I ended up modifying them quite a bit to<br>fit the docker use case, and to build the initrd (so we can use the<br>stock debian kernel).<br><br>Related: OS#3208<br>Change-Id: I54e752048eed2a170a1cf4e0fd410de255b9de5d<br>---<br>M .gitignore<br>M README.md<br>M jenkins-common.sh<br>M osmo-ggsn-latest/Dockerfile<br>M osmo-ggsn-master/Dockerfile<br>A scripts/kernel-test/initrd-build.sh<br>A scripts/kernel-test/initrd-init.sh<br>A scripts/kernel-test/kernel-build.sh<br>A scripts/kernel-test/prepare.sh<br>A scripts/kernel-test/qemu-ifdown.sh<br>A scripts/kernel-test/qemu-ifup.sh<br>A scripts/kernel-test/run-qemu.sh<br>A ttcn3-ggsn-test/fragment.config<br>A ttcn3-ggsn-test/initrd-ggsn.sh<br>M ttcn3-ggsn-test/jenkins.sh<br>A ttcn3-ggsn-test/osmo-ggsn-kernel-gtp.cfg<br>16 files changed, 773 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/.gitignore b/.gitignore</span><br><span>index a16a1a0..0aba0f6 100644</span><br><span>--- a/.gitignore</span><br><span>+++ b/.gitignore</span><br><span>@@ -1 +1,3 @@</span><br><span> .release</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/_cache</span><br><span>diff --git a/README.md b/README.md</span><br><span>index 925907e..27a589e 100644</span><br><span>--- a/README.md</span><br><span>+++ b/README.md</span><br><span>@@ -24,6 +24,45 @@</span><br><span> * `NO_DOCKER_IMAGE_BUILD`: when set to `1`, it won't try to update the</span><br><span>   containers (see "caching" below)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+## Kernel test</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoGGSN can be configured to either run completely in userspace, or to</span><br><span style="color: hsl(120, 100%, 40%);">+use the GTP-U kernel module. To test the kernel module, OsmoGGSN and</span><br><span style="color: hsl(120, 100%, 40%);">+the kernel module will run with a Linux kernel (either the pre-built</span><br><span style="color: hsl(120, 100%, 40%);">+one from Debian, or a custom built one) in QEMU inside docker. As of</span><br><span style="color: hsl(120, 100%, 40%);">+writing, `ttcn3-ggsn-test` is the only testsuite where it makes</span><br><span style="color: hsl(120, 100%, 40%);">+sense to test kernel modules. But the same environment variables could</span><br><span style="color: hsl(120, 100%, 40%);">+be used for other testsuites in the future.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Environment variables:</span><br><span style="color: hsl(120, 100%, 40%);">+* `KERNEL_TEST`: set to 1 to run the SUT in QEMU</span><br><span style="color: hsl(120, 100%, 40%);">+* `KERNEL_BUILD`: set to 1 to build the kernel instead of using the</span><br><span style="color: hsl(120, 100%, 40%);">+  pre-built one</span><br><span style="color: hsl(120, 100%, 40%);">+* `KERNEL_REMOTE_NAME`: git remote name (to add multiple git</span><br><span style="color: hsl(120, 100%, 40%);">+  repositories in the same local linux clone, default: net-next)</span><br><span style="color: hsl(120, 100%, 40%);">+* `KERNEL_URL`: git remote url (default: net-next.git on kernel.org)</span><br><span style="color: hsl(120, 100%, 40%);">+* `KERNEL_BRANCH` branch to checkout (default: master)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+### Creating kernel config fragments</span><br><span style="color: hsl(120, 100%, 40%);">+For the kernel tests, we are storing kernel config fragments in the git</span><br><span style="color: hsl(120, 100%, 40%);">+repository instead of full kernel configs. Generate them as follows:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+$ cd _cache/linux</span><br><span style="color: hsl(120, 100%, 40%);">+$ cp custom.config .config</span><br><span style="color: hsl(120, 100%, 40%);">+$ make olddefconfig</span><br><span style="color: hsl(120, 100%, 40%);">+$ cp .config custom-updated.config</span><br><span style="color: hsl(120, 100%, 40%);">+$ make defconfig  # config to which to diff</span><br><span style="color: hsl(120, 100%, 40%);">+$ scripts/diffconfig -m .config custom-updated.config > fragment.config</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Verify that it was done right:</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+$ make defconfig</span><br><span style="color: hsl(120, 100%, 40%);">+$ scripts/kconfig/merge_config.sh -m .config fragment.config</span><br><span style="color: hsl(120, 100%, 40%);">+$ make olddefconfig</span><br><span style="color: hsl(120, 100%, 40%);">+$ diff .config custom-updated.config  # should be the same</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> ## Building containers manually</span><br><span> Most folders in this repository contain a `Dockerfile`. Build a docker</span><br><span> container with the same name as the folder like this:</span><br><span>diff --git a/jenkins-common.sh b/jenkins-common.sh</span><br><span>index 2d596d6..6c54109 100644</span><br><span>--- a/jenkins-common.sh</span><br><span>+++ b/jenkins-common.sh</span><br><span>@@ -1,3 +1,6 @@</span><br><span style="color: hsl(120, 100%, 40%);">+CACHE_DIR="$(realpath ../_cache)"</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_TEST_DIR="$(realpath ../scripts/kernel-test)"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> docker_image_exists() {</span><br><span>       test -n "$(docker images -q "$REPO_USER/$1")"</span><br><span> }</span><br><span>@@ -150,9 +153,10 @@</span><br><span>        echo Fixing permissions</span><br><span>      docker run      --rm \</span><br><span>                       -v $VOL_BASE_DIR:/data \</span><br><span style="color: hsl(120, 100%, 40%);">+                      -v $CACHE_DIR:/cache \</span><br><span>                       --name ${BUILD_TAG}-cleaner \</span><br><span>                        $REPO_USER/debian-stretch-build \</span><br><span style="color: hsl(0, 100%, 40%);">-                       chmod -R a+rX /data/</span><br><span style="color: hsl(120, 100%, 40%);">+                  chmod -R a+rX /data/ /cache/</span><br><span> }</span><br><span> </span><br><span> collect_logs() {</span><br><span>@@ -190,6 +194,47 @@</span><br><span>     trap clean_up_common EXIT INT TERM 0</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+# Generate the initrd, and optionally build a kernel, for tests that involve</span><br><span style="color: hsl(120, 100%, 40%);">+# kernel modules. Boot the kernel once in QEMU inside docker to verify that it</span><br><span style="color: hsl(120, 100%, 40%);">+# works. See README.md for description of the KERNEL_* environment variables.</span><br><span style="color: hsl(120, 100%, 40%);">+# $1: kernel config base (e.g. defconfig, tinyconfig, allnoconfig)</span><br><span style="color: hsl(120, 100%, 40%);">+# $2: path to kernel config fragment</span><br><span style="color: hsl(120, 100%, 40%);">+# $3: path to project specific initrd build script, which adds the osmo</span><br><span style="color: hsl(120, 100%, 40%);">+#     program, kernel modules etc. to the initrd (gets sourced by</span><br><span style="color: hsl(120, 100%, 40%);">+#     scripts/kernel-test/initrd-build.sh)</span><br><span style="color: hsl(120, 100%, 40%);">+# $4: docker image name</span><br><span style="color: hsl(120, 100%, 40%);">+# $5-n: (optional) additional arguments to "docker run", like a volume</span><br><span style="color: hsl(120, 100%, 40%);">+#       containing a config file</span><br><span style="color: hsl(120, 100%, 40%);">+kernel_test_prepare() {</span><br><span style="color: hsl(120, 100%, 40%);">+    local kernel_config_base="$1"</span><br><span style="color: hsl(120, 100%, 40%);">+       local kernel_config_fragment="$2"</span><br><span style="color: hsl(120, 100%, 40%);">+   local initrd_project_script="$3"</span><br><span style="color: hsl(120, 100%, 40%);">+    local docker_image="$4"</span><br><span style="color: hsl(120, 100%, 40%);">+     shift 4</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     mkdir -p "$CACHE_DIR/kernel-test"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cp "$kernel_config_fragment" \</span><br><span style="color: hsl(120, 100%, 40%);">+              "$CACHE_DIR/kernel-test/fragment.config"</span><br><span style="color: hsl(120, 100%, 40%);">+    cp "$initrd_project_script" \</span><br><span style="color: hsl(120, 100%, 40%);">+               "$CACHE_DIR/kernel-test/initrd-project-script.sh"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ docker run \</span><br><span style="color: hsl(120, 100%, 40%);">+          --cap-add=NET_ADMIN \</span><br><span style="color: hsl(120, 100%, 40%);">+         --device /dev/kvm:/dev/kvm \</span><br><span style="color: hsl(120, 100%, 40%);">+          --device /dev/net/tun:/dev/net/tun \</span><br><span style="color: hsl(120, 100%, 40%);">+          -v "$CACHE_DIR:/cache" \</span><br><span style="color: hsl(120, 100%, 40%);">+            -v "$KERNEL_TEST_DIR:/kernel-test:ro" \</span><br><span style="color: hsl(120, 100%, 40%);">+             -e "KERNEL_BRANCH=$KERNEL_BRANCH" \</span><br><span style="color: hsl(120, 100%, 40%);">+         -e "KERNEL_BUILD=$KERNEL_BUILD" \</span><br><span style="color: hsl(120, 100%, 40%);">+           -e "KERNEL_CONFIG_BASE=$kernel_config_base" \</span><br><span style="color: hsl(120, 100%, 40%);">+               -e "KERNEL_REMOTE_NAME=$KERNEL_REMOTE_NAME" \</span><br><span style="color: hsl(120, 100%, 40%);">+               -e "KERNEL_URL=$KERNEL_URL" \</span><br><span style="color: hsl(120, 100%, 40%);">+               "$@" \</span><br><span style="color: hsl(120, 100%, 40%);">+              "$docker_image" \</span><br><span style="color: hsl(120, 100%, 40%);">+           "/kernel-test/prepare.sh"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> set -x</span><br><span> </span><br><span> # non-jenkins execution: assume local user name</span><br><span>diff --git a/osmo-ggsn-latest/Dockerfile b/osmo-ggsn-latest/Dockerfile</span><br><span>index d84dd4e..90b12b9 100644</span><br><span>--- a/osmo-ggsn-latest/Dockerfile</span><br><span>+++ b/osmo-ggsn-latest/Dockerfile</span><br><span>@@ -19,10 +19,20 @@</span><br><span>     echo "deb " $OSMOCOM_REPO " ./" > /etc/apt/sources.list.d/osmocom-latest.list</span><br><span> </span><br><span> ADD $OSMOCOM_REPO/Release /tmp/Release</span><br><span style="color: hsl(0, 100%, 40%);">-RUN   apt-get update && \</span><br><span style="color: hsl(120, 100%, 40%);">+# Disable update-initramfs to save time during apt-get install</span><br><span style="color: hsl(120, 100%, 40%);">+RUN        ln -s /bin/true /usr/local/bin/update-initramfs && \</span><br><span style="color: hsl(120, 100%, 40%);">+  apt-get update && \</span><br><span>  apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(0, 100%, 40%);">-            telnet \</span><br><span style="color: hsl(0, 100%, 40%);">-                osmo-ggsn && \</span><br><span style="color: hsl(120, 100%, 40%);">+                bc \</span><br><span style="color: hsl(120, 100%, 40%);">+          bridge-utils \</span><br><span style="color: hsl(120, 100%, 40%);">+                busybox-static \</span><br><span style="color: hsl(120, 100%, 40%);">+              ca-certificates \</span><br><span style="color: hsl(120, 100%, 40%);">+             libelf-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+          linux-image-amd64 \</span><br><span style="color: hsl(120, 100%, 40%);">+           osmo-ggsn \</span><br><span style="color: hsl(120, 100%, 40%);">+           pax-utils \</span><br><span style="color: hsl(120, 100%, 40%);">+           qemu-system-x86 \</span><br><span style="color: hsl(120, 100%, 40%);">+             telnet && \</span><br><span>  apt-get clean</span><br><span> </span><br><span> WORKDIR    /tmp</span><br><span>diff --git a/osmo-ggsn-master/Dockerfile b/osmo-ggsn-master/Dockerfile</span><br><span>index c52939d..72dcafe 100644</span><br><span>--- a/osmo-ggsn-master/Dockerfile</span><br><span>+++ b/osmo-ggsn-master/Dockerfile</span><br><span>@@ -24,13 +24,23 @@</span><br><span> # unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM</span><br><span> ADD        $OSMOCOM_REPO/Release /tmp/Release</span><br><span> ADD       $OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/nightly/CentOS_8/repodata/repomd.xml /tmp/repomd.xml</span><br><span style="color: hsl(120, 100%, 40%);">+# Disable update-initramfs to save time during apt-get install</span><br><span> RUN case "$DISTRO" in \</span><br><span>        debian*) \</span><br><span style="color: hsl(120, 100%, 40%);">+            ln -s /bin/true /usr/local/bin/update-initramfs && \</span><br><span>                 apt-get update && \</span><br><span>          apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(0, 100%, 40%);">-                    telnet \</span><br><span style="color: hsl(120, 100%, 40%);">+                      bc \</span><br><span style="color: hsl(120, 100%, 40%);">+                  bridge-utils \</span><br><span style="color: hsl(120, 100%, 40%);">+                        busybox-static \</span><br><span style="color: hsl(120, 100%, 40%);">+                      ca-certificates \</span><br><span style="color: hsl(120, 100%, 40%);">+                     libelf-dev \</span><br><span>                         libgtpnl-dev \</span><br><span style="color: hsl(0, 100%, 40%);">-                  libosmocore-dev && \</span><br><span style="color: hsl(120, 100%, 40%);">+                  libosmocore-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+                     linux-image-amd64 \</span><br><span style="color: hsl(120, 100%, 40%);">+                   pax-utils \</span><br><span style="color: hsl(120, 100%, 40%);">+                   qemu-system-x86 \</span><br><span style="color: hsl(120, 100%, 40%);">+                     telnet && \</span><br><span>          apt-get clean \</span><br><span>              ;; \</span><br><span>         centos*) \</span><br><span>diff --git a/scripts/kernel-test/initrd-build.sh b/scripts/kernel-test/initrd-build.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..cce4de8</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/initrd-build.sh</span><br><span>@@ -0,0 +1,114 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -ex</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add one or more files to the initramfs, with parent directories</span><br><span style="color: hsl(120, 100%, 40%);">+# $@: path to files</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_file() {</span><br><span style="color: hsl(120, 100%, 40%);">+     cp -a --parents "$@" /tmp/initrd</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add kernel module files with dependencies</span><br><span style="color: hsl(120, 100%, 40%);">+# $@: kernel module names</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_mod() {</span><br><span style="color: hsl(120, 100%, 40%);">+   if [ "$KERNEL_BUILD" = 1 ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+            # Custom kernel will be built, don't add any modules from the</span><br><span style="color: hsl(120, 100%, 40%);">+             # distribution's kernel to the initramfs.</span><br><span style="color: hsl(120, 100%, 40%);">+         return</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%);">+  local kernel="$(basename /lib/modules/*)"</span><br><span style="color: hsl(120, 100%, 40%);">+   local files="$(modprobe \</span><br><span style="color: hsl(120, 100%, 40%);">+                -a \</span><br><span style="color: hsl(120, 100%, 40%);">+          --dry-run \</span><br><span style="color: hsl(120, 100%, 40%);">+           --show-depends \</span><br><span style="color: hsl(120, 100%, 40%);">+              --set-version="$kernel" \</span><br><span style="color: hsl(120, 100%, 40%);">+           "$@" \</span><br><span style="color: hsl(120, 100%, 40%);">+              | sort -u \</span><br><span style="color: hsl(120, 100%, 40%);">+           | cut -d ' ' -f 2)"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    initrd_add_file $files</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      # Save the list of modules, so initrd-init.sh can load all of them</span><br><span style="color: hsl(120, 100%, 40%);">+    for i in $@; do</span><br><span style="color: hsl(120, 100%, 40%);">+               echo "$i" >> /tmp/initrd/modules</span><br><span style="color: hsl(120, 100%, 40%);">+      done</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add binaries with depending libraries</span><br><span style="color: hsl(120, 100%, 40%);">+# $@: paths to binaries</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_bin() {</span><br><span style="color: hsl(120, 100%, 40%);">+       local bin</span><br><span style="color: hsl(120, 100%, 40%);">+     local bin_path</span><br><span style="color: hsl(120, 100%, 40%);">+        local file</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  for bin in "$@"; do</span><br><span style="color: hsl(120, 100%, 40%);">+         local bin_path="$(which "$bin")"</span><br><span style="color: hsl(120, 100%, 40%);">+          if [ -z "$bin_path" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+                 echo "ERROR: file not found: $bin"</span><br><span style="color: hsl(120, 100%, 40%);">+                  exit 1</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%);">+          lddtree_out="$(lddtree -l "$bin_path")"</span><br><span style="color: hsl(120, 100%, 40%);">+           if [ -z "$lddtree_out" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+                      echo "ERROR: lddtree failed on '$bin_path'"</span><br><span style="color: hsl(120, 100%, 40%);">+                 exit 1</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%);">+          for file in $lddtree_out; do</span><br><span style="color: hsl(120, 100%, 40%);">+                  initrd_add_file "$file"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                   # Copy resolved symlink</span><br><span style="color: hsl(120, 100%, 40%);">+                       if [ -L "$file" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+                             initrd_add_file "$(realpath "$file")"</span><br><span style="color: hsl(120, 100%, 40%);">+                     fi</span><br><span style="color: hsl(120, 100%, 40%);">+            done</span><br><span style="color: hsl(120, 100%, 40%);">+  done</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add command to run inside the initramfs</span><br><span style="color: hsl(120, 100%, 40%);">+# $@: commands</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_cmd() {</span><br><span style="color: hsl(120, 100%, 40%);">+      local i</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if ! [ -e /tmp/initrd/cmd.sh ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+          echo "#!/bin/sh -ex" > /tmp/initrd/cmd.sh</span><br><span style="color: hsl(120, 100%, 40%);">+                chmod +x /tmp/initrd/cmd.sh</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%);">+  for i in "$@"; do</span><br><span style="color: hsl(120, 100%, 40%);">+           echo "$i" >> /tmp/initrd/cmd.sh</span><br><span style="color: hsl(120, 100%, 40%);">+       done</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+mkdir -p /tmp/initrd</span><br><span style="color: hsl(120, 100%, 40%);">+cd /tmp/initrd</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+mkdir -p \</span><br><span style="color: hsl(120, 100%, 40%);">+ dev/net \</span><br><span style="color: hsl(120, 100%, 40%);">+     proc \</span><br><span style="color: hsl(120, 100%, 40%);">+        sbin \</span><br><span style="color: hsl(120, 100%, 40%);">+        sys \</span><br><span style="color: hsl(120, 100%, 40%);">+ tmp \</span><br><span style="color: hsl(120, 100%, 40%);">+ usr/bin \</span><br><span style="color: hsl(120, 100%, 40%);">+     usr/sbin</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_bin \</span><br><span style="color: hsl(120, 100%, 40%);">+  busybox</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_mod \</span><br><span style="color: hsl(120, 100%, 40%);">+   virtio_net \</span><br><span style="color: hsl(120, 100%, 40%);">+  virtio_pci</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_file \</span><br><span style="color: hsl(120, 100%, 40%);">+       /lib/modules/*/modules.dep</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Required for osmo-ggsn</span><br><span style="color: hsl(120, 100%, 40%);">+mknod dev/net/tun c 10 200</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+cp /kernel-test/initrd-init.sh init</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add project specific files (e.g. osmo-ggsn and gtp kernel module)</span><br><span style="color: hsl(120, 100%, 40%);">+. /cache/kernel-test/initrd-project-script.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+find . -print0 \</span><br><span style="color: hsl(120, 100%, 40%);">+   | cpio --quiet -o -0 -H newc \</span><br><span style="color: hsl(120, 100%, 40%);">+        | gzip -1 > /cache/kernel-test/initrd</span><br><span>diff --git a/scripts/kernel-test/initrd-init.sh b/scripts/kernel-test/initrd-init.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..1c198b8</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/initrd-init.sh</span><br><span>@@ -0,0 +1,38 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/busybox sh</span><br><span style="color: hsl(120, 100%, 40%);">+echo "Running initrd-init.sh"</span><br><span style="color: hsl(120, 100%, 40%);">+set -ex</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+export HOME=/root</span><br><span style="color: hsl(120, 100%, 40%);">+export LD_LIBRARY_PATH=/usr/local/lib</span><br><span style="color: hsl(120, 100%, 40%);">+export PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/local/sbin:/usr/sbin</span><br><span style="color: hsl(120, 100%, 40%);">+export TERM=screen</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/bin/busybox --install -s</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hostname qemu</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+mount -t proc proc /proc</span><br><span style="color: hsl(120, 100%, 40%);">+mount -t sysfs sys /sys</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Load modules from initrd-build.sh:initrd_add_mod()</span><br><span style="color: hsl(120, 100%, 40%);">+if [ -e /modules ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+     cat /modules | xargs -t -n1 modprobe</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 link set lo up</span><br><span style="color: hsl(120, 100%, 40%);">+ip link set eth0 up</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if grep -q SMOKE_TEST /proc/cmdline; then</span><br><span style="color: hsl(120, 100%, 40%);">+       # Called from scripts/kernel-test/prepare.sh:kernel_smoke_test() to</span><br><span style="color: hsl(120, 100%, 40%);">+   # verify that the kernel + initramfs boot up properly. Output this</span><br><span style="color: hsl(120, 100%, 40%);">+    # string instead of running the actual commands.</span><br><span style="color: hsl(120, 100%, 40%);">+      echo "SMOKE_TEST_SUCCESS"</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+     # Run project specific commands, added with initrd_add_cmd (see</span><br><span style="color: hsl(120, 100%, 40%);">+       # inird-ggsn.sh for example). Use '|| true' to avoid "attempting to</span><br><span style="color: hsl(120, 100%, 40%);">+      # kill init" kernel panic on failure.</span><br><span style="color: hsl(120, 100%, 40%);">+    /cmd.sh || true</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%);">+# Avoid kernel panic when init exits</span><br><span style="color: hsl(120, 100%, 40%);">+poweroff -f</span><br><span>diff --git a/scripts/kernel-test/kernel-build.sh b/scripts/kernel-test/kernel-build.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..d261051</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/kernel-build.sh</span><br><span>@@ -0,0 +1,49 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -ex</span><br><span style="color: hsl(120, 100%, 40%);">+# Environment variables are described in README.md</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_REMOTE_NAME="${KERNEL_REMOTE_NAME:-net-next}"</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_URL="${KERNEL_URL:-https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git}"</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_BRANCH="${KERNEL_BRANCH:-master}"</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_DIR=/cache/linux</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add the kernel repository as git remote, fetch it, checkout the given branch</span><br><span style="color: hsl(120, 100%, 40%);">+prepare_git_repo() {</span><br><span style="color: hsl(120, 100%, 40%);">+       if ! [ -d "$KERNEL_DIR" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+             mkdir -p "$KERNEL_DIR"</span><br><span style="color: hsl(120, 100%, 40%);">+              git -C "$KERNEL_DIR" init</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%);">+  cd "$KERNEL_DIR"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if ! git remote | grep -q "^$KERNEL_REMOTE_NAME$"; then</span><br><span style="color: hsl(120, 100%, 40%);">+             git remote add "$KERNEL_REMOTE_NAME" "$KERNEL_URL"</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%);">+  git fetch "$KERNEL_REMOTE_NAME"</span><br><span style="color: hsl(120, 100%, 40%);">+     git checkout "$KERNEL_REMOTE_NAME/$KERNEL_BRANCH"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+update_kernel_config() {</span><br><span style="color: hsl(120, 100%, 40%);">+    local previous="/cache/kernel-test/previous.config"</span><br><span style="color: hsl(120, 100%, 40%);">+ local fragment="/cache/kernel-test/fragment.config"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       cd "$KERNEL_DIR"</span><br><span style="color: hsl(120, 100%, 40%);">+    make "$KERNEL_CONFIG_BASE"</span><br><span style="color: hsl(120, 100%, 40%);">+  scripts/kconfig/merge_config.sh -m .config "$fragment"</span><br><span style="color: hsl(120, 100%, 40%);">+      make olddefconfig</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if [ -e "$previous" ] && ! diff -q "$previous" .config; then</span><br><span style="color: hsl(120, 100%, 40%);">+              # Remove everything built with previous config</span><br><span style="color: hsl(120, 100%, 40%);">+                echo "Kernel config changed, running 'make clean'"</span><br><span style="color: hsl(120, 100%, 40%);">+          make clean</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%);">+  cp .config "$previous"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+prepare_git_repo</span><br><span style="color: hsl(120, 100%, 40%);">+update_kernel_config</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+make "-j$(nproc)"</span><br><span style="color: hsl(120, 100%, 40%);">+cp arch/x86/boot/bzImage /cache/kernel-test/linux</span><br><span>diff --git a/scripts/kernel-test/prepare.sh b/scripts/kernel-test/prepare.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..0fc9675</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/prepare.sh</span><br><span>@@ -0,0 +1,23 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -ex</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_BUILD="${KERNEL_BUILD:-0}"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Test if the kernel boots up, and initd code runs through without error</span><br><span style="color: hsl(120, 100%, 40%);">+kernel_smoke_test() {</span><br><span style="color: hsl(120, 100%, 40%);">+       local log=/cache/kernel-test/smoke_test.log</span><br><span style="color: hsl(120, 100%, 40%);">+   /kernel-test/run-qemu.sh SMOKE_TEST > "$log" 2>&1 || true</span><br><span style="color: hsl(120, 100%, 40%);">+ if ! grep -q SMOKE_TEST_SUCCESS "$log"; then</span><br><span style="color: hsl(120, 100%, 40%);">+                cat "$log"</span><br><span style="color: hsl(120, 100%, 40%);">+          echo "ERROR: failed to boot the kernel and initrd in QEMU!"</span><br><span style="color: hsl(120, 100%, 40%);">+         exit 1</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/kernel-test/initrd-build.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "$KERNEL_BUILD" = 1 ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+   /kernel-test/kernel-build.sh</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+    cp /boot/vmlinuz-* /cache/kernel-test/linux</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%);">+kernel_smoke_test</span><br><span>diff --git a/scripts/kernel-test/qemu-ifdown.sh b/scripts/kernel-test/qemu-ifdown.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..f74f445</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/qemu-ifdown.sh</span><br><span>@@ -0,0 +1,9 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -e</span><br><span style="color: hsl(120, 100%, 40%);">+br=br-test</span><br><span style="color: hsl(120, 100%, 40%);">+qemu_if=$1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+echo "[host] qemu-ifdown: $br and $qemu_if"</span><br><span style="color: hsl(120, 100%, 40%);">+set +x</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip link set "$br" down</span><br><span style="color: hsl(120, 100%, 40%);">+brctl delbr $br</span><br><span>diff --git a/scripts/kernel-test/qemu-ifup.sh b/scripts/kernel-test/qemu-ifup.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..809cd4e</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/qemu-ifup.sh</span><br><span>@@ -0,0 +1,18 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -e</span><br><span style="color: hsl(120, 100%, 40%);">+br=br-test</span><br><span style="color: hsl(120, 100%, 40%);">+docker_if=eth0</span><br><span style="color: hsl(120, 100%, 40%);">+qemu_if=$1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+echo "[host] qemu-ifup: $br, $qemu_if, $docker_if"</span><br><span style="color: hsl(120, 100%, 40%);">+set +x</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip link set "$qemu_if" up</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+brctl addbr "$br"</span><br><span style="color: hsl(120, 100%, 40%);">+brctl addif "$br" "$qemu_if"</span><br><span style="color: hsl(120, 100%, 40%);">+brctl addif "$br" "$docker_if"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip link set "$br" up</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip a</span><br><span style="color: hsl(120, 100%, 40%);">+ip route</span><br><span>diff --git a/scripts/kernel-test/run-qemu.sh b/scripts/kernel-test/run-qemu.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..0a1824f</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/kernel-test/run-qemu.sh</span><br><span>@@ -0,0 +1,30 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -ex</span><br><span style="color: hsl(120, 100%, 40%);">+# Arguments are appended to the kernel cmdline</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+random_mac() {</span><br><span style="color: hsl(120, 100%, 40%);">+        printf "52:54:"</span><br><span style="color: hsl(120, 100%, 40%);">+     date "+%c %N" | sha1sum | sed 's/\(.\{2\}\)/\1:/g' | cut -d: -f 1-4</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_CMDLINE="</span><br><span style="color: hsl(120, 100%, 40%);">+     root=/dev/ram0</span><br><span style="color: hsl(120, 100%, 40%);">+        console=ttyS0</span><br><span style="color: hsl(120, 100%, 40%);">+ panic=-1</span><br><span style="color: hsl(120, 100%, 40%);">+      $@</span><br><span style="color: hsl(120, 100%, 40%);">+"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+qemu-system-x86_64 \</span><br><span style="color: hsl(120, 100%, 40%);">+    -machine pc,accel=kvm \</span><br><span style="color: hsl(120, 100%, 40%);">+       -smp 1 \</span><br><span style="color: hsl(120, 100%, 40%);">+      -m 512M \</span><br><span style="color: hsl(120, 100%, 40%);">+     -nodefconfig -no-user-config -nodefaults -display none \</span><br><span style="color: hsl(120, 100%, 40%);">+      -gdb unix:/cache/kernel-test/gdb.pipe,server,nowait \</span><br><span style="color: hsl(120, 100%, 40%);">+ -no-reboot \</span><br><span style="color: hsl(120, 100%, 40%);">+  -kernel /cache/kernel-test/linux \</span><br><span style="color: hsl(120, 100%, 40%);">+    -initrd /cache/kernel-test/initrd \</span><br><span style="color: hsl(120, 100%, 40%);">+   -append "${KERNEL_CMDLINE}" \</span><br><span style="color: hsl(120, 100%, 40%);">+       -serial stdio \</span><br><span style="color: hsl(120, 100%, 40%);">+       -chardev socket,id=charserial1,path=/cache/kernel-test/gdb-serial.pipe,server,nowait \</span><br><span style="color: hsl(120, 100%, 40%);">+        -device isa-serial,chardev=charserial1,id=serial1 \</span><br><span style="color: hsl(120, 100%, 40%);">+   -netdev tap,id=nettest,script=/kernel-test/qemu-ifup.sh,downscript=/kernel-test/qemu-ifdown.sh \</span><br><span style="color: hsl(120, 100%, 40%);">+      -device virtio-net-pci,netdev=nettest,mac="$(random_mac)"</span><br><span>diff --git a/ttcn3-ggsn-test/fragment.config b/ttcn3-ggsn-test/fragment.config</span><br><span>new file mode 100644</span><br><span>index 0000000..8a72dc2</span><br><span>--- /dev/null</span><br><span>+++ b/ttcn3-ggsn-test/fragment.config</span><br><span>@@ -0,0 +1,268 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_ACPI_BGRT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_CRYPTO_DES=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_CRYPTO_SHA1=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EFI_STUB is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_FAILOVER=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_FDDI=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_GTP=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_HAMRADIO=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_HYPERVISOR_GUEST=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_INPUT_MOUSEDEV=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_IP_NF_NAT=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_IP_NF_TARGET_MASQUERADE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_IP_SET=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_LEGACY_VSYSCALL_EMULATE=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_LEGACY_VSYSCALL_XONLY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_LIBCRC32C=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_MICROCODE_OLD_INTERFACE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_ADVANCED=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_NETLINK_GLUE_CT=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_MARK=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_NAT=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_TARGET_LOG=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NET_9P=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NET_FAILOVER=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_LOG_COMMON=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_LOG_IPV4=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_LOG_IPV6=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_OVERLAY_FS=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_PAGE_REPORTING=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_PARTITION_ADVANCED=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_PCIEAER=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_R8169 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_RANDOMIZE_BASE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_RAS=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_RCU_TRACE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_REALTEK_PHY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_HDA_PREALLOC_SIZE=64</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_OSSEMUL=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_STRICT_DEVMEM is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_UEVENT_HELPER=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_USB is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_MMIO=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_PCI=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_9P_FS=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_9P_FS_POSIX_ACL=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_9P_FS_SECURITY=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_ACORN_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_ACPI_EXTLOG is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_ACRN_GUEST is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_AIX_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_AMIGA_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_ARCH_CPUIDLE_HALTPOLL=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_ATARI_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_AX25 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_BALLOON_COMPACTION=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_BLK_MQ_VIRTIO=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_BSD_DISKLABEL=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_CMDLINE_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_CRYPTO_DEV_VIRTIO=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_CRYPTO_ENGINE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_CRYPTO_LIB_DES=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_DEFXX is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_DRM_VIRTIO_GPU is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_EDAC=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_AMD64 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_DEBUG is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_EDAC_DECODE_MCE=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_E752X is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I10NM is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I3000 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I3200 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I5000 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I5100 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I5400 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I7300 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I7CORE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_I82975X is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_IE31200 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_IGEN6 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_EDAC_LEGACY_SYSFS=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_PND2 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_SBRIDGE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_SKX is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_EDAC_X38 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_HALTPOLL_CPUIDLE=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_HW_RANDOM_VIRTIO is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_HYPERV is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_AH is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_EUI64 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_FRAG is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_HL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_MH is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_OPTS is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_RPFILTER is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_RT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_MATCH_SRH is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_IP6_NF_NAT=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_SECURITY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_TARGET_HL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_IP6_NF_TARGET_MASQUERADE=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_TARGET_NPT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP6_NF_TARGET_SYNPROXY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_ARPTABLES is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_MATCH_AH is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_MATCH_ECN is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_MATCH_RPFILTER is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_MATCH_TTL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_SECURITY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_TARGET_ECN is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_TARGET_NETMAP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_TARGET_REDIRECT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_TARGET_SYNPROXY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_NF_TARGET_TTL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_BITMAP_IP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_BITMAP_IPMAC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_BITMAP_PORT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_IP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_IPMAC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_IPMARK is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_IPPORT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_IPPORTIP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_IPPORTNET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_MAC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_NET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_NETIFACE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_NETNET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_NETPORT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_HASH_NETPORTNET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_IP_SET_LIST_SET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_IP_SET_MAX=256</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_JAILHOUSE_GUEST is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_KARMA_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_KVM_GUEST=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_LDM_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_MAC_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_MEMORY_BALLOON=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_MINIX_SUBPARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_MMU_GATHER_RCU_TABLE_FREE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_MMU_GATHER_TABLE_FREE=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_MOUSE_PS2_VMMOUSE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_NETLINK_ACCT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_NETLINK_OSF is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_NETLINK_QUEUE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_CONNMARK=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_BPF is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_CPU is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_ECN is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_ESP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_HL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_MAC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_MATCH_MARK=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_OSF is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_REALM is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_STRING is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_TIME is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_MATCH_U32 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_SET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_HL is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_HMARK is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_LED is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_MARK is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_TEE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NET_9P_DEBUG is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NET_9P_VIRTIO=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NET_ACT_CONNMARK is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NET_ACT_CTINFO is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NET_EMATCH_IPSET is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NET_UDP_TUNNEL=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_AMANDA is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_EVENTS is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_H323 is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_CONNTRACK_MARK=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_PPTP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_SANE is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_SNMP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_TFTP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_TIMEOUT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_TIMESTAMP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_NF_CONNTRACK_ZONES is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_CT_PROTO_DCCP=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_CT_PROTO_SCTP=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_NF_CT_PROTO_UDPLITE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_OSF_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_OVERLAY_FS_INDEX is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_OVERLAY_FS_METACOPY is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_OVERLAY_FS_REDIRECT_DIR=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_OVERLAY_FS_XINO_AUTO is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_PARAVIRT=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_PARAVIRT_CLOCK=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PARAVIRT_DEBUG is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PARAVIRT_SPINLOCKS is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PCIEAER_INJECT is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PCIE_DPC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PCIE_ECRC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_PTP_1588_CLOCK_KVM=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PTP_1588_CLOCK_VMW is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_PVH is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SGI_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_SKFP is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_MIXER_OSS=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_PCM_OSS=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_PCM_OSS_PLUGINS=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_SEQUENCER_OSS=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SND_SEQ_MIDI_EVENT=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SOLARIS_X86_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SOUND_OSS_CORE=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SOUND_OSS_CORE_PRECLAIM=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_SUN_PARTITION=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_SYSV68_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_ULTRIX_PARTITION is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_UNIXWARE_DISKLABEL=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_BALLOON=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_BLK=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_INPUT=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_NET=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_VIRTIO_PCI_LEGACY=y</span><br><span style="color: hsl(120, 100%, 40%);">+CONFIG_X86_HV_CALLBACK_VECTOR=y</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_X86_X2APIC is not set</span><br><span style="color: hsl(120, 100%, 40%);">+# CONFIG_XEN is not set</span><br><span>diff --git a/ttcn3-ggsn-test/initrd-ggsn.sh b/ttcn3-ggsn-test/initrd-ggsn.sh</span><br><span>new file mode 100644</span><br><span>index 0000000..831dfff</span><br><span>--- /dev/null</span><br><span>+++ b/ttcn3-ggsn-test/initrd-ggsn.sh</span><br><span>@@ -0,0 +1,17 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh</span><br><span style="color: hsl(120, 100%, 40%);">+# Sourced by scripts/kernel-test/initrd-build.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_mod \</span><br><span style="color: hsl(120, 100%, 40%);">+       gtp \</span><br><span style="color: hsl(120, 100%, 40%);">+ tun</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_bin \</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo-ggsn</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_file \</span><br><span style="color: hsl(120, 100%, 40%);">+        /data/osmo-ggsn.cfg</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+initrd_add_cmd \</span><br><span style="color: hsl(120, 100%, 40%);">+       "ip addr add 172.18.3.201/24 brd 172.18.3.255 dev eth0" \</span><br><span style="color: hsl(120, 100%, 40%);">+   "ip route add default via 172.18.3.1 dev eth0" \</span><br><span style="color: hsl(120, 100%, 40%);">+    "osmo-ggsn -c /data/osmo-ggsn.cfg"</span><br><span>diff --git a/ttcn3-ggsn-test/jenkins.sh b/ttcn3-ggsn-test/jenkins.sh</span><br><span>index 95cbc2f..c6ea729 100755</span><br><span>--- a/ttcn3-ggsn-test/jenkins.sh</span><br><span>+++ b/ttcn3-ggsn-test/jenkins.sh</span><br><span>@@ -1,6 +1,14 @@</span><br><span> #!/bin/sh</span><br><span style="color: hsl(120, 100%, 40%);">+# Environment variables:</span><br><span style="color: hsl(120, 100%, 40%);">+# * KERNEL_TEST: set to 1 to run osmo-ggsn with the kernel module in QEMU</span><br><span style="color: hsl(120, 100%, 40%);">+# * KERNEL_BUILD: set to 1 to build the kernel instead of using a pre-built one</span><br><span style="color: hsl(120, 100%, 40%);">+# * KERNEL_REMOTE_NAME: git remote name (to add multiple repos in the same local linux clone)</span><br><span style="color: hsl(120, 100%, 40%);">+# * KERNEL_URL: git remote url</span><br><span style="color: hsl(120, 100%, 40%);">+# * KERNEL_BRANCH: branch to checkout</span><br><span> </span><br><span> . ../jenkins-common.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+KERNEL_TEST="${KERNEL_TEST:-0}"</span><br><span> IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}"</span><br><span> docker_images_require \</span><br><span>      "osmo-ggsn-$IMAGE_SUFFIX" \</span><br><span>@@ -13,23 +21,48 @@</span><br><span> cp GGSN_Tests.cfg $VOL_BASE_DIR/ggsn-tester/</span><br><span> </span><br><span> mkdir $VOL_BASE_DIR/ggsn</span><br><span style="color: hsl(0, 100%, 40%);">-cp osmo-ggsn.cfg $VOL_BASE_DIR/ggsn/</span><br><span> </span><br><span> SUBNET=3</span><br><span> network_create $SUBNET</span><br><span> </span><br><span> # start container with ggsn in background</span><br><span style="color: hsl(120, 100%, 40%);">+GGSN_CMD="osmo-ggsn -c /data/osmo-ggsn.cfg"</span><br><span style="color: hsl(120, 100%, 40%);">+GGSN_DOCKER_ARGS=""</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "$KERNEL_TEST" = "1" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+       cp osmo-ggsn-kernel-gtp.cfg $VOL_BASE_DIR/ggsn/osmo-ggsn.cfg</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        kernel_test_prepare \</span><br><span style="color: hsl(120, 100%, 40%);">+         "defconfig" \</span><br><span style="color: hsl(120, 100%, 40%);">+               "fragment.config" \</span><br><span style="color: hsl(120, 100%, 40%);">+         "initrd-ggsn.sh" \</span><br><span style="color: hsl(120, 100%, 40%);">+          "$REPO_USER/osmo-ggsn-$IMAGE_SUFFIX" \</span><br><span style="color: hsl(120, 100%, 40%);">+              -v $VOL_BASE_DIR/ggsn:/data</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ GGSN_CMD="/kernel-test/run-qemu.sh"</span><br><span style="color: hsl(120, 100%, 40%);">+ GGSN_DOCKER_ARGS="</span><br><span style="color: hsl(120, 100%, 40%);">+               $(docker_network_params $SUBNET 200)</span><br><span style="color: hsl(120, 100%, 40%);">+          --device /dev/kvm:/dev/kvm</span><br><span style="color: hsl(120, 100%, 40%);">+            -v "$KERNEL_TEST_DIR:/kernel-test:ro"</span><br><span style="color: hsl(120, 100%, 40%);">+               -v "$CACHE_DIR:/cache"</span><br><span style="color: hsl(120, 100%, 40%);">+              "</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+  cp osmo-ggsn.cfg $VOL_BASE_DIR/ggsn/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        GGSN_DOCKER_ARGS="</span><br><span style="color: hsl(120, 100%, 40%);">+               $(docker_network_params $SUBNET 201)</span><br><span style="color: hsl(120, 100%, 40%);">+          "</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span> docker run        --cap-add=NET_ADMIN \</span><br><span>                --device /dev/net/tun:/dev/net/tun \</span><br><span>                 --sysctl net.ipv6.conf.all.disable_ipv6=0 \</span><br><span>          --rm \</span><br><span style="color: hsl(0, 100%, 40%);">-          $(docker_network_params $SUBNET 201) \</span><br><span>               --ulimit core=-1 \</span><br><span>           -v $VOL_BASE_DIR/ggsn:/data \</span><br><span>                --name ${BUILD_TAG}-ggsn -d \</span><br><span>                $DOCKER_ARGS \</span><br><span style="color: hsl(120, 100%, 40%);">+                $GGSN_DOCKER_ARGS \</span><br><span>          $REPO_USER/osmo-ggsn-$IMAGE_SUFFIX \</span><br><span style="color: hsl(0, 100%, 40%);">-            /bin/sh -c "osmo-ggsn -c /data/osmo-ggsn.cfg >/data/osmo-ggsn.log 2>&1"</span><br><span style="color: hsl(120, 100%, 40%);">+           /bin/sh -c "$GGSN_CMD >/data/osmo-ggsn.log 2>&1"</span><br><span> </span><br><span> # start docker container with testsuite in foreground</span><br><span> docker run --rm \</span><br><span>diff --git a/ttcn3-ggsn-test/osmo-ggsn-kernel-gtp.cfg b/ttcn3-ggsn-test/osmo-ggsn-kernel-gtp.cfg</span><br><span>new file mode 100644</span><br><span>index 0000000..0288d60</span><br><span>--- /dev/null</span><br><span>+++ b/ttcn3-ggsn-test/osmo-ggsn-kernel-gtp.cfg</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+! OpenGGSN (0.94.1-adac) configuration saved from vty</span><br><span style="color: hsl(120, 100%, 40%);">+!!</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+log gsmtap 172.18.3.202</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level set-all debug</span><br><span style="color: hsl(120, 100%, 40%);">+ logging filter all 1</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+log stderr</span><br><span style="color: hsl(120, 100%, 40%);">+ logging filter all 1</span><br><span style="color: hsl(120, 100%, 40%);">+ logging color 1</span><br><span style="color: hsl(120, 100%, 40%);">+ logging print category 1</span><br><span style="color: hsl(120, 100%, 40%);">+ logging timestamp 1</span><br><span style="color: hsl(120, 100%, 40%);">+ logging print extended-timestamp 1</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level ip info</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level tun info</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level ggsn info</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level sgsn notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level icmp6 debug</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lglobal notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level llapd notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level linp notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lmux notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lmi notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lmib notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lsms notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lctrl notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lgtp info</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lstats notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lgsup notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level loap notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lss7 notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lsccp notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lsua notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lm3ua notice</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level lmgcp notice</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+stats interval 5</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+line vty</span><br><span style="color: hsl(120, 100%, 40%);">+ no login</span><br><span style="color: hsl(120, 100%, 40%);">+ bind 0.0.0.0</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+ggsn ggsn0</span><br><span style="color: hsl(120, 100%, 40%);">+ gtp state-dir /tmp</span><br><span style="color: hsl(120, 100%, 40%);">+ gtp bind-ip 172.18.3.201</span><br><span style="color: hsl(120, 100%, 40%);">+ apn internet</span><br><span style="color: hsl(120, 100%, 40%);">+  gtpu-mode kernel-gtp</span><br><span style="color: hsl(120, 100%, 40%);">+  tun-device tun4</span><br><span style="color: hsl(120, 100%, 40%);">+  type-support v4</span><br><span style="color: hsl(120, 100%, 40%);">+  ip prefix dynamic 176.16.222.0/24</span><br><span style="color: hsl(120, 100%, 40%);">+  ip dns 0 172.18.3.201</span><br><span style="color: hsl(120, 100%, 40%);">+  ip dns 1 8.8.8.8</span><br><span style="color: hsl(120, 100%, 40%);">+  ip ifconfig 176.16.222.0/24</span><br><span style="color: hsl(120, 100%, 40%);">+  no shutdown</span><br><span style="color: hsl(120, 100%, 40%);">+# apn inet6</span><br><span style="color: hsl(120, 100%, 40%);">+# apn inet46</span><br><span style="color: hsl(120, 100%, 40%);">+ default-apn internet</span><br><span style="color: hsl(120, 100%, 40%);">+ no shutdown ggsn</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/docker-playground/+/23005">change 23005</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/docker-playground/+/23005"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: docker-playground </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I54e752048eed2a170a1cf4e0fd410de255b9de5d </div>
<div style="display:none"> Gerrit-Change-Number: 23005 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>