2 * Copyright (C) 2012 by Darren Reed.
4 * See the IPFILTER.LICENCE file for details on licencing.
6 * $Id: alist_new.c,v 1.5.2.2 2012/07/22 08:04:24 darren_r Exp $
13 alist_new(int family, char *host)
20 if (family == AF_UNSPEC) {
21 if (strchr(host, ':') != NULL)
26 if (family != AF_INET && family != AF_INET6)
29 al = calloc(1, sizeof(*al));
31 fprintf(stderr, "alist_new out of memory\n");
35 while (ISSPACE(*host))
41 while (ISSPACE(*host))
46 slash = strchr(host, '/');
49 bits = atoi(slash + 1);
52 if (family == AF_INET) {
57 sscanf(host, "%d.%d.%d.%d", &a, &b, &c, &d);
59 if (bits > 0 && bits < 33) {
60 mask = 0xffffffff << (32 - bits);
73 al->al_mask = htonl(mask);
77 fill6bits(bits, al->al_i6mask.i6);
80 if (gethost(family, host, &al->al_i6addr) == -1) {
83 fprintf(stderr, "Cannot parse hostname\n");
86 al->al_family = family;