gvisor/pkg/sentry/socket/rpcinet/syscall_rpc.proto

354 lines
6.0 KiB
Protocol Buffer

syntax = "proto3";
// package syscall_rpc is a set of networking related system calls that can be
// forwarded to a socket gofer.
//
// TODO: Document individual RPCs.
package syscall_rpc;
message SendmsgRequest {
uint32 fd = 1;
bytes data = 2 [ctype = CORD];
bytes address = 3;
bool more = 4;
bool end_of_record = 5;
}
message SendmsgResponse {
oneof result {
uint32 error_number = 1;
uint32 length = 2;
}
}
message IOCtlRequest {
uint32 fd = 1;
uint32 cmd = 2;
bytes arg = 3;
}
message IOCtlResponse {
oneof result {
uint32 error_number = 1;
bytes value = 2;
}
}
message RecvmsgRequest {
uint32 fd = 1;
uint32 length = 2;
bool sender = 3;
bool peek = 4;
bool trunc = 5;
uint32 cmsg_length = 6;
}
message OpenRequest {
bytes path = 1;
uint32 flags = 2;
uint32 mode = 3;
}
message OpenResponse {
oneof result {
uint32 error_number = 1;
uint32 fd = 2;
}
}
message ReadRequest {
uint32 fd = 1;
uint32 length = 2;
}
message ReadResponse {
oneof result {
uint32 error_number = 1;
bytes data = 2 [ctype = CORD];
}
}
message ReadFileRequest {
string path = 1;
}
message ReadFileResponse {
oneof result {
uint32 error_number = 1;
bytes data = 2 [ctype = CORD];
}
}
message WriteRequest {
uint32 fd = 1;
bytes data = 2 [ctype = CORD];
}
message WriteResponse {
oneof result {
uint32 error_number = 1;
uint32 length = 2;
}
}
message WriteFileRequest {
string path = 1;
bytes content = 2;
}
message WriteFileResponse {
uint32 error_number = 1;
uint32 written = 2;
}
message AddressResponse {
bytes address = 1;
uint32 length = 2;
}
message RecvmsgResponse {
message ResultPayload {
bytes data = 1 [ctype = CORD];
AddressResponse address = 2;
uint32 length = 3;
bytes cmsg_data = 4;
}
oneof result {
uint32 error_number = 1;
ResultPayload payload = 2;
}
}
message BindRequest {
uint32 fd = 1;
bytes address = 2;
}
message BindResponse {
uint32 error_number = 1;
}
message AcceptRequest {
uint32 fd = 1;
bool peer = 2;
int64 flags = 3;
}
message AcceptResponse {
message ResultPayload {
uint32 fd = 1;
AddressResponse address = 2;
}
oneof result {
uint32 error_number = 1;
ResultPayload payload = 2;
}
}
message ConnectRequest {
uint32 fd = 1;
bytes address = 2;
}
message ConnectResponse {
uint32 error_number = 1;
}
message ListenRequest {
uint32 fd = 1;
int64 backlog = 2;
}
message ListenResponse {
uint32 error_number = 1;
}
message ShutdownRequest {
uint32 fd = 1;
int64 how = 2;
}
message ShutdownResponse {
uint32 error_number = 1;
}
message CloseRequest {
uint32 fd = 1;
}
message CloseResponse {
uint32 error_number = 1;
}
message GetSockOptRequest {
uint32 fd = 1;
int64 level = 2;
int64 name = 3;
uint32 length = 4;
}
message GetSockOptResponse {
oneof result {
uint32 error_number = 1;
bytes opt = 2;
}
}
message SetSockOptRequest {
uint32 fd = 1;
int64 level = 2;
int64 name = 3;
bytes opt = 4;
}
message SetSockOptResponse {
uint32 error_number = 1;
}
message GetSockNameRequest {
uint32 fd = 1;
}
message GetSockNameResponse {
oneof result {
uint32 error_number = 1;
AddressResponse address = 2;
}
}
message GetPeerNameRequest {
uint32 fd = 1;
}
message GetPeerNameResponse {
oneof result {
uint32 error_number = 1;
AddressResponse address = 2;
}
}
message SocketRequest {
int64 family = 1;
int64 type = 2;
int64 protocol = 3;
}
message SocketResponse {
oneof result {
uint32 error_number = 1;
uint32 fd = 2;
}
}
message EpollWaitRequest {
uint32 fd = 1;
uint32 num_events = 2;
sint64 msec = 3;
}
message EpollEvent {
uint32 fd = 1;
uint32 events = 2;
}
message EpollEvents {
repeated EpollEvent events = 1;
}
message EpollWaitResponse {
oneof result {
uint32 error_number = 1;
EpollEvents events = 2;
}
}
message EpollCtlRequest {
uint32 epfd = 1;
int64 op = 2;
uint32 fd = 3;
EpollEvent event = 4;
}
message EpollCtlResponse {
uint32 error_number = 1;
}
message EpollCreate1Request {
int64 flag = 1;
}
message EpollCreate1Response {
oneof result {
uint32 error_number = 1;
uint32 fd = 2;
}
}
message PollRequest {
uint32 fd = 1;
uint32 events = 2;
}
message PollResponse {
oneof result {
uint32 error_number = 1;
uint32 events = 2;
}
}
message SyscallRequest {
oneof args {
SocketRequest socket = 1;
SendmsgRequest sendmsg = 2;
RecvmsgRequest recvmsg = 3;
BindRequest bind = 4;
AcceptRequest accept = 5;
ConnectRequest connect = 6;
ListenRequest listen = 7;
ShutdownRequest shutdown = 8;
CloseRequest close = 9;
GetSockOptRequest get_sock_opt = 10;
SetSockOptRequest set_sock_opt = 11;
GetSockNameRequest get_sock_name = 12;
GetPeerNameRequest get_peer_name = 13;
EpollWaitRequest epoll_wait = 14;
EpollCtlRequest epoll_ctl = 15;
EpollCreate1Request epoll_create1 = 16;
PollRequest poll = 17;
ReadRequest read = 18;
WriteRequest write = 19;
OpenRequest open = 20;
IOCtlRequest ioctl = 21;
WriteFileRequest write_file = 22;
ReadFileRequest read_file = 23;
}
}
message SyscallResponse {
oneof result {
SocketResponse socket = 1;
SendmsgResponse sendmsg = 2;
RecvmsgResponse recvmsg = 3;
BindResponse bind = 4;
AcceptResponse accept = 5;
ConnectResponse connect = 6;
ListenResponse listen = 7;
ShutdownResponse shutdown = 8;
CloseResponse close = 9;
GetSockOptResponse get_sock_opt = 10;
SetSockOptResponse set_sock_opt = 11;
GetSockNameResponse get_sock_name = 12;
GetPeerNameResponse get_peer_name = 13;
EpollWaitResponse epoll_wait = 14;
EpollCtlResponse epoll_ctl = 15;
EpollCreate1Response epoll_create1 = 16;
PollResponse poll = 17;
ReadResponse read = 18;
WriteResponse write = 19;
OpenResponse open = 20;
IOCtlResponse ioctl = 21;
WriteFileResponse write_file = 22;
ReadFileResponse read_file = 23;
}
}