summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-07-01 16:30:18 -0500
committerDan Williams <dcbw@redhat.com>2014-07-01 16:38:34 -0500
commit915a5beac0e10b0246adc9eefdb2dc29eb2c071e (patch)
treeb73a5f4a8ecf31cda36bc11b0f68b9594b04fe03
parent15a3ebbd354017347d3d296980c7a7460c916bae (diff)
downloadModemManager-915a5beac0e10b0246adc9eefdb2dc29eb2c071e.tar.gz
bearer-mbim: ignore empty DNS server addresses
-rw-r--r--src/mm-bearer-mbim.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/mm-bearer-mbim.c b/src/mm-bearer-mbim.c
index 643964dda..781a6680b 100644
--- a/src/mm-bearer-mbim.c
+++ b/src/mm-bearer-mbim.c
@@ -239,9 +239,11 @@ ip_configuration_query_ready (MbimDevice *device,
mm_dbg (" DNS addresses (%u)", ipv4dnsservercount);
for (i = 0; i < ipv4dnsservercount; i++) {
addr = g_inet_address_new_from_bytes ((guint8 *)&ipv4dnsserver[i], G_SOCKET_FAMILY_IPV4);
- str = g_inet_address_to_string (addr);
- mm_dbg (" DNS [%u]: '%s'", i, str);
- g_free (str);
+ if (!g_inet_address_get_is_any (addr)) {
+ str = g_inet_address_to_string (addr);
+ mm_dbg (" DNS [%u]: '%s'", i, str);
+ g_free (str);
+ }
g_object_unref (addr);
}
}
@@ -283,9 +285,11 @@ ip_configuration_query_ready (MbimDevice *device,
mm_dbg (" DNS addresses (%u)", ipv6dnsservercount);
for (i = 0; i < ipv6dnsservercount; i++) {
addr = g_inet_address_new_from_bytes ((guint8 *)&ipv6dnsserver[i], G_SOCKET_FAMILY_IPV6);
- str = g_inet_address_to_string (addr);
- mm_dbg (" DNS [%u]: '%s'", i, str);
- g_free (str);
+ if (!g_inet_address_get_is_any (addr)) {
+ str = g_inet_address_to_string (addr);
+ mm_dbg (" DNS [%u]: '%s'", i, str);
+ g_free (str);
+ }
g_object_unref (addr);
}
}
@@ -308,7 +312,7 @@ ip_configuration_query_ready (MbimDevice *device,
ipv4addresscount > 0 &&
ipv4dnsservercount > 0) {
gchar **strarr;
- guint i;
+ guint i, n;
mm_bearer_ip_config_set_method (ipv4_config, MM_BEARER_IP_METHOD_STATIC);
@@ -333,9 +337,10 @@ ip_configuration_query_ready (MbimDevice *device,
/* DNS */
strarr = g_new0 (gchar *, ipv4dnsservercount + 1);
- for (i = 0; i < ipv4dnsservercount; i++) {
+ for (i = 0, n = 0; i < ipv4dnsservercount; i++) {
addr = g_inet_address_new_from_bytes ((guint8 *)&ipv4dnsserver[i], G_SOCKET_FAMILY_IPV4);
- strarr[i] = g_inet_address_to_string (addr);
+ if (!g_inet_address_get_is_any (addr))
+ strarr[n++] = g_inet_address_to_string (addr);
g_object_unref (addr);
}
mm_bearer_ip_config_set_dns (ipv4_config, (const gchar **)strarr);
@@ -361,7 +366,7 @@ ip_configuration_query_ready (MbimDevice *device,
ipv6addresscount > 0 &&
ipv6dnsservercount > 0) {
gchar **strarr;
- guint i;
+ guint i, n;
mm_bearer_ip_config_set_method (ipv6_config, MM_BEARER_IP_METHOD_STATIC);
@@ -394,9 +399,10 @@ ip_configuration_query_ready (MbimDevice *device,
/* DNS */
strarr = g_new0 (gchar *, ipv6dnsservercount + 1);
- for (i = 0; i < ipv6dnsservercount; i++) {
+ for (i = 0, n = 0; i < ipv6dnsservercount; i++) {
addr = g_inet_address_new_from_bytes ((guint8 *)&ipv6dnsserver[i], G_SOCKET_FAMILY_IPV6);
- strarr[i] = g_inet_address_to_string (addr);
+ if (!g_inet_address_get_is_any (addr))
+ strarr[n++] = g_inet_address_to_string (addr);
g_object_unref (addr);
}
mm_bearer_ip_config_set_dns (ipv6_config, (const gchar **)strarr);