diff --git a/repos/os/run/ping.run b/repos/os/run/ping.run
index 5e736b03b8..3b03c799d7 100644
--- a/repos/os/run/ping.run
+++ b/repos/os/run/ping.run
@@ -2,19 +2,32 @@
# Build
#
-if {![have_include power_on/qemu]} {
- puts "Run script is only supported on Qemu"
- exit 0
-}
+set on_hardware [expr ![have_include power_on/qemu]]
set build_components {
core
init
drivers/timer
drivers/nic
+ server/nic_bridge
app/ping
}
+proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv }
+ if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv }
+ return gpio_drv }
+
+
+lappend_if [have_spec gpio] build_components drivers/gpio
+
+proc dst_ip { } {
+ if {![have_include power_on/qemu]} {
+ return "10.0.0.2"
+ } else {
+ return "10.0.2.2"
+ }
+}
+
source ${genode_dir}/repos/base/run/platform_drv.inc
append_platform_drv_build_components
@@ -45,24 +58,65 @@ append config {
append_platform_drv_config
+append_if [have_spec gpio] config "
+
+
+
+
+ "
+
append config {
+
-
+
+ } [nic_drv_config] {
-
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+
+append_if $on_hardware config {
+
+
-
+
+
+
+
+ }
+
+append config {
+
+
+
+
-
+
@@ -81,10 +135,12 @@ append boot_modules {
} [nic_drv_binary] {
ping
ld.lib.so
+ nic_bridge
}
# platform-specific modules
lappend_if [have_spec linux] boot_modules fb_sdl
+lappend_if [have_spec gpio] boot_modules [gpio_drv]
append_platform_drv_boot_modules
@@ -95,4 +151,8 @@ append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 "
append qemu_args " -net user -nographic "
-run_genode_until ".*\"ping\" exited with exit value 0.*\n" 25
+set done_string ".*\"ping_1\" exited with exit value 0.*\n"
+
+append_if $on_hardware done_string ".*ping_2\] From [dst_ip] Destination Unreachable.*\n"
+
+run_genode_until $done_string 30
diff --git a/repos/os/run/ping_nic_router.run b/repos/os/run/ping_nic_router.run
index a40a1067df..65db421334 100644
--- a/repos/os/run/ping_nic_router.run
+++ b/repos/os/run/ping_nic_router.run
@@ -2,10 +2,7 @@
# Build
#
-if {![have_include power_on/qemu]} {
- puts "Run script is only supported on Qemu"
- exit 0
-}
+set on_hardware [expr ![have_include power_on/qemu]]
set build_components {
core
@@ -16,6 +13,24 @@ set build_components {
app/ping
}
+proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv }
+ if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv }
+ return gpio_drv }
+
+
+lappend_if [have_spec gpio] build_components drivers/gpio
+
+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" }
+
+
source ${genode_dir}/repos/base/run/platform_drv.inc
append_platform_drv_build_components
@@ -46,6 +61,13 @@ append config {
append_platform_drv_config
+append_if [have_spec gpio] config "
+
+
+
+
+ "
+
append config {
@@ -54,8 +76,9 @@ append config {
-
+
+ } [nic_drv_config] {
@@ -63,23 +86,26 @@ append config {
+ dhcp_discover_timeout_sec="1"
+ icmp_idle_timeout_sec="6">
-
-
-
+
+
+
-
+
+
+
+
-
+
@@ -95,18 +121,23 @@ append config {
+ icmp_idle_timeout_sec="10">
-
+
-
-
+
+
+
+
+
+
+
@@ -121,7 +152,7 @@ append config {
@@ -135,7 +166,7 @@ append config {
@@ -149,7 +180,7 @@ append config {
@@ -163,14 +194,32 @@ append config {
-
+ }
+
+append_if $on_hardware config {
+
+
+
+
+
+
+
+
+ }
+
+append config {
}
install_config $config
@@ -191,6 +240,7 @@ append boot_modules {
# platform-specific modules
lappend_if [have_spec linux] boot_modules fb_sdl
+lappend_if [have_spec gpio] boot_modules [gpio_drv]
append_platform_drv_boot_modules
@@ -205,6 +255,8 @@ 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 ".*From 10.0.4.1 icmp_seq=.* Destination Unreachable.*\n"
+append done_string ".*ping_22\] From 10.0.4.1 icmp_seq=.* Destination Unreachable.*\n"
-run_genode_until $done_string 25
+append_if $on_hardware done_string ".*ping_23\] From [good_dst_ip] Destination Unreachable.*\n"
+
+run_genode_until $done_string 20