Skip to content

Commit 5db7070

Browse files
committed
IPv6: tests: fix unit tests after the extension-header and mipv6-rename refactors
Two IPv6 unit tests failed to compile against the refactored code: - IPv6_serializers.test included xmipv6/MobilityHeader_m.h; the directory was renamed to mipv6/. Updated the include path. - IPv6FragBuf_1.test called Ipv6Header::addExtensionHeader(), removed when extension headers moved to the chunk-based architecture. Rebuilt the fragment packet the way Ipv6::fragmentAndSend does: base header with protocolId=IP_PROT_IPv6EXT_FRAGMENT, a standalone Ipv6FragmentHeader chunk (nextHeaderProtocol=IP_PROT_UDP), and the payload, all inserted into the packet. Test-only change; production code was already migrated. Full unit suite: 81 PASS.
1 parent 1b5ea31 commit 5db7070

2 files changed

Lines changed: 17 additions & 12 deletions

File tree

tests/unit/IPv6FragBuf_1.test

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,28 @@ typedef std::vector<Frag> FragVector;
2929
bool insertFragment(Ipv6FragBuf& fragbuf, Frag& f)
3030
{
3131
Packet *pk = new Packet("Ipv6");
32-
const auto& frag = makeShared<Ipv6Header>();
33-
frag->setSrcAddress(Ipv6Address(0,0,0,f.src));
34-
frag->setDestAddress(Ipv6Address(0,0,0,f.dest));
35-
Ipv6FragmentHeader *fh = new Ipv6FragmentHeader();
32+
const auto& ipv6Header = makeShared<Ipv6Header>();
33+
ipv6Header->setSrcAddress(Ipv6Address(0,0,0,f.src));
34+
ipv6Header->setDestAddress(Ipv6Address(0,0,0,f.dest));
35+
ipv6Header->setChunkLength(B(40));
36+
ipv6Header->setProtocolId(IP_PROT_IPv6EXT_FRAGMENT); // base header points to the fragment header
37+
ipv6Header->setPayloadLength(B(8 + f.bytes));
38+
39+
// In the chunk-based architecture the fragment header is a separate
40+
// extension-header chunk inserted after the base header, not a member of Ipv6Header.
41+
const auto& fh = makeShared<Ipv6FragmentHeader>();
3642
fh->setIdentification(f.id);
3743
fh->setFragmentOffset(f.offset);
3844
fh->setMoreFragments(!f.islast);
39-
frag->addExtensionHeader(fh);
40-
// frag->setHeaderLength(40 + 8);
41-
frag->setChunkLength(B(40 + 8));
42-
frag->setPayloadLength(B(8 + f.bytes));
45+
fh->setNextHeaderProtocol(IP_PROT_UDP); // protocol of the fragmented payload
46+
4347
const auto& payload = makeShared<ByteCountChunk>(B(f.bytes));
44-
pk->insertAtFront(payload);
45-
pk->insertAtFront(frag);
48+
pk->insertAtBack(ipv6Header);
49+
pk->insertAtBack(fh);
50+
pk->insertAtBack(payload);
4651
ASSERT(pk->getByteLength() == 40+8+f.bytes);
4752

48-
Packet *pk2 = fragbuf.addFragment(pk, frag.get(), fh, 0);
53+
Packet *pk2 = fragbuf.addFragment(pk, ipv6Header.get(), fh.get(), 0);
4954
delete pk2;
5055
return pk2!=NULL;
5156
}

tests/unit/IPv6_serializers.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Ipv6Redirect, MobilityHeader subtypes, and Destination Options with HomeAddressO
99
#include "inet/networklayer/icmpv6/Ipv6NdMessage_m.h"
1010
#include "inet/networklayer/ipv6/Ipv6Header.h"
1111
#include "inet/networklayer/ipv6/Ipv6ExtensionHeaders_m.h"
12-
#include "inet/networklayer/xmipv6/MobilityHeader_m.h"
12+
#include "inet/networklayer/mipv6/MobilityHeader_m.h"
1313

1414
using namespace inet;
1515

0 commit comments

Comments
 (0)