--- a/RELEASE_NOTES Mon Aug 25 19:15:36 2014 +0200
+++ b/RELEASE_NOTES Sat Aug 30 18:25:22 2014 +0200
@@ -42,6 +42,7 @@
- Bug 1960 - Wrong information on index range, about Node::GetDevice
- Bug 1961 - planetlab-tap-creator "variable set but not used"
- Bug 1963 - AODV can tag the same packet twice (and raise an assert)
+- Bug 1967 - LL Multicast is not compressed in the right way in IPHC
Known issues
------------
--- a/src/internet/model/icmpv6-l4-protocol.cc Mon Aug 25 19:15:36 2014 +0200
+++ b/src/internet/model/icmpv6-l4-protocol.cc Sat Aug 30 18:25:22 2014 +0200
@@ -1003,6 +1003,8 @@
else
{
NS_LOG_LOGIC ("Destination is Multicast, using DelayedSendMessage");
+ std::cout << Simulator::Now ().GetSeconds () << " - " << this << " - " << m_node->GetId () << " - ";
+ std::cout << src << " -> " << dst << " - " << *p << std::endl;
Simulator::Schedule (Time (MilliSeconds (m_solicitationJitter->GetValue ())), &Icmpv6L4Protocol::DelayedSendMessage, this, p, src, dst, 255);
}
}
--- a/src/sixlowpan/model/sixlowpan-net-device.cc Mon Aug 25 19:15:36 2014 +0200
+++ b/src/sixlowpan/model/sixlowpan-net-device.cc Sat Aug 30 18:25:22 2014 +0200
@@ -944,14 +944,14 @@
// The address takes the form ffXX::00XX:XXXX.
// ffXX:0000:0000:0000:0000:0000:00XX:XXXX.
else if ( (addressBuf[0] == multicastAddrCheckerBuf[0])
- && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 11) ) )
+ && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 11) == 0) )
{
iphcHeader.SetDam (SixLowPanIphc::HC_COMPR_16);
}
// The address takes the form ffXX::00XX:XXXX:XXXX.
// ffXX:0000:0000:0000:0000:00XX:XXXX:XXXX.
else if ( (addressBuf[0] == multicastAddrCheckerBuf[0])
- && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 9) ) )
+ && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 9) == 0) )
{
iphcHeader.SetDam (SixLowPanIphc::HC_COMPR_64);
}
--- a/src/sixlowpan/test/sixlowpan-fragmentation-test.cc Mon Aug 25 19:15:36 2014 +0200
+++ b/src/sixlowpan/test/sixlowpan-fragmentation-test.cc Sat Aug 30 18:25:22 2014 +0200
@@ -257,12 +257,17 @@
{
// Create topology
+ Packet::EnablePrinting ();
+
// Receiver Node
Ptr<Node> serverNode = CreateObject<Node> ();
AddInternetStack (serverNode);
Ptr<SimpleNetDevice> serverDev;
Ptr<BinaryErrorSixlowModel> serverDevErrorModel = CreateObject<BinaryErrorSixlowModel> ();
{
+ Ptr<Icmpv6L4Protocol> icmpv6l4 = serverNode->GetObject<Icmpv6L4Protocol> ();
+ icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
+
serverDev = CreateObject<SimpleNetDevice> ();
serverDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
serverDev->SetMtu (1500);
@@ -282,8 +287,6 @@
ipv6->AddAddress (netdev_idx, ipv6Addr);
ipv6->SetUp (netdev_idx);
- Ptr<Icmpv6L4Protocol> icmpv6l4 = serverNode->GetObject<Icmpv6L4Protocol> ();
- icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
}
StartServer (serverNode);
@@ -293,6 +296,9 @@
Ptr<SimpleNetDevice> clientDev;
Ptr<BinaryErrorSixlowModel> clientDevErrorModel = CreateObject<BinaryErrorSixlowModel> ();
{
+ Ptr<Icmpv6L4Protocol> icmpv6l4 = clientNode->GetObject<Icmpv6L4Protocol> ();
+ icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
+
clientDev = CreateObject<SimpleNetDevice> ();
clientDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
clientDev->SetMtu (150);
@@ -302,7 +308,7 @@
Ptr<SixLowPanNetDevice> clientSix = CreateObject<SixLowPanNetDevice> ();
clientSix->SetAttribute ("ForceEtherType", BooleanValue (true) );
- serverNode->AddDevice (clientSix);
+ clientNode->AddDevice (clientSix);
clientSix->SetNetDevice (clientDev);
Ptr<Ipv6> ipv6 = clientNode->GetObject<Ipv6> ();
@@ -311,9 +317,6 @@
Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100::2"), Ipv6Prefix (64));
ipv6->AddAddress (netdev_idx, ipv6Addr);
ipv6->SetUp (netdev_idx);
-
- Ptr<Icmpv6L4Protocol> icmpv6l4 = clientNode->GetObject<Icmpv6L4Protocol> ();
- icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
}
StartClient (clientNode);