return "bluetooth";
case CONNMAN_SERVICE_TYPE_CELLULAR:
return "cellular";
+ case CONNMAN_SERVICE_TYPE_GPS:
+ return "gps";
case CONNMAN_SERVICE_TYPE_VPN:
return "vpn";
}
static void favorite_changed(struct connman_service *service)
{
+ if (service->path == NULL)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Favorite",
DBUS_TYPE_BOOLEAN, &service->favorite);
}
+static void immutable_changed(struct connman_service *service)
+{
+ if (service->path == NULL)
+ return;
+
+ connman_dbus_property_changed_basic(service->path,
+ CONNMAN_SERVICE_INTERFACE, "Immutable",
+ DBUS_TYPE_BOOLEAN, &service->immutable);
+}
+
static void roaming_changed(struct connman_service *service)
{
+ if (service->path == NULL)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Roaming",
DBUS_TYPE_BOOLEAN, &service->roaming);
static void autoconnect_changed(struct connman_service *service)
{
+ if (service->path == NULL)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "AutoConnect",
DBUS_TYPE_BOOLEAN, &service->autoconnect);
case CONNMAN_SERVICE_TYPE_WIMAX:
case CONNMAN_SERVICE_TYPE_BLUETOOTH:
case CONNMAN_SERVICE_TYPE_CELLULAR:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
return;
case CONNMAN_SERVICE_TYPE_WIFI:
case CONNMAN_SERVICE_SECURITY_PSK:
case CONNMAN_SERVICE_SECURITY_WPA:
case CONNMAN_SERVICE_SECURITY_RSN:
- case CONNMAN_SERVICE_SECURITY_8021X:
if (service->passphrase == NULL)
required = TRUE;
break;
+ case CONNMAN_SERVICE_SECURITY_8021X:
+ break;
}
break;
}
case CONNMAN_SERVICE_TYPE_WIMAX:
case CONNMAN_SERVICE_TYPE_BLUETOOTH:
case CONNMAN_SERVICE_TYPE_WIFI:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
return;
case CONNMAN_SERVICE_TYPE_CELLULAR:
__connman_ipconfig_append_ipv4config(service->ipconfig, iter);
}
+static void append_proxy(DBusMessageIter *iter, void *user_data)
+{
+ struct connman_service *service = user_data;
+
+ switch (service->state) {
+ case CONNMAN_SERVICE_STATE_UNKNOWN:
+ case CONNMAN_SERVICE_STATE_IDLE:
+ case CONNMAN_SERVICE_STATE_FAILURE:
+ case CONNMAN_SERVICE_STATE_DISCONNECT:
+ case CONNMAN_SERVICE_STATE_ASSOCIATION:
+ case CONNMAN_SERVICE_STATE_CONFIGURATION:
+ return;
+ case CONNMAN_SERVICE_STATE_READY:
+ break;
+ }
+
+ if (service->ipconfig != NULL)
+ __connman_ipconfig_append_proxy(service->ipconfig, iter);
+}
+
static void settings_changed(struct connman_service *service)
{
connman_dbus_property_changed_dict(service->path,
append_ipv4, service);
}
+static void ipv4_configuration_changed(struct connman_service *service)
+{
+ connman_dbus_property_changed_dict(service->path,
+ CONNMAN_SERVICE_INTERFACE,
+ "IPv4.Configuration",
+ append_ipv4config,
+ service);
+}
+
static DBusMessage *get_properties(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
switch (service->type) {
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
- case CONNMAN_SERVICE_TYPE_WIMAX:
- case CONNMAN_SERVICE_TYPE_BLUETOOTH:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
break;
case CONNMAN_SERVICE_TYPE_CELLULAR:
case CONNMAN_SERVICE_SECURITY_PSK:
case CONNMAN_SERVICE_SECURITY_WPA:
case CONNMAN_SERVICE_SECURITY_RSN:
- case CONNMAN_SERVICE_SECURITY_8021X:
if (service->passphrase == NULL)
required = TRUE;
break;
+ case CONNMAN_SERVICE_SECURITY_8021X:
+ break;
}
connman_dbus_dict_append_basic(&dict, "PassphraseRequired",
DBUS_TYPE_BOOLEAN, &required);
/* fall through */
case CONNMAN_SERVICE_TYPE_ETHERNET:
+ case CONNMAN_SERVICE_TYPE_WIMAX:
+ case CONNMAN_SERVICE_TYPE_BLUETOOTH:
connman_dbus_dict_append_dict(&dict, "Ethernet",
append_ethernet, service);
break;
connman_dbus_dict_append_dict(&dict, "IPv4.Configuration",
append_ipv4config, service);
+ connman_dbus_dict_append_dict(&dict, "Proxy", append_proxy, service);
+
connman_dbus_dict_close(&array, &dict);
return reply;
if (err < 0)
return __connman_error_failed(msg, -err);
+ ipv4_configuration_changed(service);
+
__connman_storage_save_service(service);
} else
return __connman_error_invalid_property(msg);
set_idle(service);
- connman_service_set_favorite(service, FALSE);
+ __connman_service_set_favorite(service, FALSE);
__connman_storage_save_service(service);
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
case CONNMAN_SERVICE_TYPE_ETHERNET:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
break;
case CONNMAN_SERVICE_TYPE_WIFI:
}
/**
- * connman_service_set_favorite:
+ * __connman_service_set_favorite:
* @service: service structure
* @favorite: favorite value
*
* Change the favorite setting of service
*/
-int connman_service_set_favorite(struct connman_service *service,
+int __connman_service_set_favorite(struct connman_service *service,
connman_bool_t favorite)
{
GSequenceIter *iter;
return 0;
}
+int __connman_service_set_immutable(struct connman_service *service,
+ connman_bool_t immutable)
+{
+ service->immutable = immutable;
+
+ immutable_changed(service);
+
+ return 0;
+}
+
void __connman_service_set_string(struct connman_service *service,
const char *key, const char *value)
{
__connman_service_disconnect(service);
}
+ if (state == CONNMAN_SERVICE_STATE_CONFIGURATION)
+ __connman_ipconfig_enable(service->ipconfig);
+
service->state = state;
state_changed(service);
if (state == CONNMAN_SERVICE_STATE_READY) {
set_reconnect_state(service, TRUE);
- connman_service_set_favorite(service, TRUE);
+ __connman_service_set_favorite(service, TRUE);
reply_pending(service, 0);
static void prepare_8021x(struct connman_service *service)
{
- if (service->eap)
+ if (service->eap != NULL)
connman_network_set_string(service->network, "WiFi.EAP",
service->eap);
- if (service->identity)
+ if (service->identity != NULL)
connman_network_set_string(service->network, "WiFi.Identity",
service->identity);
- if (service->ca_cert_file)
+ if (service->ca_cert_file != NULL)
connman_network_set_string(service->network, "WiFi.CACertFile",
service->ca_cert_file);
- if (service->client_cert_file)
+ if (service->client_cert_file != NULL)
connman_network_set_string(service->network,
"WiFi.ClientCertFile",
service->client_cert_file);
- if (service->private_key_file)
+ if (service->private_key_file != NULL)
connman_network_set_string(service->network,
"WiFi.PrivateKeyFile",
service->private_key_file);
- if (service->private_key_passphrase)
+ if (service->private_key_passphrase != NULL)
connman_network_set_string(service->network,
"WiFi.PrivateKeyPassphrase",
service->private_key_passphrase);
- if (service->phase2)
+ if (service->phase2 != NULL)
connman_network_set_string(service->network, "WiFi.Phase2",
service->phase2);
}
switch (service->type) {
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
return -EINVAL;
case CONNMAN_SERVICE_TYPE_ETHERNET:
case CONNMAN_SERVICE_SECURITY_PSK:
case CONNMAN_SERVICE_SECURITY_WPA:
case CONNMAN_SERVICE_SECURITY_RSN:
- case CONNMAN_SERVICE_SECURITY_8021X:
if (service->passphrase == NULL)
return -ENOKEY;
break;
+ case CONNMAN_SERVICE_SECURITY_8021X:
+ break;
}
break;
}
case CONNMAN_SERVICE_TYPE_ETHERNET:
case CONNMAN_SERVICE_TYPE_WIMAX:
case CONNMAN_SERVICE_TYPE_BLUETOOTH:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
service->autoconnect = FALSE;
break;
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
case CONNMAN_SERVICE_TYPE_ETHERNET:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
break;
case CONNMAN_SERVICE_TYPE_WIFI:
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
case CONNMAN_SERVICE_TYPE_ETHERNET:
+ case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
break;
case CONNMAN_SERVICE_TYPE_WIFI: