let Genode = env:DHALL_GENODE let Prelude = Genode.Prelude let Init = Genode.Init let Child = Init.Child let nicChild : Text → Init.Children.Entry = λ(tapDevice : Text) → { mapKey = tapDevice , mapValue = Child.flat Child.Attributes::{ , binary = "linux_nic_drv" , config = Init.Config::{ attributes = toMap { tap = tapDevice } } , ld = False , resources = Init.Resources::{ , caps = 256 , ram = Genode.units.MiB 4 } , provides = [ "Nic" ] } } let nicChildren = Prelude.List.map Text Init.Children.Entry nicChild let init = λ(params : { guest : Init.Type, nics : List Text }) → Init::{ , routes = [ Init.ServiceRoute.child "Timer" "timer_drv" ] , children = nicChildren params.nics # toMap { timer_drv = Child.flat Child.Attributes::{ , binary = "timer_drv" , provides = [ "Timer" ] } , init = Init.toChild params.guest Init.Attributes::{ , exitPropagate = True , routes = Prelude.List.map Text Init.ServiceRoute.Type ( λ(tapDevice : Text) → { service = { name = "Nic" , label = Init.LabelSelector.last tapDevice } , route = Init.Route.Type.Child { name = tapDevice , label = None Text , diag = None Bool } } ) params.nics } } , verbose = True } in init