Skip to content

Commit

Permalink
session: Add session policy autoconnect support
Browse files Browse the repository at this point in the history
By default allow all autoconnects if no session policy module exists
or no autoconnect policy function is supplied.
  • Loading branch information
pfl committed Feb 17, 2014
1 parent 0e8b339 commit 0f76471
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 9 deletions.
7 changes: 7 additions & 0 deletions include/service.h
Expand Up @@ -87,6 +87,13 @@ enum connman_service_proxy_method {
CONNMAN_SERVICE_PROXY_METHOD_AUTO = 3,
};

enum connman_service_connect_reason {
CONNMAN_SERVICE_CONNECT_REASON_NONE = 0,
CONNMAN_SERVICE_CONNECT_REASON_AUTO = 1,
CONNMAN_SERVICE_CONNECT_REASON_USER = 2,
CONNMAN_SERVICE_CONNECT_REASON_SESSION = 3,
};

struct connman_service;
struct connman_network;

Expand Down
2 changes: 2 additions & 0 deletions include/session.h
Expand Up @@ -74,10 +74,12 @@ typedef int (* connman_session_config_func_t) (struct connman_session *session,
struct connman_session_policy {
const char *name;
int priority;
bool (*autoconnect)(enum connman_service_connect_reason reason);
int (*create)(struct connman_session *session,
connman_session_config_func_t cb,
void *user_data);
void (*destroy)(struct connman_session *session);

};

int connman_session_policy_register(struct connman_session_policy *config);
Expand Down
10 changes: 1 addition & 9 deletions src/connman.h
Expand Up @@ -693,13 +693,6 @@ int __connman_service_indicate_error(struct connman_service *service,
int __connman_service_clear_error(struct connman_service *service);
int __connman_service_indicate_default(struct connman_service *service);

enum connman_service_connect_reason {
CONNMAN_SERVICE_CONNECT_REASON_NONE = 0,
CONNMAN_SERVICE_CONNECT_REASON_AUTO = 1,
CONNMAN_SERVICE_CONNECT_REASON_USER = 2,
CONNMAN_SERVICE_CONNECT_REASON_SESSION = 3,
};

int __connman_service_connect(struct connman_service *service,
enum connman_service_connect_reason reason);
int __connman_service_disconnect(struct connman_service *service);
Expand Down Expand Up @@ -824,8 +817,7 @@ unsigned int __connman_rtnl_update_interval_remove(unsigned int interval);
int __connman_rtnl_request_update(void);
int __connman_rtnl_send(const void *buf, size_t len);

bool __connman_session_mode();
void __connman_session_set_mode(bool enable);
bool __connman_session_policy_autoconnect(enum connman_service_connect_reason reason);

int __connman_session_create(DBusMessage *msg);
int __connman_session_destroy(DBusMessage *msg);
Expand Down
8 changes: 8 additions & 0 deletions src/session.c
Expand Up @@ -1501,6 +1501,14 @@ int __connman_session_create(DBusMessage *msg)
return err;
}

bool __connman_session_policy_autoconnect(enum connman_service_connect_reason reason)
{
if (!policy || !policy->autoconnect)
return true;

return policy->autoconnect(reason);
}

void connman_session_destroy(struct connman_session *session)
{
DBG("session %p", session);
Expand Down

0 comments on commit 0f76471

Please sign in to comment.