#ifndef __CAP_NF_H__
#define __CAP_NF_H__
-#include <string>
#include <pthread.h>
-#include "os_int.h"
-#include "base_plugin.h"
+#include <string>
+
+#include "stg/os_int.h"
+#include "stg/plugin.h"
+#include "stg/module_settings.h"
+#include "stg/logger.h"
-#define VERSION "CAP_NF v. 0.4"
-#define START_POS 0
-#define STOP_POS 0
+#define VERSION "cap_nf v. 0.4"
+#define START_POS 40
+#define STOP_POS 40
-struct NF_HEADER
-{
+class USERS;
+class USER;
+class TARIFFS;
+class ADMINS;
+class TRAFFCOUNTER;
+class STORE;
+class SETTINGS;
+
+struct NF_HEADER {
uint16_t version; // Protocol version
uint16_t count; // Flows count
uint32_t uptime; // System uptime
uint8_t eType; // Engine type
uint8_t eID; // Engine ID
uint16_t sInterval; // Sampling mode and interval
-} __attribute__ ((packed));
+};
-struct NF_DATA
-{
+struct NF_DATA {
uint32_t srcAddr; // Flow source address
uint32_t dstAddr; // Flow destination address
uint32_t nextHop; // IP addres on next hop router
uint8_t srcMask; // Source address mask in "slash" notation
uint8_t dstMask; // Destination address mask in "slash" notation
uint16_t pad2; // 2-byte padding
-} __attribute__ ((packed));
+};
#define BUF_SIZE (sizeof(NF_HEADER) + 30 * sizeof(NF_DATA))
-class NF_CAP : public BASE_PLUGIN
-{
+class NF_CAP : public PLUGIN {
public:
NF_CAP();
~NF_CAP();
- void SetUsers(USERS *) {};
- void SetTariffs(TARIFFS *) {};
- void SetAdmins(ADMINS *) {};
- void SetTraffcounter(TRAFFCOUNTER * tc) { traffCnt = tc; };
- void SetStore(BASE_STORE *) {};
- void SetStgSettings(const SETTINGS *) {};
- void SetSettings(const MODULE_SETTINGS & s) { settings = s; };
+ void SetTraffcounter(TRAFFCOUNTER * tc) { traffCnt = tc; }
+ void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
int ParseSettings();
int Start();
int Stop();
- int Reload() { return 0; };
- bool IsRunning() { return runningTCP || runningUDP; };
- const string & GetStrError() const { return errorStr; };
- const string GetVersion() const { return VERSION; };
- uint16_t GetStartPosition() const { return START_POS; };
- uint16_t GetStopPosition() const { return STOP_POS; };
+ int Reload() { return 0; }
+ bool IsRunning() { return runningTCP || runningUDP; }
+ const std::string & GetStrError() const { return errorStr; }
+ std::string GetVersion() const { return VERSION; }
+ uint16_t GetStartPosition() const { return START_POS; }
+ uint16_t GetStopPosition() const { return STOP_POS; }
private:
+ NF_CAP(const NF_CAP & rvalue);
+ NF_CAP & operator=(const NF_CAP & rvalue);
+
TRAFFCOUNTER * traffCnt;
MODULE_SETTINGS settings;
pthread_t tidTCP;
int sockTCP;
int sockUDP;
mutable std::string errorStr;
+ PLUGIN_LOGGER logger;
static void * RunUDP(void *);
static void * RunTCP(void *);
- void ParseBuffer(uint8_t *, int);
+ void ParseBuffer(uint8_t * buf, ssize_t size);
bool OpenTCP();
bool OpenUDP();
- void CloseTCP() { close(sockTCP); };
- void CloseUDP() { close(sockUDP); };
-
- bool WaitPackets(int sd) const;
+ void CloseTCP() { close(sockTCP); }
+ void CloseUDP() { close(sockUDP); }
};
-extern "C" BASE_PLUGIN * GetPlugin();
-
#endif