--enable-bluetooth \
--enable-ofono \
--enable-sonet \
- --enable-sec-ext \
+ --enable-tizen-ext \
--enable-alwayson \
--enable-pacrunner \
--enable-google \
AC_ARG_ENABLE(loopback,
AC_HELP_STRING([--enable-loopback], [enable loopback support]),
- [enable_loopback=${enableval}], [enable_loopback="no"])
+ [enable_loopback=${enableval}], [enable_loopback="yes"])
if (test "${enable_loopback}" != "no"); then
AC_CHECK_HEADERS(sys/inotify.h, dummy=yes,
AC_MSG_ERROR(inotify header files are required))
+connman (0.77.2-0slp2+63) unstable; urgency=low
+
+ * Change sonet's dbus service name
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+63
+
+ -- Sunkey Lee <yuvjjang.lee@samsung.com> Thu, 09 Feb 2012 10:36:51 +0900
+
+connman (0.77.2-0slp2+62) unstable; urgency=low
+
+ * Add mixed wifi encryption mode to service interface
+ * Lookup a matched service using essid and update it immediately when Manager.ProvisionService is invoked
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+62
+
+ -- Jaehyun Kim <jeik01.kim@samsung.com> Thu, 02 Feb 2012 20:00:10 +0900
+
+connman (0.77.2-0slp2+61) unstable; urgency=low
+
+ * Add a propertiy(wifi encryption mode) to service interface
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+61
+
+ -- Jaehyun Kim <jeik01.kim@samsung.com> Wed, 01 Feb 2012 16:42:26 +0900
+
+connman (0.77.2-0slp2+60) unstable; urgency=low
+
+ * Fix wifi disconnect callback bug
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+60
+
+ -- Sunkey Lee <yuvjjang.lee@samsung.com> Tue, 31 Jan 2012 16:20:46 +0900
+
+connman (0.77.2-0slp2+59) unstable; urgency=low
+
+ * Enable loopback plugin
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+59
+
+ -- Sunkey Lee <yuvjjang.lee@samsung.com> Wed, 25 Jan 2012 14:29:57 +0900
+
+connman (0.77.2-0slp2+58) unstable; urgency=low
+
+ * Modify the way to set dbus access authority
+ * According to security plicy, change to use ID from string
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+58
+
+ -- Sanghoon Cho <sanghoon80.cho@samsung.com> Tue, 17 Jan 2012 17:13:02 +0900
+
+connman (0.77.2-0slp2+57) unstable; urgency=low
+
+ * Fix a disconnect callback crash
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+57
+
+ -- Sunkey Lee <yuvjjang.lee@samsung.com> Thu, 12 Jan 2012 21:50:24 +0900
+
+connman (0.77.2-0slp2+56) unstable; urgency=low
+
+ * Fix a bug
+ * The WPS flag("UseWPS") is not cleared when cancel the wps connection
+ * Git: pkgs/c/connman
+ * Tag: connman_0.77.2-0slp2+56
+
+ -- Sanghoon Cho <sanghoon80.cho@samsung.com> Thu, 12 Jan 2012 20:36:07 +0900
+
connman (0.77.2-0slp2+55) unstable; urgency=low
* Release connman_0.77.2-0slp2+55
* Git: pkgs/c/connman
* Tag: connman_0.77.2-0slp2+55
- -- DongHoo Park <donghoo.park@samsung.com> Fri, 23 Dec 2011 12:50:07 +0900
+ -- Jaehyun Kim <jeik01.kim@samsung.com> Thu, 12 Jan 2012 11:20:49 +0900
connman (0.77.2-0slp2+54) unstable; urgency=low
passphrase is needed, then this property will
be set to false.
+ string BSSID [readonly]
+
+ If the service type is WiFi, then this property
+ indicates the BSSID of the service.
+
+ uint32 MaxRate [readonly]
+
+ If the service type is WiFi, then this property
+ indicates the Maximum speed(bps) of the service.
+
+ uint16 Frequency [readonly]
+
+ If the service type is WiFi, then this property
+ indicates the frequency band(MHz) of the service.
+
+ string EncryptionMode [readonly]
+
+ If the service type is WiFi, then this property
+ indicates the key encryption mode.
+
+ Possible values are "none", "wep", "tkip", "aes"
+ and "mixed".
+
+ This property might be only present for WiFi
+ services.
+
uint8 Strength [readonly]
Indicates the signal strength of the service. This
{
struct timeout_handler *handler = data;
-#if defined TIZEN_EXT
- if (handler == NULL)
- return;
-#endif
-
if (handler->id > 0) {
g_source_remove(handler->id);
handler->id = 0;
dbus_int16_t g_supplicant_network_get_signal(GSupplicantNetwork *network);
dbus_bool_t g_supplicant_network_get_wps(GSupplicantNetwork *network);
+#if defined TIZEN_EXT
+/*
+ * Description: Network client requires additional wifi specific info
+ */
+const unsigned char *g_supplicant_network_get_bssid(GSupplicantNetwork *network);
+unsigned int g_supplicant_network_get_maxrate(GSupplicantNetwork *network);
+unsigned short g_supplicant_network_get_frequency(GSupplicantNetwork *network);
+const char *g_supplicant_network_get_enc_mode(GSupplicantNetwork *network);
+#endif
+
struct _GSupplicantCallbacks {
void (*system_ready) (void);
void (*system_killed) (void);
return network->wps;
}
+#if defined TIZEN_EXT
+/*
+ * Description: Network client requires additional wifi specific info
+ */
+const unsigned char *g_supplicant_network_get_bssid(GSupplicantNetwork *network)
+{
+ if (network == NULL || network->best_bss == NULL)
+ return NULL;
+
+ return (const unsigned char *)network->best_bss->bssid;
+}
+
+unsigned int g_supplicant_network_get_maxrate(GSupplicantNetwork *network)
+{
+ if (network == NULL || network->best_bss == NULL)
+ return 0;
+
+ return network->best_bss->maxrate;
+}
+
+unsigned short g_supplicant_network_get_frequency(GSupplicantNetwork *network)
+{
+ if (network == NULL || network->best_bss == NULL)
+ return 0;
+
+ return network->best_bss->frequency;
+}
+
+const char *g_supplicant_network_get_enc_mode(GSupplicantNetwork *network)
+{
+ if (network == NULL || network->best_bss == NULL)
+ return NULL;
+
+ if ((network->best_bss->pairwise & G_SUPPLICANT_PAIRWISE_CCMP) &&
+ (network->best_bss->pairwise & G_SUPPLICANT_PAIRWISE_TKIP))
+ return "mixed";
+ else if (network->best_bss->pairwise & G_SUPPLICANT_PAIRWISE_CCMP)
+ return "aes";
+ else if (network->best_bss->pairwise & G_SUPPLICANT_PAIRWISE_TKIP)
+ return "tkip";
+ else if (network->best_bss->security == G_SUPPLICANT_SECURITY_WEP)
+ return "wep";
+
+ return "none";
+}
+#endif
+
static void merge_network(GSupplicantNetwork *network)
{
GString *str;
SUPPLICANT_DBG("");
- interface = g_hash_table_lookup(interface_table, data->path);
- if (interface == NULL)
- return;
-
if (error != NULL)
result = -EIO;
if (interface == NULL)
return;
+#if defined TIZEN_EXT
+ if (error != NULL && data->callback != NULL) {
+ data->callback(-EIO, interface, data->user_data);
+ data->user_data = NULL;
+ }
+#else
if (error != NULL && data->callback != NULL)
data->callback(-EIO, interface, data->user_data);
+#endif
/* If we are disconnecting from previous WPS successful
* association. i.e.: it did not went through AddNetwork,
*/
int connman_network_set_proxy(struct connman_network *network,
const char *proxies);
+/*
+ * Description: Network client requires additional wifi specific info
+ */
+int connman_network_set_bssid(struct connman_network *network,
+ const unsigned char *bssid);
+unsigned char *connman_network_get_bssid(struct connman_network *network);
+
+int connman_network_set_maxrate(struct connman_network *network,
+ unsigned int maxrate);
+unsigned int connman_network_get_maxrate(struct connman_network *network);
+
+int connman_network_set_enc_mode(struct connman_network *network,
+ const char *encryption_mode);
+const char *connman_network_get_enc_mode(struct connman_network *network);
#endif
+
int connman_network_set_name(struct connman_network *network,
const char *name);
int connman_network_set_strength(struct connman_network *network,
gchar **strv;
int index = 0;
- strv = g_strsplit_set(path, "_", -1);
+ strv = g_strsplit_set(path, "_", -1);
index = g_strv_length(strv);
svc_category_id = atoi(strv[index-1]);
g_strfreev(strv);
-
+
DBG("svc category id (%d)",svc_category_id);
//internet service
__reset_retry_timer();
- DBG("cellular internet service path (%s), service(%p) added", path, service);
+ DBG("cellular internet service path (%s), service(%p) added", path, service);
if(connected_default_service == NULL){
DBG("request to connect default cellular service");
DBG("service type is not cellular device");
return;
}
-
+
if(celluar_default_service == service){
DBG("cellular internet service removed");
celluar_default_service = NULL;
__send_default_connection_info(service, CONNMAN_SERVICE_STATE_IDLE);
}
}
-
+
return;
}
if(enabled && connected_default_service == NULL){
DBG("connect default cellular service");
__request_service_connect(celluar_default_service);
-
+
}
else if(enabled == FALSE && connected_default_service == celluar_default_service){
DBG("disconnect default cellular service");
__request_service_disconnect(celluar_default_service);
}
-
+
return;
}
}
DBG("service state changed service type[%d] state[%d]",connman_service_get_type(service), state);
-
+
if(state == CONNMAN_SERVICE_STATE_IDLE){
__unset_default_connected_service(service, state);
}
{
DBG("service proxy changed notifier");
int service_state = 0;
-
+
if(connected_default_service == NULL ||service != connected_default_service){
return;
}
service_state = CONNMAN_SERVICE_STATE_READY;
__send_default_connection_info(service, service_state);
-
+
return;
}
DBG("not a default cellular service");
return;
}
-
+
if(connected_default_service == NULL || connected_default_service == service){
DBG("request default cellular service connect");
connected_default_service = NULL;
}
DBG("current default connected service (%p)", connected_default_service);
- return;
+ return;
}
static int __dbus_request(const char *path, const char *interface, const char *method,
if (path == NULL)
return -EINVAL;
- message = dbus_message_new_method_call("org.tizen.sonet", path, interface, method);
+ message = dbus_message_new_method_call("net.sonet", path, interface, method);
if (message == NULL)
return -ENOMEM;
dbus_pending_call_set_notify(call, notify, user_data, free_function);
dbus_message_unref(message);
-
+
return -EINPROGRESS;
}
gchar *connection_type = NULL, *connection_state = NULL, *ip_addr = NULL, *proxy_addr = NULL;
int service_type = 0;
gchar **proxy_list = NULL;
-
+
service_type = connman_service_get_type(service);
const char* tmp = __always_on_service_type2string(service_type);
connection_type = g_strdup(tmp);
if(proxy_addr == NULL)
proxy_addr = g_strdup("");
- __dbus_request("/", "org.tizen.sonet.master", "UpdateDefaultConnectionInfo",
- NULL, NULL, NULL,
- DBUS_TYPE_STRING,&connection_type, DBUS_TYPE_STRING,&connection_state,
+ __dbus_request("/", "net.sonet.master", "UpdateDefaultConnectionInfo",
+ NULL, NULL, NULL,
+ DBUS_TYPE_STRING,&connection_type, DBUS_TYPE_STRING,&connection_state,
DBUS_TYPE_STRING,&ip_addr, DBUS_TYPE_STRING,&proxy_addr,DBUS_TYPE_INVALID);
g_free(connection_type);
g_free(ip_addr);
g_free(proxy_addr);
g_strfreev(proxy_list);
-
+
return;
}
static int alwayson_init(void)
{
- DBG("alwayson init");
+ DBG("alwayson init");
connection = connman_dbus_get_connection();
connman_notifier_register(¬ifier);
connection_timeout = TIMEOUT_DEFAULT;
#include <connman/technology.h>
#include <connman/log.h>
-#define SONET_SERVICE "org.tizen.sonet"
+#define SONET_SERVICE "net.sonet"
#define SONET_MASTER_INTERFACE SONET_SERVICE ".master"
#define SONET_MODEM_INTERFACE SONET_SERVICE ".modem"
dbus_connection_unref(connection);
}
-CONNMAN_PLUGIN_DEFINE(sonet, "Tizen OpenSrc Network Framework plugin", VERSION,
+CONNMAN_PLUGIN_DEFINE(sonet, "Samsung OpenSrc Network Framework plugin", VERSION,
CONNMAN_PLUGIN_PRIORITY_DEFAULT, sonet_init, sonet_exit)
connman_network_set_available(network, TRUE);
+#if defined TIZEN_EXT
+ connman_network_set_bssid(network,
+ g_supplicant_network_get_bssid(supplicant_network));
+ connman_network_set_maxrate(network,
+ g_supplicant_network_get_maxrate(supplicant_network));
+ connman_network_set_frequency(network,
+ g_supplicant_network_get_frequency(supplicant_network));
+ connman_network_set_enc_mode(network,
+ g_supplicant_network_get_enc_mode(supplicant_network));
+#endif
+
if (ssid != NULL)
connman_network_set_group(network, group);
}
calculate_strength(network));
connman_network_update(connman_network);
}
+
+#if defined TIZEN_EXT
+ const unsigned char *bssid;
+ unsigned int maxrate;
+ connman_uint16_t frequency;
+
+ bssid = g_supplicant_network_get_bssid(network);
+ maxrate = g_supplicant_network_get_maxrate(network);
+ frequency = g_supplicant_network_get_frequency(network);
+
+ connman_network_set_bssid(connman_network, bssid);
+ connman_network_set_maxrate(connman_network, maxrate);
+ connman_network_set_frequency(connman_network, frequency);
+#endif
}
static void debug(const char *str)
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
- <policy user="root">
+ <policy user="0">
<allow own="net.connman"/>
<allow send_destination="net.connman"/>
<allow send_interface="net.connman.Agent"/>
<allow send_interface="net.connman.Counter"/>
<allow send_interface="net.connman.Notification"/>
</policy>
- <policy user="inhouse">
+ <policy user="5000">
<allow own="net.connman"/>
<allow send_destination="net.connman"/>
<allow send_interface="net.connman.Agent"/>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
- <policy user="root">
+ <policy user="0">
<allow own="net.connman"/>
<allow send_interface="net.connman.Agent"/>
</policy>
- <policy user="inhouse">
+ <policy user="5000">
<allow own="net.connman"/>
<allow send_interface="net.connman.Agent"/>
</policy>
connman_bool_t wps;
connman_bool_t use_wps;
char *pin_wps;
+#if defined TIZEN_EXT
+ char encryption_mode[6];
+ unsigned char bssid[6];
+ unsigned int maxrate;
+#endif
} wifi;
struct {
return 0;
}
+
+/*
+ * Description: Network client requires additional wifi specific info
+ */
+int connman_network_set_bssid(struct connman_network *network,
+ const unsigned char *bssid)
+{
+ if (bssid == NULL)
+ return -EINVAL;
+
+ DBG("network %p bssid %02x:%02x:%02x:%02x:%02x:%02x", network,
+ bssid[0], bssid[1], bssid[2],
+ bssid[3], bssid[4], bssid[5]);
+
+ int i = 0;
+ for (;i < 6;i++)
+ network->wifi.bssid[i] = bssid[i];
+
+ return 0;
+}
+
+unsigned char *connman_network_get_bssid(struct connman_network *network)
+{
+ return (unsigned char *)network->wifi.bssid;
+}
+
+int connman_network_set_maxrate(struct connman_network *network,
+ unsigned int maxrate)
+{
+ DBG("network %p maxrate %d", network, maxrate);
+
+ network->wifi.maxrate = maxrate;
+
+ return 0;
+}
+
+unsigned int connman_network_get_maxrate(struct connman_network *network)
+{
+ return network->wifi.maxrate;
+}
+
+int connman_network_set_enc_mode(struct connman_network *network,
+ const char *encryption_mode)
+{
+ if (encryption_mode == NULL)
+ return -EINVAL;
+
+ DBG("network %p encryption mode %s", network, encryption_mode);
+
+ g_strlcpy(network->wifi.encryption_mode, encryption_mode, 6);
+
+ return 0;
+}
+
+const char *connman_network_get_enc_mode(struct connman_network *network)
+{
+ return (const char *)network->wifi.encryption_mode;
+}
#endif
int connman_network_set_nameservers(struct connman_network *network,
technology_default(type);
interface = connman_service_get_interface(service);
+#if !defined TIZEN_EXT
+/*
+ * Description: Tethering service is provided by external module in TIZEN
+ */
__connman_tethering_update_interface(interface);
+#endif
g_free(interface);
for (list = notifier_list; list; list = list->next) {
return TRUE;
}
+#if defined TIZEN_EXT
+static void append_wifi_ext_info(DBusMessageIter *dict,
+ struct connman_network *network)
+{
+ char bssid_buff[18] = {0,};
+ unsigned char *bssid_str = bssid_buff;
+ unsigned char *bssid;
+ unsigned int maxrate;
+ connman_uint16_t frequency;
+ const char *enc_mode;
+
+ bssid = connman_network_get_bssid(network);
+ maxrate = connman_network_get_maxrate(network);
+ frequency = connman_network_get_frequency(network);
+ enc_mode = connman_network_get_enc_mode(network);
+
+ snprintf(bssid_str, 18, "%02x:%02x:%02x:%02x:%02x:%02x",
+ bssid[0], bssid[1], bssid[2],
+ bssid[3], bssid[4], bssid[5]);
+
+ connman_dbus_dict_append_basic(dict, "BSSID",
+ DBUS_TYPE_STRING, &bssid_str);
+ connman_dbus_dict_append_basic(dict, "MaxRate",
+ DBUS_TYPE_UINT32, &maxrate);
+ connman_dbus_dict_append_basic(dict, "Frequency",
+ DBUS_TYPE_UINT16, &frequency);
+ connman_dbus_dict_append_basic(dict, "EncryptionMode",
+ DBUS_TYPE_STRING, &enc_mode);
+}
+#endif
+
static void append_properties(DBusMessageIter *dict, dbus_bool_t limited,
struct connman_service *service)
{
connman_dbus_dict_append_basic(dict, "PassphraseRequired",
DBUS_TYPE_BOOLEAN, &required);
+#if defined TIZEN_EXT
+ if (service->network != NULL)
+ append_wifi_ext_info(dict, service->network);
+#endif
+
/* fall through */
case CONNMAN_SERVICE_TYPE_ETHERNET:
case CONNMAN_SERVICE_TYPE_WIMAX:
if (new_state == CONNMAN_SERVICE_STATE_IDLE) {
#if defined TIZEN_EXT
+ if (service->type == CONNMAN_SERVICE_TYPE_WIFI &&
+ connman_network_get_bool(service->network,
+ "WiFi.UseWPS") == TRUE) {
+ connman_network_set_bool(service->network,
+ "WiFi.UseWPS", FALSE);
+ }
+
reply_pending(service, ECONNABORTED);
__connman_device_request_scan(service->type);
#else
service_complete(service);
__connman_device_request_scan(CONNMAN_DEVICE_TYPE_UNKNOWN);
-#if defined TIZEN_EXT
- if (service->type == CONNMAN_SERVICE_TYPE_CELLULAR)
- g_atomic_int_set(&service->user_initiated_pdp_connection_refcount, 0);
-#endif
} else
service->error = CONNMAN_SERVICE_ERROR_UNKNOWN;
if (ipconfig == NULL)
return -EINVAL;
+#if defined TIZEN_EXT
+ if (new_state == CONNMAN_SERVICE_STATE_FAILURE &&
+ service->type == CONNMAN_SERVICE_TYPE_CELLULAR) {
+ g_atomic_int_set(&service->user_initiated_pdp_connection_refcount, 0);
+ }
+#endif
/* Any change? */
if (old_state == new_state)
return -EALREADY;
case CONNMAN_SERVICE_SECURITY_PSK:
case CONNMAN_SERVICE_SECURITY_WPA:
case CONNMAN_SERVICE_SECURITY_RSN:
+ DBG("service->wps : %d", service->wps);
if (service->passphrase == NULL) {
if (service->network == NULL)
return -EOPNOTSUPP;
#if defined TIZEN_EXT
if(service->wps == TRUE)
{
- connman_network_set_bool(service->network, "WiFi.UseWPS", TRUE);
+ connman_network_set_bool(service->network, "WiFi.UseWPS", TRUE);
break;
}
else
}
break;
case CONNMAN_SERVICE_SECURITY_8021X:
+ DBG("service->eap : %s", service->eap);
if (service->eap == NULL)
return -EINVAL;
NULL) == -EIO)
return -EINPROGRESS;
}
- reply_pending(service, err);
+ reply_pending(service, -err);
}
return err;
{
GSequenceIter *iter;
+ DBG("ident %s", identifier);
iter = g_hash_table_lookup(service_hash, identifier);
if (iter != NULL)
return g_sequence_get(iter);
char *group = NULL, *ident = NULL;
int err = 0;
struct connman_service *service;
+#if defined TIZEN_EXT
+ struct connman_device * device;
+ const char *mode = "managed", *security = "ieee8021x";
+ char * name = NULL, *type = NULL;
+ char * device_ident = NULL;
+ int name_len = 0;
+#endif
DBG("");
if (err < 0)
goto done;
+#if !defined TIZEN_EXT
ident = group + strlen("service_");
+#else
+ device = __connman_device_find_device(CONNMAN_SERVICE_TYPE_WIFI);
+ if (device == NULL) {
+ err = -EOPNOTSUPP;
+ goto done;
+ }
+
+ device_ident = connman_device_get_ident(device);
+ if (device_ident == NULL) {
+ err = -EOPNOTSUPP;
+ goto done;
+ }
+
+ type = g_key_file_get_string(keyfile, group, "Type", NULL);
+ if(type == NULL) {
+ err = -EINVAL;
+ goto done;
+ }
+
+ name = g_key_file_get_string(keyfile, group, "Name", NULL);
+ if(name == NULL) {
+ err = -EINVAL;
+ goto done;
+ }
+
+ name_len = strlen(name);
+ group = wifi_build_group_name((unsigned char *) name,
+ name_len, mode, security);
+ if (group == NULL) {
+ err = -EINVAL;
+ goto done;
+ }
+
+ DBG("group %s ", group);
+
+ ident = g_strdup_printf("%s_%s_%s", type, device_ident, group);
+#endif
/* trigger service provisioning if service exists */
service = lookup_by_identifier(ident);
if (service != NULL)