| From 3c8c5e2125a845d6868be27c389a5cfb5200e187 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 |
| --- |
| .../telephony/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 0696aa9..11947a5 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.7.4 |
| |