syntax = "proto3"; package core; service CoreApi { rpc CreateSession (CreateSessionRequest) returns (CreateSessionResponse) { } rpc DeleteSession (DeleteSessionRequest) returns (DeleteSessionResponse) { } rpc GetSessions (SessionsRequest) returns (SessionsResponse) { } rpc GetSession (SessionRequest) returns (SessionResponse) { } rpc GetSessionOptions (SessionOptionsRequest) returns (SessionOptionsResponse) { } rpc GetSessionLocation (GetSessionLocationRequest) returns (GetSessionLocationResponse) { } rpc SetSessionLocation (SetSessionLocationRequest) returns (SetSessionLocationResponse) { } rpc SetSessionState (SetSessionStateRequest) returns (SetSessionStateResponse) { } rpc CreateNode (CreateNodeRequest) returns (CreateNodeResponse) { } rpc GetNode (GetNodeRequest) returns (GetNodeResponse) { } rpc EditNode (EditNodeRequest) returns (EditNodeResponse) { } rpc DeleteNode (DeleteNodeRequest) returns (DeleteNodeResponse) { } rpc GetNodeLinks (GetNodeLinksRequest) returns (GetNodeLinksResponse) { } rpc CreateLink (CreateLinkRequest) returns (CreateLinkResponse) { } rpc EditLink (EditLinkRequest) returns (EditLinkResponse) { } rpc DeleteLink (DeleteLinkRequest) returns (DeleteLinkResponse) { } rpc GetServices (GetServicesRequest) returns (GetServicesResponse) { } rpc GetServiceDefaults (GetServiceDefaultsRequest) returns (GetServiceDefaultsResponse) { } rpc SetServiceDefaults (SetServiceDefaultsRequest) returns (SetServiceDefaultsResponse) { } rpc GetNodeService (GetNodeServiceRequest) returns (GetNodeServiceResponse) { } rpc GetEmaneConfig (GetEmaneConfigRequest) returns (GetEmaneConfigResponse) { } rpc GetEmaneModels (GetEmaneModelsRequest) returns (GetEmaneModelsResponse) { } rpc GetEmaneModelConfig (GetEmaneModelConfigRequest) returns (GetEmaneModelConfigResponse) { } rpc GetEmaneModelConfigs (GetEmaneModelConfigsRequest) returns (GetEmaneModelConfigsResponse) { } rpc SaveXml (SaveXmlRequest) returns (SaveXmlResponse) { } rpc OpenXml (OpenXmlRequest) returns (OpenXmlResponse) { } } // rpc request/response messages message CreateSessionRequest { } message CreateSessionResponse { int32 id = 1; int32 state = 2; } message DeleteSessionRequest { int32 id = 1; } message DeleteSessionResponse { bool result = 1; } message SessionsRequest { } message SessionsResponse { repeated Session sessions = 1; } message SessionRequest { int32 id = 1; } message SessionResponse { int32 state = 1; repeated Node nodes = 2; repeated Link links = 3; } message SessionOptionsRequest { int32 id = 1; } message SessionOptionsResponse { repeated ConfigGroup groups = 1; } message GetSessionLocationRequest { int32 id = 1; } message GetSessionLocationResponse { Position position = 1; float scale = 2; } message SetSessionLocationRequest { int32 id = 1; Position position = 2; float scale = 3; } message SetSessionLocationResponse { bool result = 1; } message SetSessionStateRequest { int32 id = 1; SessionState state = 2; } message SetSessionStateResponse { bool result = 1; } message CreateNodeRequest { int32 session = 1; int32 id = 2; NodeType type = 3; string name = 4; string model = 5; string icon = 6; repeated string services = 7; Position position = 8; string emane = 9; string opaque = 10; } message CreateNodeResponse { int32 id = 1; } message GetNodeRequest { int32 session = 1; int32 id = 2; } message GetNodeResponse { Node node = 1; repeated Interface interfaces = 2; } message EditNodeRequest { int32 session = 1; int32 id = 2; Position position = 3; } message EditNodeResponse { bool result = 1; } message DeleteNodeRequest { int32 session = 1; int32 id = 2; } message DeleteNodeResponse { bool result = 1; } message GetNodeLinksRequest { int32 session = 1; int32 id = 2; } message GetNodeLinksResponse { repeated Link links = 1; } message CreateLinkRequest { int32 session = 1; Link link = 2; } message CreateLinkResponse { bool result = 1; } message EditLinkRequest { int32 session = 1; int32 node_one = 2; int32 node_two = 3; int32 interface_one = 4; int32 interface_two = 5; LinkOptions options = 6; } message EditLinkResponse { bool result = 1; } message DeleteLinkRequest { int32 session = 1; int32 node_one = 2; int32 node_two = 3; int32 interface_one = 4; int32 interface_two = 5; } message DeleteLinkResponse { bool result = 1; } message GetServicesRequest { } message GetServicesResponse { repeated Service services = 1; } message GetServiceDefaultsRequest { int32 session = 1; } message GetServiceDefaultsResponse { repeated ServiceDefaults defaults = 1; } message SetServiceDefaultsRequest { int32 session = 1; repeated ServiceDefaults defaults = 2; } message SetServiceDefaultsResponse { bool result = 1; } message GetNodeServiceRequest { int32 session = 1; int32 id = 2; string service = 3; } message GetNodeServiceResponse { NodeServiceData service = 1; } message GetEmaneConfigRequest { int32 session = 1; } message GetEmaneConfigResponse { repeated ConfigGroup groups = 1; } message GetEmaneModelsRequest { int32 session = 1; } message GetEmaneModelsResponse { repeated string models = 1; } message GetEmaneModelConfigRequest { int32 session = 1; int32 id = 2; string model = 3; } message GetEmaneModelConfigResponse { repeated ConfigGroup groups = 1; } message GetEmaneModelConfigsRequest { int32 session = 1; } message GetEmaneModelConfigsResponse { message ModelConfig { string model = 1; repeated ConfigGroup groups = 2; } map configs = 1; } message SaveXmlRequest { int32 session = 1; } message SaveXmlResponse { bytes data = 1; } message OpenXmlRequest { bytes data = 1; } message OpenXmlResponse { bool result = 1; int32 session = 2; } // data structures for messages below enum SessionState { NONE = 0; DEFINITION = 1; CONFIGURATION = 2; INSTANTIATION = 3; RUNTIME = 4; DATACOLLECT = 5; SHUTDOWN = 6; } enum NodeType { DEFAULT = 0; PHYSICAL = 1; TBD = 3; SWITCH = 4; HUB = 5; WIRELESS_LAN = 6; RJ45 = 7; TUNNEL = 8; KTUNNEL = 9; EMANE = 10; TAP_BRIDGE = 11; PEER_TO_PEER = 12; CONTROL_NET = 13; EMANE_NET = 14; } enum ServiceValidationMode { BLOCKING = 0; NON_BLOCKING = 1; TIMER = 2; } message ServiceDefaults { string node_type = 1; repeated string services = 2; } message Service { string group = 1; string name = 2; } message NodeServiceData { repeated string executables = 1; repeated string dependencies = 2; repeated string dirs = 3; repeated string configs = 4; repeated string startup = 5; repeated string validate = 6; ServiceValidationMode validation_mode = 7; int32 validation_timer = 8; repeated string shutdown = 9; string meta = 10; } message ConfigGroup { string name = 1; repeated ConfigOption options = 2; } message ConfigOption { string label = 1; string name = 2; string value = 3; int32 type = 4; repeated string select = 5; } message Session { int32 id = 1; int32 state = 2; int32 nodes = 3; } message Node { int32 id = 1; string name = 2; int32 type = 3; string model = 4; Position position = 5; repeated string services = 6; string emane = 7; } message Link { int32 node_one = 1; int32 node_two = 2; int32 type = 3; Interface interface_one = 4; Interface interface_two = 5; LinkOptions options = 6; } message LinkOptions { string opaque = 1; float jitter = 2; string key = 3; float mburst = 4; float mer = 5; float per = 6; float bandwidth = 7; float burst = 8; float delay = 9; float dup = 10; bool unidirectional = 11; } message Interface { int32 id = 1; string name = 2; string mac = 3; string ip4 = 4; int32 ip4mask = 5; string ip6 = 6; int32 ip6mask = 7; int32 netid = 8; int32 flowid = 9; int32 mtu = 10; } message Position { float x = 1; float y = 2; float z = 3; float lat = 4; float lon = 5; float alt = 6; }