fix bug where extracting nix with exact number of remaining bits as a full vector entry failed
authorJosh Pelkey <jpelkey@ece.gatech.edu>
Wed Aug 05 11:28:01 2009 -0400 (6 months ago)
changeset 46743036706cf681
parent 4673 10b81f4b6538
child 4716 a1b6bd8eb43a
fix bug where extracting nix with exact number of remaining bits as a full vector entry failed
src/common/nix-vector.cc
src/common/packet.cc
src/common/packet.h
     1.1 --- a/src/common/nix-vector.cc	Wed Jul 29 13:51:06 2009 -0400
     1.2 +++ b/src/common/nix-vector.cc	Wed Aug 05 11:28:01 2009 -0400
     1.3 @@ -174,15 +174,13 @@
     1.4  
     1.5    if (numberOfBits > totalRemainingBits)
     1.6    {
     1.7 -    std::cout << "You've tried to extract too many bits of the Nix-vector, " << this << ". NumberBits: " 
     1.8 -                     << numberOfBits << " Remaining: " << totalRemainingBits << std::endl;
     1.9 -    exit (1);
    1.10 +    NS_FATAL_ERROR ("You've tried to extract too many bits of the Nix-vector, " << this << ". NumberBits: " 
    1.11 +                     << numberOfBits << " Remaining: " << totalRemainingBits);
    1.12    }
    1.13  
    1.14    if (numberOfBits <= 0)
    1.15    {
    1.16 -    std::cout << "You've specified a number of bits for Nix-vector <= 0!" << std::endl;
    1.17 -    exit (1);
    1.18 +    NS_FATAL_ERROR ("You've specified a number of bits for Nix-vector <= 0!");
    1.19    }
    1.20  
    1.21    // First determine where in the NixVector 
    1.22 @@ -195,7 +193,7 @@
    1.23    // span multiple vector entries
    1.24    if (vectorIndex > 0) // we could span more than one
    1.25    {
    1.26 -    if (numberOfBits > (totalRemainingBits % 32)) // we do span more than one
    1.27 +    if ((numberOfBits-1) > ((totalRemainingBits-1) % 32)) // we do span more than one
    1.28      {
    1.29  
    1.30        extractedBits = m_nixVector.at (vectorIndex) << (32 - (totalRemainingBits % 32));
     2.1 --- a/src/common/packet.cc	Wed Jul 29 13:51:06 2009 -0400
     2.2 +++ b/src/common/packet.cc	Wed Aug 05 11:28:01 2009 -0400
     2.3 @@ -140,6 +140,7 @@
     2.4      m_metadata (m_globalUid, 0),
     2.5      m_refCount (1)
     2.6  {
     2.7 +  m_nixVector = 0;
     2.8    m_globalUid++;
     2.9  }
    2.10  
    2.11 @@ -148,8 +149,8 @@
    2.12      m_byteTagList (o.m_byteTagList),
    2.13      m_packetTagList (o.m_packetTagList),
    2.14      m_metadata (o.m_metadata),
    2.15 -    m_refCount (1),
    2.16 -    m_nixVector (o.m_nixVector)
    2.17 +    m_nixVector (o.m_nixVector),
    2.18 +    m_refCount (1)
    2.19  {}
    2.20  
    2.21  Packet &
    2.22 @@ -174,6 +175,7 @@
    2.23      m_metadata (m_globalUid, size),
    2.24      m_refCount (1)
    2.25  {
    2.26 +  m_nixVector = 0;
    2.27    m_globalUid++;
    2.28  }
    2.29  Packet::Packet (uint8_t const*buffer, uint32_t size)
    2.30 @@ -183,6 +185,7 @@
    2.31      m_metadata (m_globalUid, size),
    2.32      m_refCount (1)
    2.33  {
    2.34 +  m_nixVector = 0;
    2.35    m_globalUid++;
    2.36    m_buffer.AddAtStart (size);
    2.37    Buffer::Iterator i = m_buffer.Begin ();
    2.38 @@ -196,7 +199,9 @@
    2.39      m_packetTagList (packetTagList),
    2.40      m_metadata (metadata),
    2.41      m_refCount (1)
    2.42 -{}
    2.43 +{
    2.44 +  m_nixVector = 0;
    2.45 +}
    2.46  
    2.47  Ptr<Packet>
    2.48  Packet::CreateFragment (uint32_t start, uint32_t length) const
     3.1 --- a/src/common/packet.h	Wed Jul 29 13:51:06 2009 -0400
     3.2 +++ b/src/common/packet.h	Wed Aug 05 11:28:01 2009 -0400
     3.3 @@ -532,9 +532,9 @@
     3.4    ByteTagList m_byteTagList;
     3.5    PacketTagList m_packetTagList;
     3.6    PacketMetadata m_metadata;
     3.7 +  Ptr<NixVector> m_nixVector;
     3.8    mutable uint32_t m_refCount;
     3.9    static uint32_t m_globalUid;
    3.10 -  Ptr<NixVector> m_nixVector;
    3.11  };
    3.12  
    3.13  std::ostream& operator<< (std::ostream& os, const Packet &packet);