syntax = "proto3"; package go.micro.network.mucp; // AdvertType defines the type of advert enum AdvertType { AdvertAnnounce = 0; AdvertUpdate = 1; } // Advert is router advertsement streamed by Watch message Advert { // id of the advertising router string id = 1; // type of advertisement AdvertType type = 2; // unix timestamp of the advertisement int64 timestamp = 3; // TTL of the Advert int64 ttl = 4; // events is a list of advertised events repeated Event events = 5; } // EventType defines the type of event enum EventType { Create = 0; Delete = 1; Update = 2; } // Event is routing table event message Event { // the unique event id string id = 1; // type of event EventType type = 2; // unix timestamp of event int64 timestamp = 3; // service route Route route = 4; } // Route is a service route message Route { // service for the route string service = 1; // the address that advertise this route string address = 2; // gateway as the next hop string gateway = 3; // the network for this destination string network = 4; // router if the router id string router = 5; // the network link string link = 6; // the metric / score of this route int64 metric = 7; // metadata for the route map metadata = 8; } // Error tracks network errors message Error { uint32 count = 1; string msg = 2; } // Status is node status message Status { Error error = 1; } // Node is network node message Node { // node id string id = 1; // node address string address = 2; // the network string network = 3; // associated metadata map metadata = 4; // node status Status status = 5; } // Connect is sent when the node connects to the network message Connect { // network mode Node node = 1; } // Close is sent when the node disconnects from the network message Close { // network node Node node = 1; } // Peer is used to advertise node peers message Peer { // network node Node node = 1; // node peers repeated Peer peers = 2; } // Sync is network sync message message Sync { // peer origin Peer peer = 1; // node routes repeated Route routes = 2; }