25 #include "ns3/ipv4-address.h"
26 #include "ns3/ipv6-address.h"
27 #include "ns3/assert.h"
178 size += (*iter)->GetSerializedSize ();
198 (*iter)->Serialize (start);
231 std::string prefix =
"";
232 for (
int i = 0; i < level; i++)
234 prefix.append (
"\t");
237 os << prefix <<
"TLV Block {" << std::endl;
238 os << prefix <<
"\tsize = " <<
Size () << std::endl;
239 os << prefix <<
"\tmembers [" << std::endl;
243 (*iter)->Print (os, level+2);
246 os << prefix <<
"\t]" << std::endl;
247 os << prefix <<
"}" << std::endl;
260 ti !=
End () && oi != other.
End ();
274 return !(*
this == other);
396 size += (*iter)->GetSerializedSize ();
416 (*iter)->Serialize (start);
449 std::string prefix =
"";
450 for (
int i = 0; i < level; i++)
452 prefix.append (
"\t");
455 os << prefix <<
"TLV Block {" << std::endl;
456 os << prefix <<
"\tsize = " <<
Size () << std::endl;
457 os << prefix <<
"\tmembers [" << std::endl;
461 (*iter)->Print (os, level+2);
464 os << prefix <<
"\t]" << std::endl;
465 os << prefix <<
"}" << std::endl;
478 it !=
End () && ot != other.
End ();
492 return !(*
this == other);
754 .AddConstructor<PbbPacket> ()
785 size += (*iter)->GetSerializedSize ();
821 (*iter)->Serialize (start);
830 uint8_t flags = start.
ReadU8 ();
842 while (!start.
IsEnd ())
861 os <<
"PbbPacket {" << std::endl;
876 (*iter)->Print (os, 1);
879 os <<
"}" << std::endl;
927 return !(*
this == other);
1292 size += (*iter)->GetSerializedSize ();
1348 (*iter)->Serialize (start);
1360 uint8_t addrlen = start.
ReadU8 ();
1365 addrlen = (addrlen & 0xf);
1373 newmsg = Create<PbbMessageIpv4> ();
1376 newmsg = Create<PbbMessageIpv6> ();
1391 uint8_t flags = start.
ReadU8 ();
1436 std::string prefix =
"";
1437 for (
int i = 0; i < level; i++)
1439 prefix.append (
"\t");
1442 os << prefix <<
"PbbMessage {" << std::endl;
1444 os << prefix <<
"\tmessage type = " << (int)
GetType () << std::endl;
1449 os << prefix <<
"\toriginator address = ";
1456 os << prefix <<
"\thop limit = " << (int)
GetHopLimit () << std::endl;
1461 os << prefix <<
"\thop count = " << (int)
GetHopCount () << std::endl;
1475 (*iter)->Print (os, level+1);
1477 os << prefix <<
"}" << std::endl;
1571 return !(*
this == other);
1990 uint8_t headlen = 0;
1992 uint8_t taillen = 0;
1998 size += 1 + headlen;
2050 uint8_t headlen = 0;
2051 uint8_t taillen = 0;
2059 start.
Write (head, headlen);
2073 start.
Write (tail, taillen);
2110 uint8_t numaddr = start.
ReadU8 ();
2111 uint8_t flags = start.
ReadU8 ();
2115 uint8_t headlen = 0;
2116 uint8_t taillen = 0;
2122 headlen = start.
ReadU8 ();
2123 start.
Read (addrtmp, headlen);
2128 taillen = start.
ReadU8 ();
2130 if (flags & AHAS_FULL_TAIL)
2136 for (
int i = 0; i < numaddr; i++)
2148 for (
int i = 0; i < numaddr; i++)
2169 std::string prefix =
"";
2170 for (
int i = 0; i < level; i++)
2172 prefix.append (
"\t");
2175 os << prefix <<
"PbbAddressBlock {" << std::endl;
2176 os << prefix <<
"\taddresses = " << std::endl;
2181 os << prefix <<
"\t\t";
2186 os << prefix <<
"\tprefixes = " << std::endl;
2191 os << prefix <<
"\t\t" << (int)(*iter) << std::endl;
2243 return !(*
this == other);
2268 uint8_t *tail, uint8_t &taillen)
const
2288 for (i = 0; i < headlen; i++)
2290 if (buflast[i] != bufcur[i])
2304 if (buflast[i] != bufcur[i])
2311 else if (headlen == 0)
2322 memcpy (head, bufcur, headlen);
2333 for (i = 0; i < taillen; i++)
2340 return i == taillen;
2637 uint8_t flags = start.
ReadU8 ();
2685 std::string prefix =
"";
2686 for (
int i = 0; i < level; i++)
2688 prefix.append (
"\t");
2691 os << prefix <<
"PbbTlv {" << std::endl;
2692 os << prefix <<
"\ttype = " << (int)
GetType () << std::endl;
2696 os << prefix <<
"\ttypeext = " << (int)
GetTypeExt () << std::endl;
2701 os << prefix <<
"\tindexStart = " << (int)
GetIndexStart () << std::endl;
2706 os << prefix <<
"\tindexStop = " << (int)
GetIndexStop () << std::endl;
2709 os << prefix <<
"\tisMultivalue = " <<
IsMultivalue () << std::endl;
2713 os << prefix <<
"\thas value; size = " <<
GetValue ().
GetSize () << std::endl;
2716 os << prefix <<
"}" << std::endl;
2767 return !(*
this == other);