aboutsummaryrefslogtreecommitdiff
path: root/ipsvd/ipsvd_perhost.c
diff options
context:
space:
mode:
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2007-04-01 01:18:20 +0000
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2007-04-01 01:18:20 +0000
commit5348a94d2a6baae045918c4cc2bdd256ee8de5b8 (patch)
treed4f6495339702c0b6d79816d0bb07ba4b6679ce8 /ipsvd/ipsvd_perhost.c
parenta4935249632f90595f8f8a5200ed7b6266cf6321 (diff)
downloadbusybox-w32-5348a94d2a6baae045918c4cc2bdd256ee8de5b8.tar.gz
busybox-w32-5348a94d2a6baae045918c4cc2bdd256ee8de5b8.tar.bz2
busybox-w32-5348a94d2a6baae045918c4cc2bdd256ee8de5b8.zip
tcpsvd: new applet
It's a GPL-ed 'clone' of Dan Bernstein's tcpserver. Author: Gerrit Pape <pape@smarden.org> http://smarden.sunsite.dk/ipsvd/ size tcpsvd.o text data bss dec hex filename 2571 4 16 2591 a1f tcpsvd.o git-svn-id: svn://busybox.net/trunk/busybox@18294 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'ipsvd/ipsvd_perhost.c')
-rw-r--r--ipsvd/ipsvd_perhost.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/ipsvd/ipsvd_perhost.c b/ipsvd/ipsvd_perhost.c
new file mode 100644
index 000000000..c6f7de339
--- /dev/null
+++ b/ipsvd/ipsvd_perhost.c
@@ -0,0 +1,55 @@
1#include "busybox.h"
2#include "ipsvd_perhost.h"
3
4static struct hcc *cc;
5static unsigned cclen;
6
7/* to be optimized */
8
9void ipsvd_perhost_init(unsigned c)
10{
11// free(cc);
12 cc = xzalloc(c * sizeof(*cc));
13 cclen = c;
14}
15
16unsigned ipsvd_perhost_add(const char *ip, unsigned maxconn, struct hcc **hccpp)
17{
18 unsigned i;
19 unsigned conn = 1;
20 int p = -1;
21
22 for (i = 0; i < cclen; ++i) {
23 if (cc[i].ip[0] == 0) {
24 if (p == -1) p = i;
25 continue;
26 }
27 if (strncmp(cc[i].ip, ip, sizeof(cc[i].ip)) == 0) {
28 conn++;
29 continue;
30 }
31 }
32 if (p == -1) return 0;
33 if (conn <= maxconn) {
34 strcpy(cc[p].ip, ip);
35 *hccpp = &cc[p];
36 }
37 return conn;
38}
39
40void ipsvd_perhost_remove(int pid)
41{
42 unsigned i;
43 for (i = 0; i < cclen; ++i) {
44 if (cc[i].pid == pid) {
45 cc[i].ip[0] = 0;
46 cc[i].pid = 0;
47 return;
48 }
49 }
50}
51
52//void ipsvd_perhost_free(void)
53//{
54// free(cc);
55//}