Don't use the NIC server mode of NIC drivers

Issue #3961
This commit is contained in:
Martin Stein 2021-01-08 17:27:24 +01:00 committed by Norman Feske
parent 9f3c5d92b3
commit 691be92046
70 changed files with 1419 additions and 566 deletions

View File

@ -8,6 +8,7 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
@ -33,8 +34,9 @@
<start name="nic_drv" caps="130">
<binary name="fec_nic_drv"/>
<resource name="RAM" quantum="20M"/>
<provides> <service name="Nic"/> </provides>
<config mode="uplink_client"/>
<route>
<service name="Uplink"><parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>

View File

@ -8,6 +8,7 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
@ -34,8 +35,9 @@
<start name="nic_drv" caps="130">
<binary name="fec_nic_drv"/>
<resource name="RAM" quantum="20M"/>
<provides> <service name="Nic"/> </provides>
<config mode="uplink_client"/>
<route>
<service name="Uplink"><parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>

View File

@ -1,4 +1,5 @@
<config>
<parent-provides>
<service name="IRQ"/>
<service name="IO_MEM"/>
@ -8,13 +9,11 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="nic_drv" label="fec0"/> </default-policy> </service>
<start name="platform_drv" caps="150">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Platform"/> </provides>
@ -44,15 +43,17 @@
<start name="nic_drv" caps="150">
<binary name="fec_nic_drv"/>
<resource name="RAM" quantum="20M"/>
<provides> <service name="Nic"/> </provides>
<config mode="uplink_client" uplink_label="fec0"/>
<route>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Platform"> <child name="platform_drv"/> </service>
</route>
</start>
</config>

View File

@ -8,13 +8,11 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="nic_drv"/> </default-policy> </service>
<start name="platform_drv" caps="150">
<binary name="imx8mq_platform_drv"/>
<resource name="RAM" quantum="1M"/>
@ -36,14 +34,15 @@
<start name="nic_drv" caps="130">
<binary name="fec_nic_drv"/>
<resource name="RAM" quantum="20M"/>
<provides> <service name="Nic"/> </provides>
<config mode="uplink_client"/>
<route>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
<service name="Platform"> <child name="platform_drv"/> </service>
</route>
</start>

View File

