| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Next MinVersion: 17 |
| |
| // This file defines the mojo interface between the ARC networking stack and |
| // Chrome OS. There are three different groups of interactions: |
| // - WiFi RPCs for scanning and manipulating saved network configurations, |
| // - Layer 3 RPCs for configuring and registering IP networks inside ARC, |
| // - VPN RPCs for integrating Always-on-VPNs and ARC as a VPN provider. |
| |
| module arc.mojom; |
| |
| import "url/mojom/url.mojom"; |
| |
| // Indicates if a request send by ARC to the host has successfully completed. |
| [Extensible] |
| enum NetworkResult { |
| SUCCESS = 0, |
| FAILURE = 1, |
| }; |
| |
| // Additional argument to GetNetworks to specify the type of networks the |
| // host is interested to learn about. |
| [Extensible] |
| enum GetNetworksRequestType { |
| // All configured WiFi networks saved on the host. |
| CONFIGURED_ONLY = 0, |
| // All WiFi networks currently visible by scanning. |
| VISIBLE_ONLY = 1, |
| // All networks with an active layer 3 connection for all physical types. |
| [MinVersion=10] ACTIVE_ONLY = 2, |
| }; |
| |
| // Represents the possible connection states of a network service. |
| // It is effectively a subset of the shill::ConnectState enum defined in |
| // platform2/shill/service.h. Before adding a new state to shill::ConnectState |
| // there must be a valid value in this enum to map it to, or a new value must |
| // first be defined in ConnectionStateType and correctly handled by ARC. |
| // The mapping from shill::ConnectState must then be updated inside shill in |
| // Service::GetStateString (platform2/shill/service.cc) as well as in |
| // TranslateConnectionState inside components/arc/net/arc_net_host_impl.cc. |
| [Extensible] |
| enum ConnectionStateType { |
| // An active network that is connected at the physical layer and for which IP |
| // provisioning has succeeded for IPv4, or IPv6, or both. |
| // This corresponds to shill::ConnectState.kStateConnected. |
| CONNECTED = 0, |
| |
| // The network is still connecting and not ready for IP traffic, but already |
| // considered active. This corresponds to kStateAssociating and |
| // kStateConfiguring in shill::ConnectState. |
| CONNECTING = 1, |
| |
| // The network is disconnected. This corresponds to kStateUnknown, kStateIdle, |
| // and kStateFailure in shill::ConnectState. |
| NOT_CONNECTED = 2, |
| |
| // The network is active and ready for IP traffic, but a captive portal is |
| // known to prevent access to the Internet. This corresponds to |
| // shill::ConnectState.kStatePortal |
| PORTAL = 3, |
| |
| // The network is active and ready for IP traffic, and there is no known |
| // captive portal blocking the traffic to the Internet. This corresponds to |
| // shill::ConnectState.kStateOnline |
| ONLINE = 4, |
| }; |
| |
| // Additional WiFi network information provided by scan results. |
| struct VisibleNetworkDetails { |
| int32 frequency; |
| int32 signal_strength; |
| string bssid; |
| }; |
| |
| // Additional configuration information needed for creating and saving |
| // WiFi network configuration on the host. |
| struct ConfiguredNetworkDetails { |
| string? passphrase; |
| bool autoconnect; |
| }; |
| |
| // Passpoint credentials used to connect to matching passpoint networks. |
| // This struct should be mirroring 1-to-1 the "passpoint properties" names and |
| // types defined in src/platform2/dbus/shill/dbus-constants.h. |
| struct PasspointCredentials { |
| // All home service provider fully qualified domain name(s). |
| array<string> domains@0; |
| |
| // The realm associated with this credential. It will be used to determine |
| // if this credential can be used to authenticate with a given hotspot by |
| // comparing the realm specified in that hotspot's Access Network Query |
| // Protocol (ANQP) element. |
| string realm@1; |
| |
| // List of Home Organization Identifiers (OIs) used for determining if this |
| // credentials match a given Hotspot provider. Matching of any OIs in this |
| // list with an OI in the Roaming Consortium advertised by a Hotspot means |
| // that successful authentication with such Hotspot is possible. |
| array<uint64> home_ois@2; |
| |
| // List of Home Organization Identifiers (OIs) used for determining if a |
| // provider is a member of a given Hotspot provider. Every OIs in this list |
| // are required to match an OI in the the Roaming Consortium advertised by a |
| // Hotspot in order to support authentication with this credentials. |
| array<uint64> required_home_ois@3; |
| |
| // Roaming consortium Organization Identifiers (OIs) used to determine which |
| // access points support authentication with this credentials. |
| array<uint64> roaming_consortium_ois@4; |
| |
| // Set of EAP credentials (TLS or TTLS only) used to connect to a network |
| // that matched these credentials. |
| EapCredentials eap@5; |
| |
| // True if the user or App specified any network provisioned |
| // with these credentials should be considered as metered. |
| bool metered@6; |
| |
| // Package name of the App that provided these credentials. |
| string package_name@7; |
| }; |
| |
| // The EAP method that will be used when connecting to a 802.1x WiFi network or |
| // Passpoint WiFi network. |
| [Extensible] |
| enum EapMethod { |
| kNone = 0, |
| kLeap = 1, |
| kPeap = 2, |
| kTls = 3, |
| kTtls = 4, |
| }; |
| |
| // The authentication methods that will be on the inside of a PEAP or EAP-TTLS |
| // tunnel. |
| [Extensible] |
| enum EapPhase2Method { |
| kNone = 0, |
| kPap = 1, |
| kMschap = 2, |
| kMschapv2 = 3, |
| }; |
| |
| // Recognized key management schemes. |
| [Extensible] |
| enum KeyManagement { |
| kNone = 0, |
| kIeee8021X = 1, |
| kFtEap = 2, |
| kFtPsk = 3, |
| kFtSae = 4, |
| kWpaEap = 5, |
| kWpaEapSha256 = 6, |
| kWpaPsk = 7, |
| kSae = 8, |
| }; |
| |
| // EAP credential used to connect to a 802.1x WiFi network or Passpoint WiFi |
| // network that matched the credentials. |
| // This struct should be mirroring 1-to-1 the "EAP properties" names and types |
| // defined in src/platform2/system_api/dbus/shill/dbus-constants.h. |
| // ARC is responsible for filling / hardcoding any field that the Android APIs |
| // do not provide directly, so that ArcNetHostImpl can be a dumb data transfer |
| // layer with no other logic. |
| struct EapCredentials { |
| // The outer or only EAP authentication type. |
| EapMethod method@0; |
| |
| // The inner EAP authentication type. |
| EapPhase2Method phase2_method@1; |
| |
| // When there is an inner EAP type, use this identity for the outer. |
| string? anonymous_identity@2; |
| |
| // Who we identify ourselves as to the EAP authenticator. |
| string? identity@3; |
| |
| // Password to use for EAP methods which require one. |
| string? password@4; |
| |
| // Key management algorithm to use after EAP succeeds. |
| KeyManagement key_management@5; |
| |
| // PEM formatted contents of the CA certificate(s). |
| array<string>? ca_certificate_pem@6; |
| |
| // PEM formatted contents of the client certificate(s). |
| array<string>? client_certificate_pem@7; |
| |
| // PEM formatted contents of the client private key. |
| string? client_certificate_key@8; |
| |
| // If non-empty, string to match remote subject against before connecting. |
| string? subject_match@9; |
| |
| // A list of serialized subject alternative names (SANs) to be matched against |
| // the alternative subject name of the authentication server certificate. When |
| // multiple match strings are specified, a match with any one of the values is |
| // considered a sufficient match for the server certificate. |
| array<string>? subject_alternative_name_match_list@10; |
| |
| // A list of constraints for the server domain name. If set, the entries will |
| // be used as suffix match requirements against the DNS name element(s) of the |
| // alternative subject name of an authentication server. When multiple match |
| // strings are specified, a match with any one of the values is considered a |
| // sufficient match for the server certificate. |
| array<string>? domain_suffix_match_list@11; |
| |
| // The highest TLS version supplicant is allowed to negotiate. |
| string? tls_version_max@12; |
| |
| // If true, use the system-wide certificate authority database to authenticate |
| // the remote. |
| bool use_system_cas@13; |
| |
| // If true, use per network proactive key caching. |
| bool use_proactive_key_caching@14; |
| |
| // If true, use the user's stored login password as the password. |
| bool use_login_password@15; |
| }; |
| |
| union NetworkDetails { |
| VisibleNetworkDetails visible; |
| ConfiguredNetworkDetails configured; |
| }; |
| |
| // The two possible Internet Procol families. |
| [Extensible] |
| enum IPAddressType { |
| IPV4, |
| IPV6, |
| }; |
| |
| // Deprecated. Individual fields added to NetworkConfiguration in version 13 of |
| // this file should be used instead. |
| struct IPConfiguration { |
| |
| // Literal representation of the IP address of the ARC gateway. |
| string gateway; |
| |
| // Literal representation of the IP address of ARC for that network. |
| string ip_address; |
| |
| // List of literal IP addresses of name servers to use on that network. |
| array<string> name_servers; |
| |
| // Length of the routing prefix. |
| int32 routing_prefix; |
| |
| // IP family for that configuration |
| IPAddressType type; |
| |
| // URL of the HTTP proxy to use for that network. |
| string web_proxy_auto_discovery_url; |
| }; |
| |
| // The subset of wireless security protocols that Android defines in |
| // android.net.wifi.WifiConfiguration and that can be supported by the |
| // host. |
| [Extensible] |
| enum SecurityType { |
| NONE, |
| WEP_PSK, |
| WEP_8021X, |
| WPA_PSK, |
| WPA_EAP, |
| }; |
| |
| // Deprecated enum. |is_metered| in NetworkConfiguration should be |
| // used instead. |
| [Extensible] |
| enum TetheringClientState { |
| // Tethering state is detected and confirmed. |
| CONFIRMED, |
| |
| // Tethering state is not detected. |
| NOT_DETECTED, |
| |
| // Tethering data is suspected and can be |CONFIRMED| in the future. |
| SUSPECTED, |
| }; |
| |
| // Describes properties of a WiFi networks used to create Android's |
| // android.net.wifi.Wificonfiguration objects and android.net.wifi.WifiInfo |
| // objects. |
| struct WiFi { |
| // The network BSSID in the format of an Ethernet MAC address. |
| string bssid; |
| |
| // The frequency of this network, in MHz. |
| int32 frequency; |
| |
| // The network SSID encoded as an hexadecimal string. |
| string hex_ssid; |
| |
| // True if the network does not broadcast its ssid. |
| bool hidden_ssid; |
| |
| // The type of wireless security protocol used by this network. |
| SecurityType security; |
| |
| // The current RSSI of this network. Updates for this value are not sent to |
| // ARC for connected WiFi networks and should be considered precise only for |
| // scanning results. |
| int32 signal_strength; |
| |
| // True if the network represents a Passpoint network. |
| [MinVersion=16] bool is_passpoint; |
| |
| // Fully qualified domain name (FQDN) of a Passpoint configuration. |
| [MinVersion=16] string? fqdn; |
| }; |
| |
| // The physical network types exposed to ARC by the host, |
| // corresponding to a subset of shill technology types defined |
| // in platform2/system_api/dbus/shill/dbus-constants.h. |
| // The missing shill technology types are: |
| // - WiMAX: obsolete WiFi standard, deprecated in Chrome OS in Q2 2019. |
| // - Bluetooth: ARC does not support host IP networks over Bluetooth. |
| // - PPPoE: ARC does not support host Point to Point networks. |
| // Next Enum ID: 5 |
| // ID 4 was previously assigned to WiMAX. |
| [Extensible] |
| enum NetworkType { |
| CELLULAR = 0, |
| ETHERNET = 1, |
| VPN = 2, |
| WIFI = 3, |
| }; |
| |
| // Used by ARC to request a network configuration to be created on the host. |
| struct NetworkConfiguration { |
| // The connection state of the network service. |
| ConnectionStateType connection_state; |
| |
| // A string token that uniquely identifies this network service. |
| string guid; |
| |
| // Deprecated. Individual fields added to NetworkConfiguration in version 13 |
| // of this file should be used instead. |
| array<IPConfiguration>? deprecated_ip_configs; |
| |
| // Deprecated field unused from ARC P and later. |
| string? deprecated_mac_address; |
| |
| // The type of the underlying physical network. |
| NetworkType type; |
| |
| // Additional WiFi properties for WiFi network services. |
| WiFi? wifi; |
| |
| // Deprecated field. Uses |is_metered| instead. |
| [MinVersion=8] TetheringClientState deprecated_tethering_client_state; |
| |
| // The name of the network interface on the host. |
| [MinVersion=10] string? network_interface; |
| |
| // True if this network is the host default network. |
| [MinVersion=11] bool is_default_network; |
| |
| // The name of the shill service associated with this network connection. |
| [MinVersion=12] string? service_name; |
| |
| // This is the network MTU value (device kIpConfigsProperty) or the |
| // native VPN MTU value (service property), or 0 if undefined. |
| [MinVersion=13] uint32 host_mtu; |
| |
| // Prefix length of the host IPv4 subnet, or 0 for an IPv6 only network. |
| [MinVersion=13] uint32 host_ipv4_prefix_length; |
| |
| // IPv4 address assigned to the host, or empty for an IPv6 only network. |
| [MinVersion=13] string? host_ipv4_address; |
| |
| // IPv4 address of the local gateway, or empty for an IPv6 only network. |
| [MinVersion=13] string? host_ipv4_gateway; |
| |
| // Prefix length of the host IPv6 subnet, or 0 for an IPv4 only network. |
| [MinVersion=13] uint32 host_ipv6_prefix_length; |
| |
| // Global unicast IPv6 addresses assigned to the host, or empty for an IPv4 |
| // only network. The link local address and unique local addresses are |
| // ignored. |
| [MinVersion=13] array<string>? host_ipv6_global_addresses; |
| |
| // IPv6 address of the local gateway, or empty for an IPv4 only network. |
| [MinVersion=13] string? host_ipv6_gateway; |
| |
| // All IPv4 and IPv6 addresses of name servers for the network, |
| // either obtained by DHCPv4, by IPv6 RA RDNSS, or set statically. |
| [MinVersion=13] array<string>? host_dns_addresses; |
| |
| // All search domains set for the host for the network, either obtained by |
| // DHCPv4, by IPv6 RA DNSSL, or set statically. Search domains are set as an |
| // explicit array of strings instead of a comma separated list embedded into |
| // a single string. |
| [MinVersion=13] array<string>? host_search_domains; |
| |
| // The following four fields specify the static IPv4 configuration for the |
| // virtual network exposed inside ARC environment by arc-networkd, and |
| // attached to this host network. These values are defined even if the |
| // host network is an IPv6 only network. |
| |
| // Prefix length of the IPv4 subnet assigned to the ARC virtual network. |
| [MinVersion=13] uint32 arc_ipv4_prefix_length; |
| |
| // IPv4 address assigned to the ARC guest. |
| [MinVersion=13] string? arc_ipv4_address; |
| |
| // IPv4 address of the gateway for the ARC virtual network. |
| [MinVersion=13] string? arc_ipv4_gateway; |
| |
| // The name of the network interface matching the virtual interface exposed |
| // to ARC and associated with the network service. This can be different |
| // from the name of the real physical interface managed by shill. |
| [MinVersion=13] string? arc_network_interface; |
| |
| // True if the network has been autodetected by the platform as a metered |
| // network or if the user explicitly marked the network as metered in the UI. |
| [MinVersion=14] bool is_metered; |
| }; |
| |
| // Describes a Wifi network configuration that ARC has requested the host to |
| // create. |
| struct WifiConfiguration { |
| // These correspond to ONC properties returned by |
| // chrome.networkingPrivate.getNetworks() and createNetwork(). |
| // See components/onc/docs/onc_spec.html |
| |
| // SSID encoded as a series of hex bytes, e.g. "61626364" |
| // This allows for handling SSIDs which are not valid UTF-8 strings. |
| [MinVersion=2] string? hexssid@6; |
| |
| [MinVersion=1] string? guid@5; |
| string security@4; |
| |
| // Fields specific to either visible or configured networks. |
| [MinVersion=2] NetworkDetails? details@7; |
| |
| // Deprecated. These will be removed when both sides support NetworkDetails. |
| int32 frequency@1; |
| int32 signal_strength@2; |
| string bssid@3; |
| |
| // Deprecated. |hexssid| will be used, going forward. |
| string ssid@0; |
| |
| // Set of EAP credentials used to connect to a network that matched these |
| // credentials. |
| [MinVersion=16] EapCredentials? eap@8; |
| }; |
| |
| // Response object sent back to ARC when it queries existing networks on |
| // Chrome OS side. The kind of networks returned by Chrome OS is specified |
| // with the GetNetworksRequestType enum. |
| struct GetNetworksResponseType { |
| NetworkResult status; |
| array<NetworkConfiguration> networks; |
| }; |
| |
| struct AndroidVpnConfiguration { |
| // The canonical name of the VPN app (e.g. "com.android.myvpn"). |
| string app_name@0; |
| |
| // The human-readable name of the VPN app (e.g. "OpenVPN"). |
| string app_label@1; |
| |
| // The name of the VPN session, as set by the app using setSession(). |
| // The app does not need to call setSession() so this may be empty. |
| string session_name@2; |
| |
| // True if Chrome browser traffic should be sent through the VPN. |
| bool tunnel_chrome_traffic@3; |
| |
| // The next hop for IPv4 traffic originating on the host. Currently this |
| // will be set to arc0's IP address. |
| string ipv4_gateway@4; |
| |
| // A list of IPv4 and IPv6 ranges to route through the VPN. e.g. |
| // ["0.0.0.0/0"] or ["192.168.1.0/24", "10.1.0.0/16"]. |
| array<string> split_include@5; |
| |
| // A list of IPv4 and IPv6 ranges to exclude from the VPN. If specified, |
| // all traffic that does not fall into these ranges will use the VPN. |
| array<string> split_exclude@6; |
| |
| // A list of DNS servers. |
| array<string> nameservers@7; |
| |
| // A list of search domains for DNS resolution. |
| array<string> domains@8; |
| }; |
| |
| // Result object that is returned to the caller of the ARC DNS |
| // Resolution test. Contains information regarding the test result. |
| struct ArcDnsResolutionTestResult { |
| // True if the test passed successfully. |
| bool is_successful; |
| |
| // RCODE of the DNS response as defined by rfc2929#section-2.3. |
| int32 response_code; |
| |
| // Time elapsed for the DNS resolution (milliseconds). |
| int64 duration_ms; |
| }; |
| |
| // Result object that is returned to the caller of the ARC HTTP |
| // test. Contains information regarding the test result. |
| struct ArcHttpTestResult { |
| // True if the HTTP request completed successfully. |
| bool is_successful; |
| |
| // Status code of the HTTP response header. |
| int32 status_code; |
| |
| // HTTP response header fields. |
| map<string, string> response_header_fields; |
| |
| // Time elapsed for the HTTP request and response (milliseconds). |
| int64 duration_ms; |
| }; |
| |
| // Result object that is returned to the caller of the ARC |
| // Ping test. Contains information regarding the test result. |
| struct ArcPingTestResult { |
| // True if the test passed successfully. |
| bool is_successful; |
| |
| // Time elapsed for the ping (milliseconds). |
| int64 duration_ms; |
| }; |
| |
| // Next Method ID: 16 |
| // IDs 3 and 9 are missing as they belonged to deprecated methods. |
| interface NetHost { |
| // Sends a request to get enabled / disabled status of WiFi. |
| GetWifiEnabledState@1() => (bool is_enabled); |
| |
| // Sends a request to start scan of WiFi APs. |
| [MinVersion=1] StartScan@2(); |
| |
| // Sends a request to enable or disable WiFi. The |result| is true when the |
| // the state has been successfully set or WiFi is already in the desired |
| // state. It is false if WiFi manipulation is prohibited due to a policy or |
| // its current state. |
| [MinVersion=3] SetWifiEnabledState@4(bool is_enabled) => (bool result); |
| |
| // Creates a new network and returns the GUID. If an error occurs, |
| // |guid| will be an empty string. |
| [MinVersion=4] CreateNetwork@5(WifiConfiguration cfg) => (string guid); |
| |
| // Deletes an existing network. |
| [MinVersion=4] ForgetNetwork@6(string guid) => (NetworkResult status); |
| |
| // Initiates a network connection. If called when connected to a different |
| // network, it will drop the current connection first. |
| [MinVersion=4] StartConnect@7(string guid) => (NetworkResult status); |
| |
| // Disconnects from network |guid|. |
| [MinVersion=4] StartDisconnect@8(string guid) => (NetworkResult status); |
| |
| // Sends a request to get the subset of network services existing on Chrome OS |
| // that match the kind specified with GetNetworksRequestType. This call |
| // supports three usages: |
| // - Querying the list of saved WiFi network configurations for implementing |
| // WifiManager public APIs for accessing saved WiFi profiles. |
| // - Querying visible WiFi networks for implementing Android WifiManager |
| // public scanning APIs. |
| // - Querying the list of all networks with an active layer 3 connection, |
| // which is used for the initial registration of IP networks to Android |
| // connectivity stack. This includes all physical types of networks. |
| [MinVersion=6] GetNetworks@10(GetNetworksRequestType type) => |
| (GetNetworksResponseType response); |
| |
| // Inform Chrome OS that a VPN has connected. |
| [MinVersion=7] AndroidVpnConnected@11(AndroidVpnConfiguration cfg); |
| |
| // Inform Chrome OS that a VPN is disconnected, reconnecting, or reconnected. |
| [MinVersion=7] AndroidVpnStateChanged@12(ConnectionStateType state); |
| |
| // Tells Chrome OS that network traffic should go through a certain VPN |
| // connection. |vpnPackage| is the package name of the Android VPN app. If |
| // |lockdown| is true and the VPN connection is down, traffic is blackholed to |
| // prevent circumventing the VPN connection. This applies to Chrome traffic |
| // (users 'chronos' and 'debugd'), not other system traffic like the |
| // update engine. |
| // TODO(b/111201944): Add Chrome UI to enable the user to escape the lockdown, |
| // unless the lockdown is dictated via policy. |
| // Call with empty string as |vpnPackage| to lift the restriction. |
| [MinVersion=9] SetAlwaysOnVpn@13(string vpnPackage, bool lockdown); |
| |
| // Adds a PasspointCredentials block provided by an Android App onto the host |
| // platform. |
| [MinVersion=16] AddPasspointCredentials@14(PasspointCredentials credentials); |
| |
| // Removes all PasspointCredentials blocks provided by an Android App. |
| // Calling this will also revoke all associated WiFi Services provisioned |
| // with the credentials blocks. |
| [MinVersion=16] RemovePasspointCredentials@15(string package_name); |
| }; |
| |
| // Next Method ID: 11 |
| // ID 2 is missing as it belonged to deprecated method. |
| interface NetInstance { |
| // DEPRECATED: Please use Init@6 instead. |
| InitDeprecated@0(pending_remote<NetHost> host_remote); |
| |
| // Establishes full-duplex communication with the host. |
| [MinVersion=8] Init@6(pending_remote<NetHost> host_remote) => (); |
| |
| // Notifies the instance of a WiFI AP scan being completed. |
| [MinVersion=1] ScanCompleted@1(); |
| |
| // Notifies the instance of a change in the state of WiFi on the host. |
| [MinVersion=3] WifiEnabledStateChanged@3(bool is_enabled); |
| |
| // Ask Android to disconnect the VPN, per user request. |
| [MinVersion=7] DisconnectAndroidVpn@4(); |
| |
| // Ask Android to pop up a VPN configuration dialog, per user request. |
| [MinVersion=7] ConfigureAndroidVpn@5(); |
| |
| // Notifies the instance of a change in one active network service. |
| // Updates are only sent for active networks with an active layer 3 |
| // connection or networks in the process of connecting, corresponding to |
| // CONNECTING, CONNECTED, PORTAL, and ONLINE ConnectionStateType values. |
| // TODO(b/77293260): Notifications should only be sent for updates to |
| // properties and data visible in NetworkConfiguration, and not for all shill |
| // property updates. |
| [MinVersion=10] ActiveNetworksChanged@7(array<NetworkConfiguration> network); |
| |
| // Does a DNS query from within ARC and returns result. |
| // The test is bound to the ARC network corresponding to the host transport |
| // name |transport_name|. |
| [MinVersion=15] DnsResolutionTest@8(string transport_name, |
| string host_name) => (ArcDnsResolutionTestResult result); |
| |
| // Does an HTTP GET request from within ARC and returns result. |
| // Only HTTP and HTTPS are supported and the connection does not use any |
| // caches/cookie jars/etc. that might exist on the Android side. |
| // The test is bound to the ARC network corresponding to the host transport |
| // name |transport_name|. |
| [MinVersion=15] HttpTest@9(string transport_name, url.mojom.Url url) |
| => (ArcHttpTestResult result); |
| |
| // Sends an ICMP echo request from within ARC to the given IP address and |
| // returns result. |
| // The test is bound to the ARC network corresponding to the host transport |
| // name |transport_name|. |
| [MinVersion=15] PingTest@10(string transport_name, string ip_address) |
| => (ArcPingTestResult result); |
| }; |