From 562e35614eeb4fb6fde9347c34203e61315846a8 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Fri, 2 Nov 2012 17:26:14 +0100 Subject: session: Add sessions config update function Give a policy plugin a way to inform the session core that some of the config values have changed. This could be done in a more clever way, e.g. figure out only to update the necessary info entries but we keep it for now as simple and assume everthing has changed. --- src/session.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/session.c') diff --git a/src/session.c b/src/session.c index 77a6c853..68e35626 100644 --- a/src/session.c +++ b/src/session.c @@ -1341,6 +1341,46 @@ static void session_changed(struct connman_session *session, session_notify(session); } +int connman_session_config_update(struct connman_session *session) +{ + struct session_info *info = session->info; + GSList *allowed_bearers; + int err; + + DBG("session %p", session); + + /* + * We update all configuration even though only one entry + * might have changed. We can still optimize this later. + */ + + err = apply_policy_on_bearers( + session->policy_config->allowed_bearers, + info->config.allowed_bearers, + &allowed_bearers); + if (err < 0) + return err; + + g_slist_free(info->config.allowed_bearers); + info->config.allowed_bearers = allowed_bearers; + + info->config.type = apply_policy_on_type( + session->policy_config->type, + info->config.type); + + info->config.roaming_policy = session->policy_config->roaming_policy; + + info->config.ecall = session->policy_config->ecall; + if (info->config.ecall == TRUE) + ecall_session = session; + + info->config.priority = session->policy_config->priority; + + session_changed(session, CONNMAN_SESSION_TRIGGER_SETTING); + + return 0; +} + static DBusMessage *connect_session(DBusConnection *conn, DBusMessage *msg, void *user_data) { -- cgit v1.2.3