};
enum connman_session_type {
- CONNMAN_SESSION_TYPE_ANY = 0,
- CONNMAN_SESSION_TYPE_LOCAL = 1,
- CONNMAN_SESSION_TYPE_INTERNET = 2,
+ CONNMAN_SESSION_TYPE_UNKNOWN = 0,
+ CONNMAN_SESSION_TYPE_ANY = 1,
+ CONNMAN_SESSION_TYPE_LOCAL = 2,
+ CONNMAN_SESSION_TYPE_INTERNET = 3,
};
struct connman_session;
static const char *type2string(enum connman_session_type type)
{
switch (type) {
- case CONNMAN_SESSION_TYPE_ANY:
+ case CONNMAN_SESSION_TYPE_UNKNOWN:
return "";
+ case CONNMAN_SESSION_TYPE_ANY:
+ return "any";
case CONNMAN_SESSION_TYPE_LOCAL:
return "local";
case CONNMAN_SESSION_TYPE_INTERNET:
static enum connman_session_type string2type(const char *type)
{
+ if (g_strcmp0(type, "any") == 0)
+ return CONNMAN_SESSION_TYPE_ANY;
if (g_strcmp0(type, "local") == 0)
return CONNMAN_SESSION_TYPE_LOCAL;
else if (g_strcmp0(type, "internet") == 0)
return CONNMAN_SESSION_TYPE_INTERNET;
- return CONNMAN_SESSION_TYPE_ANY;
+ return CONNMAN_SESSION_TYPE_UNKNOWN;
}
static enum connman_service_type bearer2service(const char *bearer)
enum connman_session_type type)
{
switch (type) {
+ case CONNMAN_SESSION_TYPE_UNKNOWN:
+ return FALSE;
case CONNMAN_SESSION_TYPE_ANY:
return TRUE;
case CONNMAN_SESSION_TYPE_LOCAL:
enum connman_session_type type = CONNMAN_SESSION_TYPE_ANY;
GSList *allowed_bearers;
connman_bool_t allowed_bearers_valid = FALSE;
+ connman_bool_t type_valid = FALSE;
int err;
owner = dbus_message_get_sender(msg);
if (g_str_equal(key, "ConnectionType") == TRUE) {
dbus_message_iter_get_basic(&value, &val);
type = string2type(val);
+ type_valid = TRUE;
} else {
return -EINVAL;
}
ecall_session = session;
info->state = CONNMAN_SESSION_STATE_DISCONNECTED;
+ if (type_valid == FALSE)
+ type = CONNMAN_SESSION_TYPE_ANY;
info->config.type = type;
info->config.priority = session->policy_config->priority;
info->config.roaming_policy = session->policy_config->roaming_policy;