4 #include <sys/socket.h>
5 #include <netinet/in.h>
7 #include <sys/select.h>
12 #define pstrcpy(d,l,s) strncpy((d),(s),(l))
13 #define qemu_strdup strdup
14 #define qemu_malloc malloc
15 #define qemu_free free
16 #define qemu_mallocz(x) calloc(1,(x))
17 #define qemu_get_clock(x) time(NULL)
18 #define qemu_socket socket
19 #include <qemu-common.h>
24 typedef struct Slirp Slirp
;
26 int get_dns_addr(struct in_addr
*pdns_addr
);
28 Slirp
*slirp_init(int restricted
, struct in_addr vnetwork
,
29 struct in_addr vnetmask
, struct in_addr vhost
,
30 const char *vhostname
, const char *tftp_path
,
31 const char *bootfile
, struct in_addr vdhcp_start
,
32 struct in_addr vnameserver
, void *opaque
);
33 void slirp_cleanup(Slirp
*slirp
);
35 void slirp_select_fill(int *pnfds
,
36 fd_set
*readfds
, fd_set
*writefds
, fd_set
*xfds
);
38 void slirp_select_poll(fd_set
*readfds
, fd_set
*writefds
, fd_set
*xfds
,
41 void slirp_input(Slirp
*slirp
, const uint8_t *pkt
, int pkt_len
);
43 /* you must provide the following functions: */
44 int slirp_can_output(void *opaque
);
45 void slirp_output(void *opaque
, const uint8_t *pkt
, int pkt_len
);
47 int slirp_add_hostfwd(Slirp
*slirp
, int is_udp
,
48 struct in_addr host_addr
, int host_port
,
49 struct in_addr guest_addr
, int guest_port
);
50 int slirp_remove_hostfwd(Slirp
*slirp
, int is_udp
,
51 struct in_addr host_addr
, int host_port
);
52 int slirp_add_exec(Slirp
*slirp
, int do_pty
, const void *args
,
53 struct in_addr
*guest_addr
, int guest_port
);
55 //void slirp_connection_info(Slirp *slirp, Monitor *mon);
57 void slirp_socket_recv(Slirp
*slirp
, struct in_addr guest_addr
,
58 int guest_port
, const uint8_t *buf
, int size
);
59 size_t slirp_socket_can_recv(Slirp
*slirp
, struct in_addr guest_addr
,
62 #else /* !CONFIG_SLIRP */
64 static inline void slirp_select_fill(int *pnfds
, fd_set
*readfds
,
65 fd_set
*writefds
, fd_set
*xfds
) { }
67 static inline void slirp_select_poll(fd_set
*readfds
, fd_set
*writefds
,
68 fd_set
*xfds
, int select_error
) { }
69 #endif /* !CONFIG_SLIRP */