source: branches/3.2/mindi-busybox/networking/tcpudp_perhost.c @ 3232

Last change on this file since 3232 was 2725, checked in by bruno, 8 years ago
  • Update mindi-busybox to 1.18.3 to avoid problems with the tar command which is now failing on recent versions with busybox 1.7.3
  • Property svn:eol-style set to native
File size: 1.1 KB
Line 
1/* Based on ipsvd utilities written by Gerrit Pape <pape@smarden.org>
2 * which are released into public domain by the author.
3 * Homepage: http://smarden.sunsite.dk/ipsvd/
4 *
5 * Copyright (C) 2007 Denys Vlasenko.
6 *
7 * Licensed under GPLv2, see file LICENSE in this source tree.
8 */
9
10#include "libbb.h"
11#include "tcpudp_perhost.h"
12
13static struct hcc *cc;
14static unsigned cclen;
15
16/* to be optimized */
17
18void ipsvd_perhost_init(unsigned c)
19{
20//  free(cc);
21    cc = xzalloc(c * sizeof(*cc));
22    cclen = c;
23}
24
25unsigned ipsvd_perhost_add(char *ip, unsigned maxconn, struct hcc **hccpp)
26{
27    unsigned i;
28    unsigned conn = 1;
29    int freepos = -1;
30
31    for (i = 0; i < cclen; ++i) {
32        if (!cc[i].ip) {
33            freepos = i;
34            continue;
35        }
36        if (strcmp(cc[i].ip, ip) == 0) {
37            conn++;
38            continue;
39        }
40    }
41    if (freepos == -1) return 0;
42    if (conn <= maxconn) {
43        cc[freepos].ip = ip;
44        *hccpp = &cc[freepos];
45    }
46    return conn;
47}
48
49void ipsvd_perhost_remove(int pid)
50{
51    unsigned i;
52    for (i = 0; i < cclen; ++i) {
53        if (cc[i].pid == pid) {
54            free(cc[i].ip);
55            cc[i].ip = NULL;
56            cc[i].pid = 0;
57            return;
58        }
59    }
60}
61
62//void ipsvd_perhost_free(void)
63//{
64//  free(cc);
65//}
Note: See TracBrowser for help on using the repository browser.