summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/Permission.h10
-rw-r--r--server/NetworkController.cpp9
2 files changed, 18 insertions, 1 deletions
diff --git a/include/Permission.h b/include/Permission.h
index aa5ae811..19881df6 100644
--- a/include/Permission.h
+++ b/include/Permission.h
@@ -39,4 +39,14 @@ enum Permission {
PERMISSION_SYSTEM = 0x3, // Includes PERMISSION_NETWORK.
};
+inline const char *permissionToName(Permission permission) {
+ switch (permission) {
+ case PERMISSION_NONE: return "NONE";
+ case PERMISSION_NETWORK: return "NETWORK";
+ case PERMISSION_SYSTEM: return "SYSTEM";
+ // No default statement. We want to see errors of the form:
+ // "enumeration value 'PERMISSION_SYSTEM' not handled in switch [-Werror,-Wswitch]".
+ }
+}
+
#endif // NETD_INCLUDE_PERMISSION_H
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index aaf8b292..c891391d 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -536,7 +536,14 @@ void NetworkController::dump(DumpWriter& dw) {
dw.println("Networks:");
dw.incIndent();
for (const auto& i : mNetworks) {
- dw.println(i.second->toString().c_str());
+ Network* network = i.second;
+ dw.println(network->toString().c_str());
+ if (network->getType() == Network::PHYSICAL) {
+ dw.incIndent();
+ Permission permission = reinterpret_cast<PhysicalNetwork*>(network)->getPermission();
+ dw.println("Required permission: %s", permissionToName(permission));
+ dw.decIndent();
+ }
android::net::gCtls->resolverCtrl.dump(dw, i.first);
dw.blankline();
}