Slight update of packet format: adding overall packet length to the
common header
diff --git a/docs/source/ndnsim-packet-formats.rst b/docs/source/ndnsim-packet-formats.rst
index a694721..cde727b 100644
--- a/docs/source/ndnsim-packet-formats.rst
+++ b/docs/source/ndnsim-packet-formats.rst
@@ -27,13 +27,14 @@
 
 	Packet ::= Version 
 		   PacketType
+                   Length
 		   (Interest | ContentObject)
 
-        0                   1             
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |    Version    |   PacketType  |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+        |    Version    |   PacketType  |            Length             |
+        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
 For ccnb-encoding compatibility, ``Version`` / ``PacketType`` has two reserved values to denote ccnb-encoded packet:
 
diff --git a/model/ndn-content-object.cc b/model/ndn-content-object.cc
index d9926ef..052cd4a 100644
--- a/model/ndn-content-object.cc
+++ b/model/ndn-content-object.cc
@@ -114,7 +114,8 @@
 uint32_t
 ContentObject::GetSerializedSize () const
 {
-  uint32_t size = 2 + ((2 + 2) + (m_name->GetSerializedSize ()) + (2 + 2 + 4 + 2 + 2 + (2 + 0)));
+  uint32_t size = 1 + 1 + 2 +
+    ((2 + 2) + (m_name->GetSerializedSize ()) + (2 + 2 + 4 + 2 + 2 + (2 + 0)));
   if (m_signature != 0)
     size += 4;
   
@@ -127,7 +128,8 @@
 {
   start.WriteU8 (0x80); // version
   start.WriteU8 (0x01); // packet type
-
+  start.WriteU16 (GetSerializedSize () - 4); // length
+  
   if (m_signature != 0)
     {
       start.WriteU16 (6); // signature length
@@ -169,6 +171,8 @@
   if (i.ReadU8 () != 0x01)
     throw new ContentObjectException ();
 
+  i.ReadU16 (); // length
+
   uint32_t signatureLength = i.ReadU16 ();
   if (signatureLength == 6)
     {
diff --git a/model/ndn-interest.cc b/model/ndn-interest.cc
index fc5b24f..f0a4f29 100644
--- a/model/ndn-interest.cc
+++ b/model/ndn-interest.cc
@@ -146,7 +146,12 @@
 uint32_t
 Interest::GetSerializedSize (void) const
 {
-  size_t size = 2 + (1 + 4 + 2 + 1 + (m_name->GetSerializedSize ()) + (2 + 0) + (2 + 0));
+  size_t size =
+    1/*version*/ + 1 /*type*/ + 2/*length*/ +
+    (4/*nonce*/ + 1/*scope*/ + 1/*nack type*/ + 2/*timestamp*/ +
+     (m_name->GetSerializedSize ()) +
+     (2 + 0)/* selectors */ +
+     (2 + 0)/* options */);
   NS_LOG_INFO ("Serialize size = " << size);
 
   return size;
@@ -158,6 +163,8 @@
   start.WriteU8 (0x80); // version
   start.WriteU8 (0x00); // packet type
 
+  start.WriteU16 (GetSerializedSize () - 4);
+
   start.WriteU32 (m_nonce);
   start.WriteU8 (m_scope);
   start.WriteU8 (m_nackType);
@@ -186,6 +193,8 @@
   if (i.ReadU8 () != 0x00)
     throw new InterestException ();
 
+  i.ReadU16 (); // length, don't need it right now
+  
   m_nonce = i.ReadU32 ();
   m_scope = i.ReadU8 ();
   m_nackType = i.ReadU8 ();