diff options
author | Christian Pointner <equinox@anytun.org> | 2009-02-20 04:46:28 +0000 |
---|---|---|
committer | Christian Pointner <equinox@anytun.org> | 2009-02-20 04:46:28 +0000 |
commit | 55db0cbe0d156a172f7cfe269fa046171fe6e5ec (patch) | |
tree | 0802caacbed2f3104da502bee36101e0197eb910 | |
parent | added experimental win32 service code (diff) |
code cleanup
-rw-r--r-- | src/anytun.suo | bin | 60416 -> 60416 bytes | |||
-rw-r--r-- | src/win32/registryKey.cpp | 2 | ||||
-rw-r--r-- | src/win32/tunDevice.cpp | 6 | ||||
-rw-r--r-- | src/win32/winService.cpp | 238 |
4 files changed, 123 insertions, 123 deletions
diff --git a/src/anytun.suo b/src/anytun.suo Binary files differindex 81121d5..24a6b07 100644 --- a/src/anytun.suo +++ b/src/anytun.suo diff --git a/src/win32/registryKey.cpp b/src/win32/registryKey.cpp index 7112745..4ce92b9 100644 --- a/src/win32/registryKey.cpp +++ b/src/win32/registryKey.cpp @@ -108,7 +108,7 @@ DWORD RegistryKey::getSubKey(DWORD index, RegistryKey& subKey, REGSAM sam) const { char subkeyname[NAME_LENGTH]; DWORD len = sizeof(subkeyname); - DWORD err = RegEnumKeyEx(key_, index, subkeyname, &len, NULL, NULL, NULL, NULL); + DWORD err = RegEnumKeyExA(key_, index, subkeyname, &len, NULL, NULL, NULL, NULL); if(err != ERROR_SUCCESS) return err; diff --git a/src/win32/tunDevice.cpp b/src/win32/tunDevice.cpp index 9b8e087..4986381 100644 --- a/src/win32/tunDevice.cpp +++ b/src/win32/tunDevice.cpp @@ -57,7 +57,7 @@ TunDevice::TunDevice(std::string dev_name, std::string dev_type, std::string ifc if(handle_ == INVALID_HANDLE_VALUE) { std::stringstream tapname; tapname << USERMODEDEVICEDIR << actual_node_ << TAPSUFFIX; - handle_ = CreateFile(tapname.str().c_str(), GENERIC_WRITE | GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0); + handle_ = CreateFileA(tapname.str().c_str(), GENERIC_WRITE | GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0); if(handle_ == INVALID_HANDLE_VALUE) { std::stringstream msg; msg << "Unable to open device: " << actual_node_ << " (" << actual_name_ << "): " << LogErrno(GetLastError()); @@ -156,10 +156,10 @@ bool TunDevice::getAdapter(std::string const& dev_name) else { std::stringstream tapname; tapname << USERMODEDEVICEDIR << actual_node_ << TAPSUFFIX; - handle_ = CreateFile(tapname.str().c_str(), GENERIC_WRITE | GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0); + handle_ = CreateFileA(tapname.str().c_str(), GENERIC_WRITE | GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0); if(handle_ == INVALID_HANDLE_VALUE) continue; - found = true; + found = true; break; } } diff --git a/src/win32/winService.cpp b/src/win32/winService.cpp index 5ebade1..659513e 100644 --- a/src/win32/winService.cpp +++ b/src/win32/winService.cpp @@ -1,78 +1,78 @@ -/* - * 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/>. - */ - -#include <iostream> - -#include <windows.h> - -#include "winService.h" -#include "../log.h" -#include "../threadUtils.hpp" - -WinService* WinService::inst = NULL; -Mutex WinService::instMutex; -WinService& gWinService = WinService::instance(); - -WinService& WinService::instance() -{ - Lock lock(instMutex); - static instanceCleaner c; - if(!inst) - inst = new WinService(); - - return *inst; -} - -WinService::~WinService() -{ - if(started_) - CloseHandle(exit_event_); -} - -void WinService::install() -{ +/*
+ * 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/>.
+ */
+
+#include <iostream>
+
+#include <windows.h>
+
+#include "winService.h"
+#include "../log.h"
+#include "../threadUtils.hpp"
+
+WinService* WinService::inst = NULL;
+Mutex WinService::instMutex;
+WinService& gWinService = WinService::instance();
+
+WinService& WinService::instance()
+{
+ Lock lock(instMutex);
+ static instanceCleaner c;
+ if(!inst)
+ inst = new WinService();
+
+ return *inst;
+}
+
+WinService::~WinService()
+{
+ if(started_)
+ CloseHandle(exit_event_);
+}
+
+void WinService::install()
+{
SC_HANDLE schSCManager;
SC_HANDLE schService;
char szPath[MAX_PATH];
if(!GetModuleFileNameA(NULL, szPath, MAX_PATH)) {
- std::stringstream msg; - msg << "Error on GetModuleFileName: " << LogErrno(GetLastError()); - throw std::runtime_error(msg.str()); + std::stringstream msg;
+ msg << "Error on GetModuleFileName: " << LogErrno(GetLastError());
+ throw std::runtime_error(msg.str());
}
schSCManager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(NULL == schSCManager) {
- std::stringstream msg; - msg << "Error on OpenSCManager: " << LogErrno(GetLastError()); + std::stringstream msg;
+ msg << "Error on OpenSCManager: " << LogErrno(GetLastError());
throw std::runtime_error(msg.str());
}
@@ -80,8 +80,8 @@ void WinService::install() SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, szPath, NULL, NULL, NULL, NULL, NULL); // no password
if(schService == NULL) {
CloseServiceHandle(schSCManager);
- std::stringstream msg; - msg << "Error on CreateService: " << LogErrno(GetLastError()); + std::stringstream msg;
+ msg << "Error on CreateService: " << LogErrno(GetLastError());
throw std::runtime_error(msg.str());
}
@@ -89,44 +89,44 @@ void WinService::install() CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
-} - -void WinService::start() -{ - if(started_) - throw std::runtime_error("Service already started"); - - SERVICE_TABLE_ENTRY DispatchTable[] = { - {(LPSTR)name_.c_str(), (LPSERVICE_MAIN_FUNCTION)WinService::main }, - {NULL, NULL} - }; - - if(!StartServiceCtrlDispatcherA(DispatchTable)) { - std::stringstream msg; - msg << "Error on StartServiceCtrlDispatcher: " << LogErrno(GetLastError()); - throw std::runtime_error(msg.str()); - } -} - -void WinService::waitForExit() -{ - if(started_) - throw std::runtime_error("Service not started correctly"); +}
+
+void WinService::start()
+{
+ if(started_)
+ throw std::runtime_error("Service already started");
+
+ SERVICE_TABLE_ENTRY DispatchTable[] = {
+ {(LPSTR)name_.c_str(), (LPSERVICE_MAIN_FUNCTION)WinService::main },
+ {NULL, NULL}
+ };
+
+ if(!StartServiceCtrlDispatcherA(DispatchTable)) {
+ std::stringstream msg;
+ msg << "Error on StartServiceCtrlDispatcher: " << LogErrno(GetLastError());
+ throw std::runtime_error(msg.str());
+ }
+}
+
+void WinService::waitForExit()
+{
+ if(started_)
+ throw std::runtime_error("Service not started correctly");
WaitForSingleObject(exit_event_, INFINITE);
reportStatus(SERVICE_STOP_PENDING, NO_ERROR);
-} - -void WinService::stop() -{ - if(started_) - throw std::runtime_error("Service not started correctly"); +}
+
+void WinService::stop()
+{
+ if(started_)
+ throw std::runtime_error("Service not started correctly");
reportStatus(SERVICE_STOPPED, NO_ERROR);
-} - -VOID WINAPI WinService::main(DWORD dwArgc, LPTSTR *lpszArgv) -{ +}
+
+VOID WINAPI WinService::main(DWORD dwArgc, LPTSTR *lpszArgv)
+{
gWinService.status_handle_ = RegisterServiceCtrlHandlerA(gWinService.name_.c_str(), WinService::ctrlHandler);
if(!gWinService.status_handle_) {
cLog.msg(Log::PRIO_ERR) << "Error on RegisterServiceCtrlHandler: " << LogErrno(GetLastError());
@@ -135,23 +135,23 @@ VOID WINAPI WinService::main(DWORD dwArgc, LPTSTR *lpszArgv) gWinService.status_.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
gWinService.status_.dwServiceSpecificExitCode = 0;
gWinService.reportStatus(SERVICE_START_PENDING, NO_ERROR);
- - gWinService.exit_event_ = CreateEvent(NULL, true, false, NULL); - if(!gWinService.exit_event_) { - cLog.msg(Log::PRIO_ERR) << "Error on CreateEvent: " << LogErrno(GetLastError()); - gWinService.reportStatus(SERVICE_STOPPED, -1); - return; - } - gWinService.started_ = true; - gWinService.reportStatus(SERVICE_RUNNING, NO_ERROR); -} - -VOID WINAPI WinService::ctrlHandler(DWORD dwCtrl) -{ -} - -void WinService::reportStatus(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint) -{ +
+ gWinService.exit_event_ = CreateEvent(NULL, true, false, NULL);
+ if(!gWinService.exit_event_) {
+ cLog.msg(Log::PRIO_ERR) << "Error on CreateEvent: " << LogErrno(GetLastError());
+ gWinService.reportStatus(SERVICE_STOPPED, -1);
+ return;
+ }
+ gWinService.started_ = true;
+ gWinService.reportStatus(SERVICE_RUNNING, NO_ERROR);
+}
+
+VOID WINAPI WinService::ctrlHandler(DWORD dwCtrl)
+{
+}
+
+void WinService::reportStatus(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint)
+{
static DWORD dwCheckPoint = 1;
status_.dwCurrentState = dwCurrentState;
@@ -171,4 +171,4 @@ void WinService::reportStatus(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD status_.dwCheckPoint = dwCheckPoint++;
SetServiceStatus(status_handle_, &status_);
-} +}
|