| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| { |
| include: [ |
| "inspect/offer.shard.cml", |
| "syslog/offer.shard.cml", |
| "trace/offer.shard.cml", |
| ], |
| children: [ |
| { |
| name: "dhcpd", |
| url: "fuchsia-pkg://fuchsia.com/dhcpv4-server#meta/dhcpv4_server.cm", |
| }, |
| { |
| name: "dhcpv6-client", |
| url: "fuchsia-pkg://fuchsia.com/dhcpv6-client#meta/dhcpv6-client.cm", |
| }, |
| { |
| name: "dns-resolver", |
| url: "fuchsia-pkg://fuchsia.com/dns-resolver#meta/dns_resolver.cm", |
| }, |
| { |
| name: "http-client", |
| url: "fuchsia-pkg://fuchsia.com/http-client#meta/http-client.cm", |
| }, |
| { |
| name: "reachability", |
| url: "fuchsia-pkg://fuchsia.com/reachability#meta/reachability.cm", |
| startup: "eager", |
| }, |
| ], |
| offer: [ |
| { |
| protocol: [ |
| "fuchsia.device.NameProvider", |
| "fuchsia.scheduler.deprecated.ProfileProvider", |
| "fuchsia.scheduler.RoleManager", |
| ], |
| from: "parent", |
| to: [ "#netstack" ], |
| }, |
| { |
| protocol: [ "fuchsia.scheduler.RoleManager" ], |
| from: "parent", |
| to: [ "#dns-resolver" ], |
| }, |
| { |
| protocol: [ "fuchsia.inspect.InspectSink" ], |
| from: "parent", |
| to: [ |
| "#dhcpd", |
| "#dhcpv6-client", |
| "#dns-resolver", |
| "#http-client", |
| "#netcfg", |
| "#netstack", |
| "#reachability", |
| ], |
| }, |
| { |
| protocol: [ "fuchsia.stash.SecureStore" ], |
| from: "parent", |
| to: [ |
| "#dhcpd", |
| "#netstack", |
| ], |
| }, |
| { |
| protocol: [ "fuchsia.diagnostics.persist.DataPersistence-netstack" ], |
| from: "parent", |
| to: [ "#netstack" ], |
| }, |
| { |
| protocol: [ "fuchsia.metrics.MetricEventLoggerFactory" ], |
| from: "parent", |
| to: [ "#reachability" ], |
| }, |
| { |
| protocol: [ "fuchsia.net.dhcp.Server" ], |
| from: "#dhcpd", |
| to: [ "#netcfg" ], |
| }, |
| { |
| protocol: [ "fuchsia.net.dhcpv6.ClientProvider" ], |
| from: "#dhcpv6-client", |
| to: [ "#netcfg" ], |
| }, |
| { |
| protocol: "fuchsia.net.dhcp.ClientProvider", |
| |
| // TODO(https://fxbug.dev/42076541): Once the DHCP client component is |
| // being used for all DHCPv4 functionality, make it a child of this |
| // realm, route the protocol from there instead of the netstack |
| // realm, and mark it here as "required". |
| from: "#netstack", |
| to: "#netcfg", |
| availability: "same_as_target", |
| }, |
| { |
| protocol: "fuchsia.net.filter.Control", |
| |
| // NS2 will not implement fuchsia.net.filter, mark as optional. |
| from: "#netstack", |
| to: "#netcfg", |
| availability: "same_as_target", |
| }, |
| { |
| protocol: [ "fuchsia.net.name.Lookup" ], |
| from: "#dns-resolver", |
| to: [ |
| "#dhcpd", |
| "#http-client", |
| "#reachability", |
| ], |
| }, |
| { |
| protocol: [ "fuchsia.net.name.LookupAdmin" ], |
| from: "#dns-resolver", |
| to: [ "#netcfg" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.net.interfaces.admin.Installer", |
| "fuchsia.net.name.DnsServerWatcher", |
| "fuchsia.net.routes.admin.RouteTableV4", |
| "fuchsia.net.routes.admin.RouteTableV6", |
| "fuchsia.net.stack.Stack", |
| ], |
| from: "#netstack", |
| to: [ "#netcfg" ], |
| }, |
| { |
| protocol: [ "fuchsia.net.interfaces.State" ], |
| from: "#netstack", |
| to: [ |
| "#netcfg", |
| "#reachability", |
| ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.net.routes.StateV4", |
| "fuchsia.net.routes.StateV6", |
| ], |
| from: "#netstack", |
| to: [ "#reachability" ], |
| }, |
| { |
| protocol: [ "fuchsia.net.routes.State" ], |
| from: "#netstack", |
| to: [ "#dns-resolver" ], |
| }, |
| { |
| protocol: [ "fuchsia.posix.socket.packet.Provider" ], |
| from: "#netstack", |
| to: [ "#dhcpd" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.net.debug.Diagnostics", |
| "fuchsia.net.debug.Interfaces", |
| "fuchsia.net.neighbor.View", |
| ], |
| from: "#netstack", |
| to: [ "#reachability" ], |
| }, |
| { |
| directory: "dev-class-network", |
| from: "parent", |
| to: [ "#netcfg" ], |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: "#netcfg", |
| subdir: "netcfg", |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: "#netstack", |
| subdir: "netstack", |
| }, |
| { |
| directory: "root-ssl-certificates", |
| from: "parent", |
| to: [ "#http-client" ], |
| }, |
| { |
| config: "fuchsia.http-client.StopOnIdleTimeoutMillis", |
| from: "parent", |
| to: "#http-client", |
| availability: "same_as_target", |
| }, |
| { |
| protocol: [ |
| "fuchsia.power.broker.Topology", |
| "fuchsia.power.system.ActivityGovernor", |
| ], |
| from: "parent", |
| to: "#netstack", |
| availability: "same_as_target", |
| }, |
| { |
| config: "fuchsia.power.SuspendEnabled", |
| from: "parent", |
| to: "#netstack", |
| }, |
| { |
| storage: "cache", |
| from: "parent", |
| to: [ "#netstack" ], |
| }, |
| { |
| storage: "data", |
| from: "parent", |
| to: [ "#netcfg" ], |
| }, |
| ], |
| expose: [ |
| { |
| protocol: [ |
| "fuchsia.net.interfaces.admin.Installer", |
| "fuchsia.net.interfaces.State", |
| "fuchsia.net.multicast.admin.Ipv6RoutingTableController", |
| "fuchsia.net.routes.admin.RouteTableProviderV4", |
| "fuchsia.net.routes.admin.RouteTableProviderV6", |
| "fuchsia.net.routes.admin.RouteTableV4", |
| "fuchsia.net.routes.admin.RouteTableV6", |
| "fuchsia.net.routes.admin.RuleTableV4", |
| "fuchsia.net.routes.admin.RuleTableV6", |
| "fuchsia.net.routes.State", |
| "fuchsia.net.routes.StateV4", |
| "fuchsia.net.routes.StateV6", |
| "fuchsia.net.stack.Stack", |
| "fuchsia.posix.socket.Provider", |
| |
| // TODO(https://fxbug.dev/42175379): once product assembly supports product-specific |
| // components running in the network realm, remove this. |
| "fuchsia.posix.socket.raw.Provider", |
| "fuchsia.update.verify.ComponentOtaHealthCheck", |
| |
| // TODO(https://fxbug.dev/42061698): make it possible to put this |
| // standalone import in its own paragraph without format-code |
| // reflowing the entire list. |
| "fuchsia.update.verify.NetstackVerifier", |
| ], |
| from: "#netstack", |
| }, |
| |
| // TODO(https://fxbug.dev/42062982) Don't expose the Root API once |
| // Weavestack no longer needs it. |
| { |
| protocol: [ "fuchsia.net.root.Interfaces" ], |
| from: "#netstack", |
| as: "fuchsia.net.root.Interfaces_OnlyForWeavestack", |
| }, |
| { |
| protocol: [ "fuchsia.net.filter.Control" ], |
| from: "#netstack", |
| as: "fuchsia.net.filter.Control_OnlyForStarnix", |
| availability: "same_as_target", |
| }, |
| { |
| protocol: [ "fuchsia.net.root.Interfaces" ], |
| from: "#netstack", |
| as: "fuchsia.net.root.Interfaces_OnlyForStarnix", |
| }, |
| { |
| protocol: [ "fuchsia.posix.socket.packet.Provider" ], |
| from: "#netstack", |
| as: "fuchsia.posix.socket.packet.Provider_OnlyForStarnix", |
| }, |
| |
| // TODO(https://fxbug.dev/42175016): This is temporary until the new DNS |
| // configuration API is designed. |
| { |
| protocol: [ "fuchsia.net.name.DnsServerWatcher" ], |
| from: "#netcfg", |
| as: "fuchsia.net.name.DnsServerWatcher_OnlyForLowpan", |
| }, |
| { |
| protocol: [ "fuchsia.net.name.Lookup" ], |
| from: "#dns-resolver", |
| }, |
| { |
| protocol: [ "fuchsia.net.http.Loader" ], |
| from: "#http-client", |
| }, |
| { |
| protocol: [ "fuchsia.net.reachability.Monitor" ], |
| from: "#reachability", |
| }, |
| { |
| protocol: [ |
| "fuchsia.net.dhcpv6.PrefixProvider", |
| "fuchsia.net.masquerade.Factory", |
| ], |
| from: "#netcfg", |
| }, |
| ], |
| } |