summaryrefslogtreecommitdiff
path: root/release/src/router/busybox/networking/isrv.h
diff options
context:
space:
mode:
Diffstat (limited to 'release/src/router/busybox/networking/isrv.h')
-rw-r--r--release/src/router/busybox/networking/isrv.h37
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