GString *str;
gboolean up = FALSE, down = FALSE;
gboolean lower_up = FALSE, lower_down = FALSE;
- char *ifname;
DBG("index %d", index);
if (ipdevice != NULL)
goto update;
- ifname = connman_inet_ifname(index);
-
- if (__connman_element_device_isfiltered(ifname) == TRUE) {
- connman_info("Ignoring interface %s (filtered)", ifname);
- g_free(ifname);
- return;
- }
-
ipdevice = g_try_new0(struct connman_ipdevice, 1);
- if (ipdevice == NULL) {
- g_free(ifname);
+ if (ipdevice == NULL)
return;
- }
ipdevice->index = index;
- ipdevice->ifname = ifname;
+ ipdevice->ifname = connman_inet_ifname(index);
ipdevice->type = type;
ipdevice->address = g_strdup(address);
return;
if (scope == 0 && g_strcmp0(dst, "0.0.0.0") == 0) {
+ GSList *list;
+
g_free(ipdevice->gateway);
ipdevice->gateway = g_strdup(gateway);
+
+ if (ipdevice->config != NULL &&
+ ipdevice->config->system != NULL) {
+ g_free(ipdevice->config->system->gateway);
+ ipdevice->config->system->gateway = g_strdup(gateway);
+ }
+
+ for (list = ipdevice->address_list; list; list = list->next) {
+ struct connman_ipaddress *ipaddress = list->data;
+
+ g_free(ipaddress->gateway);
+ ipaddress->gateway = g_strdup(gateway);
+ }
}
connman_info("%s {add} route %s gw %s scope %u <%s>",
return;
if (scope == 0 && g_strcmp0(dst, "0.0.0.0") == 0) {
+ GSList *list;
+
g_free(ipdevice->gateway);
ipdevice->gateway = NULL;
+
+ if (ipdevice->config != NULL &&
+ ipdevice->config->system != NULL) {
+ g_free(ipdevice->config->system->gateway);
+ ipdevice->config->system->gateway = NULL;
+ }
+
+ for (list = ipdevice->address_list; list; list = list->next) {
+ struct connman_ipaddress *ipaddress = list->data;
+
+ g_free(ipaddress->gateway);
+ ipaddress->gateway = NULL;
+ }
}
connman_info("%s {del} route %s gw %s scope %u <%s>",
return ipdevice->gateway;
}
+void __connman_ipconfig_set_index(struct connman_ipconfig *ipconfig, int index)
+{
+ ipconfig->index = index;
+}
+
/**
* connman_ipconfig_create:
*
*/
int connman_ipconfig_get_index(struct connman_ipconfig *ipconfig)
{
+ if (ipconfig == NULL)
+ return -1;
+
if (ipconfig->origin != NULL)
return ipconfig->origin->index;
{
struct connman_ipdevice *ipdevice;
+ if (ipconfig == NULL)
+ return NULL;
+
if (ipconfig->index < 0)
return NULL;
return 0;
}
-enum connman_ipconfig_method __connman_ipconfig_get_method(
- struct connman_ipconfig *ipconfig)
+enum connman_ipconfig_method __connman_ipconfig_get_method(struct connman_ipconfig *ipconfig)
{
if (ipconfig == NULL)
return CONNMAN_IPCONFIG_METHOD_UNKNOWN;
connman_dbus_dict_append_basic(iter, "Netmask",
DBUS_TYPE_STRING, &mask);
}
+
+ if (ipconfig->system->gateway != NULL)
+ connman_dbus_dict_append_basic(iter, "Gateway",
+ DBUS_TYPE_STRING, &ipconfig->system->gateway);
}
void __connman_ipconfig_append_ipv4config(struct connman_ipconfig *ipconfig,
connman_dbus_dict_append_basic(iter, "Netmask",
DBUS_TYPE_STRING, &mask);
}
+
+ if (ipconfig->address->gateway != NULL)
+ connman_dbus_dict_append_basic(iter, "Gateway",
+ DBUS_TYPE_STRING, &ipconfig->address->gateway);
}
int __connman_ipconfig_set_ipv4config(struct connman_ipconfig *ipconfig,