Skip to content

Commit

Permalink
Merge branch 'jb53542' into 'master'
Browse files Browse the repository at this point in the history
Support enable/disable IPv6 for connected services only

See merge request mer-core/connman!313
  • Loading branch information
LaakkonenJussi committed May 3, 2021
2 parents 458236e + 28e3e34 commit 321618d
Show file tree
Hide file tree
Showing 16 changed files with 452 additions and 261 deletions.
3 changes: 3 additions & 0 deletions connman/include/provider.h
Expand Up @@ -118,6 +118,9 @@ bool connman_provider_is_split_routing(struct connman_provider *provider);
int connman_provider_set_split_routing(struct connman_provider *provider,
bool split_routing);
int connman_provider_get_family(struct connman_provider *provider);
void connman_provider_set_ipv6_data_leak_prevention(
struct connman_provider *provider,
bool enable);

const char *connman_provider_get_driver_name(struct connman_provider *provider);
const char *connman_provider_get_save_group(struct connman_provider *provider);
Expand Down
10 changes: 7 additions & 3 deletions connman/plugins/vpn.c
Expand Up @@ -2042,6 +2042,7 @@ static gboolean property_changed(DBusConnection *conn,
const char *key;
const char *signature = DBUS_TYPE_STRING_AS_STRING
DBUS_TYPE_VARIANT_AS_STRING;
dbus_bool_t value_bool;

if (!dbus_message_has_signature(message, signature)) {
connman_error("vpn property signature \"%s\" does not match "
Expand Down Expand Up @@ -2113,13 +2114,16 @@ static gboolean property_changed(DBusConnection *conn,
data->domain = g_strdup(str);
connman_provider_set_domain(data->provider, data->domain);
} else if (g_str_equal(key, "SplitRouting")) {
dbus_bool_t split_routing;
dbus_message_iter_get_basic(&value, &split_routing);
change_provider_split_routing(data->provider, split_routing);
dbus_message_iter_get_basic(&value, &value_bool);
change_provider_split_routing(data->provider, value_bool);
} else if (g_str_equal(key, "DefaultRoute")) {
dbus_message_iter_get_basic(&value, &str);
change_provider_split_routing(data->provider,
!g_strcmp0(str, "false"));
} else if (g_str_equal(key, "PreventIPv6DataLeak")) {
dbus_message_iter_get_basic(&value, &value_bool);
connman_provider_set_ipv6_data_leak_prevention(data->provider,
value_bool);
}

if (ip_set && err == 0) {
Expand Down
26 changes: 16 additions & 10 deletions connman/src/connman.h
Expand Up @@ -434,11 +434,10 @@ void __connman_ipconfig_set_ops(struct connman_ipconfig *ipconfig,
const struct connman_ipconfig_ops *ops);
int __connman_ipconfig_set_method(struct connman_ipconfig *ipconfig,
enum connman_ipconfig_method method);
void __connman_ipconfig_disable_ipv6(struct connman_ipconfig *ipconfig,
bool forced);
int __connman_ipconfig_enable_ipv6(struct connman_ipconfig *ipconfig,
bool forced);
void __connman_ipconfig_disable_ipv6(struct connman_ipconfig *ipconfig);
int __connman_ipconfig_enable_ipv6(struct connman_ipconfig *ipconfig);
int __connman_ipconfig_set_ipv6_support(bool enable);
bool __connman_ipconfig_get_ipv6_support();

int __connman_ipconfig_init(void);
void __connman_ipconfig_cleanup(void);
Expand Down Expand Up @@ -532,6 +531,13 @@ int __connman_ipconfig_ipv6_reset_privacy(struct connman_ipconfig *ipconfig);
int __connman_ipconfig_ipv6_set_privacy(struct connman_ipconfig *ipconfig,
const char *value);
bool __connman_ipconfig_ipv6_is_enabled(struct connman_ipconfig *ipconfig);
void __connman_ipconfig_ipv6_method_save(struct connman_ipconfig *ipconfig);
void __connman_ipconfig_ipv6_method_restore(struct connman_ipconfig *ipconfig);
void __connman_ipconfig_ipv6_set_force_disabled(
struct connman_ipconfig *ipconfig,
bool force_disabled);
bool __connman_ipconfig_ipv6_get_force_disabled(
struct connman_ipconfig *ipconfig);

int __connman_ipconfig_set_rp_filter();
void __connman_ipconfig_unset_rp_filter(int old_value);
Expand Down Expand Up @@ -710,8 +716,7 @@ int __connman_network_disconnect(struct connman_network *network);
int __connman_network_clear_ipconfig(struct connman_network *network,
struct connman_ipconfig *ipconfig);
int __connman_network_enable_ipconfig(struct connman_network *network,
struct connman_ipconfig *ipconfig,
bool force);
struct connman_ipconfig *ipconfig);

const char *__connman_network_get_type(struct connman_network *network);
const char *__connman_network_get_group(struct connman_network *network);
Expand Down Expand Up @@ -776,8 +781,9 @@ int __connman_provider_indicate_error(struct connman_provider *provider,
int __connman_provider_connect(struct connman_provider *provider,
const char *dbus_sender);
int __connman_provider_remove_by_path(const char *path);
int __connman_provider_toggle_transport_ipv6(struct connman_provider *provider,
bool disable);
int __connman_provider_set_ipv6_for_connected(
struct connman_provider *provider,
bool enable);
void __connman_provider_cleanup(void);
int __connman_provider_init(void);

Expand All @@ -799,6 +805,8 @@ const char *__connman_service_create(enum connman_service_type type,
const char *ident, GKeyFile *settings);

struct connman_service *__connman_service_lookup_from_index(int index);
void __connman_service_set_ipv6_for_connected(struct connman_service *vpn,
struct connman_service *transport, bool enable);
bool __connman_service_create_from_network(struct connman_network *network);
struct connman_service *__connman_service_create_from_provider(struct connman_provider *provider);
bool __connman_service_index_is_default(int index);
Expand All @@ -815,8 +823,6 @@ struct connman_ipconfig *__connman_service_get_ipconfig(
struct connman_service *service, int family);
void __connman_service_notify_ipv4_configuration(
struct connman_service *service);
void __connman_service_notify_ipv6_configuration(
struct connman_service *service);
bool __connman_service_is_connected_state(struct connman_service *service,
enum connman_ipconfig_type type);
const char *__connman_service_get_path(struct connman_service *service);
Expand Down

0 comments on commit 321618d

Please sign in to comment.