From d301022fe77513629a2e5fd1c58179d27c3d77e9 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Sat, 11 Feb 2017 03:51:44 +0100 Subject: [PATCH] nic_router.run: do not append but concatenate Makes the script more readable and saves 100 LOC. Ref #2193 --- repos/base/run/platform_drv.inc | 4 +- repos/libports/run/nic_router.run | 440 ++++++++++++------------------ 2 files changed, 173 insertions(+), 271 deletions(-) diff --git a/repos/base/run/platform_drv.inc b/repos/base/run/platform_drv.inc index e3ed74d28..3cf687086 100644 --- a/repos/base/run/platform_drv.inc +++ b/repos/base/run/platform_drv.inc @@ -42,7 +42,7 @@ proc platform_drv_build_components {} { proc append_platform_drv_build_components {} { global build_components - append build_components [platform_drv_build_components] + append build_components { } [platform_drv_build_components] } proc platform_drv_boot_modules {} { @@ -57,7 +57,7 @@ proc platform_drv_boot_modules {} { proc append_platform_drv_boot_modules {} { global boot_modules - append boot_modules $platform_drv_boot_modules + append boot_modules { } [platform_drv_boot_modules] } diff --git a/repos/libports/run/nic_router.run b/repos/libports/run/nic_router.run index 0e6408664..bcd9fea35 100644 --- a/repos/libports/run/nic_router.run +++ b/repos/libports/run/nic_router.run @@ -1,41 +1,42 @@ # -# Build +# Build components # -set tcp_up_to_down_1 1 -set tcp_up_to_down_2 1 -set tcp_down_to_up_1 1 -set udp_down_to_down_1 1 -set udp_up_to_down_1 1 -set udp_down_to_up_1 1 - -set use_usb_driver [expr [have_spec omap4] || [have_spec arndale] || [have_spec rpi]] -set use_nic_driver [expr !$use_usb_driver && ![have_spec imx53] && ![have_spec riscv] && ![have_spec odroid_xu] && ![have_spec linux] && ![have_spec wand_quad]] - -set nic_driver "nic_drv" -if ($use_usb_driver) { - set nic_driver "usb_drv" } - -if {[expr !$use_usb_driver && !$use_nic_driver]} { - puts "\n Run script is not supported on this platform. \n"; exit 0 } - -set build_components { - core init drivers/timer drivers/nic server/nic_router server/nic_bridge - test/lwip/http_srv_static test/lwip/http_clnt test/lxip/udp_echo - test/lxip/udp_client -} - -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 $use_usb_driver build_components drivers/usb -lappend_if [have_spec gpio] build_components drivers/gpio +proc enable_test_1 { } { return 1 } +proc enable_test_2 { } { return 1 } +proc enable_test_3 { } { return 1 } +proc enable_test_4 { } { return 1 } +proc enable_test_5 { } { return 1 } +proc enable_test_6 { } { return 1 } source ${genode_dir}/repos/base/run/platform_drv.inc -append_platform_drv_build_components -build $build_components +proc nic_drv { } { + if {[have_spec omap4] || [have_spec arndale] || [have_spec rpi]} { return usb_drv } + if {!([have_spec imx53] || [have_spec riscv] || [have_spec odroid_xu] || [have_spec linux] || [have_spec wand_quad])} { return nic_drv } +} + +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 } + if {[have_spec gpio]} { return gpio_drv } +} + +if {[nic_drv] == ""} { + puts "\n Run script is not supported on this platform. \n"; exit 0 } + +proc nic_drv_build { } { + if {[nic_drv] == "nic_drv"} { return drivers/nic } + if {[nic_drv] == "usb_drv"} { return drivers/usb } +} + +proc gpio_drv_build { } { if {[gpio_drv] != ""} { return " drivers/gpio" } } + +build [string cat { + core init drivers/timer server/nic_router server/nic_bridge + test/lwip/http_srv_static test/lwip/http_clnt test/lxip/udp_echo + test/lxip/udp_client } [nic_drv_build] { } [gpio_drv_build] { + } [platform_drv_build_components]] create_boot_directory @@ -43,7 +44,119 @@ create_boot_directory # Generate config # -append config { +proc gpio_drv_config { } { + + if {[have_spec gpio]} { return [string cat { + + + + + }] } +} + +proc nic_drv_config { } { + + if {[nic_drv] == "nic_drv"} { return [string cat { + + + + + }] } + + if {[nic_drv] == "usb_drv"} { return [string cat { + + + + + + + + + + }] } +} + +proc client_bin { prot } { + if {$prot == "udp"} { return "test-lxip_udp_client" } + if {$prot == "http"} { return "test-http_clnt" } } + +proc server_bin { prot } { + if {$prot == "udp"} { return "test-lxip_udp_echo" } + if {$prot == "http"} { return "test-lwip_httpsrv_static" } } + +proc client_config { prot index ip_addr gateway netmask nic srv_port srv_ip } { + return [string cat { + + + + + + + + + + + + + }] +} + +proc server_config { prot index ip_addr gateway netmask nic port } { + return [string cat { + + + + + + + + + + + + + }] +} + +proc test_1_config { } { + if {[enable_test_1]} { return [string cat { + } [client_config udp 1 10.0.98.55 10.0.98.33 255.255.255.0 nic_router 1337 10.0.98.33] { + } [server_config udp 1 10.0.99.55 10.0.99.33 255.255.255.0 nic_router 1337 ]] } +} + +proc test_2_config { } { + if {[enable_test_2]} { return [string cat { + } [client_config udp 2 10.0.2.212 10.0.2.1 255.255.255.0 nic_bridge 1 10.0.2.55] { + } [server_config udp 2 18.17.16.15 18.17.16.14 255.255.0.0 nic_router 1 ]] } +} + +proc test_3_config { } { + if {[enable_test_3]} { return [string cat { + } [client_config udp 3 217.13.192.2 217.13.192.1 255.255.192.0 nic_router 65535 10.0.2.213] { + } [server_config udp 3 10.0.2.213 10.0.2.55 255.255.255.0 nic_bridge 65535 ]] } +} + +proc test_4_config { } { + if {[enable_test_4]} { return [string cat { + } [client_config http 1 10.0.2.201 10.0.2.1 255.255.255.0 nic_bridge 80 10.0.2.55] { + } [server_config http 1 192.168.1.18 192.168.1.1 255.255.255.0 nic_router 80 ]] } +} + +proc test_5_config { } { + if {[enable_test_5]} { return [string cat { + } [client_config http 2 10.0.2.202 10.0.2.1 255.255.255.0 nic_bridge 8080 10.0.2.55] { + } [server_config http 2 192.168.2.72 192.168.2.1 255.255.255.0 nic_router 8080 ]] } +} + +proc test_6_config { } { + if {[enable_test_6]} { return [string cat { + } [client_config http 3 100.200.0.128 100.200.0.1 255.255.0.0 nic_router 2345 10.0.2.203] { + } [server_config http 3 10.0.2.203 10.0.2.1 255.255.255.0 nic_bridge 2345 ]] } +} + +install_config [string cat { @@ -56,37 +169,15 @@ append config { + - } + -append_if [have_spec gpio] config " - - - - - " + } [gpio_drv_config] { + } [nic_drv_config] { + } [platform_drv_config] { -append_if $use_usb_driver config { - - - - - - - - - } - -append_platform_drv_config - -append_if $use_nic_driver config { - - - - } - -append config { @@ -144,230 +235,41 @@ append config { - - - + + + - + - } -append config " - " -append config { - - - } - -append_if $udp_down_to_down_1 config { - - - - - + - - - - - - - - - - - - - - - - } + } [test_1_config] { + } [test_2_config] { + } [test_3_config] { + } [test_4_config] { + } [test_5_config] { + } [test_6_config] { -append_if $udp_up_to_down_1 config { - - - - - - - - - - - - - - - - - - - - - - - - - - } - -append_if $udp_down_to_up_1 config { - - - - - - - - - - - - - - - - - - - - - - - - - - } - -append_if $tcp_up_to_down_1 config { - - - - - - - - - - - - - - - - - - - - - - - - - - } - -append_if $tcp_up_to_down_2 config { - - - - - - - - - - - - - - - - - - - - - - - - - - } - -append_if $tcp_down_to_up_1 config { - - - - - - - - - - - - - - - - - - - - - - - - - } - -append config { } - -install_config $config + }] # -# Boot modules +# Create single image and execute # -# generic modules -set boot_modules { - +build_boot_image [string cat { core init timer nic_router nic_bridge ld.lib.so libc.lib.so libm.lib.so libc_resolv.lib.so lwip.lib.so lxip.lib.so test-http_clnt test-lwip_httpsrv_static test-lxip_udp_echo test-lxip_udp_client -} + } [nic_drv] { } [gpio_drv] { } [platform_drv_boot_modules]] -# platform-specific modules -lappend_if $use_usb_driver boot_modules usb_drv -lappend_if $use_nic_driver boot_modules nic_drv -lappend_if [have_spec gpio] boot_modules [gpio_drv] +proc nic_qemu_args { } { + if {[have_spec x86]} { return "-net nic,model=e1000" } + if {[have_spec lan9118]} { return "-net nic,model=lan9118" } } -append_platform_drv_boot_modules +append qemu_args { -m 256 -nographic -net user -redir udp:5555::1337 } [nic_qemu_args] -build_boot_image $boot_modules - -# qemu config -append qemu_args " -m 256 -nographic " - -append_if [have_spec x86] qemu_args " -net nic,model=e1000 " -append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 " - -append qemu_args " -net user -redir udp:5555::1337 " - -run_genode_until ".*Test done.*\n.*Test done.*\n.*Test done.*\n.*Test done.*\n.*Test done.*\n.*Test done.*\n" 60 +run_genode_until {.*Test done.*\n.*Test done.*\n.*Test done.*\n.*Test done.*\n.*Test done.*\n.*Test done.*\n} 60