X-Git-Url: https://git.syn-net.org/?p=debian%2Fuanytun.git;a=blobdiff_plain;f=src%2Fsysexec.h;h=da6555e1fc4b2cf7d4f3e73da188b1a0e2d9bc72;hp=b724433e44a1efd690bec0bb76be763fe19ee458;hb=71f6f666a3d69c6e1e7a77e238362c5bbe288e66;hpb=b81b2c1954fe3e3317e6fa260c5ffdc9eeee966c diff --git a/src/sysexec.h b/src/sysexec.h index b724433..da6555e 100644 --- a/src/sysexec.h +++ b/src/sysexec.h @@ -10,18 +10,19 @@ * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel * mode and allows tunneling of every ETHER TYPE protocol (e.g. * ethernet, ip, arp ...). satp directly includes cryptography and - * message authentication based on the methodes used by SRTP. It is + * message authentication based on the methods used by SRTP. It is * intended to deliver a generic, scaleable and secure solution for * tunneling and relaying of packets of any protocol. - * * - * Copyright (C) 2007-2008 Christian Pointner + * + * Copyright (C) 2007-2014 Christian Pointner * * This file is part of uAnytun. * * uAnytun is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. * * uAnytun is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -30,48 +31,24 @@ * * You should have received a copy of the GNU General Public License * along with uAnytun. If not, see . + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. */ -#ifndef _SYSEXEC_H_ -#define _SYSEXEC_H_ - -int exec_script(const char* script, const char* ifname) -{ - if(!script || !ifname) - return -1; - - pid_t pid; - pid = fork(); - if(!pid) { - int fd; - for (fd=getdtablesize();fd>=0;--fd) // close all file descriptors - close(fd); - - fd = open("/dev/null",O_RDWR); // stdin - if(fd == -1) - log_printf(WARNING, "can't open stdin"); - else { - if(dup(fd) == -1) // stdout - log_printf(WARNING, "can't open stdout"); - if(dup(fd) == -1) // stderr - log_printf(WARNING, "can't open stderr"); - } - execl("/bin/sh", "/bin/sh", script, ifname, NULL); - // if execl return, an error occurred - log_printf(ERROR, "error on executing script: %s", strerror(errno)); - return -1; - } - int status = 0; - waitpid(pid, &status, 0); - if(WIFEXITED(status)) - log_printf(NOTICE, "script '%s' returned %d", script, WEXITSTATUS(status)); - else if(WIFSIGNALED(status)) - log_printf(NOTICE, "script '%s' terminated after signal %d", script, WTERMSIG(status)); - else - log_printf(ERROR, "executing script: unkown error"); - - return status; +#ifndef UANYTUN_sysexec_h_INCLUDED +#define UANYTUN_sysexec_h_INCLUDED -} +int uanytun_exec(const char* script, char* const argv[], char* const evp[]); #endif