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,