diff options
Diffstat (limited to 'release/src/router/busybox/networking/isrv.h')
-rw-r--r-- | release/src/router/busybox/networking/isrv.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/release/src/router/busybox/networking/isrv.h b/release/src/router/busybox/networking/isrv.h new file mode 100644 index 00000000..f20714df --- /dev/null +++ b/release/src/router/busybox/networking/isrv.h @@ -0,0 +1,37 @@ +/* vi: set sw=4 ts=4: */ +/* + * Generic non-forking server infrastructure. + * Intended to make writing telnetd-type servers easier. + * + * Copyright (C) 2007 Denys Vlasenko + * + * Licensed under GPL version 2, see file LICENSE in this tarball for details. + */ + +PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN + +/* opaque structure */ +struct isrv_state_t; +typedef struct isrv_state_t isrv_state_t; + +/* callbacks */ +void isrv_want_rd(isrv_state_t *state, int fd); +void isrv_want_wr(isrv_state_t *state, int fd); +void isrv_dont_want_rd(isrv_state_t *state, int fd); +void isrv_dont_want_wr(isrv_state_t *state, int fd); +int isrv_register_fd(isrv_state_t *state, int peer, int fd); +void isrv_close_fd(isrv_state_t *state, int fd); +int isrv_register_peer(isrv_state_t *state, void *param); + +/* driver */ +void isrv_run( + int listen_fd, + int (*new_peer)(isrv_state_t *state, int fd), + int (*do_rd)(int fd, void **), + int (*do_wr)(int fd, void **), + int (*do_timeout)(void **), + int timeout, + int linger_timeout +); + +POP_SAVED_FUNCTION_VISIBILITY |