// protoc -I echo/ echo/*.proto --go_out=plugins=grpc:echo

syntax = "proto3";

option go_package = "github.com/opencord/voltha-go/protos/afrouter";

package afrouter;

service Configuration {
    rpc SetConnection (Conn) returns (Result) {}
	rpc SetAffinity(Affinity) returns (Result) {}
}

message Result {
	bool success = 1;
	string error = 2;
}

message Conn {
	string server = 1;
	string pkg = 2;
	string svc = 3;
	string cluster = 4;
	string backend = 5;
	string connection = 6;
	string addr = 7;
	uint64 port = 8;
}

message Affinity {
	string router = 1;
	string route = 2;
	string cluster = 3;
	string backend = 4;
	string id = 5;
}
