class Sniffer
{
senf::PacketSocketHandle sock;
+ senf::scheduler::FdEvent event;
public:
Sniffer(std::string const & interface)
+ : event ("Sniffer", senf::membind(&Sniffer::dumpPacket, this),
+ sock, senf::scheduler::FdEvent::EV_READ)
{
sock.bind(senf::LLSocketAddress(interface));
}
void run()
{
- senf::Scheduler::instance().add(
- sock, senf::membind(&Sniffer::dumpPacket, this));
- senf::Scheduler::instance().process();
+ senf::scheduler::process();
}
private:
- void dumpPacket(senf::Scheduler::EventId event)
+ void dumpPacket(int event)
{
senf::EthernetPacket packet (
senf::EthernetPacket::create(senf::noinit));
std::cout << "Registered packets:\n\n";
senf::dumpPacketRegistries(std::cout);
- if (argc >= 3)
+ if (argc >= 3) {
if (std::string(argv[1]) == "loop")
return loop_main(argc,argv);
else if (std::string(argv[1]) == "scheduler")
return scheduler_main(argc,argv);
+ }
std::cerr << "Usage: sniffer { loop | scheduler } [interface]" << std::endl;
return 1;