blob: 5ec625ad269aa88cf60b82b0756d3c9b345a8224 [file] [log] [blame]
Jon West75fbab72019-04-17 20:05:07 -04001From 64b10816b1dc84676af92096fbe64efbde502121 Mon Sep 17 00:00:00 2001
Jon West013ef582018-08-21 20:45:26 -04002From: Pierre-Hugues Husson <phh@phh.me>
3Date: Thu, 16 Aug 2018 22:12:46 +0200
Jon West75fbab72019-04-17 20:05:07 -04004Subject: [PATCH 1/5] Add route to gateway on null netmask
Jon West013ef582018-08-21 20:45:26 -04005
6Galaxy S9 returns empty prefix
7
8Change-Id: I8133da8e8f5203666684100009ba658528a02e94
9---
Jackeaglea3ae16b2018-12-04 11:30:49 -050010 .../dataconnection/DataConnection.java | 17 +++++++++++++++++
Jon West013ef582018-08-21 20:45:26 -040011 1 file changed, 17 insertions(+)
12
13diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
Jon West75fbab72019-04-17 20:05:07 -040014index dafab121c..643f488c8 100644
Jon West013ef582018-08-21 20:45:26 -040015--- 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--
Jackeaglea3ae16b2018-12-04 11:30:49 -0500492.17.1
Jon West013ef582018-08-21 20:45:26 -040050