Send connman mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.01.org/mailman/listinfo/connman
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."
Today's Topics:
1. [PATCH 1/5] Session: add parameter Service into CreateSession
call of ConnMan Session API, ([email protected])
2. [PATCH 2/5] session: Callback hook for policy plugins to
update session state. ([email protected])
3. [PATCH 3/5] service: Query function to retrieve service
handle ([email protected])
4. [PATCH 4/5] Session: Callback hook for policy plugin to
return service of session. ([email protected])
5. [PATCH 5/5] Session: Interface to query session->mark value
([email protected])
----------------------------------------------------------------------
Message: 1
Date: Thu, 6 Apr 2017 18:22:22 +0530
From: [email protected]
To: [email protected]
Cc: [email protected], thb1hi
<[email protected]>
Subject: [PATCH 1/5] Session: add parameter Service into CreateSession
call of ConnMan Session API,
Message-ID:
<[email protected]>
From: thb1hi <[email protected]>
propagation of parameter value through creation_data struct into policy plugins.
Signed-off-by: thb1hi <[email protected]>
Signed-off-by: Mounesh Sutar <[email protected]>
diff --git a/src/session.c b/src/session.c
index dadd68f..a64df64 100644
--- a/src/session.c
+++ b/src/session.c
@@ -545,6 +545,7 @@ struct creation_data {
GSList *allowed_bearers;
char *allowed_interface;
bool source_ip_rule;
+ char *service;
};
static void cleanup_creation_data(struct creation_data *creation_data)
@@ -554,6 +555,8 @@ static void cleanup_creation_data(struct creation_data
*creation_data)
if (creation_data->pending)
dbus_message_unref(creation_data->pending);
+ if (creation_data->service)
+ g_free(creation_data->service);
g_slist_free(creation_data->allowed_bearers);
g_free(creation_data->allowed_interface);
@@ -1471,6 +1474,9 @@ int __connman_session_create(DBusMessage *msg)
connman_session_parse_connection_type(val);
user_connection_type = true;
+ } else if (g_str_equal(key, "Service")) {
+ dbus_message_iter_get_basic(&value, &val);
+ creation_data->service = g_strdup(val);
} else if (g_str_equal(key, "AllowedInterface")) {
dbus_message_iter_get_basic(&value, &val);
creation_data->allowed_interface =
g_strdup(val);
--
2.7.4
------------------------------
Message: 2
Date: Thu, 6 Apr 2017 18:23:05 +0530
From: [email protected]
To: [email protected]
Cc: [email protected], thb1hi
<[email protected]>
Subject: [PATCH 2/5] session: Callback hook for policy plugins to
update session state.
Message-ID:
<[email protected]>
From: thb1hi <[email protected]>
Called when state of session changes.
Signed-off-by: thb1hi <[email protected]>
Signed-off-by: Mounesh Sutar <[email protected]>
diff --git a/include/session.h b/include/session.h
index 48f1510..25a5e58 100644
--- a/include/session.h
+++ b/include/session.h
@@ -55,6 +55,12 @@ enum connman_session_id_type {
CONNMAN_SESSION_ID_TYPE_LSM = 3,
};
+enum connman_session_state {
+ CONNMAN_SESSION_STATE_DISCONNECTED = 0,
+ CONNMAN_SESSION_STATE_CONNECTED = 1,
+ CONNMAN_SESSION_STATE_ONLINE = 2,
+};
+
struct connman_session;
struct connman_session_config {
@@ -85,6 +91,8 @@ struct connman_session_policy {
GSList *bearers);
bool (*allowed)(struct connman_session *session,
struct connman_service *service);
+ void (*update_session_state)(struct connman_session* session,
+ enum connman_session_state state);
};
int connman_session_policy_register(struct connman_session_policy *config);
diff --git a/src/session.c b/src/session.c
index a64df64..776e0d7 100644
--- a/src/session.c
+++ b/src/session.c
@@ -38,11 +38,6 @@ static GHashTable *service_hash;
static struct connman_session *ecall_session;
static uint32_t session_mark = 256;
-enum connman_session_state {
- CONNMAN_SESSION_STATE_DISCONNECTED = 0,
- CONNMAN_SESSION_STATE_CONNECTED = 1,
- CONNMAN_SESSION_STATE_ONLINE = 2,
-};
struct session_info {
struct connman_session_config config;
@@ -1686,6 +1681,10 @@ static void update_session_state(struct connman_session
*session)
update_firewall(session);
update_routing_table(session);
update_nat_rules(session);
+
+ if (policy && policy->update_session_state)
+ policy->update_session_state(session, state);
+
session_notify(session);
}
diff --git a/tools/session-test.h b/tools/session-test.h
index 5e6d196..da85e10 100644
--- a/tools/session-test.h
+++ b/tools/session-test.h
@@ -68,11 +68,6 @@ void util_session_cleanup(struct test_session *session);
typedef void (* notify_func_t) (struct test_session *session);
-enum connman_session_state {
- CONNMAN_SESSION_STATE_DISCONNECTED = 0,
- CONNMAN_SESSION_STATE_CONNECTED = 1,
- CONNMAN_SESSION_STATE_ONLINE = 2,
-};
struct test_session_info {
enum connman_session_state state;
--
2.7.4
------------------------------
Message: 3
Date: Thu, 6 Apr 2017 18:23:20 +0530
From: [email protected]
To: [email protected]
Cc: [email protected], thb1hi
<[email protected]>
Subject: [PATCH 3/5] service: Query function to retrieve service
handle
Message-ID:
<[email protected]>
From: thb1hi <[email protected]>
Query function to retrieve service handle for service identifier string
Signed-off-by: thb1hi <[email protected]>
Signed-off-by: Mounesh Sutar <[email protected]>
diff --git a/include/service.h b/include/service.h
index 185f008..958e7fd 100644
--- a/include/service.h
+++ b/include/service.h
@@ -130,6 +130,7 @@ bool connman_service_get_favorite(struct connman_service
*service);
bool connman_service_get_autoconnect(struct connman_service *service);
struct connman_service *connman_service_lookup_from_network(struct
connman_network *network);
+struct connman_service *connman_service_lookup_from_identifier(const char*
identifier);
void connman_service_create_ip4config(struct connman_service *service,
int index);
diff --git a/src/service.c b/src/service.c
index 2289d54..9943e96 100644
--- a/src/service.c
+++ b/src/service.c
@@ -6404,6 +6404,13 @@ static struct connman_service
*lookup_by_identifier(const char *identifier)
return g_hash_table_lookup(service_hash, identifier);
}
+
+struct connman_service *connman_service_lookup_from_identifier(const char*
identifier)
+{
+ return lookup_by_identifier(identifier);
+}
+
+
struct provision_user_data {
const char *ident;
int ret;
--
2.7.4
------------------------------
Message: 4
Date: Thu, 6 Apr 2017 18:23:33 +0530
From: [email protected]
To: [email protected]
Cc: [email protected], thb1hi
<[email protected]>
Subject: [PATCH 4/5] Session: Callback hook for policy plugin to
return service of session.
Message-ID:
<[email protected]>
From: thb1hi <[email protected]>
Returns the allowed service for a session based on a provided list of available
services.
Signed-off-by: thb1hi <[email protected]>
Signed-off-by: Mounesh Sutar <[email protected]>
diff --git a/include/session.h b/include/session.h
index 25a5e58..0d66f48 100644
--- a/include/session.h
+++ b/include/session.h
@@ -93,6 +93,8 @@ struct connman_session_policy {
struct connman_service *service);
void (*update_session_state)(struct connman_session* session,
enum connman_session_state state);
+ struct connman_service* (*get_service_for_session)(struct
connman_session* session,
+ GSList* services);
};
int connman_session_policy_register(struct connman_session_policy *config);
diff --git a/src/session.c b/src/session.c
index 776e0d7..602f4cc 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1753,6 +1753,42 @@ static void session_activate(struct connman_session
*session)
if (!service_hash)
return;
+ if (policy && policy->get_service_for_session)
+ {
+ struct connman_service *service;
+ struct connman_service_info *info;
+ GSList *service_list = NULL;
+ GHashTableIter iter;
+ gpointer key, value;
+ enum connman_service_state state =
CONNMAN_SESSION_STATE_DISCONNECTED;
+
+ g_hash_table_iter_init(&iter, service_hash);
+
+ while (g_hash_table_iter_next(&iter, &key, &value)) {
+ struct connman_service_info *info = value;
+ struct connman_service *service_lookup;
+ state = __connman_service_get_state(info->service);
+ if (is_session_connected(session, state)) {
+ service_list = g_slist_prepend(service_list,
+ info->service);
+ }
+ }
+ service_list = g_slist_reverse(service_list);
+ service = policy->get_service_for_session(session,service_list);
+ if (service) {
+ info = g_hash_table_lookup(service_hash,service);
+ DBG("session %p add service %p", session,
info->service);
+
+ info->sessions = g_slist_prepend(info->sessions,
+ session);
+ session->service = info->service;
+ update_session_state(session);
+ }
+
+ g_slist_free(service_list);
+ return;
+ }
+
g_hash_table_iter_init(&iter, service_hash);
while (g_hash_table_iter_next(&iter, &key, &value)) {
struct connman_service_info *info = value;
--
2.7.4
------------------------------
Message: 5
Date: Thu, 6 Apr 2017 18:23:45 +0530
From: [email protected]
To: [email protected]
Cc: [email protected], thb1hi
<[email protected]>
Subject: [PATCH 5/5] Session: Interface to query session->mark value
Message-ID:
<[email protected]>
From: thb1hi <[email protected]>
Signed-off-by: thb1hi <[email protected]>
Signed-off-by: Mounesh Sutar <[email protected]>
diff --git a/include/session.h b/include/session.h
index 0d66f48..4e15ed4 100644
--- a/include/session.h
+++ b/include/session.h
@@ -23,6 +23,7 @@
#define __CONNMAN_SESSION_H
#include <connman/service.h>
+#include <stdint.h>
#ifdef __cplusplus
extern "C" {
@@ -97,6 +98,7 @@ struct connman_session_policy {
GSList* services);
};
+uint32_t connman_session_firewall_get_fwmark(struct connman_session *session);
int connman_session_policy_register(struct connman_session_policy *config);
void connman_session_policy_unregister(struct connman_session_policy *config);
diff --git a/src/session.c b/src/session.c
index 602f4cc..9082447 100644
--- a/src/session.c
+++ b/src/session.c
@@ -427,6 +427,12 @@ static void add_nat_rules(struct connman_session *session)
g_free(ifname);
}
+uint32_t connman_session_firewall_get_fwmark(struct connman_session *session)
+{
+ return session->mark;
+}
+
+
static void cleanup_routing_table(struct connman_session *session)
{
DBG("");
--
2.7.4
------------------------------
Subject: Digest Footer
_______________________________________________
connman mailing list
[email protected]
https://lists.01.org/mailman/listinfo/connman
------------------------------
End of connman Digest, Vol 18, Issue 5
**************************************