+ memcpy(pckt, rp.pckt, pcktSizeOLD);
+ }
+
+ uint16_t GetIPVersion() const
+ {
+ return pckt[0] >> 4;
+ }
+ uint8_t GetHeaderLen() const
+ {
+ return (pckt[0] & 0x0F) * 4;
+ }
+ uint8_t GetProto() const
+ {
+ return pckt[9];
+ }
+ uint32_t GetLen() const
+ {
+ if (dataLen != -1)
+ return dataLen;
+ return ntohs(*reinterpret_cast<const uint16_t*>(pckt + 2));
+ }
+ uint32_t GetSrcIP() const
+ {
+ return *reinterpret_cast<const uint32_t*>(pckt + 12);
+ }
+ uint32_t GetDstIP() const
+ {
+ return *reinterpret_cast<const uint32_t*>(pckt + 16);
+ }
+ uint16_t GetSrcPort() const
+ {
+ if (GetProto() == 1) // for icmp proto return port 0
+ return 0;
+ return ntohs(*reinterpret_cast<const uint16_t*>(pckt + GetHeaderLen()));
+ }
+ uint16_t GetDstPort() const
+ {
+ if (GetProto() == 1) // for icmp proto return port 0
+ return 0;
+ return ntohs(*reinterpret_cast<const uint16_t*>(pckt + GetHeaderLen() + 2));