Put script environment creation/deletion in functions.
[tinc] / src / net_setup.c
index f5fddd4..6becfbb 100644 (file)
@@ -1,7 +1,7 @@
 /*
     net_setup.c -- Setup.
     Copyright (C) 1998-2005 Ivo Timmermans,
-                  2000-2016 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2017 Guus Sliepen <guus@tinc-vpn.org>
                   2006      Scott Lamb <slamb@slamb.org>
                   2010      Brandon Black <blblack@gmail.com>
 
@@ -48,7 +48,6 @@
 #endif
 
 char *myport;
-static char *myname;
 static io_t device_io;
 devops_t devops;
 bool device_standby = false;
@@ -705,29 +704,17 @@ void device_enable(void) {
 
        /* Run tinc-up script to further initialize the tap interface */
 
-       char *envp[5] = {NULL};
-       xasprintf(&envp[0], "NETNAME=%s", netname ? : "");
-       xasprintf(&envp[1], "DEVICE=%s", device ? : "");
-       xasprintf(&envp[2], "INTERFACE=%s", iface ? : "");
-       xasprintf(&envp[3], "NAME=%s", myname);
-
-       execute_script("tinc-up", envp);
-
-       for(int i = 0; i < 4; i++)
-               free(envp[i]);
+       environment_t env;
+       environment_init(&env);
+       execute_script("tinc-up", &env);
+       environment_exit(&env);
 }
 
 void device_disable(void) {
-       char *envp[5] = {NULL};
-       xasprintf(&envp[0], "NETNAME=%s", netname ? : "");
-       xasprintf(&envp[1], "DEVICE=%s", device ? : "");
-       xasprintf(&envp[2], "INTERFACE=%s", iface ? : "");
-       xasprintf(&envp[3], "NAME=%s", myname);
-
-       execute_script("tinc-down", envp);
-
-       for(int i = 0; i < 4; i++)
-               free(envp[i]);
+       environment_t env;
+       environment_init(&env);
+       execute_script("tinc-down", &env);
+       environment_exit(&env);
 
        if (devops.disable)
                devops.disable();
@@ -1150,7 +1137,6 @@ void close_network_connections(void) {
 
        exit_control();
 
-       free(myname);
        free(scriptextension);
        free(scriptinterpreter);