Jackeagle | a3ae16b | 2018-12-04 11:30:49 -0500 | [diff] [blame^] | 1 | From 0bd942753da9a6c8d7207afb1e0354a9873ddb69 Mon Sep 17 00:00:00 2001 |
Jon West | 013ef58 | 2018-08-21 20:45:26 -0400 | [diff] [blame] | 2 | From: Pierre-Hugues Husson <phh@phh.me> |
| 3 | Date: Thu, 16 Aug 2018 22:12:46 +0200 |
| 4 | Subject: [PATCH 1/2] Add route to gateway on null netmask |
| 5 | |
| 6 | Galaxy S9 returns empty prefix |
| 7 | |
| 8 | Change-Id: I8133da8e8f5203666684100009ba658528a02e94 |
| 9 | --- |
Jackeagle | a3ae16b | 2018-12-04 11:30:49 -0500 | [diff] [blame^] | 10 | .../dataconnection/DataConnection.java | 17 +++++++++++++++++ |
Jon West | 013ef58 | 2018-08-21 20:45:26 -0400 | [diff] [blame] | 11 | 1 file changed, 17 insertions(+) |
| 12 | |
| 13 | diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java |
Jackeagle | a3ae16b | 2018-12-04 11:30:49 -0500 | [diff] [blame^] | 14 | index 0696aa931..11947a5af 100644 |
Jon West | 013ef58 | 2018-08-21 20:45:26 -0400 | [diff] [blame] | 15 | --- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java |
| 16 | +++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java |
| 17 | @@ -24,6 +24,7 @@ import android.content.Context; |
| 18 | import android.net.ConnectivityManager; |
| 19 | import android.net.ConnectivityManager.PacketKeepalive; |
| 20 | import android.net.KeepalivePacketData; |
| 21 | +import android.net.IpPrefix; |
| 22 | import android.net.LinkAddress; |
| 23 | import android.net.LinkProperties; |
| 24 | import android.net.NetworkAgent; |
| 25 | @@ -1127,6 +1128,22 @@ public class DataConnection extends StateMachine { |
| 26 | } |
| 27 | |
| 28 | for (InetAddress gateway : response.getGateways()) { |
| 29 | + if(response.getAddresses().size()>0) { |
| 30 | + //TODO: |
| 31 | + // - IPv6 |
| 32 | + // - Multiple addresses |
| 33 | + // - Check for non-trivial prefix length |
| 34 | + LinkAddress la = response.getAddresses().get(0); |
| 35 | + if(la.getNetworkPrefixLength() == 32 && |
| 36 | + gateway instanceof java.net.Inet4Address) { |
| 37 | + if(!gateway.isAnyLocalAddress()) { |
| 38 | + linkProperties.addRoute(new RouteInfo( |
| 39 | + new IpPrefix(gateway, 32), |
| 40 | + InetAddress.getByName("0.0.0.0"), |
| 41 | + response.getIfname())); |
| 42 | + } |
| 43 | + } |
| 44 | + } |
| 45 | // Allow 0.0.0.0 or :: as a gateway; |
| 46 | // this indicates a point-to-point interface. |
| 47 | linkProperties.addRoute(new RouteInfo(gateway)); |
| 48 | -- |
Jackeagle | a3ae16b | 2018-12-04 11:30:49 -0500 | [diff] [blame^] | 49 | 2.17.1 |
Jon West | 013ef58 | 2018-08-21 20:45:26 -0400 | [diff] [blame] | 50 | |