Migrate to TetherOffloadRuleParcel in IpServer
The netd tethering offload IPCs are changing from taking a list of primitives to taking a TetherOffloadRuleParcel. Modify their only caller. Bug: 140541991 Test: atest IpServerTest Change-Id: I83718c80ef9d31199c87021b4dd5821717fd5ba5
This commit is contained in:
@@ -34,6 +34,7 @@ import android.net.LinkAddress;
|
||||
import android.net.LinkProperties;
|
||||
import android.net.MacAddress;
|
||||
import android.net.RouteInfo;
|
||||
import android.net.TetherOffloadRuleParcel;
|
||||
import android.net.TetheredClient;
|
||||
import android.net.TetheringManager;
|
||||
import android.net.TetheringRequestParcel;
|
||||
@@ -280,6 +281,19 @@ public class IpServer extends StateMachine {
|
||||
return new Ipv6ForwardingRule(newUpstreamIfindex, downstreamIfindex, address, srcMac,
|
||||
dstMac);
|
||||
}
|
||||
|
||||
// Don't manipulate TetherOffloadRuleParcel directly because implementing onNewUpstream()
|
||||
// would be error-prone due to generated stable AIDL classes not having a copy constructor.
|
||||
public TetherOffloadRuleParcel toTetherOffloadRuleParcel() {
|
||||
final TetherOffloadRuleParcel parcel = new TetherOffloadRuleParcel();
|
||||
parcel.inputInterfaceIndex = upstreamIfindex;
|
||||
parcel.outputInterfaceIndex = downstreamIfindex;
|
||||
parcel.destination = address.getAddress();
|
||||
parcel.prefixLength = 128;
|
||||
parcel.srcL2Address = srcMac.toByteArray();
|
||||
parcel.dstL2Address = dstMac.toByteArray();
|
||||
return parcel;
|
||||
}
|
||||
}
|
||||
private final LinkedHashMap<Inet6Address, Ipv6ForwardingRule> mIpv6ForwardingRules =
|
||||
new LinkedHashMap<>();
|
||||
@@ -824,9 +838,7 @@ public class IpServer extends StateMachine {
|
||||
|
||||
private void addIpv6ForwardingRule(Ipv6ForwardingRule rule) {
|
||||
try {
|
||||
mNetd.tetherRuleAddDownstreamIpv6(mInterfaceParams.index, rule.upstreamIfindex,
|
||||
rule.address.getAddress(), mInterfaceParams.macAddr.toByteArray(),
|
||||
rule.dstMac.toByteArray());
|
||||
mNetd.tetherOffloadRuleAdd(rule.toTetherOffloadRuleParcel());
|
||||
mIpv6ForwardingRules.put(rule.address, rule);
|
||||
} catch (RemoteException | ServiceSpecificException e) {
|
||||
mLog.e("Could not add IPv6 downstream rule: ", e);
|
||||
@@ -835,7 +847,7 @@ public class IpServer extends StateMachine {
|
||||
|
||||
private void removeIpv6ForwardingRule(Ipv6ForwardingRule rule, boolean removeFromMap) {
|
||||
try {
|
||||
mNetd.tetherRuleRemoveDownstreamIpv6(rule.upstreamIfindex, rule.address.getAddress());
|
||||
mNetd.tetherOffloadRuleRemove(rule.toTetherOffloadRuleParcel());
|
||||
if (removeFromMap) {
|
||||
mIpv6ForwardingRules.remove(rule.address);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user