From 9bb252107e44fe91f8b6f5bee1f70fc08fdbfa65 Mon Sep 17 00:00:00 2001 From: Mike Moreton Date: Sat, 26 May 2012 06:47:56 -0700 Subject: [PATCH] bug 1396: ARP with hardware addresses longer than 6 bytes --- src/internet/model/arp-header.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/internet/model/arp-header.cc b/src/internet/model/arp-header.cc index 5dcec772c..3d08c0698 100644 --- a/src/internet/model/arp-header.cc +++ b/src/internet/model/arp-header.cc @@ -121,8 +121,13 @@ ArpHeader::Print (std::ostream &os) const uint32_t ArpHeader::GetSerializedSize (void) const { - /* this is the size of an ARP payload. */ - return 28; + NS_ASSERT((m_macSource.GetLength () == 6) || (m_macSource.GetLength () == 8)); + NS_ASSERT (m_macSource.GetLength () == m_macDest.GetLength ()); + + uint32_t length = 16; // Length minus two hardware addresses + length += m_macSource.GetLength () * 2; + + return length; } void