X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fipaccess.c;h=79508ab0eb113e4d72b32562fe4e9725118de058;hb=62eda8640605c19ecd817e274e75717022349732;hp=910715e782245b534be90daf9e7e885cb1948013;hpb=7c259fa15698145418026027b5712baa12b3cd5c;p=libucw.git diff --git a/lib/ipaccess.c b/lib/ipaccess.c index 910715e7..79508ab0 100644 --- a/lib/ipaccess.c +++ b/lib/ipaccess.c @@ -9,7 +9,9 @@ #include "lib/lib.h" #include "lib/clists.h" -#include "lib/conf2.h" +#include "lib/conf.h" +#include "lib/getopt.h" +#include "lib/fastbuf.h" #include "lib/ipaccess.h" #include @@ -25,7 +27,8 @@ struct ipaccess_entry { struct addrmask addr; }; -static byte *addrmask_parser(byte *c, void *ptr) +static byte * +addrmask_parser(byte *c, void *ptr) { /* * This is tricky: addrmasks will be compared by memcmp(), so we must ensure @@ -53,15 +56,24 @@ static byte *addrmask_parser(byte *c, void *ptr) return NULL; } +static void +addrmask_dumper(struct fastbuf *fb, void *ptr) +{ + struct addrmask *am = ptr; + bprintf(fb, "%08x/%08x ", am->addr, am->mask); +} + static struct cf_user_type addrmask_type = { .size = sizeof(struct addrmask), - .parser = addrmask_parser + .name = "addrmask", + .parser = addrmask_parser, + .dumper = addrmask_dumper }; struct cf_section ipaccess_cf = { CF_TYPE(struct ipaccess_entry), CF_ITEMS { - CF_LOOKUP("Mode", PTR_TO(struct ipaccess_entry, allow), ((char*[]) { "deny", "allow", NULL })), + CF_LOOKUP("Mode", PTR_TO(struct ipaccess_entry, allow), ((byte*[]) { "deny", "allow", NULL })), CF_USER("IP", PTR_TO(struct ipaccess_entry, addr), &addrmask_type), CF_END } @@ -92,7 +104,7 @@ static struct cf_section test_cf = { int main(int argc, char **argv) { cf_declare_section("T", &test_cf, 0); - if (cf_get_opt(argc, argv, CF_SHORT_OPTS, CF_NO_LONG_OPTS, NULL) != -1) + if (cf_getopt(argc, argv, CF_SHORT_OPTS, CF_NO_LONG_OPTS, NULL) != -1) die("Invalid arguments"); byte buf[256];