DBG("enabled %d", tethering_enabled + 1);
if (g_atomic_int_exchange_and_add(&tethering_enabled, 1) == 0) {
- err = enable_bridge(BRIDGE_NAME);
+ err = create_bridge(BRIDGE_NAME);
if (err < 0)
return;
+ err = enable_bridge(BRIDGE_NAME);
+ if (err < 0) {
+ remove_bridge(BRIDGE_NAME);
+ return;
+ }
+
tethering_dhcp_server =
dhcp_server_start(BRIDGE_NAME,
BRIDGE_IP, BRIDGE_SUBNET,
24 * 3600, BRIDGE_DNS);
if (tethering_dhcp_server == NULL) {
disable_bridge(BRIDGE_NAME);
+ remove_bridge(BRIDGE_NAME);
return;
}
disable_bridge(BRIDGE_NAME);
+ remove_bridge(BRIDGE_NAME);
+
DBG("tethering stopped");
}
}
if (status == tethering_status)
return -EALREADY;
- if (status == TRUE) {
- create_bridge(BRIDGE_NAME);
+ if (status == TRUE)
__connman_technology_enable_tethering(BRIDGE_NAME);
- } else {
+ else
__connman_technology_disable_tethering(BRIDGE_NAME);
- remove_bridge(BRIDGE_NAME);
- }
tethering_status = status;