#include <string>
#include <iostream>
#include <iomanip>
-#include "Socket/PacketSocketHandle.hh"
+#include "Socket/Protocols/Raw/PacketSocketHandle.hh"
#include "Scheduler/Scheduler.hh"
#include "Utils/membind.hh"
-
-#include "Packets/EthernetPacket.hh"
-#include "Packets/IpV4Packet.hh"
-#include "Packets/UDPPacket.hh"
+#include "Packets/DefaultBundle/EthernetPacket.hh"
//#include "Sniffer.mpp"
#define prefix_
std::cout << std::dec;
}
- void use_em()
- {
- // Pull in symbols from the wanted packets ...
- senf::Packet::create<senf::IpV4Packet>(0,0);
- senf::Packet::create<senf::UDPPacket>(0,0);
- }
}
int loop_main (int argc, char const * argv[])
{
try {
senf::PacketSocketHandle sock;
- sock.bind(senf::LLSocketAddress("eth0"));
+ sock.bind(senf::LLSocketAddress("eth1"));
// sock.protocol().promisc("eth0",senf::PacketProtocol::Promiscuous);
while (true) { // forever
- std::string data (sock.read());
- senf::EthernetPacket::ptr packet (
- senf::Packet::create<senf::EthernetPacket>(
- data.begin(), data.end()));
- packet->dump(std::cout);
- hexdump(packet->last()->begin(),
- packet->last()->end());
+ senf::EthernetPacket packet (senf::EthernetPacket::create(
+ senf::EthernetPacket::noinit));
+ sock.read(packet.data(),0);
+ packet.dump(std::cout);
+ hexdump(packet.last().data().begin(),
+ packet.last().data().end());
std::cout << "\n\n";
}
}
senf::PacketSocketHandle sock;
public:
- Sniffer(std::string const & interface)
- { sock.bind(senf::LLSocketAddress(interface)); }
+ Sniffer(std::string const & interface)
+ {
+ sock.bind(senf::LLSocketAddress(interface));
+ }
- void run()
- {
- senf::Scheduler::instance().add(sock, senf::membind(&Sniffer::dumpPacket, this));
- senf::Scheduler::instance().process();
- }
+ void run()
+ {
+ senf::Scheduler::instance().add(
+ sock, senf::membind(&Sniffer::dumpPacket, this));
+ senf::Scheduler::instance().process();
+ }
private:
void dumpPacket(senf::FileHandle /* ignored */, senf::Scheduler::EventId event)
- {
- std::string data (sock.read());
- senf::EthernetPacket::ptr packet (
- senf::Packet::create<senf::EthernetPacket>(
- data.begin(), data.end()));
- packet->dump(std::cout);
- hexdump(packet->last()->begin(),
- packet->last()->end());
- std::cout << "\n\n";
- }
+ {
+ senf::EthernetPacket packet (
+ senf::EthernetPacket::create(senf::EthernetPacket::noinit));
+ sock.read(packet.data(),0);
+ packet.dump(std::cout);
+ hexdump(packet.last().data().begin(),
+ packet.last().data().end());
+ std::cout << "\n\n";
+ }
};
int scheduler_main(int argc, char const * argv[])
{
try {
- Sniffer sniffer ("eth0");
+ Sniffer sniffer ("eth1");
sniffer.run();
}
catch (std::exception const & ex) {
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
+// compile-command: "scons -u"
+// comment-column: 40
// End: