Refactor IP-in-IP tunnel support.

UDP tunnel support removed for now, to be re-added in specific
analyzers later, but IP-in-IP is now decapsulated recursively
so nested tunnels can be seen and the inner packets get sent
through the IP fragment reassembler if necessary.
This commit is contained in:
Jon Siwek 2012-04-23 13:15:29 -05:00
parent 4062fc1776
commit b51dd191d7
21 changed files with 300 additions and 323 deletions

View file

@ -14,6 +14,7 @@
struct pcap_pkthdr;
class Encapsulation;
class Connection;
class ConnID;
class OSFingerprint;
@ -26,9 +27,6 @@ class Discarder;
class SteppingStoneManager;
class PacketFilter;
class TunnelHandler;
class TunnelInfo;
class PacketSortElement;
struct SessionStats {
@ -145,7 +143,7 @@ protected:
friend class TimerMgrExpireTimer;
Connection* NewConn(HashKey* k, double t, const ConnID* id,
const u_char* data, int proto, TunnelInfo *tunnel_info);
const u_char* data, int proto, const Encapsulation& encapsulation);
// Check whether the tag of the current packet is consistent with
// the given connection. Returns:
@ -178,7 +176,7 @@ protected:
void DoNextPacket(double t, const struct pcap_pkthdr* hdr,
const IP_Hdr* ip_hdr, const u_char* const pkt,
int hdr_size);
int hdr_size, Encapsulation& encapsulation);
void NextPacketSecondary(double t, const struct pcap_pkthdr* hdr,
const u_char* const pkt, int hdr_size,
@ -216,8 +214,6 @@ protected:
int num_packets_processed;
PacketProfiler* pkt_profiler;
TunnelHandler *tunnel_handler;
// We may use independent timer managers for different sets of related
// activity. The managers are identified by an unique tag.
typedef std::map<TimerMgr::Tag, TimerMgr*> TimerMgrMap;