@ -74,16 +74,19 @@ append config {
</provides>
</start>
<start name="nic_drv" priority="-1">
<start name="nic_drv" priority="-1" caps="120">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides><service name="Nic"/></provides>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Uplink"> <child name="router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="wifi_drv" caps="300" priority="-1">
<resource name="RAM" quantum="24M"/>
<provides> <service name="Nic"/> </provides>
<config ld_verbose="no">
<config mode="uplink_client" ld_verbose="no">
<vfs>
<dir name="dev"> <log/> <rtc/> <null/>
<jitterentropy name="random"/>
@ -94,6 +97,7 @@ append config {
<libc stdout="/dev/null" stderr="/dev/null" rtc="/dev/rtc"/>
</config>
<route>
<service name="Uplink"> <child name="router"/> </service>
<service name="Rtc"> <any-child/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="ROM" label="wifi_config"> <child name="config_rom"/> </service>
@ -142,15 +146,18 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<uplink label="nic" domain="uplink" />
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink" />
<domain name="uplink">
<nat domain="downlink" icmp-ids="999"/>
</domain>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -163,15 +170,18 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<uplink label="wifi" domain="uplink" />
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="wifi_drv" domain="uplink" />
<domain name="uplink">
<nat domain="downlink" icmp-ids="999"/>
</domain>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -184,11 +194,13 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<policy label_prefix="ping" domain="downlink"/>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -201,15 +213,18 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<uplink label="nic" domain="uplink" />
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink" />
<domain name="uplink">
<nat domain="downlink" icmp-ids="999"/>
</domain>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -222,15 +237,18 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<uplink label="nic" domain="uplink" />
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink" />
<domain name="uplink">
<nat domain="downlink" icmp-ids="999"/>
</domain>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -243,11 +261,13 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<policy label_prefix="ping" domain="downlink"/>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -260,15 +280,18 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<uplink label="wifi" domain="uplink" />
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="wifi_drv" domain="uplink" />
<domain name="uplink">
<nat domain="downlink" icmp-ids="999"/>
</domain>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -281,15 +304,18 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<uplink label="nic" domain="uplink" />
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink" />
<domain name="uplink">
<nat domain="downlink" icmp-ids="999"/>
</domain>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
<icmp dst="0.0.0.0/0" domain="uplink" />
</domain>
</config>
</inline>
@ -302,10 +328,12 @@ append config {
verbose_domain_state="} [router_verbose_domain_state] {"
verbose_packets="} [router_verbose_packets] {">
<default-policy domain="downlink"/>
<policy label_prefix="ping" domain="downlink"/>
<domain name="downlink" interface="10.0.1.79/24">
<dhcp-server ip_first="10.0.1.80" ip_last="10.0.1.100"/>
</domain>
</config>
</inline>
@ -322,12 +350,6 @@ append config {
<service name="Uplink"/>
</provides>
<route>
<service name="Nic" label="nic">
<child name="nic_drv"/>
</service>
<service name="Nic" label="wifi">
<child name="wifi_drv"/>
</service>
<service name="ROM" label="config">
<child name="dynamic_rom" label="router.config"/>
</service>

View File

@ -17,6 +17,7 @@ set build_components {
drivers/usb_net
test/lwip/http_srv
lib/vfs/lwip
server/nic_router
}
source ${genode_dir}/repos/base/run/platform_drv.inc
@ -76,9 +77,40 @@ append config {
</start>
<start name="usb_net_drv">
<resource name="RAM" quantum="20M"/>
<config mode="uplink_client" mac="02:00:00:00:01:01" />
<route>
<service name="Uplink"><child name="nic_router"/></service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides> <service name="Nic"/> </provides>
<config mac="02:00:00:00:01:01" />
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="test-lwip_httpsrv" domain="downlink"/>
<policy label_prefix="usb_net_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink" tcp-ports="16384"/>
<tcp-forward port="443" domain="downlink" to="10.0.3.2"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2"/>
</domain>
</config>
</start>
<start name="test-lwip_httpsrv" caps="120">
@ -90,6 +122,10 @@ append config {
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" socket="/socket"/>
</config>
<route>
<service name="Nic"><child name="nic_router"/></service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>
}
@ -104,6 +140,7 @@ install_config $config
set boot_modules {
core init timer usb_net_drv
ld.lib.so libc.lib.so vfs.lib.so vfs_lwip.lib.so test-lwip_httpsrv
nic_router
}
append boot_modules [usb_host_drv_binary]

View File

@ -16,6 +16,7 @@ set build_components {
server/tcp_terminal
test/terminal_echo
lib/vfs/lwip
server/nic_router
}
source ${genode_dir}/repos/base/run/platform_drv.inc
@ -45,19 +46,46 @@ set config {
<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="usb_drv">
<resource name="RAM" quantum="24M"/>
<provides>
<service name="Nic"/>
</provides>
<config uhci="no" ohci="no" ehci="yes" xhci="yes">
<config mode="uplink_client" uhci="no" ohci="no" ehci="yes" xhci="yes">
<nic mac="02:00:00:00:01:01" />
</config>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="tcp_terminal" domain="downlink"/>
<policy label_prefix="usb_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink" tcp-ports="16384"/>
<tcp-forward port="88" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2"/>
</domain>
</config>
</start>
<start name="tcp_terminal" caps="200">
<resource name="RAM" quantum="2560K"/>
<provides> <service name="Terminal"/> </provides>
@ -71,6 +99,7 @@ set config {
<libc stdout="/dev/log" socket="/socket" pipe="/pipe"/>
</config>
<route>
<service name="Nic"> <child name="nic_router" /> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
@ -98,6 +127,7 @@ set boot_modules {
tcp_terminal
test-terminal_echo
vfs_lwip.lib.so
nic_router
}
append_platform_drv_boot_modules

View File

@ -1,11 +1,10 @@
assert_spec linux
set build_components {
core init timer
drivers/nic
lib/vfs/lxip
server/vfs
server/dynamic_rom
server/nic_router
app/ping
}
build $build_components
@ -31,10 +30,53 @@ append config {
<resource name="RAM" quantum="1M"/>
<provides> <service name="Timer"/> </provides>
</start>
<start name="nic_drv" ld="no">
<binary name="linux_nic_drv"/>
<start name="ping_1">
<binary name="ping"/>
<resource name="RAM" quantum="8M"/>
<provides> <service name="Nic"/> </provides>
<config interface="10.0.2.3/24"
gateway="10.0.2.1"
dst_ip="10.0.2.2"
period_sec="1"
verbose="no"
count="3"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="ping_2">
<binary name="ping"/>
<resource name="RAM" quantum="8M"/>
<config interface="10.0.2.4/24"
gateway="10.0.2.1"
dst_ip="10.0.2.55"
period_sec="1"
verbose="no"
count="3"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<default-policy domain="default"/>
<domain name="default" interface="10.0.2.1/24">
<dhcp-server ip_first="10.0.2.2" ip_last="10.0.2.2"/>
</domain>
</config>
</start>
<start name="dynamic_rom">
@ -67,26 +109,29 @@ append config {
<route>
<service name="ROM" label="config">
<child name="dynamic_rom" label="socket_fs.config"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>
}
install_config $config
append boot_modules {
core init timer linux_nic_drv vfs dynamic_rom
core init timer vfs dynamic_rom
ld.lib.so vfs.lib.so vfs_lxip.lib.so lxip.lib.so
nic_router ping
}
build_boot_image $boot_modules
puts "#################################################################"
puts "## run simultaneous ping to 10.0.2.55 and <dynamic IP address> ##"
puts "#################################################################"
sleep 1
append done_string ".*\"ping_.\" exited with exit value 0.*\n"
append done_string ".*\"ping_.\" exited with exit value 0.*\n"
run_genode_until forever
append qemu_args " -nographic "
run_genode_until $done_string 60
# vi: set ft=tcl :

View File

@ -1,95 +0,0 @@
assert_spec linux
set build_components {
core init timer
drivers/nic
server/tcp_terminal
test/terminal_echo
lib/vfs/lxip
test/vfs_lxip
}
build $build_components
create_boot_directory
append config {
<config verbose="yes">
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
<service name="SIGNAL"/>
</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="nic_drv" ld="no">
<binary name="linux_nic_drv"/>
<resource name="RAM" quantum="8M"/>
<provides> <service name="Nic"/> </provides>
</start>
<!--
<start name="tcp_terminal">
<resource name="RAM" quantum="10M"/>
<provides> <service name="Terminal"/> </provides>
<config ld_verbose="yes">
<policy label="test-terminal_echo" port="8888"/>
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket">
<lxip ip_addr="10.0.2.55" netmask="255.255.255.0" gateway="10.0.2.1"/>
</dir>
<dir name="pipe"> <pipe/> </dir>
</vfs>
<libc stdout="/dev/log" socket="/socket" pipe="/pipe"/>
</config>
</start>
-->
<!-- use telnet on the client to connect to the test component -->
<start name="test-vfs_lxip" caps="200">
<resource name="RAM" quantum="48M"/>
<config>
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket">
<lxip ip_addr="10.0.2.55" netmask="255.255.255.0" gateway="10.0.2.1" nameserver="8.8.8.8"/>
</dir>
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" socket="/socket"/>
</config>
</start>
<!--
<start name="test-terminal_echo">
<resource name="RAM" quantum="1M"/>
</start>
-->
</config>
}
install_config $config
append boot_modules {
core init timer linux_nic_drv
ld.lib.so libc.lib.so vfs.lib.so posix.lib.so
libm.lib.so
vfs_lxip.lib.so lxip.lib.so
tcp_terminal
test-terminal_echo
test-vfs_lxip
}
build_boot_image $boot_modules
run_genode_until forever
# vi: set ft=tcl :

View File

@ -69,6 +69,7 @@ set build_components {
drivers/wifi
server/report_rom
server/dynamic_rom
server/nic_router
test/lwip/http_srv
lib/vfs/jitterentropy
lib/vfs/lwip
@ -120,6 +121,10 @@ append config {
<dir name="socket"> <lwip dhcp="yes"/> </dir>
</vfs>
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="state_report_rom">
@ -162,10 +167,37 @@ append config {
</config>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="test-lwip_httpsrv" domain="downlink"/>
<policy label_prefix="wifi_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink" tcp-ports="16384"/>
<tcp-forward port="443" domain="downlink" to="10.0.3.2"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2"/>
</domain>
</config>
</start>
<start name="wifi_drv" caps="200">
<resource name="RAM" quantum="24M"/>
<provides> <service name="Nic"/> </provides>
<config ld_verbose="yes">
<config ld_verbose="yes" mode="uplink_client">
<libc stdout="/dev/null" stderr="/dev/null" rtc="/dev/rtc"/>
<vfs>
<dir name="dev"> <log/> <null/> <rtc/>
@ -175,6 +207,7 @@ append config {
</vfs>
</config>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<service name="Rtc"> <any-child/> </service>
<service name="Report" label="accesspoints"> <child name="accesspoints_report_rom"/> </service>
<service name="Report" label="state"> <child name="state_report_rom"/> </service>
@ -215,6 +248,7 @@ set boot_modules {
wpa_driver_nl80211.lib.so wpa_supplicant.lib.so
wifi.lib.so
wifi_drv
nic_router
test-lwip_httpsrv
vfs_lwip.lib.so

View File

@ -10,13 +10,11 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="nic_drv"/> </default-policy> </service>
<start name="platform_drv" caps="210" managing_system="yes">
<resource name="RAM" quantum="3M"/>
<provides>
@ -40,9 +38,8 @@
<start name="nic_drv" caps="120">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<config/>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="ROM"> <parent/> </service>
@ -51,6 +48,7 @@
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
</route>
</start>

View File

@ -10,6 +10,7 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
@ -72,9 +73,8 @@
<start name="nic_drv" caps="120">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<config/>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="ROM"> <parent/> </service>
@ -83,6 +83,7 @@
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
</route>
</start>

View File

@ -10,11 +10,9 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<service name="Nic">
<default-policy> <child name="rpi_usb_drv"/> </default-policy> </service>
<start name="rpi_platform_drv" caps="200">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Platform"/> </provides>
@ -32,18 +30,18 @@
</start>
<start name="rpi_usb_drv" caps="120">
<resource name="RAM" quantum="14M"/>
<provides> <service name="Nic"/> </provides>
<config ehci="yes"> <nic mac="02:00:00:00:01:01"/> </config>
<resource name="RAM" quantum="20M"/>
<config mode="uplink_client" ehci="yes"> <nic mac="02:00:00:00:01:01"/> </config>
<route>
<service name="IRQ"> <parent/> </service>
<service name="IO_MEM"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="IRQ"> <parent/> </service>
<service name="IO_MEM"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
<service name="Platform"> <child name="rpi_platform_drv"/> </service>
</route>
</start>

View File

@ -21,6 +21,7 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/src/init \
[depot_user]/src/chroot \
[depot_user]/src/extract \
[depot_user]/src/nic_router \
[depot_user]/src/libarchive \
[depot_user]/src/liblzma \
[depot_user]/src/verify
@ -62,9 +63,42 @@ append config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="depot_download" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2" dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="vfs">
@ -105,10 +139,12 @@ append config {
<service name="ROM" label="config">
<parent label="depot_download.config"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="File_system"> <child name="vfs"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}

View File

@ -34,6 +34,7 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/src/platform_drv \
[depot_user]/src/posix \
[depot_user]/src/fs_rom \
[depot_user]/src/nic_router \
[depot_user]/src/rtc_drv \
[depot_user]/src/ssh_terminal \
[depot_user]/src/vfs \
@ -73,13 +74,57 @@ set config {
<start name="nic_drv">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="ssh_terminal" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="22" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2" dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
<route>
<service name="Timer"> <child name="timer"/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
<start name="rtc_drv">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Rtc"/> </provides>
@ -129,7 +174,7 @@ set config {
</vfs>
</config>
<route>
<service name="Nic"> <child name="nic_drv"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="CPU"> <parent/> </service>

View File

@ -25,6 +25,7 @@ set build_components {
test/libports/ncurses
test/terminal_echo
noux-pkg/bash
server/nic_router
}
source ${genode_dir}/repos/base/run/platform_drv.inc
@ -55,24 +56,68 @@ set config {
<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="report_rom">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="yes"/>
</start>
<start name="nic_drv">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="ssh_terminal" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="22" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="rtc_drv">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Rtc"/> </provides>
</start>
<start name="ssh_terminal" caps="250">
<resource name="RAM" quantum="32M"/>
<provides> <service name="Terminal"/> </provides>
@ -100,13 +145,16 @@ set config {
</libc>
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="test-terminal_echo">
<resource name="RAM" quantum="1M"/>
</start>
<start name="vfs">
<resource name="RAM" quantum="10M"/>
<provides><service name="File_system"/></provides>
@ -115,6 +163,7 @@ set config {
<default-policy root="/" writeable="yes"/>
</config>
</start>
<start name="vfs_rom">
<resource name="RAM" quantum="10M"/>
<binary name="fs_rom"/>
@ -125,6 +174,7 @@ set config {
<any-service> <parent/> </any-service>
</route>
</start>
<start name="/bin/bash" caps="500">
<resource name="RAM" quantum="64M"/>
<config verbose="yes">
@ -171,7 +221,7 @@ if {![file exists bin/ed25519_key]} {
# generic modules
set boot_modules {
core ld.lib.so init timer ipxe_nic_drv rtc_drv report_rom vfs fs_rom
test-terminal_echo
test-terminal_echo nic_router
libc.lib.so libm.lib.so vfs.lib.so
vfs_lxip.lib.so lxip.lib.so

View File

@ -17,6 +17,7 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/nic_router \
[depot_user]/src/vfs \
[depot_user]/src/vfs_lwip \
[depot_user]/src/vfs_pipe
@ -49,9 +50,46 @@ install_config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="tcp_terminal" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="8888" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="tcp_terminal" caps="200">
<resource name="RAM" quantum="8M"/>
@ -65,6 +103,10 @@ install_config {
</vfs>
<libc stdout="/dev/log" socket="/socket" pipe="/pipe"/>
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="test-terminal_echo">
<resource name="RAM" quantum="1M"/>

View File

@ -20,9 +20,8 @@ using namespace Sculpt;
void Graph::_gen_selected_node_content(Xml_generator &xml, Start_name const &name,
Runtime_state::Info const &info) const
{
bool const removable = _deploy_children.exists(name);
if (_deploy_children.exists(name)) {
if (removable) {
gen_named_node(xml, "frame", "operations", [&] () {
xml.node("hbox", [&] () {
gen_named_node(xml, "button", "remove", [&] () {
@ -36,6 +35,19 @@ void Graph::_gen_selected_node_content(Xml_generator &xml, Start_name const &nam
xml.attribute("text", "Restart"); }); });
});
});
} else if (name == "nic_drv" ||
name == "wifi_drv") {
gen_named_node(xml, "frame", "operations", [&] () {
xml.node("hbox", [&] () {
gen_named_node(xml, "button", "restart", [&] () {
_action_item.gen_button_attr(xml, "restart");
xml.node("label", [&] () {
xml.attribute("text", "Restart"); }); });
});
});
}
if (name == "ram_fs")

View File

@ -650,10 +650,23 @@ struct Sculpt::Main : Input_event_handler,
*/
void restart_deployed_component(Start_name const &name) override
{
_runtime_state.restart(name);
if (name == "nic_drv") {
/* update config/managed/deploy with the component 'name' removed */
_deploy.update_managed_deploy_config(_manual_deploy_rom.xml());
_network.restart_nic_drv_on_next_runtime_cfg();
generate_runtime_config();
} else if (name == "wifi_drv") {
_network.restart_wifi_drv_on_next_runtime_cfg();
generate_runtime_config();
} else {
_runtime_state.restart(name);
/* update config/managed/deploy with the component 'name' removed */
_deploy.update_managed_deploy_config(_manual_deploy_rom.xml());
}
}
/*

View File

@ -18,7 +18,7 @@
void Sculpt::Network::_generate_nic_router_uplink(Xml_generator &xml,
char const *label)
{
xml.node("uplink", [&] () {
xml.node("policy", [&] () {
xml.attribute("label", label);
xml.attribute("domain", "uplink");
});
@ -90,8 +90,8 @@ void Sculpt::Network::_generate_nic_router_config()
bool uplink_exists = true;
switch (_nic_target.type()) {
case Nic_target::WIRED: _generate_nic_router_uplink(xml, "wired"); break;
case Nic_target::WIFI: _generate_nic_router_uplink(xml, "wifi"); break;
case Nic_target::WIRED: _generate_nic_router_uplink(xml, "nic_drv -> "); break;
case Nic_target::WIFI: _generate_nic_router_uplink(xml, "wifi_drv -> "); break;
default: uplink_exists = false;
}
gen_named_node(xml, "domain", "default", [&] () {
@ -187,17 +187,17 @@ void Sculpt::Network::_handle_nic_router_config(Xml_node config)
if (domain.attribute_value("name", String<16>()) != "uplink")
return;
config.for_each_sub_node("uplink", [&] (Xml_node uplink) {
config.for_each_sub_node("policy", [&] (Xml_node uplink) {
/* skip uplinks not assigned to a domain called "uplink" */
if (uplink.attribute_value("domain", String<16>()) != "uplink")
return;
if (uplink.attribute_value("label", String<16>()) == "wired") {
if (uplink.attribute_value("label", String<16>()) == "nic_drv -> ") {
target = Nic_target::WIRED;
throw Break();
}
if (uplink.attribute_value("label", String<16>()) == "wifi") {
if (uplink.attribute_value("label", String<16>()) == "wifi_drv -> ") {
target = Nic_target::WIFI;
throw Break();
}
@ -216,14 +216,36 @@ void Sculpt::Network::_handle_nic_router_config(Xml_node config)
void Sculpt::Network::gen_runtime_start_nodes(Xml_generator &xml) const
{
if (_use_nic_drv)
xml.node("start", [&] () { gen_nic_drv_start_content(xml); });
switch (_nic_target.type()) {
case Nic_target::WIRED:
if (_use_wifi_drv)
xml.node("start", [&] () { gen_wifi_drv_start_content(xml); });
if (_nic_target.type() != Nic_target::OFF)
xml.node("start", [&] () {
gen_nic_router_start_content(xml, _nic_target,
_use_nic_drv, _use_wifi_drv); });
xml.attribute("version", _nic_drv_version);
gen_nic_drv_start_content(xml);
});
xml.node("start", [&] () { gen_nic_router_start_content(xml); });
break;
case Nic_target::WIFI:
xml.node("start", [&] () {
xml.attribute("version", _wifi_drv_version);
gen_wifi_drv_start_content(xml);
});
xml.node("start", [&] () { gen_nic_router_start_content(xml); });
break;
case Nic_target::LOCAL:
xml.node("start", [&] () { gen_nic_router_start_content(xml); });
break;
case Nic_target::OFF:
break;
case Nic_target::UNDEFINED:
break;
}
}

View File

@ -49,8 +49,8 @@ struct Sculpt::Network : Network_dialog::Action
Wpa_passphrase wpa_passphrase { };
bool _use_nic_drv = false;
bool _use_wifi_drv = false;
unsigned _nic_drv_version = 0;
unsigned _wifi_drv_version = 0;
Attached_rom_dataspace _wlan_accesspoints_rom {
_env, "report -> runtime/wifi_drv/accesspoints" };
@ -143,13 +143,6 @@ struct Sculpt::Network : Network_dialog::Action
*/
void nic_target(Nic_target::Type const type) override
{
/*
* Start drivers on first use but never remove them to avoid
* driver-restarting issues.
*/
if (type == Nic_target::WIFI) _use_wifi_drv = true;
if (type == Nic_target::WIRED) _use_nic_drv = true;
if (type != _nic_target.managed_type) {
_nic_target.managed_type = type;
_generate_nic_router_config();
@ -191,6 +184,16 @@ struct Sculpt::Network : Network_dialog::Action
});
}
void restart_nic_drv_on_next_runtime_cfg()
{
_nic_drv_version++;
}
void restart_wifi_drv_on_next_runtime_cfg()
{
_wifi_drv_version++;
}
void wifi_disconnect() override
{
/*

View File

@ -72,7 +72,7 @@ namespace Sculpt {
void gen_nic_drv_start_content(Xml_generator &);
void gen_wifi_drv_start_content(Xml_generator &);
void gen_nic_router_start_content(Xml_generator &, Nic_target const &, bool, bool);
void gen_nic_router_start_content(Xml_generator &);
void gen_nic_router_uplink(Xml_generator &, char const *);
struct Prepare_version { unsigned value; };

View File

@ -12,17 +12,21 @@
*/
#include <runtime.h>
#include <uplink_session/uplink_session.h>
void Sculpt::gen_nic_drv_start_content(Xml_generator &xml)
{
gen_common_start_content(xml, "nic_drv", Cap_quota{300}, Ram_quota{16*1024*1024});
gen_named_node(xml, "resource", "CPU", [&] () { xml.attribute("quantum", "50"); });
gen_provides<Nic::Session>(xml);
xml.node("config", [&] () { });
xml.node("config", [&] () { xml.attribute("mode", "uplink_client"); });
xml.node("route", [&] () {
gen_service_node<Uplink::Session>(xml, [&] () {
xml.node("child", [&] () {
xml.attribute("name", "nic_router"); }); });
gen_service_node<Platform::Session>(xml, [&] () {
xml.node("parent", [&] () {
xml.attribute("label", "nic"); }); });

View File

@ -18,10 +18,7 @@
#include <runtime.h>
void Sculpt::gen_nic_router_start_content(Xml_generator &xml,
Nic_target const &nic_target,
bool nic_drv_present,
bool wifi_drv_present)
void Sculpt::gen_nic_router_start_content(Xml_generator &xml)
{
gen_common_start_content(xml, "nic_router",
Cap_quota{300}, Ram_quota{10*1024*1024});
@ -36,28 +33,6 @@ void Sculpt::gen_nic_router_start_content(Xml_generator &xml,
});
xml.node("route", [&] () {
auto gen_nic_route = [&] (char const *label, char const *server) {
gen_service_node<Nic::Session>(xml, [&] () {
xml.attribute("label", label);
gen_named_node(xml, "child", server); }); };
/*
* Define primary dependency first (for the graph layout), according to
* the selected NIC target. We still keep routes to both NIC driver to
* accommodate the NIC router in the intermediate phase when switching
* the NIC target.
*/
if (nic_target.wifi()) {
if (wifi_drv_present) gen_nic_route("wifi", "wifi_drv");
if (nic_drv_present) gen_nic_route("wired", "nic_drv");
}
if (nic_target.wired()) {
if (nic_drv_present) gen_nic_route("wired", "nic_drv");
if (wifi_drv_present) gen_nic_route("wifi", "wifi_drv");
}
gen_parent_rom_route(xml, "nic_router");
gen_parent_rom_route(xml, "ld.lib.so");
gen_parent_rom_route(xml, "config", "config -> managed/nic_router");
@ -67,15 +42,5 @@ void Sculpt::gen_nic_router_start_content(Xml_generator &xml,
gen_parent_route<Log_session> (xml);
gen_parent_route<Timer::Session> (xml);
gen_parent_route<Report::Session> (xml);
/*
* If the NIC target is set to local, we define the route to the
* drivers down here be avoid presenting it as primary route in the
* deploy graph.
*/
if (nic_target.local()) {
if (nic_drv_present) gen_nic_route("wired", "nic_drv");
if (wifi_drv_present) gen_nic_route("wifi", "wifi_drv");
}
});
}

View File

@ -17,10 +17,10 @@ void Sculpt::gen_wifi_drv_start_content(Xml_generator &xml)
{
gen_common_start_content(xml, "wifi_drv", Cap_quota{200}, Ram_quota{32*1024*1024});
gen_provides<Nic::Session>(xml);
xml.node("config", [&] () {
xml.attribute("mode", "uplink_client");
xml.node("vfs", [&] () {
gen_named_node(xml, "dir", "dev", [&] () {
xml.node("null", [&] () {});
@ -40,6 +40,14 @@ void Sculpt::gen_wifi_drv_start_content(Xml_generator &xml)
});
xml.node("route", [&] () {
xml.node("service", [&] () {
xml.attribute("name", "Uplink");
xml.node("child", [&] () {
xml.attribute("name", "nic_router");
});
});
gen_service_node<Platform::Session>(xml, [&] () {
xml.node("parent", [&] () {
xml.attribute("label", "wifi"); }); });

View File

@ -46,6 +46,7 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/src/fetchurl \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/nic_router \
[depot_user]/src/libcrypto \
[depot_user]/src/libssh \
[depot_user]/src/libssl \
@ -82,11 +83,44 @@ install_config {
<resource name="RAM" quantum="32M"/>
<binary name="init"/>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<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="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="fetchurl" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2" dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="report_rom">

View File

@ -10,6 +10,7 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/posix \
[depot_user]/src/nic_router \
[depot_user]/src/vfs \
[depot_user]/src/vfs_lwip \
[depot_user]/src/zlib
@ -44,9 +45,45 @@ install_config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="test-libc_getaddrinfo" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="test-libc_getaddrinfo" caps="256">
@ -62,6 +99,10 @@ install_config {
<arg value="hypervisor.org"/>
<arg value="example.com"/>
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>
}

View File

@ -33,6 +33,7 @@ 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_router \
[depot_user]/src/libc \
[depot_user]/src/vfs_lwip \
[depot_user]/src/vfs
@ -65,9 +66,48 @@ install_config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes"
dhcp_discover_timeout_sec="1">
<policy label_prefix="test-lwip_httpsrv" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="443" domain="downlink" to="10.0.3.2"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2"
ip_last="10.0.3.2"
dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="test-lwip_httpsrv" caps="120" priority="-1">
@ -79,6 +119,10 @@ install_config {
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" socket="/socket"/>
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>
}
@ -98,9 +142,9 @@ run_genode_until {.*Start the server loop.*\n} 30
if {[have_include "power_on/qemu"]} {
set uri "http://localhost:5555/"
} else {
set match_string "lwIP Nic interface up address=.* netmask.*\n"
set match_string "nic_router. .uplink. dynamic IP config: interface .*\n"
regexp $match_string $output ip_addr
regexp {[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+} $ip_addr ip_addr
regexp {[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+} $ip_addr ip_addr
set uri "http://$ip_addr:80/"
}

View File

@ -1,3 +1,25 @@
#
# To execute this run script on your Linux host you have to do some
# preparation:
#
# !) Setup a TAP device:
# ! export USER=[YOUR_USER_NAME]
# ! export TAP_DEV=tap0
# ! sudo ip tuntap add dev $TAP_DEV mode tap USER $USER
# ! sudo ip address flush dev $TAP_DEV
# ! sudo ip address add 10.0.2.1/24 brd 10.0.2.255 dev $TAP_DEV
# ! sudo ip link set dev $TAP_DEV addr 02:00:00:ca:fe:01
# ! sudo ip link set dev $TAP_DEV up
#
# 2) Now, start the test and connect using your favorite HTTP client, e.g.:
# ! cd <GENODE_DIR>/build/x86_64
# ! make run/lwip_lx KERNEL=linux BOARD=linux
# ! lynx -dump http://10.0.2.55
#
# 3) Clean up your Linux when done testing:
# ! sudo ip tuntap delete $TAP_DEV mode tap
#
assert_spec linux
#
@ -9,6 +31,7 @@ build {
drivers/nic
test/lwip/http_srv
lib/vfs/lwip
server/nic_router
}
create_boot_directory
@ -19,6 +42,7 @@ create_boot_directory
set config {
<config verbose="yes">
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
@ -29,28 +53,66 @@ set config {
<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="linux_nic_drv" ld="no">
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="test-lwip_httpsrv" domain="downlink"/>
<policy label_prefix="linux_nic_drv" domain="uplink"/>
<domain name="uplink" interface="10.0.2.55/24" gateway="10.0.2.1">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="443" domain="downlink" to="10.0.3.2"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24"/>
</config>
</start>
<start name="test-lwip_httpsrv">
<resource name="RAM" quantum="5M"/>
<config ld_verbose="true">
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket"> <lwip ip_addr="10.0.2.55" netmask="255.255.255.0"/> </dir>
<dir name="socket"> <lwip ip_addr="10.0.3.2" netmask="255.255.255.0" gateway="10.0.3.1"/> </dir>
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" socket="/socket"/>
</config>
</start>
</config>
}
@ -63,6 +125,7 @@ install_config $config
set boot_modules {
core init timer linux_nic_drv
ld.lib.so libc.lib.so vfs.lib.so vfs_lwip.lib.so test-lwip_httpsrv
nic_router
}
build_boot_image $boot_modules

View File

@ -6,6 +6,7 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/src/dynamic_rom \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/nic_router \
[depot_user]/src/vfs_audit \
[depot_user]/src/vfs_lxip \
[depot_user]/src/vfs
@ -38,10 +39,53 @@ append config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start> }
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="socket_fs" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink" interface="10.0.2.55/24" gateway="10.0.2.1">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.55"/>
<tcp-forward port="8080" domain="downlink" to="10.0.3.55"/>
<udp-forward port="7" domain="downlink" to="10.0.3.55"/>
<udp-forward port="7070" domain="downlink" to="10.0.3.55"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.55" ip_last="10.0.3.55">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
}
append_if [use_dynamic_rom] config {
<start name="dynamic_rom">
@ -74,18 +118,25 @@ append_if [use_dynamic_rom] config {
</start>}
append config {
<start name="socket_fs" caps="200">
<binary name="vfs"/>
<resource name="RAM" quantum="32M"/>
<provides> <service name="File_system"/> </provides>}
<provides> <service name="File_system"/> </provides>
<route>
<service name="Nic"> <child name="nic_router"/> </service> }
if {[use_dynamic_rom]} { append config {
<route>
<service name="ROM" label="config">
<child name="dynamic_rom" label="socket_fs.config"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>}
</route> }
} else { append config {
<any-service> <parent/> <any-child/> </any-service>
</route>
<config ld_verbose="yes">
<vfs>
<dir name="socket">
@ -94,12 +145,12 @@ if {[use_dynamic_rom]} { append config {
</dir>
</vfs>
<default-policy root="/socket" writeable="yes" />
</config>}
</config> }
}
append config {
</start>
}
</start> }
append qemu_args " -nographic "
append_qemu_nic_args

View File

@ -3,12 +3,14 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/nic_router \
[depot_user]/src/vfs_audit \
[depot_user]/src/vfs_lwip \
[depot_user]/src/vfs
append config {
<config verbose="yes">
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
@ -20,36 +22,84 @@ append config {
<service name="LOG"/>
<service name="SIGNAL"/>
</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>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="socket_fs" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink" interface="10.0.2.55/24" gateway="10.0.2.1">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.55"/>
<tcp-forward port="8080" domain="downlink" to="10.0.3.55"/>
<udp-forward port="7" domain="downlink" to="10.0.3.55"/>
<udp-forward port="7070" domain="downlink" to="10.0.3.55"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.55" ip_last="10.0.3.55">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="socket_fs" caps="200">
<binary name="vfs"/>
<resource name="RAM" quantum="32M"/>
<provides> <service name="File_system"/> </provides>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="ROM" label="socket_fs.config"> <child name="dynamic_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
<config ld_verbose="yes">
<vfs>
<dir name="lwip">
<lwip ip_addr="10.0.2.55" netmask="255.255.255.0" gateway="10.0.2.1" nameserver="8.8.8.8"/>
<lwip ip_addr="10.0.3.55" netmask="255.255.255.0" gateway="10.0.3.1" nameserver="8.8.8.8"/>
<!-- <lwip dhcp="yes"/> -->
</dir>
<dir name="socket">

View File

@ -32,7 +32,7 @@ append config {
<start name="netty-client-A">
<binary name="test-netty_tcp"/>
<resource name="RAM" quantum="4M"/>
<config ld_verbose="yes" mode="client" ip="10.0.2.1" port="8080">
<config ld_verbose="yes" mode="client" ip="10.0.3.1" port="8080">
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket"> <fs/> </dir>
@ -44,7 +44,7 @@ append config {
<start name="netty-client-B">
<binary name="test-netty_tcp"/>
<resource name="RAM" quantum="4M"/>
<config ld_verbose="yes" mode="client" ip="10.0.2.1" port="13002">
<config ld_verbose="yes" mode="client" ip="10.0.3.1" port="13002">
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket"> <fs/> </dir>

View File

@ -32,7 +32,7 @@ append config {
<start name="netty-client-A">
<binary name="test-netty_tcp"/>
<resource name="RAM" quantum="4M"/>
<config ld_verbose="yes" mode="client" ip="10.0.2.1" port="8080">
<config ld_verbose="yes" mode="client" ip="10.0.3.1" port="8080">
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket"> <fs/> </dir>
@ -44,7 +44,7 @@ append config {
<start name="netty-client-B">
<binary name="test-netty_tcp"/>
<resource name="RAM" quantum="4M"/>
<config ld_verbose="yes" mode="client" ip="10.0.2.1" port="13002">
<config ld_verbose="yes" mode="client" ip="10.0.3.1" port="13002">
<vfs>
<dir name="dev"> <log/> </dir>
<dir name="socket"> <fs/> </dir>

View File

@ -11,7 +11,7 @@ if {[have_board rpi3]} {
create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/nic_router \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/nic_bridge \
@ -42,15 +42,23 @@ install_config {
<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 name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="nic_bridge" domain="downlink"/>
<domain name="downlink" interface="10.0.2.1/24">
<dhcp-server ip_first="10.0.2.100" ip_last="10.0.2.200"/>
</domain>
</config>
</start>
<start name="nic_bridge" caps="200">
@ -63,7 +71,7 @@ install_config {
<policy label_prefix="client_2" mac="02:02:02:02:79:00"/>
</config>
<route>
<service name="Nic"> <child name="drivers"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>

View File

@ -14,6 +14,7 @@ create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/nic_router \
[depot_user]/src/init
build { app/sntp_client server/report_rom }
@ -54,14 +55,53 @@ append config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="sntp_client" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2"
ip_last="10.0.3.2"
dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="sntp_client">
<resource name="RAM" quantum="8M"/>
<config verbose="no" dst_ip="} $ntp_ip {" period_min="1"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}

View File

@ -8,18 +8,15 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="nic_drv"/> </default-policy> </service>
<start name="nic_drv" ld="no">
<binary name="linux_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<config/>
<config mode="uplink_client"/>
<route> <any-service> <parent/> </any-service> </route>
</start>
</config>

View File

@ -8,13 +8,11 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="nic_drv"/> </default-policy> </service>
<start name="platform_drv">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Platform"/> </provides>
@ -40,17 +38,17 @@
<start name="nic_drv">
<binary name="lan9118_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<config mmio_base="0x4e000000" irq="60" />
<config mode="uplink_client" mmio_base="0x4e000000" irq="60" />
<route>
<service name="Platform">
<child name="platform_drv"/>
</service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
</route>
</start>
</config>

View File

@ -8,13 +8,11 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="virtio_mmio_nic"/> </default-policy> </service>
<start name="virtdev_rom">
<resource name="RAM" quantum="640K"/>
<provides> <service name="ROM"/> </provides>
@ -38,8 +36,8 @@
</start>
<start name="virtio_mmio_nic">
<resource name="RAM" quantum="640K"/>
<provides> <service name="Nic"/> </provides>
<resource name="RAM" quantum="4M"/>
<config mode="uplink_client"/>
<route>
<service name="Platform">
<child name="platform_drv"/>
@ -48,6 +46,7 @@
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="Uplink"> <parent/> </service>
</route>
</start>

View File

@ -1,4 +1,5 @@
<config>
<parent-provides>
<service name="IRQ"/>
<service name="IO_MEM"/>
@ -8,18 +9,16 @@
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Uplink"/>
</parent-provides>
<default caps="100"/>
<service name="Nic">
<default-policy> <child name="nic_drv"/> </default-policy> </service>
<start name="nic_drv">
<binary name="zynq_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<config/>
<config mode="uplink_client"/>
<route> <any-service> <parent/> </any-service> </route>
</start>
</config>

View File

@ -27,7 +27,9 @@ proc bad_dst_port { } { return "12345" }
proc bad_dst_ip { } { return "10.0.1.2" }
append config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
@ -38,9 +40,11 @@ append config {
<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">
@ -54,16 +58,48 @@ append config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router_1"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_dump" priority="-1" caps="120">
<resource name="RAM" quantum="6M"/>
<start name="nic_router_1" caps="200">
<binary name="nic_router"/>
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config dhcp_discover_timeout_sec="1">
<policy label_prefix="nic_dump" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink" icmp-ids="100" udp-ports="100"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2"/>
<icmp dst="} [good_dst_ip] {/24" domain="uplink"/>
<udp dst="} [good_dst_ip] {/24">
<permit port="} [bad_dst_port] {" domain="uplink"/>
</udp>
</domain>
</config>
</start>
<start name="nic_dump" caps="200">
<resource name="RAM" quantum="10M"/>
<provides><service name="Nic"/></provides>
<config uplink="bridge"
downlink="router"
<config uplink="uplink"
downlink="downlink"
time="yes"
default="name"
eth="name"
@ -74,21 +110,19 @@ append config {
icmp="all"
tcp="default" />
<route>
<service name="Nic"> <child name="drivers"/> </service>
<service name="Nic"> <child name="nic_router_1"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<start name="nic_router_2" caps="200">
<binary name="nic_router"/>
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose="no"
verbose_packets="no"
dhcp_discover_timeout_sec="1"
icmp_idle_timeout_sec="6">
<config>
<policy label_prefix="ping_1" domain="ping_1"/>
<policy label_prefix="ping_2" domain="ping_2"/>
@ -124,9 +158,7 @@ append config {
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose="no"
verbose_packets="no"
icmp_idle_timeout_sec="10">
<config>
<policy label_prefix="ping_2" domain="ping_2"/>
<uplink domain="uplink"/>
@ -148,7 +180,7 @@ append config {
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Nic"> <child name="nic_router_2"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
@ -162,7 +194,7 @@ append config {
period_sec="1"
verbose="no"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Nic"> <child name="nic_router_2"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
@ -176,7 +208,7 @@ append config {
period_sec="1"
verbose="no"/>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Nic"> <child name="nic_router_2"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
@ -219,9 +251,10 @@ append config {
<service name="Nic"> <child name="ping_2_nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>}
</start> }
append_if $on_hardware config {
<start name="ping_23">
<binary name="ping"/>
<resource name="RAM" quantum="8M"/>
@ -235,10 +268,11 @@ append_if $on_hardware config {
<service name="Nic"> <child name="ping_2_nic_bridge"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>}
</start> }
append config {
</config>}
</config> }
install_config $config
build_boot_image { ping nic_dump }

View File

@ -44,9 +44,9 @@ append config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router">
@ -57,8 +57,8 @@ append config {
</provides>
<config>
<policy label_prefix="ping" domain="downlink"/>
<uplink domain="uplink"/>
<policy label_prefix="ping" domain="downlink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink" use_arp="no" verbose_packets="yes">
<nat domain="downlink" icmp-ids="100"/>
@ -69,10 +69,6 @@ append config {
</domain>
</config>
<route>
<service name="Nic"> <child name="drivers"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="ping">
@ -99,7 +95,7 @@ append_qemu_nic_args
set done_string ".*child \"ping\" exited with exit value 0.*\n"
run_genode_until $done_string 10
run_genode_until $done_string 30
grep_output { ARP }
compare_output_to {}

View File

@ -57,9 +57,9 @@ install_config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="dynamic_rom">
@ -80,7 +80,7 @@ install_config {
<policy label_prefix="flood_links" domain="flood_links"/>
<policy label_prefix="ping" domain="flood_links"/>
<uplink domain="uplink"/>
<policy label_prefix="drivers" 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"
@ -114,7 +114,7 @@ install_config {
<policy label_prefix="flood_links" domain="flood_links"/>
<policy label_prefix="ping" domain="flood_links"/>
<uplink domain="uplink"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink" verbose_packets="no">
<nat domain="flood_links" udp-ports="16384"
@ -148,7 +148,6 @@ install_config {
</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>

View File

@ -66,7 +66,7 @@ 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 }
@ -87,7 +87,9 @@ proc dst_ip { } {
}
append config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
@ -98,9 +100,11 @@ append config {
<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">
@ -113,26 +117,43 @@ append config {
<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="nic_bridge" caps="200">
<resource name="RAM" quantum="10M"/>
<provides><service name="Nic"/></provides>
<config mac="02:02:02:02:03:00">
<policy label_prefix="ping_1"/>
<policy label_prefix="ping_2"/>
</config>
<route>
<service name="Nic"> <child name="drivers"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>}
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config dhcp_discover_timeout_sec="1">
<policy label_prefix="drivers" domain="uplink"/>
<policy label_prefix="ping" domain="downlink"/>
<domain name="uplink">
<nat domain="downlink" icmp-ids="100" udp-ports="100"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.100" ip_last="10.0.3.200"/>
<icmp dst="} [dst_ip] {/24" domain="uplink"/>
<udp dst="} [dst_ip] {/24">
<permit port="12345" domain="uplink"/>
</udp>
</domain>
</config>
</start> }
append_if $second_ping_via_udp config {
<start name="ping_2">
<binary name="ping"/>
<resource name="RAM" quantum="8M"/>
@ -143,12 +164,13 @@ append_if $second_ping_via_udp config {
dst_ip="} [dst_ip] {"
dst_port="12345"/>
<route>
<service name="Nic"> <child name="nic_bridge"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>}
</start> }
append config {
<start name="ping_1">
<binary name="ping"/>
<resource name="RAM" quantum="8M"/>
@ -157,11 +179,12 @@ append config {
verbose="no"
count="3"/>
<route>
<service name="Nic"> <child name="nic_bridge"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}
</config> }
install_config $config
build_boot_image { ping }

View File

@ -54,9 +54,9 @@ append config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
@ -70,9 +70,9 @@ append config {
dhcp_discover_timeout_sec="1"
icmp_idle_timeout_sec="6">
<policy label_prefix="ping_1" domain="ping_1"/>
<policy label_prefix="ping_2" domain="ping_2"/>
<uplink domain="uplink"/>
<policy label_prefix="ping_1" domain="ping_1"/>
<policy label_prefix="ping_2" domain="ping_2"/>
<policy label_prefix="drivers" domain="uplink"/>
<domain name="uplink">
<nat domain="ping_1" icmp-ids="100"/>
@ -94,10 +94,6 @@ append config {
</domain>
</config>
<route>
<service name="Nic"> <child name="drivers"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="ping_2_nic_router" caps="200">

View File

@ -46,7 +46,10 @@ install_config {
<start name="nic_drv">
<binary name="nic_router" />
<resource name="RAM" quantum="8M"/>
<provides> <service name="Nic"/> </provides>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config>
<default-policy domain="default"/>
<domain name="default" interface="10.0.1.1/24">

View File

@ -13,6 +13,7 @@ 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_router \
[depot_user]/src/libc \
[depot_user]/src/libcrypto \
[depot_user]/src/libssh \
@ -51,9 +52,47 @@ install_config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="lighttpd" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink" interface="10.0.2.55/24" gateway="10.0.2.1">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="lighttpd" caps="1000">
@ -75,7 +114,12 @@ install_config {
<libc stdin="/dev/null" stdout="/dev/log" stderr="/dev/log"
socket="/socket" />
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}
#

View File

@ -24,6 +24,7 @@ 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_router \
[depot_user]/src/libc \
[depot_user]/src/libcrypto \
[depot_user]/src/libssh \
@ -62,9 +63,47 @@ install_config {
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="lighttpd" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="80" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="lighttpd" caps="200">
@ -173,6 +212,12 @@ EpA5DBBklj8UE2CdONvN
<libc stdin="/dev/null" stdout="/dev/log" stderr="/dev/log"
rtc="/dev/rtc/" rng="/dev/random" socket="/socket"/>
</config>
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}

View File

@ -5,19 +5,8 @@
# \date 2013-04-18
#
if {[expr $use_nic_bridge && $use_nic_router]} {
puts "Cannot test with both NIC bridge and NIC router.";
exit 0
}
if {[get_cmd_switch --autopilot] && [have_include "power_on/qemu"]} {
puts "\nRunning netperf in autopilot on Qemu is not recommended.\n"
exit
}
if {[have_include "power_on/qemu"] &&
[expr $use_nic_bridge || $use_nic_router || $use_usb_driver || $use_wifi_driver]} {
puts "Cannot test this configuration on qemu.";
if {[have_include "power_on/qemu"]} {
puts "\nRun script does not support Qemu.\n"
exit 0
}
@ -26,7 +15,7 @@ if {[have_board imx53_qsb_tz]} {
exit 0
}
set bridge_mac "02:02:02:02:02:00"
set bridge_mac "02:02:02:02:16:00"
# autopilot: configure disjoint mac-address ranges for x86_32, x86_64, and others
if {[get_cmd_switch --autopilot]} {
@ -74,14 +63,13 @@ set packages "
[depot_user]/src/libc
[depot_user]/src/posix
[depot_user]/src/vfs
[depot_user]/src/nic_router
"
append_if [expr !$use_lxip] packages " [depot_user]/src/vfs_lwip "
append_if $use_lxip packages " [depot_user]/src/vfs_lxip "
append_if $use_nic_bridge packages " [depot_user]/src/nic_bridge "
append_if $use_nic_router packages " [depot_user]/src/nic_router "
append_if $use_usb_driver packages " [depot_user]/src/platform_drv "
append_if $use_usb_driver packages " [depot_user]/src/usb_drv "
append_if $use_wifi_driver packages " [depot_user]/src/fs_rom "
append_if $use_wifi_driver packages " [depot_user]/src/vfs_import "
append_if $use_wifi_driver packages " [depot_user]/src/report_rom "
@ -93,7 +81,12 @@ append_if $use_wifi_driver packages " [depot_user]/raw/wifi_firmware "
import_from_depot $packages
build { app/netperf }
set build_components { app/netperf }
append_if $use_usb_driver build_components " drivers/usb_host "
append_if $use_usb_driver build_components " drivers/usb_net "
build $build_components
#
# Generate config
@ -106,7 +99,7 @@ proc platform_drv_policy {} {
global use_wifi_driver
if { $use_wifi_driver } {
return {<policy label_prefix="nic_drv"> <pci class="WIFI"/> </policy>}}
return {<policy label_prefix="nic_drv"> <pci class="USB"/> </policy>}
return {<policy label_prefix="usb_host_drv"> <pci class="USB"/> </policy>}
}
set config {
@ -171,9 +164,8 @@ append config { </wifi_config>
<start name="nic_drv" caps="300">
<binary name="wifi_drv"/>
<resource name="RAM" quantum="24M"/>
<provides> <service name="Nic"/> </provides>
<config>
<resource name="RAM" quantum="32M"/>
<config mode="uplink_client">
<libc stdout="/dev/null" stderr="/dev/log" rtc="/dev/rtc"/>
<vfs>
<dir name="dev">
@ -189,88 +181,133 @@ append config { </wifi_config>
<service name="File_system"> <child name="config_fs"/> </service>
<service name="ROM" label="wifi_config"> <child name="config_rom" /> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child /> </any-service>
</route>
</start>}
} elseif { $use_usb_driver } {
append_platform_drv_config
append config {
<start name="nic_drv" caps="150">
<binary name="usb_drv"/>
<resource name="RAM" quantum="18M"/>
<provides><service name="Nic"/></provides>
<config uhci="no" ehci="no" xhci="yes">
<nic mac="02:00:00:00:01:01" />
</config>
</start> }
} else {
<start name="usb_host_drv" caps="120"> }
append config "<binary name=\"[usb_host_drv_binary]\"/>"
append config {
<resource name="RAM" quantum="12M"/>
<provides> <service name="Usb"/> </provides>
<config bios_handoff="yes"> }
append_if [have_board arndale] config {
<policy label_prefix="nic_drv" vendor_id="0x0b95" product_id="0x772a"/> }
append_if [have_board rpi] config {
<policy label_prefix="nic_drv" vendor_id="0x0424" product_id="0xec00"/> }
append_if [have_spec x86] config {
<policy label_prefix="nic_drv" vendor_id="0x0b95" product_id="0x1790"/> }
append config {
</config>
<route>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_drv" caps="200">
<binary name="usb_net_drv"/>
<resource name="RAM" quantum="20M"/>
<config mode="uplink_client" mac="02:00:00:00:01:01" />
<route>
<service name="Uplink"><child name="nic_router"/></service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start> }
} else {
append config {
<start name="nic_drv" 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>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="Nic"/> </provides>
</start> }
}
append_if $use_nic_router config {
append config {
<start name="nic_router" caps="120">
<resource name="RAM" quantum="5M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<config verbose_domain_state="yes"> }
<policy label_prefix="netserver_genode" domain="server"/>
<uplink domain="uplink"/>
if {$use_nic_bridge} { append config {
<policy label_prefix="nic_bridge" domain="server"/> }
} else { append config {
<policy label_prefix="netserver_genode" domain="server"/> }
}
append config {
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink" }
append_if [have_spec linux] config "
interface=\"$lx_ip_addr/24\" gateway=\"10.0.2.1\""
append config {
<domain name="uplink"}
append_if [expr $use_nic_router && [have_spec linux]] config "
interface=\"$lx_ip_addr/24\" gateway=\"10.0.2.1\""
append_if $use_nic_router config {
>
<nat domain="server" tcp-ports="100" />
<tcp-forward port="12864" domain="server" to="10.0.3.2" />
<tcp-forward port="12865" domain="server" to="10.0.3.2" />
</domain>
<domain name="server" interface="10.0.3.1/24">
<domain name="server" interface="10.0.3.1/24" verbose_packets="no">
<dhcp-server ip_first="10.0.3.2"
ip_last="10.0.3.2"
ip_lease_time_sec="600"/>
</domain>
</config>
<route>
<service name="Nic"> <child name="nic_drv"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
}
</start> }
append_if $use_nic_bridge config {
<start name="nic_bridge">
<resource name="RAM" quantum="5M"/>
<provides><service name="Nic"/></provides>
<config mac="} $bridge_mac {">}
append_if [expr $use_nic_bridge && [have_spec linux]] config "
<policy label_prefix=\"netserver_genode\" ip_addr=\"$lx_ip_addr\"/>"
append_if $use_nic_bridge config {
<config mac="} $bridge_mac {">
<default-policy/>
</config>
<route>
<service name="Nic"> <child name="nic_drv"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start> }
append config {
<start name="netserver_genode" caps="320" priority="-1">
<binary name="netserver"/>
<resource name="RAM" quantum="32M"/>
@ -285,34 +322,40 @@ append config {
<log/> <inline name="rtc">2018-01-01 00:01</inline>
</dir>
<dir name="socket">
<} [socket_fs_plugin] { }
if {[expr [have_spec linux] && !$use_nic_router]} {
append config " ip_addr=\"$lx_ip_addr\" netmask=\"255.255.255.0\" gateway=\"10.0.2.1\""
} else {
append config " dhcp=\"yes\""
}
append config {/>
<} [socket_fs_plugin] { dhcp="yes"/>
</dir>
</vfs>
</config>}
append_if $use_nic_bridge config {
</config>
<route>
<service name="Nic"> <child name="nic_bridge"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>}
append_if $use_nic_router config {
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>}
append config {
</start>
</config>
}
if { $use_nic_bridge } {
append config {
<service name="Nic"> <child name="nic_bridge"/> </service> }
} else {
append config {
<service name="Nic"> <child name="nic_router"/> </service> }
}
append config {
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config> }
install_config $config
build_boot_image { netserver }
set boot_modules { netserver }
append_if $use_usb_driver boot_modules " [usb_host_drv_binary] "
append_if $use_usb_driver boot_modules " usb_net_drv "
build_boot_image $boot_modules
#
# Execute test case
@ -322,17 +365,8 @@ build_boot_image { netserver }
append qemu_args " -nographic "
append_qemu_nic_args "hostfwd=tcp::12865-:12865,hostfwd=tcp::49153-:49153"
set ip_match_string ""
set force_ports ""
if $use_lxip {
set ip_match_string "ipaddr=(\[0-9\]+\.\[0-9\]+\.\[0-9\]+\.\[0-9\]+).*\n"
} else {
set ip_match_string "address=(\[0-9\]+\.\[0-9\]+\.\[0-9\]+\.\[0-9\]+).*\n"
}
if $use_nic_router {
set ip_match_string "nic_router\\\] \\\[uplink\\\] dynamic IP config: interface (\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}).*\n"
set force_ports "-P 12864,12864"
}
set ip_match_string "nic_router\\\] \\\[uplink\\\] dynamic IP config: interface (\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}).*\n"
set force_ports "-P 12864,12864"
if {[have_spec linux]} {
run_genode_until {.*family AF_INET.*\n} 60
@ -387,7 +421,6 @@ foreach netperf_test $netperf_tests {
# format output parseable for post proccessing scripts
puts -nonewline "! PERF: $netperf_test"
if {$use_nic_bridge} { puts -nonewline "_bridge" }
if {$use_nic_router} { puts -nonewline "_router" }
if {$use_usb_driver} { puts -nonewline "_xhci" }
puts " [lindex $throughput 1] MBit/s ok"
}

View File

@ -7,7 +7,6 @@
# network configuration
set use_nic_bridge 0
set use_nic_router 0
set use_wifi_driver 0
set use_usb_driver 0
set use_lxip 0

View File

@ -7,7 +7,6 @@
# network configuration
set use_nic_bridge 1
set use_nic_router 0
set use_wifi_driver 0
set use_usb_driver 0
set use_lxip 0

View File

@ -1,15 +0,0 @@
#
# \brief Test using netperf with a NIC router and with a native driver or
# if not available for the platform using usb 3.0 by default
# \author Martin Stein
# \date 2017-12-19
#
# network configuration
set use_nic_bridge 0
set use_nic_router 1
set use_wifi_driver 0
set use_usb_driver 0
set use_lxip 0
source ${genode_dir}/repos/ports/run/netperf.inc

View File

@ -15,7 +15,6 @@ if {[have_include "power_on/qemu"] || [have_include "power_on/linux"]} {
# network configuration
set use_nic_bridge 0
set use_nic_router 0
set use_wifi_driver 0
set use_usb_driver 1
set use_lxip 0

View File

@ -24,7 +24,6 @@ if {[get_cmd_switch --autopilot] && [have_spec x86_32] &&
# network configuration
set use_nic_bridge 0
set use_nic_router 0
set use_wifi_driver 1
set use_usb_driver 0
set use_lxip 0

View File

@ -7,7 +7,6 @@
# network configuration
set use_nic_bridge 0
set use_nic_router 0
set use_wifi_driver 0
set use_usb_driver 0
set use_lxip 1

View File

@ -7,7 +7,6 @@
# network configuration
set use_nic_bridge 1
set use_nic_router 0
set use_wifi_driver 0
set use_usb_driver 0
set use_lxip 1

View File

@ -1,15 +0,0 @@
#
# \brief Test using netperf with a NIC router and with a native driver or
# if not available for the platform using usb 3.0 by default
# \author Martin Stein
# \date 2017-12-19
#
# network configuration
set use_nic_bridge 0
set use_nic_router 1
set use_wifi_driver 0
set use_usb_driver 0
set use_lxip 1
source ${genode_dir}/repos/ports/run/netperf.inc

View File

@ -15,7 +15,6 @@ if {[have_include "power_on/qemu"] || [have_include "power_on/linux"]} {
# network configuration
set use_nic_bridge 0
set use_nic_router 0
set use_wifi_driver 0
set use_usb_driver 1
set use_lxip 1

View File

@ -24,7 +24,6 @@ if {[get_cmd_switch --autopilot] && [have_spec x86_32] &&
# network configuration
set use_nic_bridge 0
set use_nic_router 0
set use_wifi_driver 1
set use_usb_driver 0
set use_lxip 1

View File

@ -32,7 +32,6 @@ set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0
set use_usb 0

View File

@ -19,7 +19,6 @@ set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0
set use_usb 0

View File

@ -22,7 +22,6 @@ set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 1
set use_usb 0

View File

@ -20,7 +20,6 @@ set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0
set use_usb 0

View File

@ -26,7 +26,6 @@ set use_block_sata 0
set use_part_block 0
set use_nic_session 0
set use_nic_bridge 0
set use_usb 0

View File

@ -19,7 +19,6 @@ set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0
set use_usb 0

View File

@ -73,7 +73,7 @@ lappend_if $use_usb build_components drivers/usb
lappend_if $use_vfs_block build_components server/vfs_block
lappend_if $use_drv_ahci build_components drivers/ahci
lappend_if $use_nic_session build_components drivers/nic
lappend_if $use_nic_bridge build_components server/nic_bridge
lappend_if $use_nic_session build_components server/nic_router
lappend_if $use_framebuffer build_components drivers/framebuffer
lappend_if $use_fancy_stuff build_components app/status_bar
lappend_if $use_fancy_stuff build_components app/launchpad
@ -329,23 +329,50 @@ append_if $use_genode_iso config {
append_platform_drv_config
append_if $use_nic_session config {
<start name="nic_drv" priority="-2">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="8M"/>
<provides><service name="Nic"/></provides>
</start>
}
append_if [expr $use_nic_session && $use_nic_bridge] config {
<start name="nic_bridge" priority="-3">
<resource name="RAM" quantum="6M"/>
<provides><service name="Nic"/></provides>
<config> <default-policy/> </config>
<config mode="uplink_client"/>
<route>
<service name="Nic"><child name="nic_drv"/></service>
<any-service><parent/></any-service>
<service name="Uplink"><child name="nic_router"/></service>
<any-service><parent/><any-child/></any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="seoul" domain="downlink"/>
<policy label_prefix="launchpad" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.55" ip_last="10.0.3.155" dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
}
append_if $use_framebuffer config {
@ -376,10 +403,8 @@ append config {
<service name="Timer"><child name="timer"/></service>
<service name="ROM" label="config">
<parent label="vm_seoul.cfg"/> </service>}
append_if [expr $use_nic_session && $use_nic_bridge] config {
<service name="Nic"> <child name="nic_bridge"/> </service>}
append_if [expr $use_nic_session && !$use_nic_bridge] config {
<service name="Nic"> <child name="nic_drv"/> </service>}
append_if [expr $use_nic_session] config {
<service name="Nic"> <child name="nic_router"/> </service>}
append_if $use_genode_iso config {
<service name="ROM" unscoped_label="seoul"> <parent/> </service>
<service name="ROM" unscoped_label="ld.lib.so"> <parent/> </service>
@ -469,7 +494,7 @@ append_if $use_fancy_stuff config {
<start name="launchpad" priority="-2" caps="1500">
<resource name="RAM" quantum="64000M"/>
<route>
<service name="Nic"> <child name="nic_bridge"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="ROM" label="config">
<parent label="launchpad-config"/> </service>
<any-service><parent/><any-child/></any-service>
@ -544,7 +569,7 @@ lappend_if $use_vfs_block boot_modules vfs_block
lappend_if $use_vfs_block boot_modules vfs.lib.so
lappend_if $use_drv_ahci boot_modules ahci_drv
lappend_if $use_nic_session boot_modules ipxe_nic_drv
lappend_if $use_nic_bridge boot_modules nic_bridge
lappend_if $use_nic_session boot_modules nic_router
lappend_if $use_framebuffer boot_modules vesa_fb_drv
lappend_if $use_fancy_stuff boot_modules status_bar

View File

@ -106,6 +106,7 @@ set build_components {
server/report_rom server/fs_rom server/vfs
server/tcp_terminal drivers/nic
lib/vfs/lwip lib/vfs/pipe lib/vfs/import
server/nic_router
}
#
@ -115,7 +116,7 @@ foreach pkg {bash coreutils} {
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
set boot_modules {
vfs fs_rom
vfs fs_rom nic_router
posix.lib.so bash.tar coreutils.tar
tcp_terminal vfs_lwip.lib.so vfs_pipe.lib.so vfs_import.lib.so
ipxe_nic_drv report_rom event_filter
@ -125,10 +126,50 @@ set boot_modules {
append boot_modules $vbox_file
set config_of_app {
<start name="nic_drv" priority="-1">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="Nic"/> </provides>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Uplink"><child name="nic_router"/></service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="nic_drv" domain="uplink"/>
<policy label_prefix="tcp_terminal" domain="downlink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
<tcp-forward port="8888" domain="downlink" to="10.0.3.2"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24">
<dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2" dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<start name="tcp_terminal" priority="-1" caps="200">
@ -143,6 +184,10 @@ set config_of_app {
</vfs>
<libc stdout="/dev/log" socket="/socket" pipe="/pipe"/>
</config>
<route>
<service name="Nic"><child name="nic_router"/></service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="ram_fs_from" priority="-1">
@ -358,7 +403,7 @@ exec cp ${genode_dir}/repos/ports/run/$vbox_file bin/.
build_boot_image $boot_modules
set ip_match_string "address=(\[0-9\]+\.\[0-9\]+\.\[0-9\]+\.\[0-9\]+).*\n"
set ip_match_string "nic_router\\\] \\\[uplink\\\] dynamic IP config: interface (\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}).*\n"
#
# Step 2: Read out TCP/IP address of tcp_terminal running on Genode target

View File

@ -25,6 +25,7 @@ if {[info exists flavor_extension]} {
}
set build_components {
server/nic_router
server/event_filter
drivers/nic
drivers/audio
@ -33,6 +34,7 @@ set build_components {
}
set boot_modules {
nic_router
event_filter
ipxe_nic_drv
pci_audio_drv
@ -73,9 +75,44 @@ set config_of_app {
<start name="nic_drv" priority="-1">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="8M" />
<config mode="uplink_client"/>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child /> </any-service>
</route>
</start>
<start name="nic_router" caps="200">
<resource name="RAM" quantum="10M"/>
<provides>
<service name="Nic" />
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="vbox" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24" verbose_packets="no">
<dhcp-server ip_first="10.0.3.100" ip_last="10.0.3.200" dns_server_from="uplink"/>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start>
<!--

View File

@ -8,8 +8,6 @@ set use_vbox5_nova 0
# use_gui starts two VMs
set use_gui 0
# need a nic bridge for 2 VMs
set use_bridge [expr $use_net && $use_gui]
set build_components {
drivers/framebuffer
@ -42,7 +40,7 @@ lappend_if [expr $use_serial] build_components server/log_terminal
lappend_if [have_spec x86] build_components drivers/rtc
lappend_if [expr $use_net] build_components drivers/nic
lappend_if [expr $use_bridge] build_components server/nic_bridge
lappend_if [expr $use_net] build_components server/nic_router
append_platform_drv_build_components
@ -124,10 +122,49 @@ append_if [have_spec x86] config {
append_if [expr $use_net] config {
<start name="nic_drv" priority="-1">
<binary name="ipxe_nic_drv"/>
<resource name="RAM" quantum="4M"/>
<provides><service name="Nic"/></provides>
<resource name="RAM" quantum="8M"/>
<config mode="uplink_client"/>
<route>
<service name="Uplink"> <child name="nic_router"/> </service>
<any-service> <parent/> <any-child /> </any-service>
</route>
</start>
}
<start name="nic_router" caps="120">
<resource name="RAM" quantum="5M"/>
<provides>
<service name="Nic"/>
<service name="Uplink"/>
</provides>
<config verbose_domain_state="yes">
<policy label_prefix="vbox" domain="downlink"/>
<policy label_prefix="nic_drv" domain="uplink"/>
<domain name="uplink">
<nat domain="downlink"
tcp-ports="16384"
udp-ports="16384"
icmp-ids="16384"/>
</domain>
<domain name="downlink" interface="10.0.3.1/24" verbose_packets="no">
<dhcp-server ip_first="10.0.3.100" ip_last="10.0.3.200">
<dns-server ip="8.8.8.8"/>
<dns-server ip="1.1.1.1"/>
</dhcp-server>
<tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
<udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
<icmp dst="0.0.0.0/0" domain="uplink"/>
</domain>
</config>
</start> }
append_if [expr $use_serial] config {
<start name="log_terminal" priority="-1">
@ -138,18 +175,6 @@ append_if [expr $use_serial] config {
</start>
}
append_if [expr $use_bridge] config {
<start name="nic_bridge" priority="-1">
<resource name="RAM" quantum="6M"/>
<provides><service name="Nic"/></provides>
<config> <default-policy/> </config>
<route>
<service name="Nic"><child name="nic_drv"/></service>
<any-service><parent/></any-service>
</route>
</start>
}
append config {
<start name="report_rom" priority="-1">
<resource name="RAM" quantum="2M"/>
@ -212,7 +237,7 @@ append_if [expr $use_gui] config {
</vfs>
</config>
<route>
<service name="Nic"> <child name="nic_bridge"/> </service>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Report" label="shape"> <child name="pointer" label="gui_fb2 -> shape"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent /> <any-child /> </any-service>
@ -239,12 +264,8 @@ append config {
<rom name="test.iso" />
</vfs>
</config>
<route>}
append_if [expr $use_bridge] config {
<service name="Nic"> <child name="nic_bridge"/> </service>}
append config {
<route>
<service name="Nic"> <child name="nic_router"/> </service>
<service name="Report" label="shape"> <child name="pointer" label="gui_fb1 -> shape"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent /> <any-child /> </any-service>
@ -277,7 +298,7 @@ append boot_modules {
}
append_if [expr $use_net] boot_modules { ipxe_nic_drv }
append_if [expr $use_bridge] boot_modules { nic_bridge }
append_if [expr $use_net] boot_modules { nic_router }
append_if [expr $use_serial] boot_modules { log_terminal }
append_platform_drv_boot_modules

View File

@ -35,7 +35,6 @@ set use_block_sata 1
set use_part_block [expr ![have_include power_on/qemu]]
set use_nic_session 1
set use_nic_bridge 0
set use_usb 0

View File

@ -29,12 +29,10 @@ migrate
moon
netperf_lwip
netperf_lwip_bridge
netperf_lwip_router
netperf_lwip_usb30
netperf_lwip_wifi
netperf_lxip
netperf_lxip_bridge
netperf_lxip_router
netperf_lxip_usb30
netperf_lxip_wifi
nic_bridge
@ -88,6 +86,7 @@ vm_stress_vbox5-debian32
vm_stress_vbox5-debian64
vm_stress_seoul-debian32
verify
vfs_cfg
vfs_import
vmm_arm
vmm_x86