X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/blobdiff_plain/127afaea3cf716aa9261e5c2cf129a10acbd1688..51f24d14e8c4c52776a98c8e2aaacf95f90ad1f4:/practicas/pipi/src/ipin.h?ds=sidebyside diff --git a/practicas/pipi/src/ipin.h b/practicas/pipi/src/ipin.h index 2c86191..5d0d7a8 100644 --- a/practicas/pipi/src/ipin.h +++ b/practicas/pipi/src/ipin.h @@ -4,8 +4,9 @@ #include "ipaddr.h" #include "ipheader.h" #include "dev.h" -#include +#include #include +#include #include /// IP de recepción @@ -21,6 +22,22 @@ struct IPIn /// 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);