X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/f91192c77eec33a27dea7fcd0d451823ef478529..a096e833c2060ab274345ad6a5b7cd91abf29b9c:/projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp?ds=sidebyside diff --git a/projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp b/projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp index 37af9720..ce42d911 100644 --- a/projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp +++ b/projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp @@ -39,13 +39,18 @@ $Author: faust $ #include -#include "stg/common.h" +#include "stg/common.h" #include "stg/raw_ip_packet.h" #include "stg/traffcounter.h" #include "stg/plugin_creator.h" #include "cap_nf.h" +namespace +{ PLUGIN_CREATOR cnc; +} + +extern "C" PLUGIN * GetPlugin(); PLUGIN * GetPlugin() { @@ -54,9 +59,6 @@ return cnc.GetPlugin(); NF_CAP::NF_CAP() : traffCnt(NULL), - settings(), - tidTCP(), - tidUDP(), runningTCP(false), runningUDP(false), stoppedTCP(true), @@ -65,7 +67,6 @@ NF_CAP::NF_CAP() portU(0), sockTCP(-1), sockUDP(-1), - errorStr(), logger(GetPluginLogger(GetStgLogger(), "cap_nf")) { } @@ -79,7 +80,7 @@ int NF_CAP::ParseSettings() std::vector::iterator it; for (it = settings.moduleParams.begin(); it != settings.moduleParams.end(); ++it) { - if (it->param == "TCPPort") + if (it->param == "TCPPort" && !it->value.empty()) { if (str2x(it->value[0], portT)) { @@ -89,7 +90,7 @@ for (it = settings.moduleParams.begin(); it != settings.moduleParams.end(); ++it } continue; } - if (it->param == "UDPPort") + if (it->param == "UDPPort" && !it->value.empty()) { if (str2x(it->value[0], portU)) { @@ -118,7 +119,7 @@ if (portU > 0) runningUDP = false; CloseUDP(); errorStr = "Cannot create UDP thread"; - logger("Cannot create UDP thread."); + logger("Cannot create UDP thread."); printfd(__FILE__, "Error: Cannot create UDP thread\n"); return -1; } @@ -134,7 +135,7 @@ if (portT > 0) { runningTCP = false; CloseTCP(); - logger("Cannot create TCP thread."); + logger("Cannot create TCP thread."); errorStr = "Cannot create TCP thread"; printfd(__FILE__, "Error: Cannot create TCP thread\n"); return -1; @@ -163,7 +164,7 @@ if (portU && !stoppedUDP) if (pthread_kill(tidUDP, SIGUSR1)) { errorStr = "Error sending signal to UDP thread"; - logger("Error sending sugnal to UDP thread."); + logger("Error sending sugnal to UDP thread."); printfd(__FILE__, "Error: Error sending signal to UDP thread\n"); return -1; } @@ -188,12 +189,12 @@ if (portT && !stoppedTCP) if (pthread_kill(tidTCP, SIGUSR1)) { errorStr = "Error sending signal to TCP thread"; - logger("Error sending signal to TCP thread."); + logger("Error sending signal to TCP thread."); printfd(__FILE__, "Error: Error sending signal to TCP thread\n"); return -1; } printfd(__FILE__, "TCP thread NOT stopped\n"); - logger("Cannot stop TCP thread."); + logger("Cannot stop TCP thread."); } } return 0; @@ -261,10 +262,6 @@ sigfillset(&signalSet); pthread_sigmask(SIG_BLOCK, &signalSet, NULL); NF_CAP * cap = static_cast(c); -uint8_t buf[BUF_SIZE]; -int res; -struct sockaddr_in sin; -socklen_t slen; cap->stoppedUDP = false; while (cap->runningUDP) { @@ -274,16 +271,18 @@ while (cap->runningUDP) } // Data - slen = sizeof(sin); - res = recvfrom(cap->sockUDP, buf, BUF_SIZE, 0, reinterpret_cast(&sin), &slen); + struct sockaddr_in sin; + socklen_t slen = sizeof(sin); + uint8_t buf[BUF_SIZE]; + ssize_t res = recvfrom(cap->sockUDP, buf, BUF_SIZE, 0, reinterpret_cast(&sin), &slen); if (!cap->runningUDP) break; if (res < 0) - { - cap->logger("recvfrom error: %s", strerror(errno)); - continue; - } + { + cap->logger("recvfrom error: %s", strerror(errno)); + continue; + } if (res == 0) // EOF { @@ -313,11 +312,6 @@ sigfillset(&signalSet); pthread_sigmask(SIG_BLOCK, &signalSet, NULL); NF_CAP * cap = static_cast(c); -uint8_t buf[BUF_SIZE]; -int res; -int sd; -struct sockaddr_in sin; -socklen_t slen; cap->stoppedTCP = false; while (cap->runningTCP) { @@ -327,15 +321,16 @@ while (cap->runningTCP) } // Data - slen = sizeof(sin); - sd = accept(cap->sockTCP, reinterpret_cast(&sin), &slen); + struct sockaddr_in sin; + socklen_t slen = sizeof(sin); + int sd = accept(cap->sockTCP, reinterpret_cast(&sin), &slen); if (!cap->runningTCP) break; if (sd <= 0) { if (sd < 0) - cap->logger("accept error: %s", strerror(errno)); + cap->logger("accept error: %s", strerror(errno)); continue; } @@ -345,7 +340,8 @@ while (cap->runningTCP) continue; } - res = recv(sd, buf, BUF_SIZE, MSG_WAITALL); + uint8_t buf[BUF_SIZE]; + ssize_t res = recv(sd, buf, BUF_SIZE, MSG_WAITALL); if (res < 0) cap->logger("recv error: %s", strerror(errno)); @@ -373,7 +369,7 @@ cap->stoppedTCP = true; return NULL; } -void NF_CAP::ParseBuffer(uint8_t * buf, int size) +void NF_CAP::ParseBuffer(uint8_t * buf, ssize_t size) { RAW_PACKET ip; NF_HEADER * hdr = reinterpret_cast(buf);