NS2 Notebook: Multi-channel Multi-interface Simulation in NS2 (2.29)

Back to Index


15. Modifications in tcp/tcp-sink.cc

// Manual Routing
// raniwala : messy global declarations

extern int global_flowid;
extern int flow_to_tag[];

......

TcpSink::TcpSink......
{

  ......

  // Manual Routing
  //raniwala: tracking number fo bytes received

  bind("nbytes_",&nbytes_);
  flow_id = global_flowid;

}

 

void TcpSink::ack(Packet* opkt)
{

  ......

  hdr_tcp *otcp = hdr_tcp::access(opkt);
  hdr_ip *oiph = hdr_ip::access(opkt);
  hdr_tcp *ntcp = hdr_tcp::access(npkt);

  // Manual Routing
  // raniwala- put flow-id, put invalid tag

  flow_id = hdr_cmn::access(opkt)->_flowid_;

  ......

  acker_->append_ack(hdr_cmn::access(npkt),
  ntcp, otcp->seqno());
  add_to_ack(npkt);
  // the above function is used in TcpAsymSink

  // Manual Routing
  // raniwala - put flow-id, put invalid tag

  hdr_cmn::access(npkt)->_flowid_ = flow_id;
  hdr_cmn::access(npkt)->_tag_ = -1;

 ......

}

 

void TcpSink::recv(Packet* pkt, Handler*)
{

 ......

  numToDeliver = acker_->update(th->seqno(), numBytes);

  // Manual Routing
  //raniwala: tracking number of bytes received

  nbytes_ += numBytes;

 ......

}

 

 
© Copyright 2008. All rights reserved. Powered by Free Site Templates