diff options
Diffstat (limited to 'contrib/ipfilter/lib/alist_new.c')
-rw-r--r-- | contrib/ipfilter/lib/alist_new.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/contrib/ipfilter/lib/alist_new.c b/contrib/ipfilter/lib/alist_new.c deleted file mode 100644 index 50a4275..0000000 --- a/contrib/ipfilter/lib/alist_new.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2006 by Darren Reed. - * - * See the IPFILTER.LICENCE file for details on licencing. - * - * $Id: alist_new.c,v 1.1.2.3 2007/06/06 08:05:33 darrenr Exp $ - */ - -#include "ipf.h" - -alist_t * -alist_new(int v, char *host) -{ - int a, b, c, d, bits; - char *slash; - alist_t *al; - u_int mask; - - al = calloc(1, sizeof(*al)); - if (al == NULL) { - fprintf(stderr, "alist_new out of memory\n"); - return NULL; - } - - bits = -1; - slash = strchr(host, '/'); - if (slash != NULL) { - *slash = '\0'; - bits = atoi(slash + 1); - } - - a = b = c = d = -1; - sscanf(host, "%d.%d.%d.%d", &a, &b, &c, &d); - - if (bits > 0 && bits < 33) { - mask = 0xffffffff << (32 - bits); - } else if (b == -1) { - mask = 0xff000000; - b = c = d = 0; - } else if (c == -1) { - mask = 0xffff0000; - c = d = 0; - } else if (d == -1) { - mask = 0xffffff00; - d = 0; - } else { - mask = 0xffffffff; - } - - if (*host == '!') { - al->al_not = 1; - host++; - } - - if (gethost(host, &al->al_addr) == -1) { - if (slash != NULL) - *slash = '/'; - fprintf(stderr, "Cannot parse hostname\n"); - free(al); - return NULL; - } - al->al_mask = htonl(mask); - if (slash != NULL) - *slash = '/'; - return al; -} |