Loading core/java/android/net/INetworkManagementEventObserver.aidl +9 −0 Original line number Diff line number Diff line Loading @@ -90,4 +90,13 @@ interface INetworkManagementEventObserver { * @param active True if the interface is actively transmitting data, false if it is idle. */ void interfaceClassDataActivityChanged(String label, boolean active); /** * Information about available DNS servers has been received. * * @param iface The interface on which the information was received. * @param lifetime The time in seconds for which the DNS servers may be used. * @param servers The IP addresses of the DNS servers. */ void interfaceDnsServerInfo(String iface, long lifetime, in String[] servers); } core/java/com/android/server/net/BaseNetworkObserver.java +5 −0 Original line number Diff line number Diff line Loading @@ -64,4 +64,9 @@ public class BaseNetworkObserver extends INetworkManagementEventObserver.Stub { public void limitReached(String limitName, String iface) { // default no-op } @Override public void interfaceDnsServerInfo(String iface, long lifetime, String[] servers) { // default no-op } } services/java/com/android/server/NetworkManagementService.java +36 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub public static final int BandwidthControl = 601; public static final int InterfaceClassActivity = 613; public static final int InterfaceAddressChange = 614; public static final int InterfaceDnsServerInfo = 615; } /** Loading Loading @@ -431,6 +432,21 @@ public class NetworkManagementService extends INetworkManagementService.Stub mObservers.finishBroadcast(); } /** * Notify our observers of DNS server information received. */ private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) { final int length = mObservers.beginBroadcast(); for (int i = 0; i < length; i++) { try { mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses); } catch (RemoteException e) { } catch (RuntimeException e) { } } mObservers.finishBroadcast(); } // // Netd Callback handling // Loading Loading @@ -535,6 +551,26 @@ public class NetworkManagementService extends INetworkManagementService.Stub } return true; // break; case NetdResponseCode.InterfaceDnsServerInfo: /* * Information about available DNS servers has been received. * Format: "NNN DnsInfo servers <interface> <lifetime> <servers>" */ long lifetime; // Actually a 32-bit unsigned integer. if (cooked.length == 6 && cooked[1].equals("DnsInfo") && cooked[2].equals("servers")) { try { lifetime = Long.parseLong(cooked[4]); } catch (NumberFormatException e) { throw new IllegalStateException(errorMessage); } String[] servers = cooked[5].split(","); notifyInterfaceDnsServerInfo(cooked[3], lifetime, servers); } return true; // break; default: break; } return false; Loading services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,46 @@ public class NetworkManagementServiceTest extends AndroidTestCase { sendMessage("666 Address added 2001:db8::1/64 wlan0 1 0"); // Invalid code. /** * DNS information broadcasts. */ sendMessage("615 DnsInfo servers rmnet_usb0 3600 2001:db8::1"); expectSoon(observer).interfaceDnsServerInfo("rmnet_usb0", 3600, new String[]{"2001:db8::1"}); sendMessage("615 DnsInfo servers wlan0 14400 2001:db8::1,2001:db8::2"); expectSoon(observer).interfaceDnsServerInfo("wlan0", 14400, new String[]{"2001:db8::1", "2001:db8::2"}); // We don't check for negative lifetimes, only for parse errors. sendMessage("615 DnsInfo servers wlan0 -3600 ::1"); expectSoon(observer).interfaceDnsServerInfo("wlan0", -3600, new String[]{"::1"}); sendMessage("615 DnsInfo servers wlan0 SIXHUNDRED ::1"); // Non-numeric lifetime. sendMessage("615 DnsInfo servers wlan0 2001:db8::1"); // Missing lifetime. sendMessage("615 DnsInfo servers wlan0 3600"); // No servers. sendMessage("615 DnsInfo servers 3600 wlan0 2001:db8::1,2001:db8::2"); // Non-numeric lifetime. sendMessage("615 DnsInfo wlan0 7200 2001:db8::1,2001:db8::2"); // Invalid tokens. sendMessage("666 DnsInfo servers wlan0 5400 2001:db8::1"); // Invalid code. // No syntax checking on the addresses. sendMessage("615 DnsInfo servers wlan0 600 ,::,,foo,::1,"); expectSoon(observer).interfaceDnsServerInfo("wlan0", 600, new String[]{"", "::", "", "foo", "::1"}); // Make sure nothing else was called. verifyNoMoreInteractions(observer); } Loading Loading
core/java/android/net/INetworkManagementEventObserver.aidl +9 −0 Original line number Diff line number Diff line Loading @@ -90,4 +90,13 @@ interface INetworkManagementEventObserver { * @param active True if the interface is actively transmitting data, false if it is idle. */ void interfaceClassDataActivityChanged(String label, boolean active); /** * Information about available DNS servers has been received. * * @param iface The interface on which the information was received. * @param lifetime The time in seconds for which the DNS servers may be used. * @param servers The IP addresses of the DNS servers. */ void interfaceDnsServerInfo(String iface, long lifetime, in String[] servers); }
core/java/com/android/server/net/BaseNetworkObserver.java +5 −0 Original line number Diff line number Diff line Loading @@ -64,4 +64,9 @@ public class BaseNetworkObserver extends INetworkManagementEventObserver.Stub { public void limitReached(String limitName, String iface) { // default no-op } @Override public void interfaceDnsServerInfo(String iface, long lifetime, String[] servers) { // default no-op } }
services/java/com/android/server/NetworkManagementService.java +36 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub public static final int BandwidthControl = 601; public static final int InterfaceClassActivity = 613; public static final int InterfaceAddressChange = 614; public static final int InterfaceDnsServerInfo = 615; } /** Loading Loading @@ -431,6 +432,21 @@ public class NetworkManagementService extends INetworkManagementService.Stub mObservers.finishBroadcast(); } /** * Notify our observers of DNS server information received. */ private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) { final int length = mObservers.beginBroadcast(); for (int i = 0; i < length; i++) { try { mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses); } catch (RemoteException e) { } catch (RuntimeException e) { } } mObservers.finishBroadcast(); } // // Netd Callback handling // Loading Loading @@ -535,6 +551,26 @@ public class NetworkManagementService extends INetworkManagementService.Stub } return true; // break; case NetdResponseCode.InterfaceDnsServerInfo: /* * Information about available DNS servers has been received. * Format: "NNN DnsInfo servers <interface> <lifetime> <servers>" */ long lifetime; // Actually a 32-bit unsigned integer. if (cooked.length == 6 && cooked[1].equals("DnsInfo") && cooked[2].equals("servers")) { try { lifetime = Long.parseLong(cooked[4]); } catch (NumberFormatException e) { throw new IllegalStateException(errorMessage); } String[] servers = cooked[5].split(","); notifyInterfaceDnsServerInfo(cooked[3], lifetime, servers); } return true; // break; default: break; } return false; Loading
services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,46 @@ public class NetworkManagementServiceTest extends AndroidTestCase { sendMessage("666 Address added 2001:db8::1/64 wlan0 1 0"); // Invalid code. /** * DNS information broadcasts. */ sendMessage("615 DnsInfo servers rmnet_usb0 3600 2001:db8::1"); expectSoon(observer).interfaceDnsServerInfo("rmnet_usb0", 3600, new String[]{"2001:db8::1"}); sendMessage("615 DnsInfo servers wlan0 14400 2001:db8::1,2001:db8::2"); expectSoon(observer).interfaceDnsServerInfo("wlan0", 14400, new String[]{"2001:db8::1", "2001:db8::2"}); // We don't check for negative lifetimes, only for parse errors. sendMessage("615 DnsInfo servers wlan0 -3600 ::1"); expectSoon(observer).interfaceDnsServerInfo("wlan0", -3600, new String[]{"::1"}); sendMessage("615 DnsInfo servers wlan0 SIXHUNDRED ::1"); // Non-numeric lifetime. sendMessage("615 DnsInfo servers wlan0 2001:db8::1"); // Missing lifetime. sendMessage("615 DnsInfo servers wlan0 3600"); // No servers. sendMessage("615 DnsInfo servers 3600 wlan0 2001:db8::1,2001:db8::2"); // Non-numeric lifetime. sendMessage("615 DnsInfo wlan0 7200 2001:db8::1,2001:db8::2"); // Invalid tokens. sendMessage("666 DnsInfo servers wlan0 5400 2001:db8::1"); // Invalid code. // No syntax checking on the addresses. sendMessage("615 DnsInfo servers wlan0 600 ,::,,foo,::1,"); expectSoon(observer).interfaceDnsServerInfo("wlan0", 600, new String[]{"", "::", "", "foo", "::1"}); // Make sure nothing else was called. verifyNoMoreInteractions(observer); } Loading