aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2022-05-14 15:40:02 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-05-28 22:26:22 +0200
commit468dabb5262fca1ec032e9b16418e48d23d89deb (patch)
tree2f0aad513bcfbc0ad3e04b5a930016c137353db1
parentb1aec45bc2afa967582fc5e866f494accb552b1d (diff)
downloadslirp-468dabb5262fca1ec032e9b16418e48d23d89deb.zip
slirp-468dabb5262fca1ec032e9b16418e48d23d89deb.tar.gz
slirp-468dabb5262fca1ec032e9b16418e48d23d89deb.tar.bz2
Do not use ssize_t on Windows
It doesn't have it.
-rw-r--r--src/libslirp.h7
-rw-r--r--src/main.h2
-rw-r--r--src/slirp.c4
-rw-r--r--src/util.c8
-rw-r--r--src/util.h10
-rw-r--r--test/ncsitest.c2
-rw-r--r--test/pingtest.c2
7 files changed, 20 insertions, 15 deletions
diff --git a/src/libslirp.h b/src/libslirp.h
index 3afad21..ca109b6 100644
--- a/src/libslirp.h
+++ b/src/libslirp.h
@@ -10,7 +10,10 @@
#include <winsock2.h>
#include <ws2tcpip.h>
#include <in6addr.h>
+typedef int slirp_ssize_t;
#else
+#include <sys/types.h>
+typedef ssize_t slirp_ssize_t;
#include <netinet/in.h>
#include <arpa/inet.h>
#endif
@@ -33,8 +36,8 @@ enum {
SLIRP_POLL_HUP = 1 << 4,
};
-typedef ssize_t (*SlirpReadCb)(void *buf, size_t len, void *opaque);
-typedef ssize_t (*SlirpWriteCb)(const void *buf, size_t len, void *opaque);
+typedef slirp_ssize_t (*SlirpReadCb)(void *buf, size_t len, void *opaque);
+typedef slirp_ssize_t (*SlirpWriteCb)(const void *buf, size_t len, void *opaque);
typedef void (*SlirpTimerCb)(void *opaque);
typedef int (*SlirpAddPollCb)(int fd, int events, void *opaque);
typedef int (*SlirpGetREventsCb)(int idx, void *opaque);
diff --git a/src/main.h b/src/main.h
index 3b3f883..35ac58d 100644
--- a/src/main.h
+++ b/src/main.h
@@ -11,6 +11,6 @@ extern struct in_addr loopback_addr;
extern unsigned long loopback_mask;
int if_encap(Slirp *slirp, struct mbuf *ifm);
-ssize_t slirp_send(struct socket *so, const void *buf, size_t len, int flags);
+slirp_ssize_t slirp_send(struct socket *so, const void *buf, size_t len, int flags);
#endif
diff --git a/src/slirp.c b/src/slirp.c
index 54056c9..25051f9 100644
--- a/src/slirp.c
+++ b/src/slirp.c
@@ -1511,7 +1511,7 @@ int slirp_remove_guestfwd(Slirp *slirp, struct in_addr guest_addr,
htons(guest_port));
}
-ssize_t slirp_send(struct socket *so, const void *buf, size_t len, int flags)
+slirp_ssize_t slirp_send(struct socket *so, const void *buf, size_t len, int flags)
{
if (so->s == -1 && so->guestfwd) {
/* XXX this blocks entire thread. Rewrite to use
@@ -1587,7 +1587,7 @@ void slirp_socket_recv(Slirp *slirp, struct in_addr guest_addr, int guest_port,
void slirp_send_packet_all(Slirp *slirp, const void *buf, size_t len)
{
- ssize_t ret = slirp->cb->send_packet(buf, len, slirp->opaque);
+ slirp_ssize_t ret = slirp->cb->send_packet(buf, len, slirp->opaque);
if (ret < 0) {
g_critical("Failed to send packet, ret: %ld", (long)ret);
diff --git a/src/util.c b/src/util.c
index e6bccbe..8267f0c 100644
--- a/src/util.c
+++ b/src/util.c
@@ -303,7 +303,7 @@ int slirp_getsockname_wrap(int sockfd, struct sockaddr *addr, int *addrlen)
}
#undef send
-ssize_t slirp_send_wrap(int sockfd, const void *buf, size_t len, int flags)
+slirp_ssize_t slirp_send_wrap(int sockfd, const void *buf, size_t len, int flags)
{
int ret;
ret = send(sockfd, buf, len, flags);
@@ -314,7 +314,7 @@ ssize_t slirp_send_wrap(int sockfd, const void *buf, size_t len, int flags)
}
#undef sendto
-ssize_t slirp_sendto_wrap(int sockfd, const void *buf, size_t len, int flags,
+slirp_ssize_t slirp_sendto_wrap(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *addr, int addrlen)
{
int ret;
@@ -326,7 +326,7 @@ ssize_t slirp_sendto_wrap(int sockfd, const void *buf, size_t len, int flags,
}
#undef recv
-ssize_t slirp_recv_wrap(int sockfd, void *buf, size_t len, int flags)
+slirp_ssize_t slirp_recv_wrap(int sockfd, void *buf, size_t len, int flags)
{
int ret;
ret = recv(sockfd, buf, len, flags);
@@ -337,7 +337,7 @@ ssize_t slirp_recv_wrap(int sockfd, void *buf, size_t len, int flags)
}
#undef recvfrom
-ssize_t slirp_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags,
+slirp_ssize_t slirp_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *addr, int *addrlen)
{
int ret;
diff --git a/src/util.h b/src/util.h
index 218226d..9f73b41 100644
--- a/src/util.h
+++ b/src/util.h
@@ -45,6 +45,8 @@
#include <netinet/in.h>
#endif
+#include "libslirp.h"
+
#if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__))
#define SLIRP_PACKED __attribute__((gcc_struct, packed))
#else
@@ -129,14 +131,14 @@ int slirp_getpeername_wrap(int fd, struct sockaddr *addr, int *addrlen);
#define getsockname slirp_getsockname_wrap
int slirp_getsockname_wrap(int fd, struct sockaddr *addr, int *addrlen);
#define send slirp_send_wrap
-ssize_t slirp_send_wrap(int fd, const void *buf, size_t len, int flags);
+slirp_ssize_t slirp_send_wrap(int fd, const void *buf, size_t len, int flags);
#define sendto slirp_sendto_wrap
-ssize_t slirp_sendto_wrap(int fd, const void *buf, size_t len, int flags,
+slirp_ssize_t slirp_sendto_wrap(int fd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, int addrlen);
#define recv slirp_recv_wrap
-ssize_t slirp_recv_wrap(int fd, void *buf, size_t len, int flags);
+slirp_ssize_t slirp_recv_wrap(int fd, void *buf, size_t len, int flags);
#define recvfrom slirp_recvfrom_wrap
-ssize_t slirp_recvfrom_wrap(int fd, void *buf, size_t len, int flags,
+slirp_ssize_t slirp_recvfrom_wrap(int fd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, int *addrlen);
#define closesocket slirp_closesocket_wrap
int slirp_closesocket_wrap(int fd);
diff --git a/test/ncsitest.c b/test/ncsitest.c
index c763af2..36aa090 100644
--- a/test/ncsitest.c
+++ b/test/ncsitest.c
@@ -148,7 +148,7 @@ static void test_ncsi_oem_mlx_gma(Slirp *slirp)
assert(oem->data[MLX_GMA_STATUS_OFFSET] == 1);
}
-static ssize_t send_packet(const void *buf, size_t len, void *opaque)
+static slirp_ssize_t send_packet(const void *buf, size_t len, void *opaque)
{
assert(len <= NCSI_RESPONSE_CAPACITY);
memcpy(opaque, buf, len);
diff --git a/test/pingtest.c b/test/pingtest.c
index 8607db6..247a5b1 100644
--- a/test/pingtest.c
+++ b/test/pingtest.c
@@ -85,7 +85,7 @@ static void checksum(uint8_t *data, size_t size, uint8_t *cksum) {
/* This is called when receiving a packet from the virtual network, for the
* guest */
-static ssize_t send_packet(const void *buf, size_t len, void *opaque) {
+static slirp_ssize_t send_packet(const void *buf, size_t len, void *opaque) {
const uint8_t *data = buf;
assert(len >= 14);