Bugzilla – Bug 236
Checksum calculation crashes tcp-large-transfer
Last modified: 2008-07-01 22:06:47 UTC
Hello, You find in the patch a new way for calculate checksum in IPv4, UDP and TCP layer. A CalculateIpChecksum method is declared in Buffer::Iterator. It is used by Ipv4Header, UdpHeader and TcpHeader to calculate the checksum. So no need to keep ipv4-checksum.cc,h code.
Created attachment 182 [details] Checksum patch
changeset 33d1ca2e4ba4
./waf --run="tcp-large-transfer --ns3::TcpL4Protocol::CalcChecksum=true" GDB gives: Program received signal SIGTRAP, Trace/breakpoint trap. ns3::Buffer::Iterator::ReadU8 (this=0xbfa57200) at debug/ns3/buffer.h:582 582 if (m_current < m_zeroStart) (gdb) bt #0 ns3::Buffer::Iterator::ReadU8 (this=0xbfd78b00) at debug/ns3/buffer.h:582 #1 0xb7c1e2f3 in ns3::Buffer::Iterator::ReadU16 (this=0xbfd78b00) at ../src/common/buffer.cc:872 #2 0xb7c1e34b in ns3::Buffer::Iterator::CalculateIpChecksum (this=0xbfd78b00, size=47121, initialChecksum=0) at ../src/common/buffer.cc:1121 #3 0xb7cbfb5d in ns3::TcpHeader::Deserialize (this=0xbfd78dbc, start= {m_zeroStart = 42, m_zeroEnd = 42, m_dataStart = 22, m_dataEnd = 42, m_current = 22, m_data = 0x8298750 ""}) at ../src/internet-stack/tcp-header.cc:259 #4 0xb7c4da11 in ns3::Packet::PeekHeader (this=0x82987c8, header=@0xbfd78dbc) at ../src/common/packet.cc:206 #5 0xb7ce3a28 in ns3::TcpL4Protocol::Receive (this=0x8067020, packet=@0xbfd78f18, source=@0xbfd78f14, destination=@0xbfd78f10, incomingInterface=@0xbfd78f0c) at ../src/internet-stack/tcp-l4-protocol.cc:453 #6 0xb7cc654d in ns3::Ipv4L3Protocol::ForwardUp (this=0x8066ea0, p=@0xbfd7906c, ip=@0xbfd79020, incomingInterface=@0xbfd79068) at ../src/internet-stack/ipv4-l3-protocol.cc:701 #7 0xb7ccb227 in ns3::Ipv4L3Protocol::Receive (this=0x8066ea0, device=@0xbfd790ec, packet=@0xbfd790e8, protocol=2048, from=@0xbfd7933c) at ../src/internet-stack/ipv4-l3-protocol.cc:490 #8 0xb7cd5c35 in ns3::MemPtrCallbackImpl<ns3::Ipv4L3Protocol*, void (ns3::Ipv4L3Protocol::*)(ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&), void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty>::operator() (this=0x8068698, a1=@0xbfd79138, a2=@0xbfd79134, a3=2048, a4=@0xbfd7933c) at debug/ns3/callback.h:211 #9 0xb7c80bad in ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty>::operator() (this=0x80686d8, a1=@0xbfd79198, a2=@0xbfd79194, a3=2048, a4=@0xbfd7933c) at debug/ns3/callback.h:376 #10 0xb7c7c5ef in ns3::Node::ReceiveFromDevice (this=0x8065a98, device=@0xbfd791ec, packet=@0xbfd791e8, protocol=2048, from=@0xbfd7933c) at ../src/node/node.cc:203 #11 0xb7c80cb5 in ns3::MemPtrCallbackImpl<ns3::Node*, bool (ns3::Node::*)(ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&), bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty>::---Type <return> to co
Closed per ML comments: http://mailman.isi.edu/pipermail/ns-developers/2008-July/004357.html And reopened as bug 247.