burrow/proto/burrow.proto
2026-04-03 01:36:55 -07:00

100 lines
1.9 KiB
Protocol Buffer

syntax = "proto3";
package burrow;
import "google/protobuf/timestamp.proto";
service Tunnel {
rpc TunnelConfiguration (Empty) returns (stream TunnelConfigurationResponse);
rpc TunnelStart (Empty) returns (Empty);
rpc TunnelStop (Empty) returns (Empty);
rpc TunnelStatus (Empty) returns (stream TunnelStatusResponse);
}
service Networks {
rpc NetworkAdd (Network) returns (Empty);
rpc NetworkList (Empty) returns (stream NetworkListResponse);
rpc NetworkReorder (NetworkReorderRequest) returns (Empty);
rpc NetworkDelete (NetworkDeleteRequest) returns (Empty);
}
service TailnetControl {
rpc Discover (TailnetDiscoverRequest) returns (TailnetDiscoverResponse);
rpc Probe (TailnetProbeRequest) returns (TailnetProbeResponse);
}
message NetworkReorderRequest {
int32 id = 1;
int32 index = 2;
}
message WireGuardPeer {
string endpoint = 1;
repeated string subnet = 2;
}
message WireGuardNetwork {
string address = 1;
string dns = 2;
repeated WireGuardPeer peer = 3;
}
message NetworkDeleteRequest {
int32 id = 1;
}
message Network {
int32 id = 1;
NetworkType type = 2;
bytes payload = 3;
}
enum NetworkType {
WireGuard = 0;
Tailnet = 1;
}
message NetworkListResponse {
repeated Network network = 1;
}
message Empty {
}
message TailnetDiscoverRequest {
string email = 1;
}
message TailnetDiscoverResponse {
string domain = 1;
string authority = 2;
string oidc_issuer = 3;
bool managed = 4;
}
message TailnetProbeRequest {
string authority = 1;
}
message TailnetProbeResponse {
string authority = 1;
int32 status_code = 2;
string summary = 3;
string detail = 4;
bool reachable = 5;
}
enum State {
Stopped = 0;
Running = 1;
}
message TunnelStatusResponse {
State state = 1;
optional google.protobuf.Timestamp start = 2;
}
message TunnelConfigurationResponse {
repeated string addresses = 1;
int32 mtu = 2;
}