Merge "Add two more parameters too RIL_REQUEST_SETUP_DATA_CALL, DO NOT MERGE" into honeycomb
This commit is contained in:
@@ -30,6 +30,7 @@ import android.text.TextUtils;
|
|||||||
import android.util.EventLog;
|
import android.util.EventLog;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.net.Inet4Address;
|
||||||
import java.net.InterfaceAddress;
|
import java.net.InterfaceAddress;
|
||||||
import java.net.NetworkInterface;
|
import java.net.NetworkInterface;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
@@ -448,22 +449,65 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
|||||||
NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
|
NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
|
||||||
linkProperties.setInterfaceName(interfaceName);
|
linkProperties.setInterfaceName(interfaceName);
|
||||||
|
|
||||||
// TODO: Get gateway and dns via RIL interface not property?
|
if (response.length >= 5) {
|
||||||
String gatewayAddress = SystemProperties.get(prefix + "gw");
|
log("response.length >=5 using response for ip='" + response[2] +
|
||||||
linkProperties.setGateway(InetAddress.getByName(gatewayAddress));
|
"' dns='" + response[3] + "' gateway='" + response[4] + "'");
|
||||||
|
String [] addresses = response[2].split(" ");
|
||||||
|
String [] dnses = response[3].split(" ");
|
||||||
|
String gateway = response[4];
|
||||||
|
for (String addr : addresses) {
|
||||||
|
LinkAddress la;
|
||||||
|
if (!InetAddress.isNumeric(addr)) {
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Vendor ril bug: Non-numeric ip addr=" + addr);
|
||||||
|
}
|
||||||
|
InetAddress ia = InetAddress.getByName(addr);
|
||||||
|
if (ia instanceof Inet4Address) {
|
||||||
|
la = new LinkAddress(ia, 32);
|
||||||
|
} else {
|
||||||
|
la = new LinkAddress(ia, 128);
|
||||||
|
}
|
||||||
|
linkProperties.addLinkAddress(la);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dnses.length != 0) {
|
||||||
|
for (String addr : dnses) {
|
||||||
|
if (!InetAddress.isNumeric(addr)) {
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Vendor ril bug: Non-numeric dns addr=" + addr);
|
||||||
|
}
|
||||||
|
InetAddress ia = InetAddress.getByName(addr);
|
||||||
|
linkProperties.addDns(ia);
|
||||||
|
}
|
||||||
|
result = SetupResult.SUCCESS;
|
||||||
|
} else {
|
||||||
|
result = SetupResult.ERR_BadDns;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!InetAddress.isNumeric(gateway)) {
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Vendor ril bug: Non-numeric gateway addr=" + gateway);
|
||||||
|
}
|
||||||
|
linkProperties.setGateway(InetAddress.getByName(gateway));
|
||||||
|
|
||||||
for (InterfaceAddress addr : networkInterface.getInterfaceAddresses()) {
|
|
||||||
linkProperties.addLinkAddress(new LinkAddress(addr));
|
|
||||||
}
|
|
||||||
// TODO: Get gateway and dns via RIL interface not property?
|
|
||||||
String dnsServers[] = new String[2];
|
|
||||||
dnsServers[0] = SystemProperties.get(prefix + "dns1");
|
|
||||||
dnsServers[1] = SystemProperties.get(prefix + "dns2");
|
|
||||||
if (isDnsOk(dnsServers)) {
|
|
||||||
linkProperties.addDns(InetAddress.getByName(dnsServers[0]));
|
|
||||||
linkProperties.addDns(InetAddress.getByName(dnsServers[1]));
|
|
||||||
} else {
|
} else {
|
||||||
result = SetupResult.ERR_BadDns;
|
log("response.length < 5 using properties for dns and gateway");
|
||||||
|
for (InterfaceAddress addr : networkInterface.getInterfaceAddresses()) {
|
||||||
|
linkProperties.addLinkAddress(new LinkAddress(addr));
|
||||||
|
}
|
||||||
|
|
||||||
|
String gatewayAddress = SystemProperties.get(prefix + "gw");
|
||||||
|
linkProperties.setGateway(InetAddress.getByName(gatewayAddress));
|
||||||
|
|
||||||
|
String dnsServers[] = new String[2];
|
||||||
|
dnsServers[0] = SystemProperties.get(prefix + "dns1");
|
||||||
|
dnsServers[1] = SystemProperties.get(prefix + "dns2");
|
||||||
|
if (isDnsOk(dnsServers)) {
|
||||||
|
linkProperties.addDns(InetAddress.getByName(dnsServers[0]));
|
||||||
|
linkProperties.addDns(InetAddress.getByName(dnsServers[1]));
|
||||||
|
} else {
|
||||||
|
result = SetupResult.ERR_BadDns;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (UnknownHostException e1) {
|
} catch (UnknownHostException e1) {
|
||||||
log("onSetupCompleted: UnknowHostException " + e1);
|
log("onSetupCompleted: UnknowHostException " + e1);
|
||||||
|
|||||||
Reference in New Issue
Block a user