packets/packet.h File Reference

#include "../config.h"
#include "../engine/hlbr.h"

Go to the source code of this file.

Defines

#define MAX_IDLE_PACKETS   150
#define PACKET_TYPE_NONE   0
#define PACKET_TYPE_LINUX_RAW   1
#define PACKET_TYPE_PCAP   2
#define PACKET_TYPE_OBSD_BPF   3
#define PACKET_TYPE_OSX_BPF   4
#define PACKET_TYPE_TCPDUMP   5
#define PACKET_TYPE_SOLARIS_DLPI   6
#define PACKET_PROTO_NONE   0
#define PACKET_PROTO_IP   1
#define PACKET_PROTO_ETHERNET   2
#define MAX_KEY_LEN   128
#define INTERFACE_NONE   -1
#define INTERFACE_BROADCAST   99
#define PACKET_STATUS_IDLE   0
#define PACKET_STATUS_PENDING   1
#define PACKET_STATUS_SAVED   2
#define PACKET_STATUS_ALLOCATED   3
#define PACKET_STATUS_PROCESSING   4
#define PACKET_STATUS_BLOCKED   5
#define PACKET_ROLE_NORMAL   0
#define PACKET_ROLE_EXTERNAL   1
#define PACKET_ROLE_INTERNAL   2
#define PACKET_ROLE_HONEY   3
#define PACKET_NONE   -1

Functions

int GetPacketTypeByName (char *Name)
int GetPacketProtoByName (char *Name)
int GetPacketRoleByName (char *Name)
int OpenInterface (int InterfaceID)
int OpenInterfaces ()
int ReadPacket (int InterfaceID)
int WritePacket (int PacketSlot)
int AddPacketToPending (int PacketSlot)
int PopFromPending ()
int GetEmptyPacket ()
void ReturnEmptyPacket (int PacketSlot)
int StartInterfaceThread (int InterfaceID)
int RuleIsActive (int PacketSlot, int RuleNum)
int SetRuleInactive (int PacketSlot, int RuleNum)
int GetInterfaceByName (char *Name)
int BlockPacket (int PacketSlot)


Define Documentation

#define INTERFACE_BROADCAST   99

Definition at line 28 of file packet.h.

Referenced by HandleARPPacket(), RouteARP(), RouteBroadcast(), RouteMacFilter(), and WritePacket().

#define INTERFACE_NONE   -1

Definition at line 27 of file packet.h.

Referenced by RouteBNSAddNode().

#define MAX_IDLE_PACKETS   150

Definition at line 7 of file packet.h.

#define MAX_KEY_LEN   128

Definition at line 25 of file packet.h.

#define PACKET_NONE   -1

Definition at line 42 of file packet.h.

Referenced by PopFromPending(), ProcessPacketThread(), and SendARP().

#define PACKET_PROTO_ETHERNET   2

Definition at line 23 of file packet.h.

Referenced by DecodeEthernet(), GetPacketProtoByName(), and ParseInterface().

#define PACKET_PROTO_IP   1

Definition at line 22 of file packet.h.

#define PACKET_PROTO_NONE   0

Definition at line 21 of file packet.h.

Referenced by GetPacketProtoByName().

#define PACKET_ROLE_EXTERNAL   1

Definition at line 38 of file packet.h.

Referenced by GetPacketRoleByName().

#define PACKET_ROLE_HONEY   3

Definition at line 40 of file packet.h.

Referenced by GetPacketRoleByName().

#define PACKET_ROLE_INTERNAL   2

Definition at line 39 of file packet.h.

Referenced by GetPacketRoleByName().

#define PACKET_ROLE_NORMAL   0

Definition at line 37 of file packet.h.

Referenced by GetPacketRoleByName().

#define PACKET_STATUS_ALLOCATED   3

Definition at line 33 of file packet.h.

Referenced by GetEmptyPacket(), and ReturnEmptyPacket().

