diff --git a/repos/dde_linux/run/ip_raw.inc b/repos/dde_linux/run/ip_raw.inc
new file mode 100644
index 0000000000..2862379e04
--- /dev/null
+++ b/repos/dde_linux/run/ip_raw.inc
@@ -0,0 +1,85 @@
+# Low level IP stack test
+#
+# uses the following config hook.
+#
+# proc ipstack { } name of IP stack (lwip or lxip)
+
+set build_components {
+ lib/ld core init timer
+ server/nic_router
+}
+
+append build_components { test/ip_raw/} [ipstack]
+
+build $build_components
+
+create_boot_directory
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+install_config $config
+
+build_boot_image [build_artifacts]
+
+append qemu_args " -nographic "
+
+run_genode_until "test-[ipstack]_server\] Success" 10
diff --git a/repos/dde_linux/run/lxip_raw.run b/repos/dde_linux/run/lxip_raw.run
index d0eea1c6ca..ea18cef2f8 100644
--- a/repos/dde_linux/run/lxip_raw.run
+++ b/repos/dde_linux/run/lxip_raw.run
@@ -1,80 +1,3 @@
+proc ipstack { } { return lxip }
-set build_components {
- lib/ld core init
- timer
- test/lxip_raw
- server/nic_router
-}
-
-build $build_components
-
-create_boot_directory
-
-append config {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-install_config $config
-
-build_boot_image [build_artifacts]
-
-append qemu_args " -nographic "
-
-run_genode_until "test-lxip_server\] Success" 10
+source ${genode_dir}/repos/dde_linux/run/ip_raw.inc
diff --git a/repos/dde_linux/src/test/lxip_raw/client/main.cc b/repos/dde_linux/src/test/ip_raw/client/main.cc
similarity index 100%
rename from repos/dde_linux/src/test/lxip_raw/client/main.cc
rename to repos/dde_linux/src/test/ip_raw/client/main.cc
diff --git a/repos/dde_linux/src/test/lxip_raw/include/data.h b/repos/dde_linux/src/test/ip_raw/include/data.h
similarity index 100%
rename from repos/dde_linux/src/test/lxip_raw/include/data.h
rename to repos/dde_linux/src/test/ip_raw/include/data.h
diff --git a/repos/dde_linux/src/test/lxip_raw/client/target.mk b/repos/dde_linux/src/test/ip_raw/lxip/client/target.mk
similarity index 50%
rename from repos/dde_linux/src/test/lxip_raw/client/target.mk
rename to repos/dde_linux/src/test/ip_raw/lxip/client/target.mk
index 4652499717..b4389ab19b 100644
--- a/repos/dde_linux/src/test/lxip_raw/client/target.mk
+++ b/repos/dde_linux/src/test/ip_raw/lxip/client/target.mk
@@ -2,6 +2,10 @@ TARGET = test-lxip_client
LIBS = lxip base net
SRC_CC = main.cc
-INC_DIR += $(PRG_DIR)/../include
+IP_DIR = $(REP_DIR)/src/test/ip_raw
+
+INC_DIR += $(IP_DIR)/include
+
+vpath %.cc $(IP_DIR)/client
CC_CXX_WARN_STRICT =
diff --git a/repos/dde_linux/src/test/lxip_raw/server/target.mk b/repos/dde_linux/src/test/ip_raw/lxip/server/target.mk
similarity index 50%
rename from repos/dde_linux/src/test/lxip_raw/server/target.mk
rename to repos/dde_linux/src/test/ip_raw/lxip/server/target.mk
index f0ac07da05..d71d727785 100644
--- a/repos/dde_linux/src/test/lxip_raw/server/target.mk
+++ b/repos/dde_linux/src/test/ip_raw/lxip/server/target.mk
@@ -2,6 +2,10 @@ TARGET = test-lxip_server
LIBS = lxip base net
SRC_CC = main.cc
-INC_DIR += $(PRG_DIR)/../include
+IP_DIR = $(REP_DIR)/src/test/ip_raw
+
+INC_DIR += $(IP_DIR)/include
+
+vpath %.cc $(IP_DIR)/server
CC_CXX_WARN_STRICT =
diff --git a/repos/dde_linux/src/test/lxip_raw/server/main.cc b/repos/dde_linux/src/test/ip_raw/server/main.cc
similarity index 100%
rename from repos/dde_linux/src/test/lxip_raw/server/main.cc
rename to repos/dde_linux/src/test/ip_raw/server/main.cc