Manager hierarchy ================= Service org.chromium.flimflam Interface org.chromium.flimflam.Manager Object path / Methods dict GetProperties() Return the global system properties specified in the Properties section. void SetProperty(string name, variant value) Changes the value of the specified property. Only properties that are listed as read-write are changeable. On success a PropertyChanged signal will be emitted. Possible Errors: [service].Error.InvalidArguments [service].Error.InvalidProperty string GetState() Return the connection state of a system. The same value is return via the State property. object CreateProfile(string name) Create and add new profile with the specified identifier name. The name should either be in the form ``name'' or ``~user/name'' where where ``user'' is the login name of a user suitable for finding their home directory. Both strings must contain only alpha-numeric ASCII characters. Profiles created without a user name are stored in a system directory readable only by the connection mananger. Profiles created with a user name are stored in the user's home directory but readable only by the connection manager. If any existing profile is specified its contents are reset to a default (minimal) contents. If the profile is already registered with a CreateProfile or PushProfile request then an error is returned. Possible Errors: [service].Error.InvalidArguments [service].Error.AlreadyExists object PushProfile(string name) Push the profile with the specified identifier onto the profile stack. The profile must have previously been created with CreateProfile. The profile becomes the ``active profile'' that is searched first when loading data and to which updates are stored. A profile may be pushed only once. Possible Errors: [service].Error.InvalidArguments [service].Error.AlreadyExists object InsertUserProfile(string name, string user_hash) Add the profile with the specified identifier to the profile stack. The profile must have previously been created with CreateProfile. The |user_hash| provided is assigned to the profile and is made visible as a property of the profile. A profile may be inserted or pushed only once. Possible Errors: [service].Error.InvalidArguments [service].Error.AlreadyExists object PopProfile(string name) Pop the top-most profile on the profile stack. Any profile beneath this profile becomes the ``active profile''. Any services using configuration from the popped profile are disconnected and the credentials invalidated (the next time credentials are needed they are loaded from the (new) active profile). The name must match the identifer of the active profile. This is a safeguard against accidentally removing the wrong profile. Note it is valid to pop all profiles from the stack; in this state the connection manager does not write any state to persistent storage. Possible Errors: [service].Error.InvalidArguments [service].Error.NotFound object PopAnyProfile() Like PopProfile but do not check the profile on the top of the stack; pop anything. Possible Errors: [service].Error.InvalidArguments object PopAllUserProfiles() Remove all user profiles from the stack of managed profiles leaving only default profiles if any exist. void RemoveProfile(string name) Remove the profile with specified identifier. The profile may not be resident on the stack. The default profile may not be removed. Possible Errors: [service].Error.InvalidArguments [service].Error.AlreadyExists void RequestScan(string type) Request a scan for the specified technology. If type is the string "" then a scan request is made for each technology. Possible Errors: [service].Error.InvalidArguments void EnableTechnology(string type) Enable all technologies of the specified type. Possible Errors: [service].Error.InvalidArguments [service].Error.InProgress [service].Error.AlreadyEnabled [service].Error.PermissionDenied void DisableTechnology(string type) Disable all technologies of the specified type. Possible Errors: [service].Error.InvalidArguments [service].Error.InProgress [service].Error.AlreadyDisabled object ConfigureService(dict properties) Update the configuration of a service in memory and in the profile. If no matching service exists in memory it is temporarily created to carry out this work and may be removed later. The object path of the created service is returned. If a GUID property is specified in properties it is used to find the service; otherwise Type, Security, and type-specific properties such as WiFi.SSID are used to find any existing service. If no service is located in memory a new one is created with the supplied properties. All provided parameters are applied to the in memory service regardless of errors. But if an error occurs while setting a property and the service object was created as a result of this call it is removed. In the event of multiple errors the first error code is returned by this call. See the Service Properties section for a list of properties and constraints on property values. See also GetService. Possible Errors: [service].Error.InvalidArguments [service].Error.NotSupported object ConfigureServiceForProfile(object profile, dict properties) Create or update the configuration of a WiFi service within a specific profile. This is similar to "ConfigureService" above, except that this might not change the state of the current service. A matching service is found by first looking for a service with matching "GUID" property if specified, then by using the "Mode", "SSID", and "Security" properties from |properties|. If a matching service is found but its current profile supersedes the specified profile, a new profile entry is written with the specified properties. This method can be used for configuring a service in the default profile while a separate configuration exists in the user profile. In this scenario, no configured properties in the user profile entry will be copied to the default profile, and the user profile remains unchanged. Moreover, the matching service will still refer to the user profile. A second example usage for this method is creating a copy of the current service from the default profile into the user profile. If a matching service exists but its current profile antecedes the specified profile, the configuration of the current service is first copied to the new profile without removing the entry in the default profile. The service is then assigned to the new profile and the specified properties are then applied to the service and saved to the new profile, leaving the original profile intact. This differs from the behavior of setting the "Profile" property on the service via the SetProperty or ConfigureService methods, which remove the configuration from the old profile. In situations where a matching service is not found, the service isn't associated with a profile, or the specified profile is already associated with the matched service, the behavior of this method mimics that of ConfigureService. Currently this method is only supported for WiFi services. The specified profile must already be loaded and on the Manager's profile stack. If the "Profile" parameter is set in the properties dictionary, it must match the profile parameter. This method returns the object path of the created or modified service, in cases where a matching service will refer to the specified profile. Otherwise it returns the special path "/" to signify that although the operation succeeded, there is no matching service that refers to this profile. Possible Errors: [service].Error.InternalError [service].Error.InvalidArguments [service].Error.NotFound [service].Error.NotSupported void FindMatchingService(dict properties) Find a service that matches all the properties and returns the object identifier associated with it. If no service exists in memory that matches these arguments, an error is returned. See also GetService and ConfgiureService. Possible Errors: [service].Error.NotFound object GetService(dict properties) Return the object path of a service after applying any requested configuration changes. If no service exists it is created. If a GUID property is specified in properties it is used to find the service; otherwise Type, Security, and type-specific properties such as WiFi.SSID are used to find any existing service. If no service is located in memory a new one is created with the supplied properties. All provided parameters are applied to the service regardless of errors. But if an error occurs while setting a property and the service was created as a result of this call it is removed. In the event of multiple errors the first error code is returned by this call. See the Service Properties section for a list of properties and constraints on property values. See also ConfigureService. Possible Errors: [service].Error.InvalidArguments [service].Error.NotSupported [service].Error.PermissionDenied [service].Error.InternalError [service].Error.InvalidNetworkName [service].Error.InvalidPassphrase object GetVPNService(dict properties) --DEPRECATED-- Like GetService, but only for "vpn" services and without using the GUID property to lookup a service. Possible Errors: [service].Error.InvalidArguments [service].Error.NotSupported [service].Error.PermissionDenied [service].Error.InternalError object GetWifiService(dict properties) --DEPRECATED-- Like GetService, but only for "wifi" services and without using the GUID property to lookup a service. Possible Errors: [service].Error.InvalidArguments [service].Error.NotSupported [service].Error.PermissionDenied [service].Error.InternalError [service].Error.InvalidNetworkName [service].Error.InvalidPassphrase void SetDebugTags(string taglist) Set the debug tags that are enabled for logging to syslog. "taglist" is a list of valid tag names separated by "+". Shill silently ignores invalid flags. string GetDebugTags() Get the list of enabled debug tags. The list is represented as a string of tag names separated by "+". string ListDebugTags() Get the list of all debug tags that can be enabled. The list is represented as a string of tag names separated by "+". string GetServiceOrder() Return a ','-separated string listing known technologies in priority ordering. For example, the default ordering would be returned as: "ethernet,bluetooth,wifi,wimax,cellular" void SetServiceOrder(string mask) Set the technology priority based on a provided ','-separated list of technologies, sorted from highest priority to lowest. The list may contain the following services: { ethernet, wifi, wimax, bluetooth, cellular } Technologies not included are assigned the lowest priority. Technology priority changes occur immediately. Possible Errors: [service].Error.InvalidArguments void RecheckPortal() Retest the portal state of the active service if a check is not currently in progress. This will only have an effect if the active service is currently in the portal state. dict GetNetworksForGeolocation() Returns an array of dictionaries containing information about visible cellular and WiFi networks which may be then used for Geolocation. Each key is a string, and the value itself is an array of dictionaries mapping string key-value pairs. Each of these (sub) dictionaries contains information about one single network for Geolocation. For more details, see: https://developers.google.com/maps/documentation/business/geolocation/ boolean VerifyDestination(string certificate, string public_key string nonce, string signed_data, string destination_udn, string hotspot_ssid, string hotspot_bssid) Verify that the given |certificate| refers to a valid destination with attributes as described in |signed_data|. |certificate| is a x509 certificate in PEM format. |public_key| is the base64 encoded public half of a 1024 bit RSA key in DER format. |nonce| is random string of characters. |destination_udn| is the unique device number for the given destination. |hotspot_ssid| and |hotspot_bssid| are self explanatory, but indicate that shill should not require itself to be connected to the destination in question, but instead use the specified values. |signed_data| formed as follows: Suppose we're connected to a destination with an SSID of ChromeDest1123, a BSSID of 00:11::22:33:44:55, a serial number of ABCDEFG-1234-5678, a public key of "MIGJAoGB+", and a nonce like "2ldg8". The device takes that information and joins it together with commas like so: "ChromeDest1123,ABCDEFG-1234-5678,00:11:22:33:44:55,MIGJAoGB+,2ldg8" The device then takes the SHA-1 hash of that string, and encrypts that hash with its private key. The resulting byte string is base64 encoded and passed as |signed_data|. This function verifies that the device described by all these pieces of data is a real device by checking that: 1) The |certificate| is signed by a trusted CA. 2) The public key signed by the CA matches to the private key used to encrypt |signed_data|. 3) The public key given is tied to the certificate by being included in the |signed_data|. 4) A WiFi service is currently connected to the SSID and BSSID in |signed_data|. This check will be skipped if |hotspot_bssid| and |hotspot_ssid| are of non-zero length. If all properties hold, this function will return true, otherwise false. string VerifyAndEncryptCredentials(string certificate, string public_key string nonce, string signed_data, string destination_udn, string hotspot_ssid, string hotspot_bssid, object service) Verifies the given credentials as in VerifyDestination, and then uses |public_key| to encrypt the psk for the service identified by |service|. The psk is padded with PKCS#1 v1.5. Returns the base64 encoded, encrypted psk, or an empty string on error. string VerifyAndEncryptData(string certificate, string public_key string nonce, string signed_data, string destination_udn, string hotspot_ssid, string hotspot_bssid, string data_to_encrypt) Verifies the given credentials as in VerifyDestination, and then uses |public_key| to encrypt |data_to_encrypt|. The data to encrypt is padded as in VerifyAndEncryptCredentials. Returns the base64 encoded, encrypted data, or an empty string on error. void ConnectToBestServices() For each technology present, connect to the "best" service available, as determined by sorting all services independent of their current connectivity state. As a general rule, shill does not disrupt current connectivity even if "better" connectivity options appear. This method allows this rule to be violated for a single instance for each technology type. void CreateConnectivityReport() For each connected service, perform a single connectivity trial and report the results to the log. This connectivity test does not affect Service state. void ClaimInterface(string claimer_name, string interface_name) Assign the ownership of a device |interface_name| to the claimer |claimer_name|. The specified device will be added to the blacklist. Any current connection on that device will be terminated, and shill will stop managing that device. void ReleaseInterface(string claimer_name, string interface_name) Take the ownership of a device |interface_name| from claimer |claimer_name| back to shill. The specified device will be removed from the blacklist and managed by shill. string SetupApModeInterface() (Brillo only) Ask WiFi driver to setup an AP mode interface. The driver might teardown the station mode interface as a result of this call. Shill will revert to station mode if the remote service that called this method vanishes. Return an interface name on success, or an empty string on error. string SetupStationModeInterface() (Brillo only) Ask WiFi driver to setup a station mode interface. The driver might teardown the AP mode interface as a result of this call. Return an interface name on success, or an empty string on error. void SetSchedScan(boolean enable) Enable/disable scheduled scan for wifi devices. This will also stop any ongoing scheduled scan in wpa_supplicant. Signals PropertyChanged(string name, variant value) This signal indicates a changed value of the given property. StateChanged(string state) This signal is similar to the PropertyChanged signal for the State property. It exists for application state only care about the current state and so can avoid to be woken up when other details changes. Properties string ActiveProfile [readwrite] Object path of the current active profile. boolean ArpGateway [readwrite] Specifies whether the DHCP client should be configured to perform the extra step of performing an ARP of the gateway IP address. This provides a level of assurance that the issued IP address is valid and not blocked in some manner unknown by the DHCP server. array{string} AvailableTechnologies [readonly] The list of available technologies. The strings are the same as the ones from the service types. string CheckPortalList [readwrite] The list of technologies for which captive portal checking is enabled. This is a comma-separated string; e.g. "wifi,wimax,vpn". array{string} ClaimedDevices [readonly] The list of devices that have been claimed by the current DeviceClaimer (if it exists). array{string} ConnectedTechnologies [readonly] The list of connected technologies. The strings are the same as the ones from the service type. string ConnectionState [readonly] The state of the highest ranked connected service. The value of this property is "idle" if there are no connected services. Otherwise this can be any of the connected service states, e.g, "portal" or "online". string Country [readwrite] The ISO 3166 country code. This may not be defined; it is defined if manually set or if it is discovered through a service such as WiFi, Celluar, or GPS. string DefaultService [readonly] The current connected service with the default route. string DefaultTechnology [readonly] The current connected technology which holds the default route. array{object} Devices [readonly] List of device object paths. string DHCPProperty.Hostname [readwrite] Optional setting to configure DHCP requests. Some DHCP servers may register a DNS entry on behalf of this hostname; others may just make available a table for administrators to tell what machines are on their network. The default for this name is empty, which means that the system will not report a hostname. When this property is set it will be persisted in the default profile. string DHCPProperty.VendorClass [readwrite] Optional setting to configure DHCP requests. This setting can be used to identify the vendor that manufactured the client hardware, the software in use, or an industry consortium to which the vendor belongs. The default for this property is empty, which means the system will not report a Vendor Class. When set, this property will override the default setting and be persisted in the default profile. bool DisableVHT [readwrite] Disables 802.11ac Very High Throughput (VHT) connections, reverting to 802.11n. array{string} EnabledTechnologies [readonly] The list of enabled technologies. The strings are the same as the ones from the service types. string IgnoredDNSSearchPaths [readwrite] A comma-separated list of DNS domain suffixes which should be ignored when creating a DNS search list from DHCP-provided parameters. This list will be consulted every time DHCP information is updated (while connecting to a network, or when a DHCP lease is renewed). string LinkMonitorTechnologies [readwrite] The list of technologies for which thie Link Monitor will be enabled. The Link monitor periodically checks for connectivity to the default gateway using ARP requests. string NoAutoConnectTechnologies [readwrite] The list of technologies for which auto-connect is disabled. This is a comma-separated string, e.g. "cellular,wimax". boolean OfflineMode [readwrite] The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations. string PortalURL [readwrite] The URL to use when doing captive portal checking. When a service reaches the "ready" state and captive portal checking is enabled for it; an HTTP GET of this URL is done. If this fails with a 204 error then the service is moved to the "online" state. Otherwise the service is assumed to be not online and marked in a "portal" state. Note that this check may fail for multiple reasons that are indicated in the Error property of the service. string ProhibitedTechnologies [readwrite] The list of technologies that should be disabled and prohibited from being enabled. This is a comma-separated string, e.g. "cellular,wimax". All devices that are one of these technology types will be immediately disabled persistently, and when a new device of this type appears, it will be disabled by default. Attempts to enable such a device using the EnableTechnology will fail. The strings are the same as the ones from the service types. int32 PortalCheckInterval [readwrite] The interval in seconds between re-checking a service in the portal state. array{string} Profiles [readonly] List of profile object paths. array{object} Services [readonly] List of service object paths that are visible. The list is sorted internally to have the service with the default route always first and then the favorite services followed by scan results. This list represents the available services for the current selected profile. If the profile gets changed then this list will be updated. The same list is available via the profile object itself. It is just provided here for convenience of applications only dealing with the current active profile. array{object} ServiceCompleteList [readonly] Complete list of service object paths, including those that are not currently visible. For example, WiFi services that are stored in a loaded profile but cannot currently be connected are presented in this list. The services are listed in the same service sorting order as the "Services" property above. Change events for this property are not emitted. array{object} ServiceWatchList [readonly] List of service object paths that are in a 'non-idle' state. This indicates the set of services which are currently listed as associating, configuring, or some other state other than idle, failure or unknown. This allows a caller to use this property indication to track which services should be monitored for state changes. The services are listed in the same service sorting order as the "Services" property above, and a change event for this property is emitted every time the Service list is reordered, even if this list has not changed. string State [readonly] The global connection state of a system. Possible values are "online" if at least one connection exists and "offline" if no device is connected. array{string} UninitializedTechnologies [readonly] The list of uninitialized technologies. An uninitialized technology is a technology that has at least one device that is not initialized yet (i.e. the Device object is not created yet). The strings are the same as the ones from the service types. bool WakeOnLanEnabled [readwrite] Specifies whether the Wake on LAN feature should be enabled on new Ethernet links. Currently connected links are un-affected.