summaryrefslogtreecommitdiff
path: root/src/sysexec.hpp
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2009-10-04 14:27:58 +0000
committerChristian Pointner <equinox@anytun.org>2009-10-04 14:27:58 +0000
commit5f82116f51ffe2fc4b44abe606f87d576b9b4c9d (patch)
tree058b671e55827f23951a1af0dc5442dab1fd943e /src/sysexec.hpp
parentfixed spelling error (diff)
added improved script execution
Diffstat (limited to 'src/sysexec.hpp')
-rw-r--r--src/sysexec.hpp74
1 files changed, 0 insertions, 74 deletions
diff --git a/src/sysexec.hpp b/src/sysexec.hpp
deleted file mode 100644
index 90bde90..0000000
--- a/src/sysexec.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * anytun
- *
- * The secure anycast tunneling protocol (satp) defines a protocol used
- * for communication between any combination of unicast and anycast
- * 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
- * intended to deliver a generic, scaleable and secure solution for
- * tunneling and relaying of packets of any protocol.
- *
- *
- * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl,
- * Christian Pointner <satp@wirdorange.org>
- *
- * This file is part of Anytun.
- *
- * Anytun 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.
- *
- * Anytun is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with anytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _SYSEXEC_HPP
-#define _SYSEXEC_HPP
-#ifndef NO_EXEC
-
-int execScript(std::string const& script, std::string const& ifname, std::string const& ifnode)
-{
- 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)
- cLog.msg(Log::PRIO_WARNING) << "can't open stdin";
- else {
- if(dup(fd) == -1) // stdout
- cLog.msg(Log::PRIO_WARNING) << "can't open stdout";
- if(dup(fd) == -1) // stderr
- cLog.msg(Log::PRIO_WARNING) << "can't open stderr";
- }
- execl("/bin/sh", "/bin/sh", script.c_str(), ifname.c_str(), ifnode.c_str(), (char*)NULL);
- // if execl return, an error occurred
- cLog.msg(Log::PRIO_ERROR) << "error on executing script: " << AnytunErrno(errno);
- return -1;
- }
- int status = 0;
- waitpid(pid, &status, 0);
- if(WIFEXITED(status))
- cLog.msg(Log::PRIO_NOTICE) << "script '" << script << "' returned " << WEXITSTATUS(status);
- else if(WIFSIGNALED(status))
- cLog.msg(Log::PRIO_NOTICE) << "script '" << script << "' terminated after signal " << WTERMSIG(status);
- else
- cLog.msg(Log::PRIO_ERROR) << "executing script: unkown error";
-
- return status;
-}
-
-
-#endif
-#endif
-