~mdw
/
secnet
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
polypath: Ignore IPv6 Unique Local unicast addresses.
[secnet]
/
ipaddr.c
diff --git
a/ipaddr.c
b/ipaddr.c
index
09eb80d
..
9302925
100644
(file)
--- a/
ipaddr.c
+++ b/
ipaddr.c
@@
-7,6
+7,7
@@
#include <stdio.h>
#include <string.h>
#include "ipaddr.h"
#include <stdio.h>
#include <string.h>
#include "ipaddr.h"
+#include "util.h"
#define DEFAULT_ALLOC 2
#define EXTEND_ALLOC_BY 4
#define DEFAULT_ALLOC 2
#define EXTEND_ALLOC_BY 4
@@
-14,10
+15,10
@@
struct subnet_list *subnet_list_new(void)
{
struct subnet_list *r;
struct subnet_list *subnet_list_new(void)
{
struct subnet_list *r;
-
r=safe_malloc(sizeof(*r),"subnet_list_new:list"
);
+
NEW(r
);
r->entries=0;
r->alloc=DEFAULT_ALLOC;
r->entries=0;
r->alloc=DEFAULT_ALLOC;
-
r->list=safe_malloc_ary(sizeof(*r->list),r->alloc,"subnet_list_new:data"
);
+
NEW_ARY(r->list,r->alloc
);
return r;
}
return r;
}
@@
-29,18
+30,13
@@
void subnet_list_free(struct subnet_list *a)
static void subnet_list_set_len(struct subnet_list *a, int32_t l)
{
static void subnet_list_set_len(struct subnet_list *a, int32_t l)
{
- struct subnet *nd;
int32_t na;
if (l>a->alloc) {
int32_t na;
if (l>a->alloc) {
- assert(a->alloc <
(int)(INT_MAX/sizeof(*nd))
-EXTEND_ALLOC_BY);
+ assert(a->alloc <
INT_MAX
-EXTEND_ALLOC_BY);
na=a->alloc+EXTEND_ALLOC_BY;
na=a->alloc+EXTEND_ALLOC_BY;
- nd=realloc(a->list,sizeof(*nd)*na);
- if (!nd) {
- fatal_perror("subnet_list_set_len: realloc");
- }
+ REALLOC_ARY(a->list,na);
a->alloc=na;
a->alloc=na;
- a->list=nd;
}
a->entries=l;
}
}
a->entries=l;
}
@@
-59,10
+55,10
@@
void subnet_list_append(struct subnet_list *a, uint32_t prefix, int len)
struct ipset *ipset_new(void)
{
struct ipset *r;
struct ipset *ipset_new(void)
{
struct ipset *r;
-
r=safe_malloc(sizeof(*r),"ipset_new:set"
);
+
NEW(r
);
r->l=0;
r->a=DEFAULT_ALLOC;
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;
}
@@
-114,18
+110,13
@@
struct ipset *ipset_from_subnet_list(struct subnet_list *l)
static void ipset_set_len(struct ipset *a, int32_t l)
{
static void ipset_set_len(struct ipset *a, int32_t l)
{
- struct iprange *nd;
int32_t na;
if (l>a->a) {
assert(a->a < INT_MAX-EXTEND_ALLOC_BY);
na=a->a+EXTEND_ALLOC_BY;
int32_t na;
if (l>a->a) {
assert(a->a < INT_MAX-EXTEND_ALLOC_BY);
na=a->a+EXTEND_ALLOC_BY;
- nd=realloc(a->d,sizeof(*nd)*na);
- if (!nd) {
- fatal_perror("ipset_set_len: realloc");
- }
+ REALLOC_ARY(a->d,na);
a->a=na;
a->a=na;
- a->d=nd;
}
a->l=l;
}
}
a->l=l;
}
@@
-136,7
+127,6
@@
static void ipset_append_range(struct ipset *a, struct iprange r)
a->d[a->l-1]=r;
}
a->d[a->l-1]=r;
}
-#define max(a,b) (a>b?a:b)
struct ipset *ipset_union(struct ipset *a, struct ipset *b)
{
struct ipset *c;
struct ipset *ipset_union(struct ipset *a, struct ipset *b)
{
struct ipset *c;
@@
-161,7
+151,7
@@
struct ipset *ipset_union(struct ipset *a, struct ipset *b)
ipset_append_range(c,r);
else if (r.a <= c->d[c->l-1].b+1)
/* Extends (or is consumed by) the last range */
ipset_append_range(c,r);
else if (r.a <= c->d[c->l-1].b+1)
/* Extends (or is consumed by) the last range */
- c->d[c->l-1].b=
max
(c->d[c->l-1].b, r.b);
+ c->d[c->l-1].b=
MAX
(c->d[c->l-1].b, r.b);
else
ipset_append_range(c,r);
}
else
ipset_append_range(c,r);
}
@@
-323,18
+313,12
@@
struct subnet_list *ipset_to_subnet_list(struct ipset *is)
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)
{
#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 */
}
/* The string buffer must be at least 16 bytes long */