1/*
2 * Copyright (C) 2017 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
17syntax = "proto2";
18
19package android.net;
20
21option java_multiple_files = true;
22
23import "frameworks/base/core/proto/android/privacy.proto";
24
25/**
26 * An android.net.NetworkCapabilities object.
27 */
28message NetworkCapabilitiesProto {
29    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
30
31    enum Transport {
32        // Indicates this network uses a Cellular transport.
33        TRANSPORT_CELLULAR = 0;
34        // Indicates this network uses a Wi-Fi transport.
35        TRANSPORT_WIFI = 1;
36        // Indicates this network uses a Bluetooth transport.
37        TRANSPORT_BLUETOOTH = 2;
38        // Indicates this network uses an Ethernet transport.
39        TRANSPORT_ETHERNET = 3;
40        // Indicates this network uses a VPN transport.
41        TRANSPORT_VPN = 4;
42        // Indicates this network uses a Wi-Fi Aware transport.
43        TRANSPORT_WIFI_AWARE = 5;
44        // Indicates this network uses a LoWPAN transport.
45        TRANSPORT_LOWPAN = 6;
46    }
47    repeated Transport transports = 1;
48
49    enum NetCapability {
50        // Indicates this is a network that has the ability to reach the
51        // carrier's MMSC for sending and receiving MMS messages.
52        NET_CAPABILITY_MMS = 0;
53        // Indicates this is a network that has the ability to reach the
54        // carrier's SUPL server, used to retrieve GPS information.
55        NET_CAPABILITY_SUPL = 1;
56        // Indicates this is a network that has the ability to reach the
57        // carrier's DUN or tethering gateway.
58        NET_CAPABILITY_DUN = 2;
59        // Indicates this is a network that has the ability to reach the
60        // carrier's FOTA portal, used for over the air updates.
61        NET_CAPABILITY_FOTA = 3;
62        // Indicates this is a network that has the ability to reach the
63        // carrier's IMS servers, used for network registration and signaling.
64        NET_CAPABILITY_IMS = 4;
65        // Indicates this is a network that has the ability to reach the
66        // carrier's CBS servers, used for carrier specific services.
67        NET_CAPABILITY_CBS = 5;
68        // Indicates this is a network that has the ability to reach a Wi-Fi
69        // direct peer.
70        NET_CAPABILITY_WIFI_P2P = 6;
71        // Indicates this is a network that has the ability to reach a carrier's
72        // Initial Attach servers.
73        NET_CAPABILITY_IA = 7;
74        // Indicates this is a network that has the ability to reach a carrier's
75        // RCS servers, used for Rich Communication Services.
76        NET_CAPABILITY_RCS = 8;
77        // Indicates this is a network that has the ability to reach a carrier's
78        // XCAP servers, used for configuration and control.
79        NET_CAPABILITY_XCAP = 9;
80        // Indicates this is a network that has the ability to reach a carrier's
81        // Emergency IMS servers or other services, used for network signaling
82        // during emergency calls.
83        NET_CAPABILITY_EIMS = 10;
84        // Indicates that this network is unmetered.
85        NET_CAPABILITY_NOT_METERED = 11;
86        // Indicates that this network should be able to reach the internet.
87        NET_CAPABILITY_INTERNET = 12;
88        // Indicates that this network is available for general use. If this is
89        // not set applications should not attempt to communicate on this
90        // network. Note that this is simply informative and not enforcement -
91        // enforcement is handled via other means. Set by default.
92        NET_CAPABILITY_NOT_RESTRICTED = 13;
93        // Indicates that the user has indicated implicit trust of this network.
94        // This generally means it's a sim-selected carrier, a plugged in
95        // ethernet, a paired BT device or a wifi the user asked to connect to.
96        // Untrusted networks are probably limited to unknown wifi AP. Set by
97        // default.
98        NET_CAPABILITY_TRUSTED = 14;
99        // Indicates that this network is not a VPN.  This capability is set by
100        // default and should be explicitly cleared for VPN networks.
101        NET_CAPABILITY_NOT_VPN = 15;
102        // Indicates that connectivity on this network was successfully
103        // validated. For example, for a network with NET_CAPABILITY_INTERNET,
104        // it means that Internet connectivity was successfully detected.
105        NET_CAPABILITY_VALIDATED = 16;
106        // Indicates that this network was found to have a captive portal in
107        // place last time it was probed.
108        NET_CAPABILITY_CAPTIVE_PORTAL = 17;
109        // Indicates that this network is not roaming.
110        NET_CAPABILITY_NOT_ROAMING = 18;
111        // Indicates that this network is available for use by apps, and not a
112        // network that is being kept up in the background to facilitate fast
113        // network switching.
114        NET_CAPABILITY_FOREGROUND = 19;
115    }
116    repeated NetCapability capabilities = 2;
117
118    // Passive link bandwidth. This is a rough guide of the expected peak
119    // bandwidth for the first hop on the given transport.  It is not measured,
120    // but may take into account link parameters (Radio technology, allocated
121    // channels, etc).
122    optional int32 link_up_bandwidth_kbps = 3;
123    optional int32 link_down_bandwidth_kbps = 4;
124
125    optional string network_specifier = 5 [ (.android.privacy).dest = DEST_EXPLICIT ];
126
127    // True if this object specifies a signal strength.
128    optional bool can_report_signal_strength = 6;
129    // This is a signed integer, and higher values indicate better signal. The
130    // exact units are bearer-dependent. For example, Wi-Fi uses RSSI.
131    // Only valid if can_report_signal_strength is true.
132    optional sint32 signal_strength = 7;
133}
134