diff --git a/repos/libports/run/nic_dump.run b/repos/libports/run/nic_dump.run
deleted file mode 100644
index aa188acfd0..0000000000
--- a/repos/libports/run/nic_dump.run
+++ /dev/null
@@ -1,159 +0,0 @@
-#
-# Build components
-#
-
-proc enable_test_1 { } { return 1 }
-proc enable_test_2 { } { return 1 }
-
-source ${genode_dir}/repos/libports/run/nic_router.inc
-
-lappend targets server/nic_dump
-
-build $targets
-
-create_boot_directory
-
-proc test_1_config { } {
- if {[enable_test_1]} { return "
- [client_config udp_client_2 udp 10.0.2.212 10.0.2.1 255.255.255.0 nic_bridge 1 10.0.2.55]
- [server_config udp_server_2 udp 18.17.16.15 18.17.16.14 255.255.0.0 nic_router 1 ]" }
-}
-
-proc test_2_config { } {
- if {[enable_test_2]} { return "
- [client_config http_client_1 http 10.0.2.201 10.0.2.1 255.255.255.0 nic_bridge 80 10.0.2.55]
- [server_config http_server_1 http 192.168.1.18 192.168.1.1 255.255.255.0 nic_router 80 ]" }
-}
-
-append config {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- } [platform_drv_config] {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- } [test_1_config] {
- } [test_2_config] {
-
- }
-
-install_config $config
-
-lappend boot_modules nic_dump
-
-build_boot_image $boot_modules
-
-for {set i 0} {$i < $nr_of_clients} {incr i 1} {
- append done_string {.*Test done.*\n}
-}
-
-run_genode_until $done_string 120
diff --git a/repos/os/run/nic_dump.run b/repos/os/run/nic_dump.run
new file mode 100644
index 0000000000..a50e9b8e51
--- /dev/null
+++ b/repos/os/run/nic_dump.run
@@ -0,0 +1,259 @@
+if {[have_spec foc] || [have_spec odroid_xu] || [have_spec linux] || [have_spec imx7d_sabre] ||
+ [expr [have_spec imx53] && [have_spec trustzone]]} {
+ puts "Run script is not supported on this platform."
+ exit 0
+}
+
+set on_hardware [expr ![have_include power_on/qemu]]
+
+create_boot_directory
+
+import_from_depot [depot_user]/src/[base_src] \
+ [depot_user]/pkg/[drivers_nic_pkg] \
+ [depot_user]/src/init \
+ [depot_user]/src/nic_bridge \
+ [depot_user]/src/nic_router \
+
+build { app/ping server/nic_dump }
+
+proc good_dst_ip { } {
+ if {![have_include power_on/qemu]} {
+ return "10.0.0.2"
+ } else {
+ return "10.0.2.2"
+ }
+}
+proc bad_dst_port { } { return "12345" }
+proc bad_dst_ip { } { return "10.0.1.2" }
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+
+append_if $on_hardware config {
+
+
+
+
+
+
+
+
+ }
+
+append config {
+}
+
+install_config $config
+build_boot_image { ping nic_dump }
+
+proc qemu_nic_model {} {
+ if [have_spec x86] { return e1000 }
+ if [have_spec lan9118] { return lan9118 }
+ if [have_spec zynq] { return cadence_gem }
+ return nic_model_missing
+}
+
+append qemu_args " -nographic "
+append qemu_args " -netdev user,id=net0 "
+append qemu_args " -net nic,model=[qemu_nic_model],netdev=net0 "
+
+set done_string ""
+for {set i 0} {$i < 3} {incr i 1} {
+ append done_string ".*child \"ping...\" exited with exit value 0.*\n"
+}
+append done_string ".*ping_22\] From 10.0.4.1 icmp_seq=.* Destination Unreachable.*\n"
+
+append_if $on_hardware done_string ".*ping_23\] From [good_dst_ip] Destination Unreachable.*\n"
+
+run_genode_until $done_string 30