#include <queue>
#include <set>
#include <pcap.h>
#include "Val.h"
#include "TCP.h"
#include "Anon.h"
Include dependency graph for TCP_Rewriter.h:
This graph shows which files directly or indirectly include this file:
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, ltipid > | IP_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_Rewriter * | get_trace_rewriter (Val *conn_val) |
TCP_Rewriter * | get_trace_rewriter (Connection *conn) |
TCP_SourcePacketWriter * | get_src_pkt_writer (Connection *conn) |
Variables | |
PacketDumper * | transformed_pkt_dump |
PacketDumper * | source_pkt_dump |
int | transformed_pkt_dump_MTU |
|
Definition at line 142 of file TCP_Rewriter.h. Referenced by TCP_RewriterEndpoint::GenerateFIN(), and TCP_RewriterEndpoint::WriteData(). |
|
Definition at line 144 of file TCP_Rewriter.h. Referenced by TCP_RewriterEndpoint::Reset(). |
|
Definition at line 143 of file TCP_Rewriter.h. Referenced by TCP_RewriterEndpoint::Reset(), and TCP_RewriterEndpoint::WriteData(). |
|
Definition at line 43 of file TCP_Rewriter.h. Referenced by NextIP_ID(). |
|
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 } |
|
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 } |
|
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 } |
|
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 } |
|
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 } |
|
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 } |
|
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 } |
|
Definition at line 395 of file TCP_Rewriter.h. Referenced by TCP_Connection::Init(), and net_init(). |
|
Definition at line 394 of file TCP_Rewriter.h. Referenced by get_trace_rewriter(), TCP_Connection::Init(), net_delete(), and net_init(). |
|
Definition at line 396 of file TCP_Rewriter.h. Referenced by TCP_Connection::Init(). |