1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
#include "conntrackrecord.ih"
void ConntrackRecord::initICMP(Pattern const &pattern)
{
setSourceIP( aton(pat(CTicmp::SRC)) );
setDestIP( aton(pat(CTicmp::DST)) );
setViaIP( aton(pat(CTicmp::NATSRC)) );
setProtocol(ICMP);
setIDKey( stoul(pat(CTicmp::ID)), 0 ); // no sequence nr available
if (type() == DESTROY)
{
if (pattern.end() == static_cast<size_t>(CTicmp::nFields))
{
size_t ipHeaderSize = Options::instance().IPheaderSize();
if (ipHeaderSize != 0)
ipHeaderSize *= stoul(pat(CTicmp::RECVDPACKETS));
size_t nBytes = stoul(pat(CTicmp::SENTBYTES));
setSentBytes( nBytes ? nBytes - ipHeaderSize : 0 );
nBytes = stoul(pat(CTicmp::RECVDBYTES));
setReceivedBytes( nBytes ? nBytes - ipHeaderSize : 0 );
}
};
}
|