+int __connman_technology_add_rfkill(unsigned int index,
+ enum connman_service_type type,
+ connman_bool_t softblock,
+ connman_bool_t hardblock)
+{
+ struct connman_technology *technology;
+ struct connman_rfkill *rfkill;
+
+ DBG("index %u type %d soft %u hard %u", index, type,
+ softblock, hardblock);
+
+ rfkill = g_try_new0(struct connman_rfkill, 1);
+ if (rfkill == NULL)
+ return -ENOMEM;
+
+ rfkill->index = index;
+ rfkill->type = type;
+
+ technology = technology_get(type);
+ if (technology == NULL) {
+ g_free(rfkill);
+ return -ENXIO;
+ }
+
+ g_hash_table_replace(rfkill_table, &index, technology);
+
+ g_hash_table_replace(technology->rfkill_list, &index, rfkill);
+
+ return 0;
+}
+
+int __connman_technology_update_rfkill(unsigned int index,
+ connman_bool_t softblock,
+ connman_bool_t hardblock)
+{
+ struct connman_technology *technology;
+
+ DBG("index %u soft %u hard %u", index, softblock, hardblock);
+
+ technology = g_hash_table_lookup(rfkill_table, &index);
+ if (technology == NULL)
+ return -ENXIO;
+
+ return 0;
+}
+
+int __connman_technology_remove_rfkill(unsigned int index)
+{
+ struct connman_technology *technology;
+
+ DBG("index %u", index);
+
+ technology = g_hash_table_lookup(rfkill_table, &index);
+ if (technology == NULL)
+ return -ENXIO;
+
+ g_hash_table_remove(technology->rfkill_list, &index);
+
+ g_hash_table_remove(rfkill_table, &index);
+
+ return 0;
+}
+