permission_broker: Start using patchpanel's ModifyPortRule
Start using patchpanel's ModifyPortRule to make migration
from firewall to the DBus API easier.
This patch:
- added patchpanel DBUS API call method inside port_tracker
- added skeleton method of the API inside patchpanel
- refactor port_tracker and firewall to use DBus var type
for protocol (TCP and UDP).
BUG=b:160130580
TEST=emerge-rammus system_api patchpanel permission_broker
TEST=FEATURES=test emerge-rammus permission_broker
TEST=USE="asan fuzzer" emerge-atlas permission_broker
TEST=tast run <DUT_IP> platform.Firewall
Cq-Depend: chromium:2291863, chromium:2303739
Change-Id: I7f962950df3f34a825ec9aabd3030395716dc9a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2291864
Commit-Queue: Jason Jeremy Iman <jasongustaman@chromium.org>
Tested-by: Jason Jeremy Iman <jasongustaman@chromium.org>
Reviewed-by: Garrick Evans <garrick@chromium.org>
Reviewed-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
diff --git a/patchpanel/manager.cc b/patchpanel/manager.cc
index d0e47b8..3218586 100644
--- a/patchpanel/manager.cc
+++ b/patchpanel/manager.cc
@@ -196,6 +196,7 @@
{patchpanel::kPluginVmShutdownMethod, &Manager::OnPluginVmShutdown},
{patchpanel::kSetVpnIntentMethod, &Manager::OnSetVpnIntent},
{patchpanel::kConnectNamespaceMethod, &Manager::OnConnectNamespace},
+ {patchpanel::kModifyPortRuleMethod, &Manager::OnModifyPortRule},
};
for (const auto& kv : kServiceMethods) {
@@ -774,6 +775,28 @@
return dbus_response;
}
+std::unique_ptr<dbus::Response> Manager::OnModifyPortRule(
+ dbus::MethodCall* method_call) {
+ std::unique_ptr<dbus::Response> dbus_response(
+ dbus::Response::FromMethodCall(method_call));
+
+ dbus::MessageReader reader(method_call);
+ dbus::MessageWriter writer(dbus_response.get());
+
+ patchpanel::ModifyPortRuleRequest request;
+ patchpanel::ModifyPortRuleResponse response;
+
+ if (!reader.PopArrayOfBytesAsProto(&request)) {
+ LOG(ERROR) << "Unable to parse ModifyPortRequest";
+ writer.AppendProtoAsArrayOfBytes(response);
+ return dbus_response;
+ }
+
+ // TODO(b/160129667): Handle ModifyPortRule request.
+ writer.AppendProtoAsArrayOfBytes(response);
+ return dbus_response;
+}
+
void Manager::ConnectNamespace(
base::ScopedFD client_fd,
const patchpanel::ConnectNamespaceRequest& request,