m/n/c/curator: implement cluster networking storage

This is just the Curator side, the client implementation will come in a
subsequent change.

Change-Id: I4a9b5ad5c77662e11122d0a1cea22d80ecfe4299
Reviewed-on: https://review.monogon.dev/c/monogon/+/1413
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/proto/common/common.proto b/metropolis/proto/common/common.proto
index 1c01834..183f790 100644
--- a/metropolis/proto/common/common.proto
+++ b/metropolis/proto/common/common.proto
@@ -175,3 +175,17 @@
     };
     repeated Node nodes = 1;
 }
+
+
+// NodeClusterNetworking carries information about the cluster networking (ie.
+// WireGuard mesh) connectivity of a node.
+message NodeClusterNetworking {
+    message Prefix {
+        string cidr = 1;
+    }
+    // wireguard_pubkey is the base64-encoded public key used by the node.
+    string wireguard_pubkey = 1;
+    // prefixes are networking routes exported by the node to the cluster networking
+    // mesh, and are programmed by other nodes into their wireguard peer config.
+    repeated Prefix prefixes = 2;
+}