#define PACKET_STATUS_BLOCKED   5

Definition at line 35 of file packet.h.

Referenced by BlockPacket(), DropAction(), and ProcessPacket().

#define PACKET_STATUS_IDLE   0

Definition at line 30 of file packet.h.

Referenced by GetEmptyPacket(), and ReturnEmptyPacket().

#define PACKET_STATUS_PENDING   1

Definition at line 31 of file packet.h.

Referenced by AddPacketToPending(), and PopFromPending().

#define PACKET_STATUS_PROCESSING   4

Definition at line 34 of file packet.h.

Referenced by PopFromPending(), and ReturnEmptyPacket().

#define PACKET_STATUS_SAVED   2

Definition at line 32 of file packet.h.

#define PACKET_TYPE_LINUX_RAW   1

Definition at line 14 of file packet.h.

Referenced by GetPacketTypeByName(), OpenInterface(), ReadPacket(), StartInterfaceThread(), and WritePacket().

#define PACKET_TYPE_NONE   0

Definition at line 13 of file packet.h.

Referenced by GetPacketTypeByName(), and ParseInterface().

#define PACKET_TYPE_OBSD_BPF   3

Definition at line 16 of file packet.h.

Referenced by GetPacketTypeByName(), OpenInterface(), ReadPacket(), StartInterfaceThread(), and WritePacket().

#define PACKET_TYPE_OSX_BPF   4

Definition at line 17 of file packet.h.

Referenced by GetPacketTypeByName(), OpenInterface(), ReadPacket(), StartInterfaceThread(), and WritePacket().

#define PACKET_TYPE_PCAP   2

Definition at line 15 of file packet.h.

Referenced by GetPacketTypeByName().

#define PACKET_TYPE_SOLARIS_DLPI   6

Definition at line 19 of file packet.h.

Referenced by GetPacketTypeByName(), OpenInterface(), ReadPacket(), StartInterfaceThread(), and WritePacket().

#define PACKET_TYPE_TCPDUMP   5

Definition at line 18 of file packet.h.

Referenced by GetPacketTypeByName(), OpenInterface(), ReadPacket(), StartInterfaceThread(), and WritePacket().


Function Documentation

int AddPacketToPending ( int  PacketSlot  ) 

Marks a packet as 'pending' (thread safe, called from ReadPacket) Gets called every time a packet gets put on the pending list. Uses a mutex lock (to avoid problems with threads). This may be called more than once per ReadPacket request.

See also:
ReadPacket

Definition at line 334 of file packet.c.

References ADD_PACKET_1, global_vars::AllocatedCount, DEBUGPATH, Globals, hlbr_mutex_lock(), hlbr_mutex_unlock(), LastPendingSlot, PACKET_STATUS_PENDING, PacketLockID, PacketMutex, global_vars::Packets, global_vars::PendingCount, packet_rec::Status, and TRUE.

Referenced by ReadPacketTCPDump(), and RebuildPacket().

int BlockPacket ( int  PacketSlot  ) 

Marks a packet as 'blocked' (thread safe). Blocked packets can't be processed until are unblocked. Usually they're blocked by session handling functions

See also:
RemountTCPStream

Definition at line 357 of file packet.c.

References Globals, hlbr_mutex_lock(), hlbr_mutex_unlock(), PACKET_STATUS_BLOCKED, PacketLockID, PacketMutex, global_vars::Packets, POP_PACKET_1, packet_rec::Status, and TRUE.

Referenced by AssignSessionTCP().

int GetEmptyPacket (  ) 

Definition at line 412 of file packet.c.

References DEBUG, DEBUGPATH, GET_PACKET_1, Globals, hlbr_mutex_lock(), LastFreeSlot, MAX_PACKETS, NULL, PACKET_STATUS_ALLOCATED, PACKET_STATUS_IDLE, PacketLockID, PacketMutex, global_vars::Packets, packet_rec::PacketSlot, packet_rec::SaveCount, and packet_rec::Status.

