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

TCP_Rewriter.h File Reference

#include <queue>
#include <set>
#include <pcap.h>
#include "Val.h"
#include "TCP.h"
#include "Anon.h"

Include dependency graph for TCP_Rewriter.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Classes

class  PacketDumper
struct  IP_ID
struct  ltipid
class  TCP_TracePacket
class  TCP_RewriterEndpoint
class  TCP_RewriteSlot
class  TCP_Rewriter
class  TCP_SourcePacket
class  TCP_SourcePacketWriter

Defines

#define END_BY_FIN   1
#define END_BY_RST   2
#define END_BY_PEER_RST   4

Typedefs

typedef set< IP_ID, ltipidIP_IDSet

Functions

uint16 NextIP_ID (const uint32 src_addr, const uint16 id)
void schedule_flush (TCP_RewriterEndpoint *endp)
void schedule_funeral (TCP_Rewriter *rewriter)
void flush_rewriter_packet ()
TCP_Rewriterget_trace_rewriter (Val *conn_val)
TCP_Rewriterget_trace_rewriter (Connection *conn)
TCP_SourcePacketWriterget_src_pkt_writer (Connection *conn)

Variables

PacketDumpertransformed_pkt_dump
PacketDumpersource_pkt_dump
int transformed_pkt_dump_MTU


Define Documentation

#define END_BY_FIN   1
 

Definition at line 142 of file TCP_Rewriter.h.

Referenced by TCP_RewriterEndpoint::GenerateFIN(), and TCP_RewriterEndpoint::WriteData().

#define END_BY_PEER_RST   4
 

Definition at line 144 of file TCP_Rewriter.h.

Referenced by TCP_RewriterEndpoint::Reset().

#define END_BY_RST   2
 

Definition at line 143 of file TCP_Rewriter.h.

Referenced by TCP_RewriterEndpoint::Reset(), and TCP_RewriterEndpoint::WriteData().


Typedef Documentation

typedef set<IP_ID, ltipid> IP_IDSet
 

Definition at line 43 of file TCP_Rewriter.h.

Referenced by NextIP_ID().


Function Documentation

void flush_rewriter_packet  ) 
 

Definition at line 1511 of file TCP_Rewriter.cc.

References TCP_RewriterEndpoint::Conn(), TCP_Rewriter::Conn(), TCP_RewriterEndpoint::Flush(), TCP_Rewriter::Funeral(), EventMgr::HasEvents(), internal_error(), mgr, rewriter_funerals, rewriters_to_flush, and Unref().

Referenced by EventMgr::Drain().

01512         {
01513         while ( ! rewriter_funerals.empty() )
01514                 {
01515                 TCP_Rewriter* rewriter = rewriter_funerals.front();
01516                 rewriter_funerals.pop();
01517                 rewriter->Funeral();
01518                 Unref(rewriter->Conn());
01519                 }
01520 
01521         while ( ! rewriters_to_flush.empty() )
01522                 {
01523                 TCP_RewriterEndpoint* endp = rewriters_to_flush.front();
01524                 rewriters_to_flush.pop();
01525 
01526                 if ( endp )
01527                         {
01528                         endp->Flush();
01529                         Unref(endp->Conn());
01530                         }
01531                 }
01532 
01533         if ( mgr.HasEvents() )
01534                 internal_error("flushing packets generates additional events!");
01535         }

TCP_SourcePacketWriter* get_src_pkt_writer Connection conn  ) 
 

Definition at line 1612 of file TCP_Rewriter.cc.

References builtin_run_time(), CONN_TCP, Connection::ConnType(), internal_error(), and pkt_dump.

01613         {
01614         if ( ! conn || conn->ConnType() != CONN_TCP )
01615                 internal_error("connection for the trace rewriter does not exist");
01616 
01617         TCP_SourcePacketWriter* writer = ((TCP_Connection*) conn)->SourcePacketWriter();
01618         if ( ! writer )
01619                 {
01620                 if ( ! pkt_dump )
01621                         return 0;       // don't complain if no output file
01622                 else if ( ! dump_source_packets )
01623                         builtin_run_time("flag dump_source_packets is not set");
01624                 else
01625                         internal_error("source packet writer not initialized");
01626                 }
01627 
01628         return writer;
01629         }

