PcapLayer.hh 811 Bytes
Newer Older
#pragma once

garciay's avatar
garciay committed
#include <pthread.h>
#include <pcap/pcap.h>

#include "Layer.hh"
#include "Params.hh"

class PORT;

class PcapLayer : public PORT, public Layer {
garciay's avatar
garciay committed
  Params _params;
  pcap_t *_device;
  int _pcap_h;
  pthread_t _thread_id;
  bool _running;
  bool _resume;
  int _fd[2];
garciay's avatar
garciay committed
  static void * run(void *p_this);
public:
  inline PcapLayer() : PORT("PcapLayer"), Layer(), _params(), _device(NULL), _pcap_h(-1), _thread_id(-1), _running(FALSE), _resume(FALSE) { _fd[0] = -1; _fd[1] = -1; };
  PcapLayer(const std::string & type, const std::string & param);
  virtual ~PcapLayer();
garciay's avatar
garciay committed
  virtual void sendData(const OCTETSTRING& data, const Params& params);
  virtual void receiveData(const OCTETSTRING& data, const Params& info);
  
  void Handle_Fd_Event_Readable(int fd);