Slirp
void (*init_completed)(Slirp *slirp, void *opaque);
Slirp *slirp_new(const SlirpConfig *cfg, const SlirpCb *callbacks,
Slirp *slirp_init(int restricted, bool in_enabled, struct in_addr vnetwork,
void slirp_cleanup(Slirp *slirp);
void slirp_pollfds_fill(Slirp *slirp, uint32_t *timeout,
void slirp_pollfds_poll(Slirp *slirp, int select_error,
void slirp_input(Slirp *slirp, const uint8_t *pkt, int pkt_len);
void slirp_handle_timer(Slirp *slirp, SlirpTimerId id, void *cb_opaque);
int slirp_add_hostfwd(Slirp *slirp, int is_udp, struct in_addr host_addr,
int slirp_remove_hostfwd(Slirp *slirp, int is_udp, struct in_addr host_addr,
int slirp_add_hostxfwd(Slirp *slirp,
int slirp_remove_hostxfwd(Slirp *slirp,
int slirp_add_exec(Slirp *slirp, const char *cmdline,
int slirp_add_unix(Slirp *slirp, const char *unixsock,
int slirp_add_guestfwd(Slirp *slirp, SlirpWriteCb write_cb, void *opaque,
size_t slirp_socket_can_recv(Slirp *slirp, struct in_addr guest_addr,
void slirp_socket_recv(Slirp *slirp, struct in_addr guest_addr, int guest_port,
int slirp_remove_guestfwd(Slirp *slirp, struct in_addr guest_addr,
char *slirp_connection_info(Slirp *slirp);
char *slirp_neighbor_info(Slirp *slirp);
int slirp_state_save(Slirp *s, SlirpWriteCb write_cb, void *opaque);
int slirp_state_load(Slirp *s, int version_id, SlirpReadCb read_cb,
typedef struct Slirp Slirp;
config_one_hostfwd(Slirp *slirp, const char *rule)
Slirp *slirp; /* libslirp handle */
Slirp *slirp;
typedef int (*slirp_add_hostxfwd_p_t)(Slirp *,
typedef void (*slirp_cleanup_p_t)(Slirp *);
typedef void (*slirp_input_p_t)(Slirp *, const uint8_t *, int);
typedef Slirp *(*slirp_new_p_t)(const SlirpConfig *, const SlirpCb *, void *);
typedef void (*slirp_pollfds_fill_p_t)(Slirp *, uint32_t *timeout,
typedef void (*slirp_pollfds_poll_p_t)(Slirp *, int, SlirpGetREventsCb, void *);