syntax = "proto3"; option go_package = "./hodu"; // this one affects the full name of the the actual calls. // /./ // i want to keep the package line commented out such that // the full name is // (e.g. /Hodu/GetSeed) //package hodu; service Hodu { rpc GetSeed (Seed) returns (Seed) {} rpc PacketStream (stream Packet) returns (stream Packet) {} } message Seed { uint32 Version = 1; uint64 Flags = 2; } enum ROUTE_OPTION { UNSPEC = 0; TCP = 1; TCP4 = 2; TCP6 = 4; TTY = 8; HTTP = 16; HTTPS = 32; SSH = 64; }; message RouteDesc { uint32 RouteId = 1; // C->S(ROUTE_START): client-side peer address // S->C(ROUTE_STARTED): server-side listening address string TargetAddrStr = 2; // C->S(ROUTE_START): human-readable name of client-side peer // S->C(ROUTE_STARTED): clone as sent by C string TargetName= 3; // C->S(ROUTE_START): desired listening option on the server-side(e.g. tcp, tcp4, tcp6) + // hint to the service-side peer(e.g. local) + // hint to the client-side peer(e.g. tty, http, https) // S->C(ROUTE_STARTED): cloned as sent by C. uint32 ServiceOption = 4; // C->S(ROUTE_START): desired lisening address on the service-side // S->C(ROUTE_STARTED): cloned as sent by C string ServiceAddrStr = 5; // C->S(ROUTE_START): permitted network of server-side peers. // S->C(ROUTE_STARTED): cloned as sent by C. string ServiceNetStr = 6; }; message PeerDesc { uint32 RouteId = 1; uint32 PeerId = 2; string RemoteAddrStr = 3; string LocalAddrStr = 4; }; message PeerData { uint32 RouteId = 1; uint32 PeerId = 2; bytes Data = 3; }; enum PACKET_KIND { RESERVED = 0; // not used ROUTE_START = 1; ROUTE_STOP = 2; ROUTE_STARTED = 3; ROUTE_STOPPED = 4; PEER_STARTED = 5; PEER_STOPPED = 6; PEER_ABORTED = 7; PEER_EOF = 8; PEER_DATA = 9; }; message Packet { PACKET_KIND Kind = 1; oneof U { RouteDesc Route = 2; PeerDesc Peer = 3; PeerData Data = 4; }; }