15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef _LIBSLIRP_H 25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define _LIBSLIRP_H 35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef __cplusplus 55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern "C" { 65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_init(int restricted, const char *special_ip); 95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_select_fill(int *pnfds, 115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner fd_set *readfds, fd_set *writefds, fd_set *xfds); 125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds); 145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_input(const uint8_t *pkt, int pkt_len); 165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* you must provide the following functions: */ 185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint slirp_can_output(void); 195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_output(const uint8_t *pkt, int pkt_len); 205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_redir_loop(void (*func)(void *opaque, int is_udp, 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct in_addr *laddr, u_int lport, 235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct in_addr *faddr, u_int fport), 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void *opaque); 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint slirp_redir_rm(int is_udp, int host_port); 265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint slirp_redir(int is_udp, int host_port, 275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct in_addr guest_addr, int guest_port); 285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint slirp_add_exec(int do_pty, const void *args, int addr_low_byte, 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int guest_port); 305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern const char *tftp_prefix; 325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern char slirp_hostname[33]; 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern const char *bootp_filename; 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_stats(void); 365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_socket_recv(int addr_low_byte, int guest_port, const uint8_t *buf, 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int size); 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnersize_t slirp_socket_can_recv(int addr_low_byte, int guest_port); 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef __cplusplus 415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} 425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 45