diff options
author | Wink Saville <wink@google.com> | 2011-07-25 15:26:56 -0700 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2011-07-25 15:26:56 -0700 |
commit | 32d106e154d0388ac13774fad3c58ff60ba9ae8f (patch) | |
tree | e271416d5e512c8f8bd466211927b415d79fed85 /telephony | |
parent | deb62be2e87b19e9bbbc668f8d9327b12dba4a3b (diff) | |
download | frameworks_base-32d106e154d0388ac13774fad3c58ff60ba9ae8f.zip frameworks_base-32d106e154d0388ac13774fad3c58ff60ba9ae8f.tar.gz frameworks_base-32d106e154d0388ac13774fad3c58ff60ba9ae8f.tar.bz2 |
Filter out addresses that are 0.
If the address is "any" address, i.e. an address which is all zeros
for both IPv4 and IPv6 ignore it.
Bug: 5073048
Change-Id: I8b9f64103aaffd001114a672375ff5f99616c327
Diffstat (limited to 'telephony')
-rw-r--r-- | telephony/java/com/android/internal/telephony/DataCallState.java | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataCallState.java b/telephony/java/com/android/internal/telephony/DataCallState.java index a69ce8b..6d8956f 100644 --- a/telephony/java/com/android/internal/telephony/DataCallState.java +++ b/telephony/java/com/android/internal/telephony/DataCallState.java @@ -142,13 +142,15 @@ public class DataCallState { } catch (IllegalArgumentException e) { throw new UnknownHostException("Non-numeric ip addr=" + addr); } - if (addrPrefixLen == 0) { - // Assume point to point - addrPrefixLen = (ia instanceof Inet4Address) ? 32 : 128; + if (! ia.isAnyLocalAddress()) { + if (addrPrefixLen == 0) { + // Assume point to point + addrPrefixLen = (ia instanceof Inet4Address) ? 32 : 128; + } + if (DBG) Log.d(LOG_TAG, "addr/pl=" + addr + "/" + addrPrefixLen); + la = new LinkAddress(ia, addrPrefixLen); + linkProperties.addLinkAddress(la); } - if (DBG) Log.d(LOG_TAG, "addr/pl=" + addr + "/" + addrPrefixLen); - la = new LinkAddress(ia, addrPrefixLen); - linkProperties.addLinkAddress(la); } } else { throw new UnknownHostException("no address for ifname=" + ifname); @@ -163,21 +165,24 @@ public class DataCallState { } catch (IllegalArgumentException e) { throw new UnknownHostException("Non-numeric dns addr=" + addr); } - linkProperties.addDns(ia); + if (! ia.isAnyLocalAddress()) { + linkProperties.addDns(ia); + } } } else if (okToUseSystemPropertyDns){ String dnsServers[] = new String[2]; dnsServers[0] = SystemProperties.get(propertyPrefix + "dns1"); dnsServers[1] = SystemProperties.get(propertyPrefix + "dns2"); for (String dnsAddr : dnsServers) { - InetAddress ia; - try { - ia = NetworkUtils.numericToInetAddress(dnsAddr); - } catch (IllegalArgumentException e) { - throw new UnknownHostException("Non-numeric dns addr=" - + dnsAddr); - } + InetAddress ia; + try { + ia = NetworkUtils.numericToInetAddress(dnsAddr); + } catch (IllegalArgumentException e) { + throw new UnknownHostException("Non-numeric dns addr=" + dnsAddr); + } + if (! ia.isAnyLocalAddress()) { linkProperties.addDns(ia); + } } } else { throw new UnknownHostException("Empty dns response and no system default dns"); @@ -199,7 +204,9 @@ public class DataCallState { } catch (IllegalArgumentException e) { throw new UnknownHostException("Non-numeric gateway addr=" + addr); } - linkProperties.addRoute(new RouteInfo(ia)); + if (! ia.isAnyLocalAddress()) { + linkProperties.addRoute(new RouteInfo(ia)); + } } result = SetupResult.SUCCESS; |