genode/repos/os/run/nic_router_flood.run
Piotr Tworek fe0ad0addb tool: Consolidate qemu nic setup.
Right now the same code dealing with nic setup on qemu is duplicated
in many different run scripts. It makes it unnecesarily complex to
change the existing config or add support for new nic types. Lets move
all this common code to qemu.inc.

Ref #3825
2020-10-09 13:35:57 +02:00

207 lines
5.6 KiB
Plaintext

if {![have_include power_on/qemu] ||
[have_spec foc] ||
[have_spec rpi3] ||
[expr [have_spec imx53] && [have_spec trustzone]]} {
puts "Run script is not supported on this platform."
exit 0
}
proc test_timeout { } {
if {[have_spec sel4] && [have_spec x86]} {
return 240
}
if {[have_spec okl4] || [have_spec pistachio]} {
return 240
}
return 120
}
proc good_dst_ip { } { return "10.0.2.2" }
proc bad_dst_ip { } { return "10.0.0.123" }
create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/init
build { app/ping test/net_flood server/nic_router server/dynamic_rom }
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="RAM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="drivers" caps="1000" managing_system="yes">
<resource name="RAM" quantum="32M"/>
<binary name="init"/>
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="dynamic_rom">
<resource name="RAM" quantum="4M"/>
<provides><service name="ROM"/> </provides>
<config verbose="yes">
<rom name="nic_router.config">
<inline>
<config verbose="no"
verbose_packets="no"
verbose_packet_drop="yes"
verbose_domain_state="yes"
dhcp_discover_timeout_sec="1"
tcp_idle_timeout_sec="3600"
udp_idle_timeout_sec="3600"
icmp_idle_timeout_sec="3600">
<policy label_prefix="flood_links" domain="flood_links"/>
<policy label_prefix="ping" domain="flood_links"/>
<uplink domain="uplink"/>
<domain name="uplink" interface="10.0.2.15/24" gateway="10.0.2.2" verbose_packets="no">
<nat domain="flood_links" udp-ports="16384"
tcp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="flood_links" interface="10.0.1.1/24">
<dhcp-server ip_first="10.0.1.100"
ip_last="10.0.1.200"/>
<icmp dst="0.0.0.0/0" domain="uplink"/>
<udp dst="0.0.0.0/0"><permit-any domain="uplink"/></udp>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink"/></tcp>
</domain>
</config>
</inline>
<sleep milliseconds="10000"/>
<inline>
<config verbose="no"
verbose_packets="no"
verbose_packet_drop="no"
verbose_domain_state="yes"
dhcp_discover_timeout_sec="1"
tcp_idle_timeout_sec="3600"
udp_idle_timeout_sec="3600"
icmp_idle_timeout_sec="3600">
<policy label_prefix="flood_links" domain="flood_links"/>
<policy label_prefix="ping" domain="flood_links"/>
<uplink domain="uplink"/>
<domain name="uplink" verbose_packets="no">
<nat domain="flood_links" udp-ports="16384"
tcp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="flood_links" interface="10.0.1.1/24">
<dhcp-server ip_first="10.0.1.100"
ip_last="10.0.1.200"/>
<icmp dst="0.0.0.0/0" domain="uplink"/>
<udp dst="0.0.0.0/0"><permit-any domain="uplink"/></udp>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink"/></tcp>
</domain>
</config>
</inline>
<sleep milliseconds="10000"/>
</rom>
</config>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides><service name="Nic"/></provides>
<route>
<service name="ROM" label="config"> <child name="dynamic_rom" label="nic_router.config"/> </service>
<service name="Nic"> <child name="drivers"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="flood_links_tcp">
<binary name="test-net_flood"/>
<resource name="RAM" quantum="8M"/>
<config dst_ip="} [bad_dst_ip] {"
protocol="tcp"
verbose="no"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="flood_links_udp">
<binary name="test-net_flood"/>
<resource name="RAM" quantum="8M"/>
<config dst_ip="} [bad_dst_ip] {"
protocol="udp"
verbose="no"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="flood_links_icmp">
<binary name="test-net_flood"/>
<resource name="RAM" quantum="8M"/>
<config dst_ip="} [bad_dst_ip] {"
protocol="icmp"
verbose="no"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="ping">
<resource name="RAM" quantum="8M"/>
<config dst_ip="} [good_dst_ip] {"
period_sec="2"
count="999"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}
build_boot_image { test-net_flood ping nic_router dynamic_rom }
append qemu_args " -nographic "
append_qemu_nic_args
run_genode_until {.*ping\] 64 bytes from 10\.0\.2\.2: icmp_seq=30 .*\n} [test_timeout]