Files
ziti/pb/ctrl_pb/ctrl.proto
T
ekoby 7f6fb5e5eb initial support for passing crypto material (#41)
implement passing information between hosting and dialing endpoints (used for crypto key exchange)
2020-02-27 12:57:39 -05:00

159 lines
3.3 KiB
Protocol Buffer

syntax = "proto3";
package ctrl.pb;
import "google/protobuf/timestamp.proto";
enum ContentType {
Zero = 0;
SessionRequestType = 1000;
SessionSuccessType = 1001;
DialType = 1002;
LinkType = 1003;
FaultType = 1004;
RouteType = 1005;
UnrouteType = 1006;
MetricsType = 1007;
TogglePipeTracesRequestType = 1008;
TraceEventType = 1010;
BindRequestType = 1011;
BindResponseType = 1012;
InspectRequestType = 1013;
InspectResponseType = 1014;
StartXgressType = 1015;
SessionFailedType = 1016;
}
message SessionRequest {
string ingressId = 1;
string serviceId = 2;
map<uint32, bytes> peerData = 3;
}
enum BindType {
Bind = 0;
Unbind = 1;
}
message BindRequest {
BindType bindType = 1;
string token = 2;
string serviceId = 3;
map<uint32, bytes> peerData = 4;
}
message BindResponse {
bool success = 1;
string message = 2;
}
message Dial {
string id = 1;
string address = 2;
}
message Link {
string id = 1;
}
enum FaultSubject {
IngressFault = 0;
EgressFault = 1;
LinkFault = 2;
}
message Fault {
FaultSubject subject = 1;
string id = 2;
}
message Route {
string sessionId = 1;
message Egress {
string binding = 1;
string address = 2;
string destination = 3;
map<uint32, bytes> peerData = 4;
}
Egress egress = 2;
message Forward {
string srcAddress = 1;
string dstAddress = 2;
}
repeated Forward forwards = 3;
}
message Unroute {
string sessionId = 1;
bool now = 2;
}
enum MetricsSourceType {
Ingress = 0;
Egress = 1;
Internal = 2; // Is there a better word here? Router, Intermediary, NonEdge?
// Do we also want Edge and/or SDK here? Anything else?
}
message MetricsMessage {
MetricsSourceType sourceType = 1;
string sourceId = 2;
google.protobuf.Timestamp timestamp = 3;
map<string, string> tags = 4;
map<string, int64> intValues = 5;
map<string, double> floatValues = 6;
map<string, Meter> meters = 7;
map<string, Histogram> histograms = 8;
map<string, IntervalCounter> intervalCounters = 9;
message Meter {
int64 count = 1;
double m1Rate = 2;
double m5Rate = 3;
double m15Rate = 4;
double meanRate = 5;
}
message Histogram {
int64 count = 1;
int64 max = 2;
double mean = 3;
int64 min = 4;
double stdDev = 5;
double variance = 6;
double p50 = 7;
double p75 = 8;
double p95 = 9;
double p99 = 10;
double p999 = 11;
double p9999 = 12;
}
message IntervalCounter {
uint64 intervalLength = 1;
repeated IntervalBucket buckets = 2;
}
message IntervalBucket {
int64 intervalStartUTC = 1; // Only need minute resolution, this will be seconds resolution
map<string, uint64> values = 3;
}
}
message InspectRequest {
repeated string requestedValues = 1;
}
message InspectResponse {
bool success = 1;
repeated string errors = 2;
repeated InspectValue values = 3;
message InspectValue {
string name = 1;
string value = 2;
}
}