1d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme/*
2d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Copyright (C) 2016 The Android Open Source Project
3d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
4d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Licensed under the Apache License, Version 2.0 (the "License");
5d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * you may not use this file except in compliance with the License.
6d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * You may obtain a copy of the License at
7d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
8d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *      http://www.apache.org/licenses/LICENSE-2.0
9d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
10d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Unless required by applicable law or agreed to in writing, software
11d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * distributed under the License is distributed on an "AS IS" BASIS,
12d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * See the License for the specific language governing permissions and
14d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * limitations under the License.
15d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme */
16d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme
17d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Lemepackage com.android.server.net;
18d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme
19d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme/**
20d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Network Policy Manager local system service interface.
21d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
22d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * @hide Only for use within the system server.
23d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme */
24d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Lemepublic abstract class NetworkPolicyManagerInternal {
25d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme
26d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme    /**
27d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme     * Resets all policies associated with a given user.
28d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme     */
29d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme    public abstract void resetUserState(int userId);
30938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi
31938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    /**
32938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     * @return true if the given uid is restricted from doing networking on metered networks.
33938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     */
34938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    public abstract boolean isUidRestrictedOnMeteredNetworks(int uid);
35938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi
36938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    /**
37938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     * @return true if networking is blocked on the given interface for the given uid according
38938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     * to current networking policies.
39938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     */
40938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    public abstract boolean isUidNetworkingBlocked(int uid, String ifname);
41d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme}
42