GSList *scan_pending;
connman_bool_t rfkill_driven;
+ connman_bool_t softblocked;
connman_bool_t hardblocked;
connman_bool_t dbus_registered;
};
technology->refcount = 1;
technology->rfkill_driven = FALSE;
+ technology->softblocked = FALSE;
if (type == CONNMAN_SERVICE_TYPE_ETHERNET)
technology->hardblocked = FALSE;
DBUS_TYPE_BOOLEAN, &connected);
}
-static void technology_apply_hardblock_change(struct connman_technology *technology,
+static void technology_apply_rfkill_change(struct connman_technology *technology,
+ connman_bool_t softblock,
connman_bool_t hardblock)
{
gboolean apply = TRUE;
GList *start, *list;
if (technology->hardblocked == hardblock)
- return;
+ goto softblock_change;
start = g_hash_table_get_values(rfkill_list);
for (list = start; list != NULL; list = list->next) {
g_list_free(start);
if (apply == FALSE)
- return;
+ goto softblock_change;
technology->hardblocked = hardblock;
technology_enable(technology, TRUE);
technology_dbus_register(technology);
}
+
+softblock_change:
+ technology->softblocked = softblock;
}
int __connman_technology_add_rfkill(unsigned int index,
technology->rfkill_driven = TRUE;
- technology_apply_hardblock_change(technology, hardblock);
+ technology_apply_rfkill_change(technology, softblock, hardblock);
/*
* If Offline mode is on, we softblock the device if it isnt already.
if (technology == NULL)
return -ENXIO;
- technology_apply_hardblock_change(technology, hardblock);
+ technology_apply_rfkill_change(technology, softblock, hardblock);
if (!global_offlinemode) {
if (technology->enable_persistent && softblock)