*/
#include "lib/lib.h"
+#include "lib/lists.h"
#include "lib/conf.h"
#include "lib/chartype.h"
#include "lib/ipaccess.h"
#include <string.h>
+struct ipaccess_list {
+ list l;
+};
+
struct ipaccess_entry {
node n;
uns allow;
u32 addr, mask;
};
-void
-ipaccess_init(ipaccess_list *l)
+struct ipaccess_list *
+ipaccess_init(void)
{
- init_list(l);
+ /* Cannot use cfg_malloc() here as the pool can be uninitialized now */
+ struct ipaccess_list *l = malloc(sizeof(*l));
+
+ init_list(&l->l);
+ return l;
}
static byte *
}
byte *
-ipaccess_parse(ipaccess_list *l, byte *c, int is_allow)
+ipaccess_parse(struct ipaccess_list *l, byte *c, int is_allow)
{
byte *p = strchr(c, '/');
byte *q;
}
else
a->mask = ~0;
- add_tail(l, &a->n);
+ add_tail(&l->l, &a->n);
return parse_ip(c, &a->addr);
}
int
-ipaccess_check(ipaccess_list *l, u32 ip)
+ipaccess_check(struct ipaccess_list *l, u32 ip)
{
struct ipaccess_entry *a;
- DO_FOR_ALL(a, *l)
+ DO_FOR_ALL(a, l->l)
if (! ((ip ^ a->addr) & a->mask))
return a->allow;
return 0;
* (c) 1997--2001 Martin Mares <mj@ucw.cz>
*/
-#include "lib/lists.h"
+struct ipaccess_list;
-typedef list ipaccess_list;
-
-void ipaccess_init(ipaccess_list *l);
-byte *ipaccess_parse(ipaccess_list *l, byte *c, int is_allow);
-int ipaccess_check(ipaccess_list *l, u32 ip);
+struct ipaccess_list *ipaccess_init(void);
+byte *ipaccess_parse(struct ipaccess_list *l, byte *c, int is_allow);
+int ipaccess_check(struct ipaccess_list *l, u32 ip);