File: initicmp.cc

package info (click to toggle)
natlog 3.01.00-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,912 kB
  • sloc: cpp: 3,691; fortran: 201; sh: 133; ansic: 123; makefile: 110
file content (28 lines) | stat: -rw-r--r-- 871 bytes parent folder | download | duplicates (5)
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 ); 

        }
    };
}