Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

BPF_Program Class Reference

#include <BPF_Program.h>

Collaboration diagram for BPF_Program:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 BPF_Program ()
 ~BPF_Program ()
bool Compile (pcap_t *pcap, const char *filter, uint32 netmask, char *errbuf=0, unsigned int errbuf_len=0, bool optimize=true)
bool Compile (int snaplen, int linktype, const char *filter, uint32 netmask, char *errbuf=0, bool optimize=true)
bool IsCompiled ()
bpf_programGetProgram ()

Protected Member Functions

void FreeCode ()

Protected Attributes

bool m_compiled
bpf_program m_program

Constructor & Destructor Documentation

BPF_Program::BPF_Program  ) 
 

Definition at line 80 of file BPF_Program.cc.

References m_compiled.

00081         {
00082         m_compiled = false;
00083         }

BPF_Program::~BPF_Program  ) 
 

Definition at line 85 of file BPF_Program.cc.

References FreeCode().

00086         {
00087         FreeCode();
00088         }


Member Function Documentation

bool BPF_Program::Compile int  snaplen,
int  linktype,
const char *  filter,
uint32  netmask,
char *  errbuf = 0,
bool  optimize = true
 

Definition at line 113 of file BPF_Program.cc.

References error(), FreeCode(), m_compiled, m_program, optimize, pcap_compile_nopcap(), PCAP_ERRBUF_SIZE, safe_strncpy(), snaplen, and uint32.

00115         {
00116         FreeCode();
00117 
00118 #ifdef LIBPCAP_PCAP_COMPILE_NOPCAP_HAS_ERROR_PARAMETER
00119         char my_error[PCAP_ERRBUF_SIZE];
00120 
00121         int err = pcap_compile_nopcap(snaplen, linktype, &m_program,
00122                                      (char *) filter, optimize, netmask, error);
00123         if ( err < 0 && errbuf )
00124                 safe_strncpy(errbuf, my_errbuf, PCAP_ERRBUF_SIZE);
00125 #else
00126         int err = pcap_compile_nopcap(snaplen, linktype, &m_program,
00127                                      (char*) filter, optimize, netmask);
00128 #endif
00129         if ( err == 0 )
00130                 m_compiled = true;
00131 
00132         return err == 0;
00133         }

bool BPF_Program::Compile pcap_t pcap,
const char *  filter,
uint32  netmask,
char *  errbuf = 0,
unsigned int  errbuf_len = 0,
bool  optimize = true
 

Definition at line 90 of file BPF_Program.cc.

References FreeCode(), m_compiled, m_program, optimize, pcap_compile(), pcap_geterr(), pcap_t, safe_snprintf(), and uint32.

Referenced by PktSrc::AddSecondaryTablePrograms(), and PktSrc::PrecompileFilter().

00092         {
00093         if ( ! pcap )
00094                 return false;
00095 
00096         FreeCode();
00097 
00098         if ( pcap_compile(pcap, &m_program, (char *) filter, optimize, netmask) < 0 )
00099                 {
00100                 if ( errbuf )
00101                         safe_snprintf(errbuf, errbuf_len,
00102                                       "pcap_compile(%s): %s", filter,
00103                                       pcap_geterr(pcap));
00104 
00105                 return false;
00106                 }
00107 
00108         m_compiled = true;
00109 
00110         return true;
00111         }

void BPF_Program::FreeCode  )  [protected]
 

Definition at line 140 of file BPF_Program.cc.

References m_compiled, m_program, and pcap_freecode().

Referenced by Compile(), and ~BPF_Program().

00141         {
00142         if ( m_compiled )
00143                 {
00144 #ifdef DONT_HAVE_LIBPCAP_PCAP_FREECODE
00145                 pcap_freecode(NULL, &m_program);
00146 #else
00147                 pcap_freecode(&m_program);
00148 #endif
00149                 m_compiled = false;
00150                 }
00151         }

bpf_program * BPF_Program::GetProgram  ) 
 

Definition at line 135 of file BPF_Program.cc.

References m_compiled, and m_program.

Referenced by net_packet_match(), and PktSrc::SetFilter().

00136         {
00137         return m_compiled ? &m_program : 0;
00138         }

bool BPF_Program::IsCompiled  )  [inline]
 

Definition at line 56 of file BPF_Program.h.

References m_compiled.

00056 { return m_compiled; }


Member Data Documentation

bool BPF_Program::m_compiled [protected]
 

Definition at line 67 of file BPF_Program.h.

Referenced by BPF_Program(), Compile(), FreeCode(), GetProgram(), and IsCompiled().

struct bpf_program BPF_Program::m_program [protected]
 

Definition at line 68 of file BPF_Program.h.

Referenced by Compile(), FreeCode(), and GetProgram().


The documentation for this class was generated from the following files:
Generated on Wed Sep 14 03:07:58 2005 for bro_docs by doxygen 1.3.5