| #ifndef __UM_SLIRP_H |
| #define __UM_SLIRP_H |
| |
| #define BUF_SIZE 1500 |
| /* two bytes each for a (pathological) max packet of escaped chars + * |
| * terminating END char + initial END char */ |
| #define ENC_BUF_SIZE (2 * BUF_SIZE + 2) |
| |
| #define SLIRP_MAX_ARGS 100 |
| /* |
| * XXX this next definition is here because I don't understand why this |
| * initializer doesn't work in slirp_kern.c: |
| * |
| * argv : { init->argv[ 0 ... SLIRP_MAX_ARGS-1 ] }, |
| * |
| * or why I can't typecast like this: |
| * |
| * argv : (char* [SLIRP_MAX_ARGS])(init->argv), |
| */ |
| struct arg_list_dummy_wrapper { char *argv[SLIRP_MAX_ARGS]; }; |
| |
| struct slirp_data { |
| void *dev; |
| struct arg_list_dummy_wrapper argw; |
| int pid; |
| int slave; |
| char ibuf[ENC_BUF_SIZE]; |
| char obuf[ENC_BUF_SIZE]; |
| int more; /* more data: do not read fd until ibuf has been drained */ |
| int pos; |
| int esc; |
| }; |
| |
| extern struct net_user_info slirp_user_info; |
| |
| extern int set_umn_addr(int fd, char *addr, char *ptp_addr); |
| extern int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri); |
| extern int slirp_user_write(int fd, void *buf, int len, struct slirp_data *pri); |
| |
| #endif |
| |
| /* |
| * Overrides for Emacs so that we follow Linus's tabbing style. |
| * Emacs will notice this stuff at the end of the file and automatically |
| * adjust the settings for this buffer only. This must remain at the end |
| * of the file. |
| * --------------------------------------------------------------------------- |
| * Local variables: |
| * c-file-style: "linux" |
| * End: |
| */ |