move topo control proto into new proto infra libarary
diff --git a/proto/infra/control.proto b/proto/infra/control.proto
new file mode 100644
index 0000000..3377f51
--- /dev/null
+++ b/proto/infra/control.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+package infra;
+
+message GetPortsRequest {
+};
+
+message SwitchPort {
+ enum Speed {
+ SPEED_INVALID = 0;
+ SPEED_100M = 1;
+ SPEED_1G = 2;
+ SPEED_10G = 3;
+ };
+ string name = 1;
+ Speed speed = 2;
+ enum LinkState {
+ LINKSTATE_INVALID = 0;
+ LINKSTATE_DOWN = 1;
+ LINKSTATE_UP = 2;
+ };
+ LinkState link_state = 3;
+ enum PortMode {
+ PORTMODE_INVALID = 0;
+ // Interface is bridged to a VLAN, untagged.
+ PORTMODE_SWITCHPORT_UNTAGGED = 1;
+ // Interfaces is bridged to several tagged 802.1q VLANs.
+ PORTMODE_SWITCHPORT_TAGGED = 2;
+ // Interface is in 'generic', both tagged 802.1q and untagged mode.
+ PORTMODE_SWITCHPORT_GENERIC = 3;
+ // Interface is routed, ie routes packets from a separate L3 network
+ // and the Switch is the default gateway for machines in this network.
+ PORTMODE_ROUTED = 4;
+ // Interface is in a configuration state that cannot be clearly stated
+ // in terms of this enum, and should be reconfigured.
+ PORTMODE_MANGLED = 5;
+ };
+ PortMode port_mode = 4;
+ // For PORTMODE_SWITCHPORT_UNTAGGED and PORTMODE_SWITCHPORT_GENERIC, the
+ // VLAN ID that this interface is natively bridged to.
+ int32 vlan_native = 5;
+ // For PORTMODE_SWITCHPORT_TAGGED and PORTMODE_SWITCHPORT_GENERIC, the VLAN
+ // IDs that the interface is bridged to using 802.1q tags.
+ repeated int32 vlan_tagged = 6;
+ // For PORTMODE_ROUTED
+ repeated string prefixes = 7;
+ // Interface MTU
+ int32 mtu = 8;
+ enum SpanningTreeMode {
+ SPANNING_TREE_MODE_INVALID = 0;
+ // Send STP BPDU, on timeout switch to Forwarding.
+ SPANNING_TREE_MODE_AUTO_PORTFAST = 1;
+ // Switch to Forwarding immediately on link up.
+ SPANNING_TREE_MODE_PORTFAST = 2;
+ };
+ SpanningTreeMode spanning_tree_mode = 9;
+};
+
+message GetPortsResponse {
+ repeated SwitchPort ports = 1;
+};
+
+service SwitchControl {
+ rpc GetPorts(GetPortsRequest) returns (GetPortsResponse);
+};