]> mj.ucw.cz Git - libucw.git/blobdiff - lib/ipaccess.c
Use big_alloc().
[libucw.git] / lib / ipaccess.c
index f9cda623ca45ff2efeaa1ec04a5e99dc60afca9a..79508ab0eb113e4d72b32562fe4e9725118de058 100644 (file)
@@ -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 <string.h>
@@ -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" })),
+    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];