]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp
Ticket 12. The 'StopOnError' parameter added.
[stg.git] / projects / stargazer / plugins / capture / cap_nf / cap_nf.cpp
index 37af97206a4275b7b5d90b20ba7ff985f93ec26a..8c4fdc2dd350cf9dbc9306d59273cf39446d2366 100644 (file)
@@ -39,13 +39,18 @@ $Author: faust $
 
 #include <vector>
 
 
 #include <vector>
 
-#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"
 
 #include "stg/raw_ip_packet.h"
 #include "stg/traffcounter.h"
 #include "stg/plugin_creator.h"
 #include "cap_nf.h"
 
+namespace
+{
 PLUGIN_CREATOR<NF_CAP> cnc;
 PLUGIN_CREATOR<NF_CAP> cnc;
+}
+
+extern "C" PLUGIN * GetPlugin();
 
 PLUGIN * GetPlugin()
 {
 
 PLUGIN * GetPlugin()
 {
@@ -118,7 +123,7 @@ if (portU > 0)
         runningUDP = false;
         CloseUDP();
         errorStr = "Cannot create UDP thread";
         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;
         }
         printfd(__FILE__, "Error: Cannot create UDP thread\n");
         return -1;
         }
@@ -134,7 +139,7 @@ if (portT > 0)
         {
         runningTCP = false;
         CloseTCP();
         {
         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;
         errorStr = "Cannot create TCP thread";
         printfd(__FILE__, "Error: Cannot create TCP thread\n");
         return -1;
@@ -163,7 +168,7 @@ if (portU && !stoppedUDP)
         if (pthread_kill(tidUDP, SIGUSR1))
             {
             errorStr = "Error sending signal to UDP thread";
         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;
             }
             printfd(__FILE__, "Error: Error sending signal to UDP thread\n");
             return -1;
             }
@@ -188,12 +193,12 @@ if (portT && !stoppedTCP)
         if (pthread_kill(tidTCP, SIGUSR1))
             {
             errorStr = "Error sending signal to TCP thread";
         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");
             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;
         }
     }
 return 0;
@@ -261,10 +266,6 @@ sigfillset(&signalSet);
 pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
 
 NF_CAP * cap = static_cast<NF_CAP *>(c);
 pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
 
 NF_CAP * cap = static_cast<NF_CAP *>(c);
-uint8_t buf[BUF_SIZE];
-int res;
-struct sockaddr_in sin;
-socklen_t slen;
 cap->stoppedUDP = false;
 while (cap->runningUDP)
     {
 cap->stoppedUDP = false;
 while (cap->runningUDP)
     {
@@ -274,16 +275,18 @@ while (cap->runningUDP)
         }
 
     // Data
         }
 
     // Data
-    slen = sizeof(sin);
-    res = recvfrom(cap->sockUDP, buf, BUF_SIZE, 0, reinterpret_cast<struct sockaddr *>(&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<struct sockaddr *>(&sin), &slen);
     if (!cap->runningUDP)
         break;
 
     if (res < 0)
     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
         {
 
     if (res == 0) // EOF
         {
@@ -313,11 +316,6 @@ sigfillset(&signalSet);
 pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
 
 NF_CAP * cap = static_cast<NF_CAP *>(c);
 pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
 
 NF_CAP * cap = static_cast<NF_CAP *>(c);
-uint8_t buf[BUF_SIZE];
-int res;
-int sd;
-struct sockaddr_in sin;
-socklen_t slen;
 cap->stoppedTCP = false;
 while (cap->runningTCP)
     {
 cap->stoppedTCP = false;
 while (cap->runningTCP)
     {
@@ -327,15 +325,16 @@ while (cap->runningTCP)
         }
 
     // Data
         }
 
     // Data
-    slen = sizeof(sin);
-    sd = accept(cap->sockTCP, reinterpret_cast<struct sockaddr *>(&sin), &slen);
+    struct sockaddr_in sin;
+    socklen_t slen = sizeof(sin);
+    int sd = accept(cap->sockTCP, reinterpret_cast<struct sockaddr *>(&sin), &slen);
     if (!cap->runningTCP)
         break;
 
     if (sd <= 0)
         {
         if (sd < 0)
     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;
         }
 
         continue;
         }
 
@@ -345,7 +344,8 @@ while (cap->runningTCP)
         continue;
         }
 
         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));
 
     if (res < 0)
         cap->logger("recv error: %s", strerror(errno));
@@ -373,7 +373,7 @@ cap->stoppedTCP = true;
 return NULL;
 }
 
 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<NF_HEADER *>(buf);
 {
 RAW_PACKET ip;
 NF_HEADER * hdr = reinterpret_cast<NF_HEADER *>(buf);