/* The 'ipset' data structure and related algorithms in this file were
inspired by the 'ipaddr.py' library from Cendio Systems AB. */
+/*
+ * This file is part of secnet.
+ * See README for full list of copyright holders.
+ *
+ * secnet is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * secnet is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 3 along with secnet; if not, see
+ * https://www.gnu.org/licenses/gpl.html.
+ */
#include "secnet.h"
#include <limits.h>
NEW(r);
r->l=0;
r->a=DEFAULT_ALLOC;
- r->d=safe_malloc(sizeof(*r->d)*r->a,"ipset_new:data");
+ NEW_ARY(r->d,r->a);
return r;
}
return r;
}
-#define IPADDR_NBUFS_SHIFT 4
-#define IPADDR_NBUFS (1 << IPADDR_NBUFS_SHIFT)
#define IPADDR_BUFLEN 20
static char *ipaddr_getbuf(void)
{
- static int ipaddr_bufnum;
- static char ipaddr_bufs[IPADDR_NBUFS][IPADDR_BUFLEN];
-
- ipaddr_bufnum++;
- ipaddr_bufnum &= IPADDR_NBUFS-1;
- return ipaddr_bufs[ipaddr_bufnum];
+ SBUF_DEFINE(16, IPADDR_BUFLEN);
+ return SBUF;
}
/* The string buffer must be at least 16 bytes long */