]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/ipin.h
Ya estamos fragmentando! (falta testing intensivo pero parece andar)
[z.facultad/75.74/practicos.git] / practicas / pipi / src / ipin.h
index 2c86191a5c81e10dda26369566859f9c2f31538d..5d0d7a82cc279b056df1f874bdc475eaa743392f 100644 (file)
@@ -4,8 +4,9 @@
 #include "ipaddr.h"
 #include "ipheader.h"
 #include "dev.h"
 #include "ipaddr.h"
 #include "ipheader.h"
 #include "dev.h"
-#include <iostream>
+#include <map>
 #include <string>
 #include <string>
+#include <iostream>
 #include <stdexcept>
 
 /// IP de recepción
 #include <stdexcept>
 
 /// IP de recepción
@@ -21,6 +22,22 @@ struct IPIn
     /// Dispositivo de logging
     std::ostream& log;
 
     /// Dispositivo de logging
     std::ostream& log;
 
+    /// Buffers de recepción
+    struct BufferKey
+    {
+        uint16_t id;
+        uint32_t src, dst;
+        uint8_t proto;
+        BufferKey(const IPHeader& h):
+            id(h.id), src(h.src), dst(h.dst), proto(h.proto)
+        {}
+        bool operator< (const BufferKey& b) const
+        { return id < b.id && src < b.src && dst < b.dst && proto < b.proto; }
+    };
+    typedef std::map< uint16_t, std::string > offsetmap_type;
+    typedef std::map< BufferKey, offsetmap_type > buffer_type;
+    buffer_type buffer;
+
     /// Constructor
     IPIn(const IPAddr& ip, Dev& dev, std::ostream& log = std::cout);
 
     /// Constructor
     IPIn(const IPAddr& ip, Dev& dev, std::ostream& log = std::cout);