I've further traced a line of execution which makes a connection to connman.net, regardless of the above settings, but it depends on the Enable6to4 setting being set to true, when its default value is false:
# Automatically enable Anycast 6to4 if possible. This is not recommended, as
# the use of 6to4 will generally lead to a severe degradation of connection
# quality. See RFC6343. Default value is false (as recommended by RFC6343
# section 4.1).
# Enable6to4 = false
it's in the file src/6to4.c:
static void tun_newlink(unsigned flags, unsigned change, void *user_data)
{
int index = GPOINTER_TO_INT(user_data);
if ((newlink_flags & IFF_UP) == (flags & IFF_UP)) {
newlink_flags = flags;
return;
}
if (flags & IFF_UP) {
/*
* We try to verify that connectivity through tunnel works ok.
*/
if (newlink_timeout_id > 0) {
g_source_remove(newlink_timeout_id);
newlink_timeout_id = 0;
}
web = g_web_new(index);
if (!web) {
tunnel_destroy();
return;
}
g_web_set_accept(web, NULL);
g_web_set_user_agent(web, "ConnMan/%s", VERSION);
g_web_set_close_connection(web, TRUE);
if (getenv("CONNMAN_WEB_DEBUG"))
g_web_set_debug(web, web_debug, "6to4");
web_request_id = g_web_request_get(web, STATUS_URL,
web_result, NULL, NULL);
newlink_timeout(NULL);
}
newlink_flags = flags;
}
This is still problematic, but at least not enabled by default. This should check the EnableOnlineCheck, but it doesn't. Here:
static bool apply_lease_available_on_network(GDHCPClient *dhcp_client,
struct connman_dhcp *dhcp)
{
char **nameservers, **timeservers, *pac = NULL;
struct connman_service *service;
GList *list, *option = NULL;
int ns_entries;
int i;
if (!dhcp->network)
return true;
service = connman_service_lookup_from_network(dhcp->network);
if (!service) {
connman_error("Can not lookup service");
return false;
}
/* ... and so on ... */
if (connman_setting_get_bool("Enable6to4"))
__connman_6to4_probe(service); /* <-- this calls the above function which */
/* makes the connection, unconditionally */
return true;
}