Referenced by ReadPacketTCPDump(), RebuildPacket(), and SendARP().

int GetInterfaceByName ( char *  Name  ) 

Definition at line 595 of file packet.c.

References DEBUGPATH, Globals, global_vars::Interfaces, interface_rec::Name, and global_vars::NumInterfaces.

Referenced by RouteBNSAddNode().

int GetPacketProtoByName ( char *  Name  ) 

Definition at line 64 of file packet.c.

References DEBUGPATH, PACKET_PROTO_ETHERNET, and PACKET_PROTO_NONE.

Referenced by ParseInterface().

int GetPacketRoleByName ( char *  Name  ) 

Definition at line 79 of file packet.c.

References DEBUGPATH, PACKET_ROLE_EXTERNAL, PACKET_ROLE_HONEY, PACKET_ROLE_INTERNAL, and PACKET_ROLE_NORMAL.

Referenced by ParseInterface().

int GetPacketTypeByName ( char *  Name  ) 

Definition at line 38 of file packet.c.

References DEBUGPATH, PACKET_TYPE_LINUX_RAW, PACKET_TYPE_NONE, PACKET_TYPE_OBSD_BPF, PACKET_TYPE_OSX_BPF, PACKET_TYPE_PCAP, PACKET_TYPE_SOLARIS_DLPI, and PACKET_TYPE_TCPDUMP.

Referenced by ParseInterface().

int OpenInterface ( int  InterfaceID  ) 

Definition at line 99 of file packet.c.

References DEBUGPATH, FALSE, Globals, global_vars::Interfaces, interface_rec::Name, OpenInterfaceLinuxRaw(), OpenInterfaceOBSDBPF(), OpenInterfaceOSXBPF(), OpenInterfaceSolarisDLPI(), OpenInterfaceTCPDump(), PACKET_TYPE_LINUX_RAW, PACKET_TYPE_OBSD_BPF, PACKET_TYPE_OSX_BPF, PACKET_TYPE_SOLARIS_DLPI, PACKET_TYPE_TCPDUMP, and interface_rec::Type.

Referenced by OpenInterfaces().

int OpenInterfaces (  ) 

Definition at line 140 of file packet.c.

References DEBUGPATH, FALSE, Globals, global_vars::NumInterfaces, OpenInterface(), and TRUE.

Referenced by main().

int PopFromPending (  ) 

