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