167 lines
3.8 KiB
Protocol Buffer
167 lines
3.8 KiB
Protocol Buffer
// Copyright 2020 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
syntax = "proto3";
|
|
|
|
package posix_server;
|
|
|
|
message SockaddrIn {
|
|
int32 family = 1;
|
|
uint32 port = 2;
|
|
bytes addr = 3;
|
|
}
|
|
|
|
message SockaddrIn6 {
|
|
uint32 family = 1;
|
|
uint32 port = 2;
|
|
uint32 flowinfo = 3;
|
|
bytes addr = 4;
|
|
uint32 scope_id = 5;
|
|
}
|
|
|
|
message Sockaddr {
|
|
oneof sockaddr {
|
|
SockaddrIn in = 1;
|
|
SockaddrIn6 in6 = 2;
|
|
}
|
|
}
|
|
|
|
message Timeval {
|
|
int64 seconds = 1;
|
|
int64 microseconds = 2;
|
|
}
|
|
|
|
// Request and Response pairs for each Posix service RPC call, sorted.
|
|
|
|
message AcceptRequest {
|
|
int32 sockfd = 1;
|
|
}
|
|
|
|
message AcceptResponse {
|
|
int32 fd = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
Sockaddr addr = 3;
|
|
}
|
|
|
|
message BindRequest {
|
|
int32 sockfd = 1;
|
|
Sockaddr addr = 2;
|
|
}
|
|
|
|
message BindResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
}
|
|
|
|
message CloseRequest {
|
|
int32 fd = 1;
|
|
}
|
|
|
|
message CloseResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
}
|
|
|
|
message GetSockNameRequest {
|
|
int32 sockfd = 1;
|
|
}
|
|
|
|
message GetSockNameResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
Sockaddr addr = 3;
|
|
}
|
|
|
|
message ListenRequest {
|
|
int32 sockfd = 1;
|
|
int32 backlog = 2;
|
|
}
|
|
|
|
message ListenResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
}
|
|
|
|
message SetSockOptRequest {
|
|
int32 sockfd = 1;
|
|
int32 level = 2;
|
|
int32 optname = 3;
|
|
bytes optval = 4;
|
|
}
|
|
|
|
message SetSockOptResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
}
|
|
|
|
message SetSockOptTimevalRequest {
|
|
int32 sockfd = 1;
|
|
int32 level = 2;
|
|
int32 optname = 3;
|
|
Timeval timeval = 4;
|
|
}
|
|
|
|
message SetSockOptTimevalResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
}
|
|
|
|
message SocketRequest {
|
|
int32 domain = 1;
|
|
int32 type = 2;
|
|
int32 protocol = 3;
|
|
}
|
|
|
|
message SocketResponse {
|
|
int32 fd = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
}
|
|
|
|
message RecvRequest {
|
|
int32 sockfd = 1;
|
|
int32 len = 2;
|
|
int32 flags = 3;
|
|
}
|
|
|
|
message RecvResponse {
|
|
int32 ret = 1;
|
|
int32 errno_ = 2; // "errno" may fail to compile in c++.
|
|
bytes buf = 3;
|
|
}
|
|
|
|
service Posix {
|
|
// Call accept() on the DUT.
|
|
rpc Accept(AcceptRequest) returns (AcceptResponse);
|
|
// Call bind() on the DUT.
|
|
rpc Bind(BindRequest) returns (BindResponse);
|
|
// Call close() on the DUT.
|
|
rpc Close(CloseRequest) returns (CloseResponse);
|
|
// Call getsockname() on the DUT.
|
|
rpc GetSockName(GetSockNameRequest) returns (GetSockNameResponse);
|
|
// Call listen() on the DUT.
|
|
rpc Listen(ListenRequest) returns (ListenResponse);
|
|
// Call setsockopt() on the DUT. You should prefer one of the other
|
|
// SetSockOpt* functions with a more structured optval or else you may get the
|
|
// encoding wrong, such as making a bad assumption about the server's word
|
|
// sizes or endianness.
|
|
rpc SetSockOpt(SetSockOptRequest) returns (SetSockOptResponse);
|
|
// Call setsockopt() on the DUT with a Timeval optval.
|
|
rpc SetSockOptTimeval(SetSockOptTimevalRequest)
|
|
returns (SetSockOptTimevalResponse);
|
|
// Call socket() on the DUT.
|
|
rpc Socket(SocketRequest) returns (SocketResponse);
|
|
// Call recv() on the DUT.
|
|
rpc Recv(RecvRequest) returns (RecvResponse);
|
|
}
|