int slirp_init(void);
void slirp_cleanup(void);
-int slirp_select_fill(SOCKET *pnfds,
+int slirp_select_fill(int *pnfds,
fd_set *readfds, fd_set *writefds, fd_set *xfds);
void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds);
*/
void
-fd_nonblock(SOCKET fd)
+fd_nonblock(SLIRP_SOCKET fd)
{
#if defined USE_FIONBIO && defined FIONBIO
ioctlsockopt_t opt = 1;
}
void
-fd_block(SOCKET fd)
+fd_block(SLIRP_SOCKET fd)
{
#if defined USE_FIONBIO && defined FIONBIO
ioctlsockopt_t opt = 0;
void relay _P((int));
void add_emu _P((char *));
void u_sleep _P((int));
-void fd_nonblock _P((SOCKET));
-void fd_block _P((SOCKET));
+void fd_nonblock _P((SLIRP_SOCKET));
+void fd_block _P((SLIRP_SOCKET));
int rsh_exec _P((struct socket *, struct socket *, char *, char *, char *));
#endif
}
#endif
-int slirp_select_fill(SOCKET *pnfds,
+int slirp_select_fill(int *pnfds,
fd_set *readfds, fd_set *writefds, fd_set *xfds)
{
struct socket *so, *so_next;
- SOCKET nfds;
+ int nfds;
int timeout, tmp_time;
/* fail safe */
# define EHOSTUNREACH WSAEHOSTUNREACH
# define ENETUNREACH WSAENETUNREACH
# define ECONNREFUSED WSAECONNREFUSED
+
+/* Should be UINT_PTR but SLIRP code has <= 0 tests */
+#define SLIRP_SOCKET INT_PTR
#endif
#include "debug.h"
struct tcpcb * tcp_close _P((register struct tcpcb *));
void tcp_drain _P((void));
void tcp_sockclosed _P((struct tcpcb *));
-SOCKET tcp_fconnect _P((struct socket *));
+int tcp_fconnect _P((struct socket *));
void tcp_connect _P((struct socket *));
int tcp_attach _P((struct socket *));
u_int8_t tcp_tos _P((struct socket *));
{
struct sockaddr_in addr;
struct socket *so;
- SOCKET s;
+ SLIRP_SOCKET s;
socklen_t addrlen = sizeof(addr);
int opt = 1;
struct socket {
struct socket *so_next,*so_prev; /* For a linked list of sockets */
- SOCKET s; /* The actual socket */
+ SLIRP_SOCKET s; /* The actual socket */
/* XXX union these with not-yet-used sbuf params */
struct mbuf *so_m; /* Pointer to the original SYN packet,
* nonblocking. Connect returns after the SYN is sent, and does
* not wait for ACK+SYN.
*/
-SOCKET tcp_fconnect(struct socket *so)
+int tcp_fconnect(struct socket *so)
{
- SOCKET ret=0;
+ int ret=0;
DEBUG_CALL("tcp_fconnect");
DEBUG_ARG("so = %p", so);
- if( (ret=so->s=socket(AF_INET,SOCK_STREAM,0)) >= 0) {
+ if( (so->s=socket(AF_INET,SOCK_STREAM,0)) >= 0) {
int opt;
- SOCKET s = so->s;
+ SLIRP_SOCKET s = so->s;
struct sockaddr_in addr;
memset(&addr, 0, sizeof(struct sockaddr_in));
struct sockaddr_in addr;
socklen_t addrlen = sizeof(struct sockaddr_in);
struct tcpcb *tp;
- SOCKET s;
+ SLIRP_SOCKET s;
int opt;
DEBUG_CALL("tcp_connect");
return udp_output2(so, m, &saddr, &daddr, so->so_iptos);
}
-SOCKET udp_attach(struct socket *so)
+SLIRP_SOCKET udp_attach(struct socket *so)
{
struct sockaddr_in addr;
void udp_cleanup _P((void));
void udp_input _P((register struct mbuf *, int));
int udp_output _P((struct socket *, struct mbuf *, struct sockaddr_in *));
-SOCKET udp_attach _P((struct socket *));
+SLIRP_SOCKET udp_attach _P((struct socket *));
void udp_detach _P((struct socket *));
u_int8_t udp_tos _P((struct socket *));
void udp_emu _P((struct socket *, struct mbuf *));
while (slirp_thread_active) {
// Wait for packets to arrive
fd_set rfds, wfds, xfds;
- SOCKET nfds;
+ int nfds;
int ret, timeout;
// ... in the output queue
tv.tv_sec = 0;
tv.tv_usec = timeout;
ret = select(0, &rfds, &wfds, &xfds, &tv);
+ if (ret == SOCKET_ERROR) {
+ write_log(_T("SLIRP socket ERR=%d\n"), WSAGetLastError());
+ }
}
if (ret >= 0) {
uae_sem_wait (&slirp_sem2);