blob: 97ec0103169eea0b42d89615c9048a06ae552b20 [file] [log] [blame]
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 each device of the specified
technology. If type is the string "" then a scan
request is made for each technology.
For WiFi devices this triggers a search for
available WiFi networks. When results are
available, the Device.Networks property is
updated and a PropertyChanged signal is issued.
For cellular devices, this triggers a search for
available cellular networks, which may take up to a
minute or two to complete. When the results are
available, the Cellular.FoundNetworks property of
each cellular device is set with the results.
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,
SecurityClass, 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 "SecurityClass" 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
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,wifi,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, 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 all connected services
if a check is not currently in progress.
dict GetNetworksForGeolocation()
Returns a dictionary (array of dictionary entries)
containing information about visible cellular and WiFi
networks which may be then used for Geolocation.
Each key is a string representing a network type (cellular
or WiFi), 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.
If there are several network devices of a particular
type, this method will return all of the information
from all of the devices.
For more details, see:
https://developers.google.com/maps/documentation/business/geolocation/
boolean SetNetworkThrottlingStatus(bool enabled,
uint32 upload_rate_kbits,
uint32 download_rate_kbits)
Enables or disables network throttling to limit bandwidth
consumed by the device. Applies to all interfaces. Both
rates are specified in kbits/s. If throttling already
exists, this will override current throttling settings.
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 block list. 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 block list and managed by shill.
void SetDNSProxyIPv4Address(string ipv4_address)
Assigns the IPv4 address of the dns-proxy service.
When set, shill will use this address as the
system name server rather than those specified by the
relevant service.
This address is enforced to be within a predetermined
system local subnet.
void DNSProxyDOHProviders(array{string, string} providers)
Assigns the DNS-over-HTTPS service providers for use by
the dns-proxy service. URLs of the secure
DNS service endpoints are used as keys. If applicable,
each value is a comma-separated list of the IP addresses
(both v4 and v6 are supported) of the standard DNS name
servers that map to the secure DNS service provider.
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 object ActiveProfile [readonly]
Object path of the top-most Profile in the Profile stack.
string AlwaysOnVpnPackage [readwrite]
Package name of an Android VPN app to use as the "AlwaysOnVpn"
connection. When this property is not "", all user traffic will be
blackholed unless we are connected to an ARC VPN using the
corresponding Android app.
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 technologies for which at least one Device exists (see
the caveat in Devices). Order carries no meaning and is not
guaranteed to be consistent.
string CheckPortalList [readwrite]
The list of technologies for which "captive portal checking"--really
just connectivity quick checks--is enabled. This is a
comma-separated string; e.g. "wifi,cellular,vpn".
array{string} ClaimedDevices [readonly]
The list of the names of devices that have been claimed by the
current DeviceClaimer (if it exists).
array{string} ConnectedTechnologies [readonly]
The list of technologies for which at least one Device is connected
(see the caveat in Devices). Order carries no meaning and is not
guaranteed to be consistent.
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,
"ready" or "online".
object DefaultService [readonly]
The object path of the connected Service with the highest
priority. If there is no connected Service, returns the "/" object
path.
string DefaultTechnology [readonly]
The technology of the DefaultService.
array{object} Devices [readonly]
List of physical Device object paths. No virtual Devices are
contained in this list *except* for any PPPDevices being used by
active PPPoEServices. Order carries no meaning and is not guaranteed
to be consistent.
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 technologies for which at least one Device is enabled
(see the caveat in Devices). Order carries no meaning and is not
guaranteed to be consistent.
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 NoAutoConnectTechnologies [readwrite]
The list of technologies for which auto-connect is disabled. This is
a comma-separated string, e.g. "cellular,wifi".
string PortalFallbackUrlsString [readwrite]
Comma-separated string of URLs used for HTTP connectivity
verification after the first connectivity verification trial. The
order of these URLs has no meaning.
string PortalHttpUrl [readonly]
The URL to use when doing connectivity verification over HTTP.
string PortalHttpsUrl [readonly]
The URL to use when doing connectivity verification over HTTPS.
string ProhibitedTechnologies [readwrite]
The list of technologies whose Devices should be disabled and
prohibited from being enabled. This is a comma-separated string,
e.g. "cellular,wifi". 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. Order carries no meaning and is not guaranteed to be
consistent.
array{object} Profiles [readonly]
List of Profile object paths in the Profile stack. Elements are
ordered from top of the stack to bottom.
array{object} Services [readonly]
List of Service object paths that are visible. The first Service is
always the primary connected Service on the system (if there is
one). Services in a more connected state always come before Services
in a less connected state. In order:
* "online"
* "ready"
* "no-connectivity", "redirect-found", or "portal-suspected"
* "association" or "configuration"
* "idle" or "disconnecting"
* "failure"
Between unconnected Services, connectable Services come before
unconnectable Services. Within the same state "bucket", Services are
ordered based on Technology type (see SetServiceOrder). Services in
the same state bucket and with the same Technology type are then
compared with the following (in order):
* "Priority"
* "Source"
* "ManagedCredentials"
* "AutoConnect"
* "Security" (currently only for WiFi)
* "Profile" ordering
* If the Service has ever connected
* "Strength"
Finally, if two Services have all of those in common, the Service
that was created first will be placed before the other Service.
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, disconnecting, 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 SupportedVPNTypes [readonly]
The list of supported vpn types. This is a comma-separated string;
e.g. "l2tpipsec,openvpn,thirdpartyvpn,arcvpn". The possible value of
list items are "l2tpipsec", "openvpn", "thirdpartyvpn", "arcvpn", and
"wireguard".
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.
bool WiFi.GlobalFTEnabled [readwrite]
Specifies whether or not 802.11r Fast BSS Transition should be
used.
bool WiFi.ScanAllowRoam [readwrite]
Specifies whether or not a WiFi scan could trigger a
roam if a better AP is found on the same network.
array{string, string} DNSProxyDOHProviders [readonly]
The DNS-over-HTTPS service providers. URLs of the secure
DNS service endpoints are used as keys. If applicable,
each value is a comma-separated list of the IP addresses
(both v4 and v6 are supported) of the standard DNS name
servers that map to the secure DNS service provider.