char *ipv6_gateway;
char *ipv6_privacy;
char *mac;
+ bool mdns;
char **nameservers;
char **search_domains;
char **timeservers;
char *domain_name;
+#if defined TIZEN_EXT
+ char *connector;
+ char *c_sign_key;
+ char *net_access_key;
+#endif
};
struct connman_config {
#define SERVICE_KEY_PASSPHRASE "Passphrase"
#define SERVICE_KEY_SECURITY "Security"
#define SERVICE_KEY_HIDDEN "Hidden"
+#define SERVICE_KEY_MDNS "mDNS"
#define SERVICE_KEY_IPv4 "IPv4"
#define SERVICE_KEY_IPv6 "IPv6"
#define SERVICE_KEY_SEARCH_DOMAINS "SearchDomains"
#define SERVICE_KEY_TIMESERVERS "Timeservers"
#define SERVICE_KEY_DOMAIN "Domain"
+#if defined TIZEN_EXT
+#define SERVICE_KEY_CONNECTOR "Connector"
+#define SERVICE_KEY_C_SIGN_KEY "CSignKey"
+#define SERVICE_KEY_NET_ACCESS_KEY "NetAccessKey"
+#endif
static const char *config_possible_keys[] = {
CONFIG_KEY_NAME,
SERVICE_KEY_IPv6,
SERVICE_KEY_IPv6_PRIVACY,
SERVICE_KEY_MAC,
+ SERVICE_KEY_MDNS,
SERVICE_KEY_NAMESERVERS,
SERVICE_KEY_SEARCH_DOMAINS,
SERVICE_KEY_TIMESERVERS,
SERVICE_KEY_DOMAIN,
+#if defined TIZEN_EXT
+ SERVICE_KEY_CONNECTOR,
+ SERVICE_KEY_C_SIGN_KEY,
+ SERVICE_KEY_NET_ACCESS_KEY,
+#endif
NULL,
};
list = list->next) {
service_id = list->data;
- service = __connman_service_lookup_from_ident(service_id);
+ service = connman_service_lookup_from_identifier(service_id);
if (service) {
__connman_service_set_immutable(service, false);
__connman_service_set_config(service, NULL, NULL);
g_free(config_service->config_ident);
g_free(config_service->config_entry);
g_free(config_service->virtual_file);
+#if defined TIZEN_EXT
+ g_free(config_service->connector);
+ g_free(config_service->c_sign_key);
+ g_free(config_service->net_access_key);
+#endif
g_free(config_service);
}
g_strfreev(strlist);
}
+ service->mdns = __connman_config_get_bool(keyfile, group,
+ SERVICE_KEY_MDNS, NULL);
+
return true;
err:
g_free(service->type);
service->type = str;
} else {
- DBG("Type of the configured service is missing for group %s",
- group);
+ connman_warn("Type of the configured service is missing "
+ "for group %s", group);
goto err;
}
unsigned int ssid_len;
ssid_len = strlen(service->name);
+#if defined TIZEN_EXT
+ ssid = g_try_malloc0(ssid_len + 1);
+#else
ssid = g_try_malloc0(ssid_len);
+#endif
if (!ssid)
goto err;
g_free(service->passphrase);
service->passphrase = str;
}
+#if defined TIZEN_EXT
+
+ str = __connman_config_get_string(keyfile, group, SERVICE_KEY_CONNECTOR,
+ NULL);
+ if (str) {
+ g_free(service->connector);
+ service->connector = str;
+ }
+
+ str = __connman_config_get_string(keyfile, group, SERVICE_KEY_C_SIGN_KEY,
+ NULL);
+ if (str) {
+ g_free(service->c_sign_key);
+ service->c_sign_key = str;
+ }
+
+ str = __connman_config_get_string(keyfile, group, SERVICE_KEY_NET_ACCESS_KEY,
+ NULL);
+ if (str) {
+ g_free(service->net_access_key);
+ service->net_access_key = str;
+ }
+#endif
str = __connman_config_get_string(keyfile, group, SERVICE_KEY_SECURITY,
NULL);
if (str) {
if (security == CONNMAN_SERVICE_SECURITY_PSK ||
+#if defined TIZEN_EXT
+ security == CONNMAN_SERVICE_SECURITY_RSN ||
+ security == CONNMAN_SERVICE_SECURITY_SAE ||
+#endif
security == CONNMAN_SERVICE_SECURITY_WEP) {
service->security = security;
} else {
} else
service->security = CONNMAN_SERVICE_SECURITY_PSK;
+#if defined TIZEN_EXT
+ } else if (service->connector) {
+
+ if (str && security != CONNMAN_SERVICE_SECURITY_DPP)
+ connman_info("Mismatch between DPP configuration and "
+ "setting %s = %s",
+ SERVICE_KEY_SECURITY, str);
+
+ service->security = CONNMAN_SERVICE_SECURITY_DPP;
+#endif
} else if (str) {
if (security != CONNMAN_SERVICE_SECURITY_NONE)
groups = g_key_file_get_groups(keyfile, NULL);
for (i = 0; groups[i]; i++) {
- if (!g_str_has_prefix(groups[i], "service_"))
+ if (!g_str_has_prefix(groups[i], "service_")) {
+ connman_warn("Ignore group named '%s' because prefix "
+ "is not 'service_'", groups[i]);
continue;
+ }
if (load_service(keyfile, groups[i], config))
found = true;
}
if (config->phase2)
__connman_service_set_string(service, "Phase2", config->phase2);
+#if defined TIZEN_EXT
+ else
+ __connman_service_set_string(service, "Phase2", NULL);
+#endif
if (config->passphrase)
__connman_service_set_string(service, "Passphrase",
if (config->hidden)
__connman_service_set_hidden(service);
+
+#if defined TIZEN_EXT
+ if (config->connector)
+ __connman_service_set_string(service, "Connector",
+ config->connector);
+ if (config->c_sign_key)
+ __connman_service_set_string(service, "CSignKey",
+ config->c_sign_key);
+ if (config->net_access_key)
+ __connman_service_set_string(service, "NetAccessKey",
+ config->net_access_key);
+#endif
}
struct connect_virtual {
return FALSE;
}
+#if defined TIZEN_EXT
+static bool __check_address_type(int address_family, const char *address)
+{
+ unsigned char buf[sizeof(struct in6_addr)] = {0, };
+ int err = 0;
+
+ err = inet_pton(address_family, address, buf);
+ if(err > 0)
+ return TRUE;
+
+ return FALSE;
+}
+#endif
+
static int try_provision_service(struct connman_config_service *config,
struct connman_service *service)
{
ssid = connman_network_get_blob(network, "WiFi.SSID",
&ssid_len);
- if (!ssid) {
- connman_error("Network SSID not set");
- return -EINVAL;
- }
+ if (!ssid)
+ return -ENOENT;
if (!config->ssid || ssid_len != config->ssid_len)
return -ENOENT;
case CONNMAN_SERVICE_TYPE_GPS:
case CONNMAN_SERVICE_TYPE_VPN:
case CONNMAN_SERVICE_TYPE_P2P:
+#if defined TIZEN_EXT_WIFI_MESH
+ case CONNMAN_SERVICE_TYPE_MESH:
+#endif
return -ENOENT;
}
DBG("service %p ident %s", service,
- __connman_service_get_ident(service));
+ connman_service_get_identifier(service));
if (config->mac) {
struct connman_device *device;
return -ENOENT;
}
+#if defined TIZEN_EXT
+ struct connman_ipconfig *ip6config = __connman_service_get_ip6config(service);
+ enum connman_ipconfig_method ipv6_method = __connman_ipconfig_get_method(ip6config);
+ if (ipv6_method == CONNMAN_IPCONFIG_METHOD_MANUAL)
+ goto ipv6_out;
+#endif
if (!config->ipv6_address) {
connman_network_set_ipv6_method(network,
CONNMAN_IPCONFIG_METHOD_AUTO);
connman_ipaddress_free(address);
}
+#if defined TIZEN_EXT
+ipv6_out:
+#endif
if (config->ipv6_privacy) {
struct connman_ipconfig *ipconfig;
config->ipv6_privacy);
}
+#if defined TIZEN_EXT
+ struct connman_ipconfig *ip4config = __connman_service_get_ip4config(service);
+ enum connman_ipconfig_method ipv4_method = __connman_ipconfig_get_method(ip4config);
+ if (ipv4_method == CONNMAN_IPCONFIG_METHOD_MANUAL)
+ goto ipv4_out;
+#endif
if (!config->ipv4_address) {
connman_network_set_ipv4_method(network,
CONNMAN_IPCONFIG_METHOD_DHCP);
connman_ipaddress_free(address);
}
+#if defined TIZEN_EXT
+ipv4_out:
+#endif
__connman_service_disconnect(service);
- service_id = __connman_service_get_ident(service);
+ service_id = connman_service_get_identifier(service);
config->service_identifiers =
g_slist_prepend(config->service_identifiers,
g_strdup(service_id));
__connman_service_nameserver_clear(service);
for (i = 0; config->nameservers[i]; i++) {
+#if defined TIZEN_EXT
+ if (__check_address_type(AF_INET, config->nameservers[i]))
+ __connman_service_nameserver_append(service,
+ config->nameservers[i], false,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
+ else if (__check_address_type(AF_INET6, config->nameservers[i]))
+ __connman_service_nameserver_append(service,
+ config->nameservers[i], false,
+ CONNMAN_IPCONFIG_TYPE_IPV6);
+#else
__connman_service_nameserver_append(service,
config->nameservers[i], false);
+#endif
}
}
__connman_service_set_search_domains(service,
config->search_domains);
+ __connman_service_set_mdns(service, config->mdns);
+
if (config->timeservers)
__connman_service_set_timeservers(service,
config->timeservers);
return 0;
}
+#if !defined TIZEN_EXT
__connman_service_set_immutable(service, true);
+#endif
if (type == CONNMAN_SERVICE_TYPE_ETHERNET ||
type == CONNMAN_SERVICE_TYPE_GADGET) {
/* For now only WiFi, Gadget and Ethernet services are supported */
type = connman_service_get_type(service);
-
+#if defined TIZEN_EXT
+ if (!simplified_log)
+#endif
DBG("service %p type %d", service, type);
if (type != CONNMAN_SERVICE_TYPE_WIFI &&
type != CONNMAN_SERVICE_TYPE_GADGET)
return -ENOSYS;
+#if defined TIZEN_EXT
+ if(type == CONNMAN_SERVICE_TYPE_WIFI &&
+ __connman_service_get_security(service) ==
+ CONNMAN_SERVICE_SECURITY_NONE)
+ return -ENOSYS;
+#endif
+
return find_and_provision_service(service);
}
}
g_free(entries);
- return;
}
bool __connman_config_address_provisioned(const char *address,