Add network created callback support

Create a network callback to notify network agent after
netd has created the network, so that the NetworkAgent may
wait for this callback and ensure the pre-work to communicate
with netd completed.

Bug: 178725261
Test: make update-api
Change-Id: I8c2ff7bd6980ae838abc5669f9419d62741b8666
CTS-Coverage-Bug: 178725261
This commit is contained in:
Chiachang Wang
2021-03-24 18:39:17 +08:00
parent 4f591c3910
commit 18d4281317
3 changed files with 24 additions and 0 deletions

View File

@@ -218,6 +218,7 @@ package android.net {
method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
method public void onAutomaticReconnectDisabled();
method public void onBandwidthUpdateRequested();
method public void onNetworkCreated();
method public void onNetworkUnwanted();
method public void onQosCallbackRegistered(int, @NonNull android.net.QosFilter);
method public void onQosCallbackUnregistered(int);

View File

@@ -46,4 +46,5 @@ oneway interface INetworkAgent {
void onRemoveKeepalivePacketFilter(int slot);
void onQosFilterCallbackRegistered(int qosCallbackId, in QosFilterParcelable filterParcel);
void onQosCallbackUnregistered(int qosCallbackId);
void onNetworkCreated();
}

View File

@@ -361,6 +361,14 @@ public abstract class NetworkAgent {
*/
public static final int CMD_UNREGISTER_QOS_CALLBACK = BASE + 21;
/**
* Sent by ConnectivityService to {@link NetworkAgent} to inform the agent that its native
* network was created and the Network object is now valid.
*
* @hide
*/
public static final int CMD_NETWORK_CREATED = BASE + 22;
private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) {
final NetworkInfo ni = new NetworkInfo(config.legacyType, config.legacySubType,
config.legacyTypeName, config.legacySubTypeName);
@@ -560,6 +568,10 @@ public abstract class NetworkAgent {
msg.arg1 /* QoS callback id */);
break;
}
case CMD_NETWORK_CREATED: {
onNetworkCreated();
break;
}
}
}
}
@@ -700,6 +712,11 @@ public abstract class NetworkAgent {
mHandler.sendMessage(mHandler.obtainMessage(
CMD_UNREGISTER_QOS_CALLBACK, qosCallbackId, 0, null));
}
@Override
public void onNetworkCreated() {
mHandler.sendMessage(mHandler.obtainMessage(CMD_NETWORK_CREATED));
}
}
/**
@@ -1009,6 +1026,11 @@ public abstract class NetworkAgent {
protected void saveAcceptUnvalidated(boolean accept) {
}
/**
* Called when ConnectivityService has successfully created this NetworkAgent's native network.
*/
public void onNetworkCreated() {}
/**
* Requests that the network hardware send the specified packet at the specified interval.
*