1 /** 2 * Copyright (c) 2020, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.net; 18 19 import android.net.Network; 20 21 import com.android.internal.net.LegacyVpnInfo; 22 import com.android.internal.net.VpnConfig; 23 import com.android.internal.net.VpnProfile; 24 25 /** 26 * Interface that manages VPNs. 27 */ 28 /** {@hide} */ 29 interface IVpnManager { 30 /** VpnService APIs */ prepareVpn(String oldPackage, String newPackage, int userId)31 boolean prepareVpn(String oldPackage, String newPackage, int userId); setVpnPackageAuthorization(String packageName, int userId, int vpnType)32 void setVpnPackageAuthorization(String packageName, int userId, int vpnType); establishVpn(in VpnConfig config)33 ParcelFileDescriptor establishVpn(in VpnConfig config); addVpnAddress(String address, int prefixLength)34 boolean addVpnAddress(String address, int prefixLength); removeVpnAddress(String address, int prefixLength)35 boolean removeVpnAddress(String address, int prefixLength); setUnderlyingNetworksForVpn(in Network[] networks)36 boolean setUnderlyingNetworksForVpn(in Network[] networks); 37 38 /** VpnManager APIs */ provisionVpnProfile(in VpnProfile profile, String packageName)39 boolean provisionVpnProfile(in VpnProfile profile, String packageName); deleteVpnProfile(String packageName)40 void deleteVpnProfile(String packageName); startVpnProfile(String packageName)41 void startVpnProfile(String packageName); stopVpnProfile(String packageName)42 void stopVpnProfile(String packageName); 43 44 /** Always-on VPN APIs */ isAlwaysOnVpnPackageSupported(int userId, String packageName)45 boolean isAlwaysOnVpnPackageSupported(int userId, String packageName); setAlwaysOnVpnPackage(int userId, String packageName, boolean lockdown, in List<String> lockdownAllowlist)46 boolean setAlwaysOnVpnPackage(int userId, String packageName, boolean lockdown, 47 in List<String> lockdownAllowlist); getAlwaysOnVpnPackage(int userId)48 String getAlwaysOnVpnPackage(int userId); isVpnLockdownEnabled(int userId)49 boolean isVpnLockdownEnabled(int userId); getVpnLockdownAllowlist(int userId)50 List<String> getVpnLockdownAllowlist(int userId); isCallerCurrentAlwaysOnVpnApp()51 boolean isCallerCurrentAlwaysOnVpnApp(); isCallerCurrentAlwaysOnVpnLockdownApp()52 boolean isCallerCurrentAlwaysOnVpnLockdownApp(); 53 54 /** Legacy VPN APIs */ startLegacyVpn(in VpnProfile profile)55 void startLegacyVpn(in VpnProfile profile); getLegacyVpnInfo(int userId)56 LegacyVpnInfo getLegacyVpnInfo(int userId); updateLockdownVpn()57 boolean updateLockdownVpn(); 58 59 /** General system APIs */ getVpnConfig(int userId)60 VpnConfig getVpnConfig(int userId); factoryReset()61 void factoryReset(); 62 } 63