diff --git a/include/emane/downstreampacket.h b/include/emane/downstreampacket.h --- a/include/emane/downstreampacket.h +++ b/include/emane/downstreampacket.h @@ -99,14 +99,14 @@ namespace EMANE void prepend(const void * buf, size_t size); /** - * Prepends an unsigned 16 bit length value to the beginning of the packet. This + * Prepends an unsigned 32 bit length value to the beginning of the packet. This * method is used in conjunction with prefix length framing. * - * @param u16Length value to be prepended + * @param u32Length value to be prepended * * @note Value prepended in network byte order */ - void prependLengthPrefixFraming(std::uint16_t u16Length); + void prependLengthPrefixFraming(std::uint32_t u32Length); /** * Gets a vectored IO representation of the packet. diff --git a/include/emane/upstreampacket.h b/include/emane/upstreampacket.h --- a/include/emane/upstreampacket.h +++ b/include/emane/upstreampacket.h @@ -110,12 +110,12 @@ namespace EMANE /** - * Removes 2 bytes for the beginning of the packet and returns them - * as an unsigned 16-bit integer in host byte order. + * Removes 4 bytes for the beginning of the packet and returns them + * as an unsigned 32-bit integer in host byte order. * * @return The prefixed length value */ - std::uint16_t stripLengthPrefixFraming(); + std::uint32_t stripLengthPrefixFraming(); /** * Gets a pointer to the internal buffer holding the message diff --git a/src/libemane/commonmacheader.cc b/src/libemane/commonmacheader.cc --- a/src/libemane/commonmacheader.cc +++ b/src/libemane/commonmacheader.cc @@ -62,13 +62,13 @@ EMANE::CommonMACHeader::CommonMACHeader(UpstreamPacket & pkt) { if(pkt.length() >= sizeof(decltype(pkt.stripLengthPrefixFraming()))) { - std::uint16_t u16HeaderLength{pkt.stripLengthPrefixFraming()}; + std::uint32_t u32HeaderLength{pkt.stripLengthPrefixFraming()}; - if(pkt.length() >= u16HeaderLength) + if(pkt.length() >= u32HeaderLength) { EMANEMessage::CommonMACHeader msg; - if(!msg.ParseFromArray(pkt.get(),u16HeaderLength)) + if(!msg.ParseFromArray(pkt.get(),u32HeaderLength)) { throw SerializationException("unable to deserialize CommonMACHeader"); } @@ -83,7 +83,7 @@ EMANE::CommonMACHeader::CommonMACHeader(UpstreamPacket & pkt) } // strip common mac header from pkt - pkt.strip(u16HeaderLength); + pkt.strip(u32HeaderLength); } else { diff --git a/src/libemane/commonphyheader.cc b/src/libemane/commonphyheader.cc --- a/src/libemane/commonphyheader.cc +++ b/src/libemane/commonphyheader.cc @@ -108,13 +108,13 @@ EMANE::CommonPHYHeader::CommonPHYHeader(UpstreamPacket & pkt) { if(pkt.length() >= sizeof(decltype(pkt.stripLengthPrefixFraming()))) { - std::uint16_t u16HeaderLength{pkt.stripLengthPrefixFraming()}; + std::uint32_t u32HeaderLength{pkt.stripLengthPrefixFraming()}; - if(pkt.length() >= u16HeaderLength) + if(pkt.length() >= u32HeaderLength) { EMANEMessage::CommonPHYHeader msg; - if(!msg.ParseFromArray(pkt.get(),u16HeaderLength)) + if(!msg.ParseFromArray(pkt.get(),u32HeaderLength)) { throw SerializationException("unable to deserialize CommonPHYHeader"); } @@ -174,7 +174,7 @@ EMANE::CommonPHYHeader::CommonPHYHeader(UpstreamPacket & pkt) } // strip common phy header from pkt - pkt.strip(u16HeaderLength); + pkt.strip(u32HeaderLength); } else { diff --git a/src/libemane/downstreampacket.cc b/src/libemane/downstreampacket.cc --- a/src/libemane/downstreampacket.cc +++ b/src/libemane/downstreampacket.cc @@ -65,15 +65,15 @@ public: totalLengthBytes_ += size; } - void prependLengthPrefixFraming(std::uint16_t u16Length) + void prependLengthPrefixFraming(std::uint32_t u32Length) { - std::uint16_t u16LengthNet{HTONS(u16Length)}; + std::uint32_t u32LengthNet{HTONL(u32Length)}; - auto c = reinterpret_cast(&u16LengthNet); + auto c = reinterpret_cast(&u32LengthNet); - segments_.emplace_front(&c[0],&c[sizeof(u16Length)]); + segments_.emplace_front(&c[0],&c[sizeof(u32LengthNet)]); - totalLengthBytes_ += sizeof(u16Length); + totalLengthBytes_ += sizeof(u32LengthNet); } size_t length() const @@ -165,9 +165,9 @@ void EMANE::DownstreamPacket::prepend(const void * buf, size_t size) pImpl_->prepend(buf,size); } -void EMANE::DownstreamPacket::prependLengthPrefixFraming(std::uint16_t u16Length) +void EMANE::DownstreamPacket::prependLengthPrefixFraming(std::uint32_t u32Length) { - pImpl_->prependLengthPrefixFraming(u16Length); + pImpl_->prependLengthPrefixFraming(u32Length); } diff --git a/src/libemane/upstreampacket.cc b/src/libemane/upstreampacket.cc --- a/src/libemane/upstreampacket.cc +++ b/src/libemane/upstreampacket.cc @@ -83,19 +83,19 @@ public: } - std::uint16_t stripLengthPrefixFraming() + std::uint32_t stripLengthPrefixFraming() { - std::uint16_t u16LengthPrefixFraming{}; + std::uint32_t u32LengthPrefixFraming{}; - if(head_ + sizeof(uint16_t) < pShared_->packetSegment_.size()) + if(head_ + sizeof(uint32_t) <= pShared_->packetSegment_.size()) { - u16LengthPrefixFraming = - NTOHS(*reinterpret_cast(&pShared_->packetSegment_[head_])); + u32LengthPrefixFraming = + NTOHL(*reinterpret_cast(&pShared_->packetSegment_[head_])); - head_ += sizeof(uint16_t); + head_ += sizeof(uint32_t); } - return u16LengthPrefixFraming; + return u32LengthPrefixFraming; } @@ -167,7 +167,7 @@ size_t EMANE::UpstreamPacket::strip(size_t size) } -std::uint16_t EMANE::UpstreamPacket::stripLengthPrefixFraming() +std::uint32_t EMANE::UpstreamPacket::stripLengthPrefixFraming() { return pImpl_->stripLengthPrefixFraming(); }