linux-sgx: Implement socket API getpeername, recvfrom and sendto (#1556)

Implement some of the popular socket APIs left unimplemented for SGX,
following the merge of dev/socket.
This commit is contained in:
Jämes Ménétrey
2022-10-06 15:32:33 +02:00
committed by GitHub
parent 3094b20bd8
commit e2a3f0f387
4 changed files with 159 additions and 11 deletions

View File

@ -95,6 +95,12 @@ ocall_getsockname(int sockfd, void *addr, uint32_t *addrlen, uint32_t addr_size)
return getsockname(sockfd, (struct sockaddr *)addr, addrlen);
}
int
ocall_getpeername(int sockfd, void *addr, uint32_t *addrlen, uint32_t addr_size)
{
return getpeername(sockfd, (struct sockaddr *)addr, addrlen);
}
int
ocall_listen(int sockfd, int backlog)
{
@ -113,12 +119,28 @@ ocall_recv(int sockfd, void *buf, size_t len, int flags)
return recv(sockfd, buf, len, flags);
}
ssize_t
ocall_recvfrom(int sockfd, void *buf, size_t len, int flags, void *src_addr,
uint32_t *addrlen, uint32_t addr_size)
{
return recvfrom(sockfd, buf, len, flags, (struct sockaddr *)src_addr,
addrlen);
}
int
ocall_send(int sockfd, const void *buf, size_t len, int flags)
{
return send(sockfd, buf, len, flags);
}
ssize_t
ocall_sendto(int sockfd, const void *buf, size_t len, int flags,
void *dest_addr, uint32_t addrlen)
{
return sendto(sockfd, buf, len, flags, (struct sockaddr *)dest_addr,
addrlen);
}
int
ocall_connect(int sockfd, void *addr, uint32_t addrlen)
{