Fix IPv6 read
[project/mdnsd.git] / main.c
diff --git a/main.c b/main.c
index 11eb42d..02d13f5 100644 (file)
--- a/main.c
+++ b/main.c
@@ -25,7 +25,6 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/nameser.h>
-#include <asm/byteorder.h>
 
 #include <libubus.h>
 #include <libubox/uloop.h>
@@ -38,6 +37,9 @@
 #include "announce.h"
 #include "interface.h"
 
+int cfg_proto = 0;
+int cfg_no_subnet = 0;
+
 static void
 signal_shutdown(int signal)
 {
@@ -51,7 +53,7 @@ main(int argc, char **argv)
 
        uloop_init();
 
-       while ((ch = getopt(argc, argv, "t:i:d")) != -1) {
+       while ((ch = getopt(argc, argv, "t:i:d46n")) != -1) {
                switch (ch) {
                case 't':
                        ttl = atoi(optarg);
@@ -66,6 +68,18 @@ main(int argc, char **argv)
                case 'i':
                        interface_add(optarg);
                        break;
+               case '4':
+                       cfg_proto = 4;
+                       break;
+               case '6':
+                       cfg_proto = 6;
+                       break;
+               case 'n':
+                       cfg_no_subnet = 1;
+                       break;
+
+               default:
+                       return -1;
                }
        }
 
@@ -76,13 +90,15 @@ main(int argc, char **argv)
        if (cache_init())
                return -1;
 
-       service_init();
-
        ubus_startup();
+
+       service_init(0);
+
        uloop_run();
        uloop_done();
 
-       cache_cleanup();
+       interface_shutdown();
+       cache_cleanup(NULL);
        service_cleanup();
        vlist_flush(&interfaces);