Fix position of builtin include
[connman] / src / network.c
index 5a4eb76..f2b9da2 100644 (file)
@@ -33,6 +33,7 @@ struct connman_network {
        struct connman_element element;
        enum connman_network_type type;
        enum connman_network_protocol protocol;
+       connman_bool_t secondary;
        connman_bool_t available;
        connman_bool_t connected;
        connman_bool_t remember;
@@ -486,7 +487,8 @@ struct connman_network *connman_network_create(const char *identifier,
 
        connman_element_set_uint8(&network->element, "Strength", strength);
 
-       network->type = type;
+       network->type       = type;
+       network->secondary  = FALSE;
        network->identifier = g_strdup(identifier);
 
        return network;
@@ -523,6 +525,17 @@ const char *__connman_network_get_type(struct connman_network *network)
 }
 
 /**
+ * connman_network_get_type:
+ * @network: network structure
+ *
+ * Get type of network
+ */
+enum connman_network_type connman_network_get_type(struct connman_network *network)
+{
+       return network->type;
+}
+
+/**
  * connman_network_get_identifier:
  * @network: network structure
  *
@@ -599,6 +612,14 @@ const char *__connman_network_get_group(struct connman_network *network)
        return network->group;
 }
 
+const char *__connman_network_get_ident(struct connman_network *network)
+{
+       if (network->device == NULL)
+               return NULL;
+
+       return __connman_device_get_ident(network->device);
+}
+
 /**
  * connman_network_set_available:
  * @network: network structure
@@ -1089,7 +1110,21 @@ static int network_probe(struct connman_element *element)
                return err;
        }
 
-       __connman_profile_add_network(network);
+       network->secondary = connman_device_get_secondary(network->device);
+
+       switch (network->type) {
+       case CONNMAN_NETWORK_TYPE_UNKNOWN:
+       case CONNMAN_NETWORK_TYPE_VENDOR:
+       case CONNMAN_NETWORK_TYPE_BLUETOOTH_PAN:
+       case CONNMAN_NETWORK_TYPE_BLUETOOTH_DUN:
+       case CONNMAN_NETWORK_TYPE_HSO:
+               break;
+       case CONNMAN_NETWORK_TYPE_WIFI:
+       case CONNMAN_NETWORK_TYPE_WIMAX:
+               if (network->secondary == FALSE)
+                       __connman_profile_add_network(network);
+               break;
+       }
 
        return 0;
 }
@@ -1106,7 +1141,19 @@ static void network_remove(struct connman_element *element)
        if (network->driver == NULL)
                return;
 
-       __connman_profile_remove_network(network);
+       switch (network->type) {
+       case CONNMAN_NETWORK_TYPE_UNKNOWN:
+       case CONNMAN_NETWORK_TYPE_VENDOR:
+       case CONNMAN_NETWORK_TYPE_BLUETOOTH_PAN:
+       case CONNMAN_NETWORK_TYPE_BLUETOOTH_DUN:
+       case CONNMAN_NETWORK_TYPE_HSO:
+               break;
+       case CONNMAN_NETWORK_TYPE_WIFI:
+       case CONNMAN_NETWORK_TYPE_WIMAX:
+               if (network->secondary == FALSE)
+                       __connman_profile_remove_network(network);
+               break;
+       }
 
        unregister_interface(element);
 
@@ -1270,7 +1317,8 @@ update:
 
        data = g_key_file_to_data(keyfile, &length, NULL);
 
-       g_file_set_contents(pathname, data, length, NULL);
+       if (g_file_set_contents(pathname, data, length, NULL) == FALSE)
+               connman_error("Failed to store network information");
 
 done:
        g_free(data);