Revert to edge and graph stuff. This time, use a directed graph.
[tinc] / src / net_setup.c
index d2a60f0..fe7a562 100644 (file)
@@ -1,7 +1,7 @@
 /*
     net_setup.c -- Setup.
-    Copyright (C) 1998-2002 Ivo Timmermans <itimmermans@bigfoot.com>,
-                  2000-2002 Guus Sliepen <guus@sliepen.warande.net>
+    Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl>,
+                  2000-2002 Guus Sliepen <guus@sliepen.eu.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: net_setup.c,v 1.1.2.17 2002/06/08 12:57:10 guus Exp $
+    $Id: net_setup.c,v 1.1.2.23 2002/09/04 13:48:52 guus Exp $
 */
 
 #include "config.h"
@@ -26,6 +26,9 @@
 #include <fcntl.h>
 #include <netdb.h>
 #include <netinet/in.h>
+#ifdef HAVE_NETINET_IN_SYSTM_H
+ #include <netinet/in_systm.h>
+#endif
 #ifdef HAVE_NETINET_IP_H
  #include <netinet/ip.h>
 #endif
@@ -481,6 +484,8 @@ cp
       return -1;
     }
 
+  listen_sockets = 0;
+
   for(aip = ai; aip; aip = aip->ai_next)
     {
       if((listen_socket[listen_sockets].tcp = setup_listen_socket((sockaddr_t *)aip->ai_addr)) < 0)
@@ -518,6 +523,8 @@ cp
 */
 int setup_network_connections(void)
 {
+  char *envp[4];
+  int i;
 cp
   now = time(NULL);
 
@@ -542,7 +549,15 @@ cp
     return -1;
 
   /* Run tinc-up script to further initialize the tap interface */
-  execute_script("tinc-up");
+  asprintf(&envp[0], "NETNAME=%s", netname?netname:"");
+  asprintf(&envp[1], "DEVICE=%s", device?device:"");
+  asprintf(&envp[2], "INTERFACE=%s", interface?interface:"");
+  envp[3] = NULL;
+
+  execute_script("tinc-up", envp);
+
+  for(i = 0; i < 4; i++)
+    free(envp[i]);
 
   if(setup_myself() < 0)
     return -1;
@@ -559,6 +574,7 @@ void close_network_connections(void)
 {
   avl_node_t *node, *next;
   connection_t *c;
+  char *envp[4];
   int i;
 cp
   for(node = connection_tree->head; node; node = next)
@@ -586,7 +602,15 @@ cp
   exit_nodes();
   exit_connections();
 
-  execute_script("tinc-down");
+  asprintf(&envp[0], "NETNAME=%s", netname?netname:"");
+  asprintf(&envp[1], "DEVICE=%s", device?device:"");
+  asprintf(&envp[2], "INTERFACE=%s", interface?interface:"");
+  envp[3] = NULL;
+
+  execute_script("tinc-down", envp);
+
+  for(i = 0; i < 4; i++)
+    free(envp[i]);
 
   close_device();
 cp