Pops a packet off the pending queue Give the caller a packet off the pending queue (marked as PACKET_STATUS_PENDING

Definition at line 384 of file packet.c.

References DEBUGPATH, Globals, hlbr_mutex_lock(), hlbr_mutex_unlock(), MAX_PACKETS, PACKET_NONE, PACKET_STATUS_PENDING, PACKET_STATUS_PROCESSING, PacketLockID, PacketMutex, global_vars::Packets, global_vars::PendingCount, POP_PACKET_1, global_vars::ProcessingCount, and packet_rec::Status.

Referenced by MainLoopPoll(), and ProcessPacketThread().

int ReadPacket ( int  InterfaceID  ) 

Definition at line 156 of file packet.c.

References DEBUGPATH, FALSE, Globals, global_vars::Interfaces, PACKET_TYPE_LINUX_RAW, PACKET_TYPE_OBSD_BPF, PACKET_TYPE_OSX_BPF, PACKET_TYPE_SOLARIS_DLPI, PACKET_TYPE_TCPDUMP, ReadPacketLinuxRaw(), ReadPacketOBSDBPF(), ReadPacketOSXBPF(), ReadPacketSolarisDLPI(), ReadPacketTCPDump(), and interface_rec::Type.

Referenced by MainLoopPoll().

void ReturnEmptyPacket ( int  PacketSlot  ) 

Definition at line 480 of file packet.c.

References global_vars::AllocatedCount, decoder_data::Data, DEBUGPATH, packet_rec::DecoderInfo, FALSE, Globals, hlbr_mutex_lock(), global_vars::IdleCount, packet_rec::LargePacket, NULL, packet_rec::NumDecoderData, PACKET_STATUS_ALLOCATED, PACKET_STATUS_IDLE, PACKET_STATUS_PROCESSING, PacketLockID, PacketMutex, global_vars::Packets, global_vars::ProcessingCount, packet_rec::RawPacket, RETURN_PACKET_1, packet_rec::SaveCount, packet_rec::Status, and packet_rec::TypicalPacket.

Referenced by DecodeIPDefrag(), FreeSaved(), ProcessPacket(), ReadPacketTCPDump(), and SendARP().

int RuleIsActive ( int  PacketSlot,
int  RuleNum 
) [inline]

Definition at line 575 of file packet.c.

References DEBUGPATH, GetBit(), Globals, global_vars::NumRules, global_vars::Packets, and packet_rec::RuleBits.

Referenced by PerformActions(), TestEthernetDst(), TestEthernetSrc(), TestEthernetType(), TestICMPCode(), TestICMPType(), TestIPCheck(), TestIPDst(), TestIPProto(), TestIPSrc(), TestIPTTL(), TestTCPContent(), TestTCPDst(), TestTCPDstOld(), TestTCPFlags(), TestTCPListContent(), TestTCPListNoCase(), TestTCPNoCase(), TestTCPPort(), TestTCPRegExp(), TestTCPSrc(), TestUDPContent(), TestUDPDst(), TestUDPNoCase(), TestUDPRegExp(), and TestUDPSrc().

int SetRuleInactive ( int  PacketSlot,
int  RuleNum 
) [inline]

Definition at line 584 of file packet.c.

References DEBUGPATH, Globals, global_vars::NumRules, global_vars::Packets, packet_rec::RuleBits, SetBit(), and TRUE.

Referenced by TestEthernetDst(), TestEthernetSrc(), TestEthernetType(), TestICMPCode(), TestICMPType(), TestIPCheck(), TestIPProto(), TestTCPDstOld(), TestTCPPort(), TestTCPRegExp(), TestTCPSrc(), TestUDPDst(), and TestUDPRegExp().

int StartInterfaceThread ( int  InterfaceID  ) 

Definition at line 534 of file packet.c.

References DEBUGPATH, FALSE, Globals, global_vars::Interfaces, LoopThreadLinuxRaw(), LoopThreadOBSDBPF(), LoopThreadOSXBPF(), LoopThreadSolarisDLPI(), LoopThreadTCPDump(), PACKET_TYPE_LINUX_RAW, PACKET_TYPE_OBSD_BPF, PACKET_TYPE_OSX_BPF, PACKET_TYPE_SOLARIS_DLPI, PACKET_TYPE_TCPDUMP, TRUE, and interface_rec::Type.

Referenced by MainLoopThreaded().

int WritePacket ( int  PacketSlot  ) 

Definition at line 194 of file packet.c.

References DEBUG, DEBUGPATH, FALSE, Globals, INTERFACE_BROADCAST, global_vars::Interfaces, interface_rec::Name, global_vars::NumInterfaces, PACKET_TYPE_LINUX_RAW, PACKET_TYPE_OBSD_BPF, PACKET_TYPE_OSX_BPF, PACKET_TYPE_SOLARIS_DLPI, PACKET_TYPE_TCPDUMP, packet_rec::PacketLen, global_vars::Packets, packet_rec::RawPacket, packet_rec::TargetInterface, interface_rec::Type, WritePacketLinuxRaw(), WritePacketOBSDBPF(), WritePacketOSXBPF(), WritePacketSolarisDLPI(), and WritePacketTCPDump().

Referenced by RouteAndSend(), and SendARP().


Generated on Sat Jul 7 23:33:11 2007 for HLBR by  doxygen 1.5.2