Hi,
Does anyone know how to make :
1) sendpacket() function that in FULLTCP.cc agent send only SYN packet.
2) recv() function only detect and drop incoming ACK packet
I have tried but I couldn't !!!!!! any suggestion
here is the sendpacket in fulltcp.cc
================================
void
FullTcpAgent::sendpacket(int seqno, int ackno, int pflags, int datalen, int
reason)
{
Packet* p = allocpkt();
hdr_tcp *tcph = hdr_tcp::access(p);
hdr_flags *fh = hdr_flags::access(p);
/* build basic header w/options */
tcph->seqno() = seqno;
tcph->ackno() = ackno;
tcph->flags() = pflags;
tcph->reason() |= reason; // make tcph->reason look like ns1
pkt->flags?
tcph->sa_length() = 0; // may be increased by build_options()
tcph->hlen() = tcpip_base_hdr_size_;
tcph->hlen() += build_options(tcph);
/*
* Explicit Congestion Notification (ECN) related:
* Bits in header:
* ECT (EC Capable Transport),
* ECNECHO (ECHO of ECN Notification generated at router),
* CWR (Congestion Window Reduced from RFC 2481)
* States in TCP:
* ecn_: I am supposed to do ECN if my peer does
* ect_: I am doing ECN (ecn_ should be T and peer does ECN)
*/
// set ect on data packets (not syn or ack packets)
if ( datalen > 0 && ecn_ ){
fh->ect() = ect_; // on after mutual agreement on ECT
}
else {
/* Set ect() to 0. -M. Weigle 1/19/05 */
fh->ect() = 0;
}
// fill in CWR and ECE bits which don't actually sit in
// the tcp_flags but in hdr_flags
if ( pflags & TH_ECE) {
fh->ecnecho() = 1;
} else {
fh->ecnecho() = 0;
}
if ( pflags & TH_CWR ) {
fh->cong_action() = 1;
}
else {
/* Set cong_action() to 0 -M. Weigle 1/19/05 */
fh->cong_action() = 0;
}
/* actual size is data length plus header length */
hdr_cmn *ch = hdr_cmn::access(p);
ch->size() = datalen + tcph->hlen();
if (datalen <= 0)
++nackpack_;
else {
++ndatapack_;
ndatabytes_ += datalen;
last_send_time_ = now(); // time of last data
}
if (reason == REASON_TIMEOUT || reason == REASON_DUPACK || reason
== REASON_SACK) {
++nrexmitpack_;
nrexmitbytes_ += datalen;
}
last_ack_sent_ = ackno;
//if (state_ != TCPS_ESTABLISHED) {
//printf("%f(%s)[state:%s]: sending pkt ", now(), name(), statestr(state_));
//prpkt(p);
//}
send(p, 0);
return;
}
================================
--
Regards,
Mohd.