Move ApfFilter from ConnectivityService to IpManager
There's a few advantages to having ApfFilter in IpManager: 1. If things go wrong, crashing a particular transport is less bad then crashing ConnectivityService. We also don't want to use ConnectivityService as a dumping ground for transport-specific logic. 2. This makes implementing WifiManager.MulticastLock a lot simpler and safer because enabling/disabling it doesn't have to go through the NetworkAgent, which could risk various races (e.g. installing a filter into the wrong WiFi network). 3. IpManager is the ultimate source for LinkProperties for a particular transport and since ApfFilter uses the LinkProperties it's better to have it closely paired with the IpManager. Likewise, ApfFilter needs to know the APF capabilities of the transport, so having it in the transport avoids having to parcel this information through the NetworkAgent. Bug: 26238573 Change-Id: I99b85f2b64972f0e7572170ec5d1926081aa3429
This commit is contained in:
46
services/net/java/android/net/apf/ApfCapabilities.java
Normal file
46
services/net/java/android/net/apf/ApfCapabilities.java
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.net.apf;
|
||||
|
||||
/**
|
||||
* APF program support capabilities.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class ApfCapabilities {
|
||||
/**
|
||||
* Version of APF instruction set supported for packet filtering. 0 indicates no support for
|
||||
* packet filtering using APF programs.
|
||||
*/
|
||||
public final int apfVersionSupported;
|
||||
|
||||
/**
|
||||
* Maximum size of APF program allowed.
|
||||
*/
|
||||
public final int maximumApfProgramSize;
|
||||
|
||||
/**
|
||||
* Format of packets passed to APF filter. Should be one of ARPHRD_*
|
||||
*/
|
||||
public final int apfPacketFormat;
|
||||
|
||||
ApfCapabilities(int apfVersionSupported, int maximumApfProgramSize, int apfPacketFormat) {
|
||||
this.apfVersionSupported = apfVersionSupported;
|
||||
this.maximumApfProgramSize = maximumApfProgramSize;
|
||||
this.apfPacketFormat = apfPacketFormat;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user