AETHER-3162 Remove magma leftover iptables rule from enodebd

AETHER-3198 Add REUSE compliant to enodebd
AETHER-3196 Support identify IP from X-Real IP in enodebd
AETHER-3229 Documentation of configuration and state machine for enodebd
AETHER-3292 Adding new parameter to support in enodebd Sercomm driver
AETHER-3311 Remove unused protobuf definition from enodebd

Change-Id: Ie69f0141eff70cb3d4447cd9575c8224d42dd5e3
diff --git a/proto_files/orc8r/protos/streamer.proto b/proto_files/orc8r/protos/streamer.proto
new file mode 100644
index 0000000..ac4795b
--- /dev/null
+++ b/proto_files/orc8r/protos/streamer.proto
@@ -0,0 +1,59 @@
+// SPDX-FileCopyrightText: 2020 The Magma Authors.
+// SPDX-FileCopyrightText: 2022 Open Networking Foundation <support@opennetworking.org>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
+syntax = "proto3";
+
+package magma.orc8r;
+
+import "google/protobuf/any.proto";
+
+option go_package = "magma/orc8r/lib/go/protos";
+
+// Streamer provides a pipeline for the cloud to push the updates to the
+// gateway as and when the update happens.
+//
+// The Streamer interface defines the semantics and consistency guarantees
+// between the cloud and the gateway while abstracting the details of how
+// it's implemented in the cloud and what the gateway does with the updates.
+//
+// - The gateways call the GetUpdates() streaming API with a StreamRequest
+//   indicating the stream name and the offset to continue streaming from.
+// - The cloud sends a stream of DataUpdateBatch containing a batch of updates.
+// - If resync is true, then the gateway can cleanup all its data and add
+//   all the keys (the batch is guaranteed to contain only unique keys).
+// - If resync is false, then the gateway can update the keys, or add new
+//   ones if the key is not already present.
+// - Key deletions are not yet supported (#15109350)
+service Streamer {
+  // GetUpdates streams config updates from the cloud.
+  // The RPC call would be kept open to push new updates as they happen.
+  rpc GetUpdates (StreamRequest) returns (stream DataUpdateBatch) {}
+}
+
+message StreamRequest {
+  string gatewayId = 1;
+  // stream_name to attach to.
+  // E.g., subscriberdb, config, etc.
+  string stream_name = 2;
+  // extra_args contain any extra data to send up with the stream request.
+  // This value will be different per stream provider.
+  google.protobuf.Any extra_args = 3;
+}
+
+message DataUpdateBatch {
+  // updates to config values
+  repeated DataUpdate updates = 1;
+  // resync is true iff the updates would be a snapshot of all the contents
+  // in the cloud.
+  bool resync = 2;
+}
+
+message DataUpdate {
+  // key is the unique key for each item
+  string key = 1;
+  // value can be file contents, protobuf serialized message, etc.
+  // For key deletions, the value field would be absent.
+  bytes value = 2;
+}