blob: 4e6bbcb76b4cc30e7c2873b2f54ea2f35732663e [file] [log] [blame]
From 0bd942753da9a6c8d7207afb1e0354a9873ddb69 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 16 Aug 2018 22:12:46 +0200
Subject: [PATCH 1/2] Add route to gateway on null netmask
Galaxy S9 returns empty prefix
Change-Id: I8133da8e8f5203666684100009ba658528a02e94
---
.../dataconnection/DataConnection.java | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
index 0696aa931..11947a5af 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.PacketKeepalive;
import android.net.KeepalivePacketData;
+import android.net.IpPrefix;
import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkAgent;
@@ -1127,6 +1128,22 @@ public class DataConnection extends StateMachine {
}
for (InetAddress gateway : response.getGateways()) {
+ if(response.getAddresses().size()>0) {
+ //TODO:
+ // - IPv6
+ // - Multiple addresses
+ // - Check for non-trivial prefix length
+ LinkAddress la = response.getAddresses().get(0);
+ if(la.getNetworkPrefixLength() == 32 &&
+ gateway instanceof java.net.Inet4Address) {
+ if(!gateway.isAnyLocalAddress()) {
+ linkProperties.addRoute(new RouteInfo(
+ new IpPrefix(gateway, 32),
+ InetAddress.getByName("0.0.0.0"),
+ response.getIfname()));
+ }
+ }
+ }
// Allow 0.0.0.0 or :: as a gateway;
// this indicates a point-to-point interface.
linkProperties.addRoute(new RouteInfo(gateway));
--
2.17.1