Socket/Protocols/INet: Updated INet4SocketAddress to use INet4Address
[senf.git] / Examples / Sniffer / Sniffer.cc
index 9cf1883..d748b11 100644 (file)
 #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_
@@ -81,29 +78,22 @@ namespace {
         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";
         }
     }
@@ -133,13 +123,12 @@ public:
 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());
+        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";
     }
 };
@@ -147,7 +136,7 @@ private:
 int scheduler_main(int argc, char const * argv[])
 {
     try {
-        Sniffer sniffer ("eth0");
+        Sniffer sniffer ("eth1");
         sniffer.run();
     }
     catch (std::exception const & ex) {
@@ -179,4 +168,6 @@ int main(int argc, char const * argv[])
 // c-file-style: "senf"
 // indent-tabs-mode: nil
 // ispell-local-dictionary: "american"
+// compile-command: "scons -u"
+// comment-column: 40
 // End: