]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp
Fix tariff field name in XML-RPC API documentation (tariff -> name)
[stg.git] / projects / stargazer / plugins / capture / divert_freebsd / divert_cap.cpp
index a76629fbca35711aef5edb6c80b86f330ccf63bb..f6e7731a434c96d097f0b17470b05b6e63eb8d81 100644 (file)
 $Revision: 1.13 $
 $Date: 2010/09/10 06:43:03 $
 */
-#include <stdio.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
-#include <string.h>
 
 #include <sys/uio.h>
 #include <sys/time.h>
 #include <sys/ioctl.h>
 #include <sys/poll.h>
 
-#include <errno.h>
 #include <fcntl.h>
-#include <stdlib.h>
-#include <signal.h>
 #include <unistd.h>
 
-#include "common.h"
+#include <cstdio>
+#include <cstring>
+#include <cerrno>
+#include <cstdlib>
+#include <csignal>
+
+#include <algorithm>
+#include <vector>
+
+#include "stg/common.h"
+#include "stg/traffcounter.h"
 #include "divert_cap.h"
 
 #define BUFF_LEN (16384) /* max mtu -> lo=16436  TODO why?*/
 
 //-----------------------------------------------------------------------------
-struct DIVERT_DATA
-{
+struct DIVERT_DATA {
 int sock;
 short int port;
 unsigned char buffer[BUFF_LEN];
@@ -56,8 +60,7 @@ char iface[10];
 pollfd pollddiv;
 DIVERT_DATA cddiv;  //capture data
 //-----------------------------------------------------------------------------
-class DIVERT_CAP_CREATOR
-{
+class DIVERT_CAP_CREATOR {
 private:
     DIVERT_CAP * divc;
 
@@ -65,16 +68,16 @@ public:
     DIVERT_CAP_CREATOR()
         : divc(new DIVERT_CAP())
         {
-        };
+        }
     ~DIVERT_CAP_CREATOR()
         {
         delete divc;
-        };
+        }
 
     DIVERT_CAP * GetCapturer()
     {
     return divc;
-    };
+    }
 };
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -83,32 +86,24 @@ DIVERT_CAP_CREATOR dcc;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-BASE_PLUGIN * GetPlugin()
+PLUGIN * GetPlugin()
 {
 return dcc.GetCapturer();
 }
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-const string DIVERT_CAP::GetVersion() const
+const std::string DIVERT_CAP::GetVersion() const
 {
 return "Divert_cap v.1.0";
 }
 //-----------------------------------------------------------------------------
 DIVERT_CAP::DIVERT_CAP()
+    : port(0),
+      nonstop(false),
+      isRunning(false),
+      traffCnt(NULL)
 {
-isRunning = false;
-nonstop = false;
-}
-//-----------------------------------------------------------------------------
-void DIVERT_CAP::SetTraffcounter(TRAFFCOUNTER * tc)
-{
-traffCnt = tc;
-}
-//-----------------------------------------------------------------------------
-const string & DIVERT_CAP::GetStrError() const
-{
-return errorStr;
 }
 //-----------------------------------------------------------------------------
 int DIVERT_CAP::Start()
@@ -168,51 +163,22 @@ if (isRunning)
 return 0;
 }
 //-----------------------------------------------------------------------------
-bool DIVERT_CAP::IsRunning()
-{
-return isRunning;
-}
-//-----------------------------------------------------------------------------
 void * DIVERT_CAP::Run(void * d)
 {
 DIVERT_CAP * dc = (DIVERT_CAP *)d;
 dc->isRunning = true;
 
-/*struct ETH_IP
-{
-uint16_t    ethHdr[8];
-RAW_PACKET  rp;
-char        padding[4];
-char        padding1[8];
-};
-
-ETH_IP * ethIP;
-
-char ethip[sizeof(ETH_IP)];
-
-//memset(&ethIP, 0, sizeof(ethIP));
-memset(&ethip, 0, sizeof(ETH_IP));
-
-ethIP = (ETH_IP *)&ethip;
-ethIP->rp.dataLen = -1;
-*/
-//char * iface = NULL;
 char buffer[64];
 while (dc->nonstop)
     {
     RAW_PACKET rp;
     dc->DivertCapRead(buffer, 64, NULL);
 
-    //printf("%x %x %x %x \n", buffer[0], buffer[4], buffer[8], buffer[12]);
-    //printf("%x %x %x %x \n", buffer[16], buffer[20], buffer[24], buffer[28]);
-    //printf("%x %x %x %x \n", buffer[32], buffer[36], buffer[40], buffer[44]);
-
     if (buffer[12] != 0x8)
         continue;
 
     memcpy(rp.pckt, &buffer[14], pcktSize);
 
-    //dc->traffCnt->Process(*((RAW_PACKET*)( &buffer[14] ))); // - too dirty!
     dc->traffCnt->Process(rp);
     }
 
@@ -220,22 +186,6 @@ dc->isRunning = false;
 return NULL;
 }
 //-----------------------------------------------------------------------------
-uint16_t DIVERT_CAP::GetStartPosition() const
-{
-return 10;
-}
-//-----------------------------------------------------------------------------
-uint16_t DIVERT_CAP::GetStopPosition() const
-{
-return 10;
-}
-//-----------------------------------------------------------------------------
-/*****************************************************************************/
-/*****************************************************************************/
-/*****************************************************************************/
-/*****************************************************************************/
-/*****************************************************************************/
-//-----------------------------------------------------------------------------
 int DIVERT_CAP::DivertCapOpen()
 {
 memset(&pollddiv, 0, sizeof(pollddiv));
@@ -328,10 +278,10 @@ int DIVERT_CAP::ParseSettings()
 {
 int p;
 PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
 
 pv.param = "Port";
-pvi = find(settings.moduleParams.begin(), settings.moduleParams.end(), pv);
+pvi = std::find(settings.moduleParams.begin(), settings.moduleParams.end(), pv);
 if (pvi == settings.moduleParams.end())
     {
     port = 15701;
@@ -350,7 +300,7 @@ port = p;
 return 0;
 }
 //-----------------------------------------------------------------------------
-int DIVERT_CAP::ParseIntInRange(const string & str, int min, int max, int * val)
+int DIVERT_CAP::ParseIntInRange(const std::string & str, int min, int max, int * val)
 {
 if (str2x(str.c_str(), *val))
     {
@@ -365,9 +315,3 @@ if (*val < min || *val > max)
 return 0;
 }
 //-----------------------------------------------------------------------------
-void DIVERT_CAP::SetSettings(const MODULE_SETTINGS & s)
-{
-settings = s;
-}
-//-----------------------------------------------------------------------------
-