X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/f91192c77eec33a27dea7fcd0d451823ef478529..1c324d5b2380a68f209e65969079677dbaf1c511:/projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp?ds=sidebyside diff --git a/projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp b/projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp index 6bbfd7e8..28984686 100644 --- a/projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp +++ b/projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp @@ -22,6 +22,22 @@ $Revision: 1.13 $ $Date: 2010/09/10 06:43:03 $ */ + +#include "divert_cap.h" + +#include "stg/traffcounter.h" +#include "stg/raw_ip_packet.h" +#include "stg/common.h" + +#include +#include + +#include +#include +#include +#include +#include + #include #include #include @@ -34,20 +50,6 @@ $Date: 2010/09/10 06:43:03 $ #include #include -#include -#include -#include -#include -#include - -#include -#include - -#include "stg/common.h" -#include "stg/traffcounter.h" -#include "stg/plugin_creator.h" -#include "divert_cap.h" - #define BUFF_LEN (16384) /* max mtu -> lo=16436 TODO why?*/ //----------------------------------------------------------------------------- @@ -62,32 +64,27 @@ DIVERT_DATA cddiv; //capture data //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -PLUGIN_CREATOR dcc; -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -PLUGIN * GetPlugin() + +extern "C" STG::Plugin* GetPlugin() { -return dcc.GetPlugin(); + static DIVERT_CAP plugin; + return &plugin; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -const std::string DIVERT_CAP::GetVersion() const +std::string DIVERT_CAP::GetVersion() const { -return "Divert_cap v.1.0"; +return "cap_divert v.1.0"; } //----------------------------------------------------------------------------- DIVERT_CAP::DIVERT_CAP() - : settings(), - port(0), + : port(0), disableForwarding(false), - errorStr(), - thread(), nonstop(false), isRunning(false), traffCnt(NULL), - logger(GetPluginLogger(GetStgLogger(), "cap_divert")) + logger(STG::PluginLogger::get("cap_divert")) { } //----------------------------------------------------------------------------- @@ -142,7 +139,7 @@ if (isRunning) if (pthread_kill(thread, SIGINT)) { errorStr = "Cannot kill thread."; - logger("Cannot send signal to thread."); + logger("Cannot send signal to thread."); printfd(__FILE__, "Cannot kill thread\n"); return -1; } @@ -160,18 +157,18 @@ pthread_sigmask(SIG_BLOCK, &signalSet, NULL); DIVERT_CAP * dc = static_cast(d); dc->isRunning = true; -char buffer[64]; +char buffer[STG::packetSize + 14]; while (dc->nonstop) { - RAW_PACKET rp; - dc->DivertCapRead(buffer, 64, NULL); + STG::RawPacket rp; + dc->DivertCapRead(buffer, sizeof(buffer), NULL); if (buffer[12] != 0x8) continue; - memcpy(rp.rawPacket.pckt, &buffer[14], pcktSize); + memcpy(&rp.rawPacket, &buffer[14], STG::packetSize); - dc->traffCnt->Process(rp); + dc->traffCnt->process(rp); } dc->isRunning = false; @@ -257,10 +254,10 @@ if ((bytes = recvfrom (cddiv.sock, buf, BUFF_LEN, *iface = cddiv.iface; if (!disableForwarding) - { + { if (sendto(cddiv.sock, buf, bytes, 0, (struct sockaddr*)&divertaddr, divertaddrSize) < 0) - logger("sendto error: %s", strerror(errno)); - } + logger("sendto error: %s", strerror(errno)); + } } else { @@ -280,12 +277,12 @@ return 0; int DIVERT_CAP::ParseSettings() { int p; -PARAM_VALUE pv; -std::vector::const_iterator pvi; +STG::ParamValue pv; +std::vector::const_iterator pvi; pv.param = "Port"; pvi = std::find(settings.moduleParams.begin(), settings.moduleParams.end(), pv); -if (pvi == settings.moduleParams.end()) +if (pvi == settings.moduleParams.end() || pvi->value.empty()) { p = 15701; } @@ -301,7 +298,7 @@ port = p; bool d = false; pv.param = "DisableForwarding"; pvi = std::find(settings.moduleParams.begin(), settings.moduleParams.end(), pv); -if (pvi == settings.moduleParams.end()) +if (pvi == settings.moduleParams.end() || pvi->value.empty()) { disableForwarding = false; }