This property might be only present for WiFi
services.
+ boolean LoginRequired [readonly]
+
+ This property indicates that an additional login
+ step is needed before the connection establishment
+ can proceed.
+
string Passphrase [readwrite]
If the service type is WiFi, then this property
array{string} Nameservers [readonly]
The list of currently active nameservers for this
- service. If the server is not in READY, LOGIN or
- ONLINE state than this list will be empty.
+ service. If the server is not in READY or ONLINE
+ state than this list will be empty.
Global nameservers are automatically added to this
list. The array represents a sorted list of the
CONNMAN_SERVICE_STATE_ASSOCIATION = 2,
CONNMAN_SERVICE_STATE_CONFIGURATION = 3,
CONNMAN_SERVICE_STATE_READY = 4,
- CONNMAN_SERVICE_STATE_LOGIN = 5,
- CONNMAN_SERVICE_STATE_ONLINE = 6,
- CONNMAN_SERVICE_STATE_DISCONNECT = 7,
- CONNMAN_SERVICE_STATE_FAILURE = 8,
+ CONNMAN_SERVICE_STATE_ONLINE = 5,
+ CONNMAN_SERVICE_STATE_DISCONNECT = 6,
+ CONNMAN_SERVICE_STATE_FAILURE = 7,
};
enum connman_service_error {
int __connman_service_indicate_error(struct connman_service *service,
enum connman_service_error error);
int __connman_service_indicate_default(struct connman_service *service);
+int __connman_service_request_login(struct connman_service *service);
int __connman_service_lookup(const char *pattern, const char **path);
int __connman_service_connect(struct connman_service *service);
case CONNMAN_LOCATION_RESULT_UNKNOWN:
return;
case CONNMAN_LOCATION_RESULT_PORTAL:
- __connman_service_indicate_state(location->service,
- CONNMAN_SERVICE_STATE_LOGIN);
+ __connman_service_request_login(location->service);
break;
case CONNMAN_LOCATION_RESULT_ONLINE:
__connman_service_indicate_state(location->service,
char *mcc;
char *mnc;
connman_bool_t roaming;
+ connman_bool_t login_required;
struct connman_ipconfig *ipconfig;
struct connman_network *network;
char **nameservers;
return "configuration";
case CONNMAN_SERVICE_STATE_READY:
return "ready";
- case CONNMAN_SERVICE_STATE_LOGIN:
- return "login";
case CONNMAN_SERVICE_STATE_ONLINE:
return "online";
case CONNMAN_SERVICE_STATE_DISCONNECT:
case CONNMAN_SERVICE_STATE_FAILURE:
case CONNMAN_SERVICE_STATE_DISCONNECT:
case CONNMAN_SERVICE_STATE_READY:
- case CONNMAN_SERVICE_STATE_LOGIN:
case CONNMAN_SERVICE_STATE_ONLINE:
break;
case CONNMAN_SERVICE_STATE_ASSOCIATION:
case CONNMAN_SERVICE_STATE_FAILURE:
break;
case CONNMAN_SERVICE_STATE_READY:
- case CONNMAN_SERVICE_STATE_LOGIN:
case CONNMAN_SERVICE_STATE_ONLINE:
return TRUE;
}
connman_resolver_remove_all(ifname);
return;
case CONNMAN_SERVICE_STATE_READY:
- case CONNMAN_SERVICE_STATE_LOGIN:
case CONNMAN_SERVICE_STATE_ONLINE:
break;
}
DBUS_TYPE_BOOLEAN, &required);
}
+static void login_changed(struct connman_service *service)
+{
+ dbus_bool_t required = service->login_required;
+
+ if (service->path == NULL)
+ return;
+
+ connman_dbus_property_changed_basic(service->path,
+ CONNMAN_SERVICE_INTERFACE, "LoginRequired",
+ DBUS_TYPE_BOOLEAN, &required);
+}
+
static void apn_changed(struct connman_service *service)
{
dbus_bool_t required;
connman_dbus_dict_append_basic(dict, "Name",
DBUS_TYPE_STRING, &service->name);
+ connman_dbus_dict_append_basic(dict, "LoginRequired",
+ DBUS_TYPE_BOOLEAN, &service->login_required);
+
switch (service->type) {
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
service->state = state;
state_changed(service);
- if (state == CONNMAN_SERVICE_STATE_ONLINE)
+ if (state == CONNMAN_SERVICE_STATE_ONLINE) {
+ if (service->login_required == TRUE) {
+ service->login_required = FALSE;
+ login_changed(service);
+ }
+
connman_timeserver_sync();
+ }
if (state == CONNMAN_SERVICE_STATE_IDLE) {
connman_bool_t reconnect;
return 0;
}
+int __connman_service_request_login(struct connman_service *service)
+{
+ DBG("service %p", service);
+
+ if (service == NULL)
+ return -EINVAL;
+
+ service->login_required = TRUE;
+ login_changed(service);
+
+ return 0;
+}
+
static connman_bool_t prepare_network(struct connman_service *service)
{
enum connman_network_type type;
"Domains", "Domains.Configuration"]:
val = extract_list(properties[key])
elif key in ["Favorite", "Immutable", "AutoConnect",
- "SetupRequired", "PassphraseRequired"]:
+ "LoginRequired", "SetupRequired",
+ "PassphraseRequired"]:
if properties[key] == dbus.Boolean(1):
val = "true"
else:
elif key in ["Strength"]:
val = int(properties[key])
else:
- val = str(properties[key])
+ val = properties[key]
print " %s = %s" % (key, val)
print