syntax = "proto3"; package nebula; option go_package = "github.com/slackhq/nebula"; message NebulaMeta { enum MessageType { None = 0; HostQuery = 1; HostQueryReply = 2; HostUpdateNotification = 3; HostMovedNotification = 4; HostPunchNotification = 5; HostWhoami = 6; HostWhoamiReply = 7; PathCheck = 8; PathCheckReply = 9; } MessageType Type = 1; NebulaMetaDetails Details = 2; } message NebulaMetaDetails { uint32 VpnIp = 1; repeated Ip4AndPort Ip4AndPorts = 2; repeated Ip6AndPort Ip6AndPorts = 4; repeated uint32 RelayVpnIp = 5; uint32 counter = 3; } message Ip4AndPort { uint32 Ip = 1; uint32 Port = 2; } message Ip6AndPort { uint64 Hi = 1; uint64 Lo = 2; uint32 Port = 3; } message NebulaPing { enum MessageType { Ping = 0; Reply = 1; } MessageType Type = 1; uint64 Time = 2; } message NebulaHandshake { NebulaHandshakeDetails Details = 1; bytes Hmac = 2; } message NebulaHandshakeDetails { bytes Cert = 1; uint32 InitiatorIndex = 2; uint32 ResponderIndex = 3; uint64 Cookie = 4; uint64 Time = 5; // reserved for WIP multiport reserved 6, 7; } message NebulaControl { enum MessageType { None = 0; CreateRelayRequest = 1; CreateRelayResponse = 2; } MessageType Type = 1; uint32 InitiatorRelayIndex = 2; uint32 ResponderRelayIndex = 3; uint32 RelayToIp = 4; uint32 RelayFromIp = 5; }