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

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

118 lines
3.4 KiB
Tcl

proc use_dynamic_rom { } { return true }
create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/dynamic_rom \
[depot_user]/src/init \
[depot_user]/src/libc \
[depot_user]/src/vfs_audit \
[depot_user]/src/vfs_lxip \
[depot_user]/src/vfs
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="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> }
append_if [use_dynamic_rom] config {
<start name="dynamic_rom">
<resource name="RAM" quantum="4M"/>
<provides><service name="ROM"/> </provides>
<config verbose="yes">
<rom name="socket_fs.config"> <inline description="MTU default">
<config ld_verbose="yes">
<vfs>
<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>
<default-policy root="/socket" writeable="yes" />
</config>
</inline>
<sleep milliseconds="3000"/> <inline description="MTU 400">
<config ld_verbose="yes">
<vfs>
<dir name="socket">
<lxip mtu="400" ip_addr="10.0.2.55" netmask="255.255.255.0" nameserver="8.8.8.8"/>
</dir>
</vfs>
<default-policy root="/socket" writeable="yes" />
</config>
</inline>
<sleep milliseconds="3000"/>
</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>}
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>}
} else { append config {
<config ld_verbose="yes">
<vfs>
<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"/>
<!-- <lxip dhcp="yes"/> -->
</dir>
</vfs>
<default-policy root="/socket" writeable="yes" />
</config>}
}
append config {
</start>
}
append qemu_args " -nographic "
append_qemu_nic_args
# When using with a tap device manually replace append_qemu_nic_args with:
#proc qemu_nic_model {} {
# if [have_spec x86] { return e1000 }
# if [have_spec lan9118] { return lan9118 }
# if [have_spec zynq] { return cadence_gem }
# return nic_model_missing
#}
#append qemu_args " -net nic,model=[qemu_nic_model] "
#append qemu_args " -net tap,ifname=tap0,downscript=no,script=no "
# vi: set ft=tcl :