Make broadcast addresses configurable.
[tinc] / src / net.c
index 92f6be8..8fe3c51 100644 (file)
--- a/src/net.c
+++ b/src/net.c
 #include "subnet.h"
 #include "xalloc.h"
 
+#ifdef HAVE_RESOLV_H
+#include <resolv.h>
+#endif
+
 int contradicting_add_edge = 0;
 int contradicting_del_edge = 0;
 static int sleeptime = 10;
@@ -309,6 +313,9 @@ static void sighup_handler(void *data) {
 
 static void sigalrm_handler(void *data) {
        logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum));
+#ifdef HAVE_DECL_RES_INIT
+       res_init();
+#endif
        retry();
 }
 #endif
@@ -340,11 +347,14 @@ int reload_configuration(void) {
 
        if(strictsubnets) {
                for splay_each(subnet_t, subnet, subnet_tree)
-                       subnet->expires = 1;
+                       if (subnet->owner)
+                               subnet->expires = 1;
 
                load_all_subnets();
 
                for splay_each(subnet_t, subnet, subnet_tree) {
+                       if (!subnet->owner)
+                               continue;
                        if(subnet->expires == 1) {
                                send_del_subnet(everyone, subnet);
                                if(subnet->owner->status.reachable)
@@ -458,7 +468,7 @@ int main_loop(void) {
 #endif
 
        if(!event_loop()) {
-               logger(DEBUG_ALWAYS, LOG_ERR, "Error while waiting for input: %s", strerror(errno));
+               logger(DEBUG_ALWAYS, LOG_ERR, "Error while waiting for input: %s", sockstrerror(sockerrno));
                return 1;
        }