]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Test old instance of BIRD.
authorOndrej Filip <feela@network.cz>
Sun, 6 Jun 2004 17:05:25 +0000 (17:05 +0000)
committerOndrej Filip <feela@network.cz>
Sun, 6 Jun 2004 17:05:25 +0000 (17:05 +0000)
sysdep/config.h
sysdep/unix/io.c
sysdep/unix/main.c
sysdep/unix/unix.h

index 4e2e8e754e71dc88a450c17f800cfdefc3d489f1..95b20d4b3b50f647f9095cd5d79cc3200fd33fa6 100644 (file)
@@ -36,12 +36,22 @@ typedef u16 word;
 #endif
 
 /* Path to configuration file */
-#ifdef DEBUGGING
-#define PATH_CONFIG "bird.conf"
-#define PATH_CONTROL_SOCKET "bird.ctl"
+#ifdef IPV6
+#  ifdef DEBUGGING
+#    define PATH_CONFIG "bird-6.conf"
+#    define PATH_CONTROL_SOCKET "bird-6.ctl"
+#  else
+#    define PATH_CONFIG PATH_CONFIG_DIR "/bird-6.conf"
+#    define PATH_CONTROL_SOCKET PATH_CONTROL_SOCKET_DIR "/bird-6.ctl"
+#  endif
 #else
-#define PATH_CONFIG PATH_CONFIG_DIR "/bird.conf"
-#define PATH_CONTROL_SOCKET PATH_CONTROL_SOCKET_DIR "/bird.ctl"
+#  ifdef DEBUGGING
+#    define PATH_CONFIG "bird.conf"
+#    define PATH_CONTROL_SOCKET "bird.ctl"
+#  else
+#    define PATH_CONFIG PATH_CONFIG_DIR "/bird.conf"
+#    define PATH_CONTROL_SOCKET PATH_CONTROL_SOCKET_DIR "/bird.ctl"
+#  endif
 #endif
 
 #endif
index 4030b86beb5eafb5cc776fa3423a596d57172b4c..ed5b89fa454994abb27b8c131a166c92d0eacecb 100644 (file)
@@ -1194,3 +1194,23 @@ io_loop(void)
        }
     }
 }
+
+void
+test_old_bird(char *path)
+{
+  int fd;
+  struct sockaddr_un sa;
+
+  fd = socket(AF_UNIX, SOCK_STREAM, 0);
+
+  if (fd < 0)
+    die("Cannot create socket: %m");
+  bzero(&sa, sizeof(sa));
+  sa.sun_family = AF_UNIX;
+  strcpy(sa.sun_path, path);
+  if (connect(fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) == 0)
+    die("I found another BIRD running.");
+  close(fd);
+}
+
+
index ec8802bdd7f201edc34347b5b72dc6d064c2f822..335f42a1945927a85424a3cfef99c99549d39700 100644 (file)
@@ -412,6 +412,8 @@ main(int argc, char **argv)
     log_init_debug("");
   log_init(debug_flag, 1);
 
+  test_old_bird(path_control_socket);
+
   DBG("Initializing.\n");
   resource_init();
   olock_init();
index 72b6ef56b37367d1ee9334fe12f0410733cb8644..997a408813999040fbdb940d8e95577c6843059d 100644 (file)
@@ -46,6 +46,8 @@ void fill_in_sockaddr(sockaddr *sa, ip_addr a, unsigned port);
 void get_sockaddr(sockaddr *sa, ip_addr *a, unsigned *port, int check);
 int sk_open_unix(struct birdsock *s, char *name);
 void *tracked_fopen(struct pool *, char *name, char *mode);
+void test_old_bird(char *path);
+
 
 /* krt.c bits */