#include <TCPSpoof.h>
Protected Member Functions | |
void | sendToIP (TCPSegment *tcpseg, IPvXAddress src, IPvXAddress dest) |
unsigned long | initialSeqNum () |
void | sendSpoofPacket () |
virtual void | initialize () |
virtual void | handleMessage (cMessage *msg) |
void TCPSpoof::handleMessage | ( | cMessage * | msg | ) | [protected, virtual] |
00029 { 00030 if (!msg->isSelfMessage()) 00031 error("Does not process incoming messages"); 00032 00033 sendSpoofPacket(); 00034 delete msg; 00035 }
void TCPSpoof::initialize | ( | ) | [protected, virtual] |
unsigned long TCPSpoof::initialSeqNum | ( | ) | [protected] |
void TCPSpoof::sendSpoofPacket | ( | ) | [protected] |
00038 { 00039 TCPSegment *tcpseg = new TCPSegment("spoof"); 00040 00041 IPvXAddress srcAddr = IPAddressResolver().resolve(par("srcAddress")); 00042 IPvXAddress destAddr = IPAddressResolver().resolve(par("destAddress")); 00043 int srcPort = par("srcPort"); 00044 int destPort = par("destPort"); 00045 bool isSYN = par("isSYN"); 00046 unsigned long seq = par("seqNo").longValue()==-1 ? initialSeqNum() : par("seqNo").longValue(); 00047 00048 // one can customize the following according to concrete needs 00049 tcpseg->setSrcPort(srcPort); 00050 tcpseg->setDestPort(destPort); 00051 tcpseg->setByteLength(TCP_HEADER_OCTETS); 00052 tcpseg->setSequenceNo(seq); 00053 //tcpseg->setAckNo(...); 00054 tcpseg->setSynBit(isSYN); 00055 tcpseg->setWindow(16384); 00056 00057 sendToIP(tcpseg, srcAddr, destAddr); 00058 }
void TCPSpoof::sendToIP | ( | TCPSegment * | tcpseg, | |
IPvXAddress | src, | |||
IPvXAddress | dest | |||
) | [protected] |
00061 { 00062 EV << "Sending: "; 00063 //printSegmentBrief(tcpseg); 00064 00065 if (!dest.isIPv6()) 00066 { 00067 // send over IPv4 00068 IPControlInfo *controlInfo = new IPControlInfo(); 00069 controlInfo->setProtocol(IP_PROT_TCP); 00070 controlInfo->setSrcAddr(src.get4()); 00071 controlInfo->setDestAddr(dest.get4()); 00072 tcpseg->setControlInfo(controlInfo); 00073 00074 send(tcpseg,"ipv4Out"); 00075 } 00076 else 00077 { 00078 // send over IPv6 00079 IPv6ControlInfo *controlInfo = new IPv6ControlInfo(); 00080 controlInfo->setProtocol(IP_PROT_TCP); 00081 controlInfo->setSrcAddr(src.get6()); 00082 controlInfo->setDestAddr(dest.get6()); 00083 tcpseg->setControlInfo(controlInfo); 00084 00085 send(tcpseg,"ipv6Out"); 00086 } 00087 }