TCP_Rewriter* get_trace_rewriter Connection conn  ) 
 

Definition at line 1543 of file TCP_Rewriter.cc.

References builtin_run_time(), CONN_TCP, Connection::ConnType(), internal_error(), Connection::RewritingTrace(), and transformed_pkt_dump.

Referenced by get_trace_rewriter().

01544         {
01545         if ( ! conn || conn->ConnType() != CONN_TCP )
01546                 internal_error("connection for the trace rewriter does not exist");
01547 
01548         TCP_Rewriter* rewriter = ((TCP_Connection*) conn)->TraceRewriter();
01549         if ( ! rewriter )
01550                 {
01551                 if ( ! transformed_pkt_dump )
01552                         return 0;       // okay if we don't have an output file
01553 
01554                 else if ( ! conn->RewritingTrace() )
01555                         builtin_run_time("flag rewriting_..._trace is not set properly");
01556 
01557                 else
01558                         internal_error("trace rewriter not initialized");
01559                 }
01560 
01561         return rewriter;
01562         }

TCP_Rewriter* get_trace_rewriter Val conn_val  ) 
 

Definition at line 1537 of file TCP_Rewriter.cc.

References get_trace_rewriter().

01538         {
01539         Connection* conn = (Connection*) conn_val->AsRecordVal()->GetOrigin();
01540         return get_trace_rewriter(conn);
01541         }

uint16 NextIP_ID const uint32  src_addr,
const uint16  id
 

Definition at line 433 of file TCP_Rewriter.cc.

References IP_ID::id, IP_ID::ip, ip_id_set, IP_IDSet, uint16, and uint32.

00434         {
00435         if ( ip_id_set == 0 )
00436                 ip_id_set = new IP_IDSet();
00437 
00438         IP_ID ipid;
00439         ipid.ip = src_addr;
00440         ipid.id = id;
00441 
00442         while ( ip_id_set->find(ipid) != ip_id_set->end() )
00443                 {
00444                 ipid.id = (ipid.id + 1) & 0xffff;
00445 
00446                 if ( ipid.id == id )
00447                         { // clear all entries of the IP
00448                         IP_ID first_id, last_id;
00449                         first_id.ip = last_id.ip = src_addr;
00450                         first_id.id = 0; last_id.id = 0xffff;
00451                         ip_id_set->erase(ip_id_set->find(first_id),
00452                                                 ip_id_set->find(last_id));
00453                         }
00454                 }
00455 
00456         ip_id_set->insert(ipid);
00457 
00458         return uint16(ipid.id & 0xffff);
00459         }

void schedule_flush TCP_RewriterEndpoint endp  ) 
 

Definition at line 1505 of file TCP_Rewriter.cc.

References TCP_RewriterEndpoint::Conn(), Ref(), and rewriters_to_flush.

Referenced by TCP_RewriterEndpoint::ScheduleFlush().

01506         {
01507         Ref(endp->Conn());
01508         rewriters_to_flush.push(endp);
01509         }

void schedule_funeral TCP_Rewriter rewriter  ) 
 

Definition at line 1499 of file TCP_Rewriter.cc.

References TCP_Rewriter::Conn(), Ref(), and rewriter_funerals.

Referenced by TCP_Rewriter::Done().

01500         {
01501         Ref(rewriter->Conn());
01502         rewriter_funerals.push(rewriter);
01503         }


Variable Documentation

PacketDumper* source_pkt_dump
 

Definition at line 395 of file TCP_Rewriter.h.

Referenced by TCP_Connection::Init(), and net_init().

PacketDumper* transformed_pkt_dump
 

Definition at line 394 of file TCP_Rewriter.h.

Referenced by get_trace_rewriter(), TCP_Connection::Init(), net_delete(), and net_init().

int transformed_pkt_dump_MTU
 

Definition at line 396 of file TCP_Rewriter.h.

Referenced by TCP_Connection::Init().


Generated on Sun Feb 22 13:26:22 2004 for bro_docs by doxygen 1.3.6