INET Framework for OMNeT++/OMNEST
inet::Icmpv6ProtocolPrinter Class Reference

#include <Icmpv6ProtocolPrinter.h>

Inheritance diagram for inet::Icmpv6ProtocolPrinter:
inet::ProtocolPrinter

Public Member Functions

virtual void print (const Ptr< const Chunk > &chunk, const Protocol *protocol, const cMessagePrinter::Options *options, Context &context) const override
 Prints the given chunk of protocol according to options into context. More...
 

Member Function Documentation

◆ print()

void inet::Icmpv6ProtocolPrinter::print ( const Ptr< const Chunk > &  chunk,
const Protocol protocol,
const cMessagePrinter::Options *  options,
Context context 
) const
overridevirtual

Prints the given chunk of protocol according to options into context.

Implements inet::ProtocolPrinter.

19 {
20  if (auto header = dynamicPtrCast<const Icmpv6Header>(chunk)) {
21  switch (header->getType()) {
22  case ICMPv6_UNSPECIFIED:
23  context.infoColumn << "ICMPv6-UNSPEC";
24  break;
26  auto header2 = CHK(dynamicPtrCast<const Icmpv6DestUnreachableMsg>(header));
27  // TODO packet contains a complete Ipv4Header and the first 8 bytes of transport header (or icmp). (protocol specified in Ipv4Header.)
28  context.infoColumn << "ICMPv6-DEST-UN code=" << header2->getCode();
29  break;
30  }
32  context.infoColumn << "ICMPv6-PK-TOO-BIG";
33  break;
35  context.infoColumn << "ICMPv6-TIME-EXCEEDED";
36  break;
38  context.infoColumn << "ICMPv6-PARAM-PROBLEM";
39  break;
40  case ICMPv6_ECHO_REQUEST: {
41  auto echoHeader = CHK(dynamicPtrCast<const Icmpv6EchoRequestMsg>(header));
42  context.infoColumn << "ICMPv6-ECHO-REQ code=" << echoHeader->getCode()
43  << " id=" << echoHeader->getIdentifier() << " seq=" << echoHeader->getSeqNumber();
44  break;
45  }
46  case ICMPv6_ECHO_REPLY: {
47  auto echoHeader = CHK(dynamicPtrCast<const Icmpv6EchoReplyMsg>(header));
48  context.infoColumn << "ICMPv6-ECHO-REPLY code=" << echoHeader->getCode()
49  << " id=" << echoHeader->getIdentifier() << " seq=" << echoHeader->getSeqNumber();
50  break;
51  }
52  case ICMPv6_MLD_QUERY:
53  context.infoColumn << "ICMPv6-MLD-QRY";
54  // TODO
55  break;
56  case ICMPv6_MLD_REPORT:
57  context.infoColumn << "ICMPv6-MLD-REPORT";
58  // TODO
59  break;
60  case ICMPv6_MLD_DONE:
61  context.infoColumn << "ICMPv6-MLD-DONE";
62  // TODO
63  break;
64  case ICMPv6_ROUTER_SOL:
65  context.infoColumn << "ICMPv6-ROUTER-SOL";
66  // TODO
67  break;
68  case ICMPv6_ROUTER_AD:
69  context.infoColumn << "ICMPv6-ROUTER-AD";
70  // TODO
71  break;
73  context.infoColumn << "ICMPv6-NEIGHBOUR-SOL";
74  // TODO
75  break;
77  context.infoColumn << "ICMPv6-NEIGHBOUR-AD";
78  // TODO
79  break;
80  case ICMPv6_REDIRECT:
81  context.infoColumn << "ICMPv6-NEIGHBOUR-REDIR";
82  break;
84  context.infoColumn << "ICMPv6-MLDv2-REPORT";
85  // TODO
86  break;
88  context.infoColumn << "ICMPv6-EXPERIMENTAL-MOBILITY";
89  // TODO
90  break;
91  }
92  }
93  else
94  context.infoColumn << "(ICMPv6) " << chunk;
95 }

The documentation for this class was generated from the following files:
CHK
#define CHK(x)
Definition: INETDefs.h:87
inet::ICMPv6_EXPERIMENTAL_MOBILITY
@ ICMPv6_EXPERIMENTAL_MOBILITY
Definition: Icmpv6Header_m.h:100
inet::ICMPv6_MLD_QUERY
@ ICMPv6_MLD_QUERY
Definition: Icmpv6Header_m.h:91
inet::ICMPv6_UNSPECIFIED
@ ICMPv6_UNSPECIFIED
Definition: Icmpv6Header_m.h:84
inet::ICMPv6_MLD_REPORT
@ ICMPv6_MLD_REPORT
Definition: Icmpv6Header_m.h:92
inet::ICMPv6_MLDv2_REPORT
@ ICMPv6_MLDv2_REPORT
Definition: Icmpv6Header_m.h:99
inet::ICMPv6_ECHO_REPLY
@ ICMPv6_ECHO_REPLY
Definition: Icmpv6Header_m.h:90
inet::ICMPv6_MLD_DONE
@ ICMPv6_MLD_DONE
Definition: Icmpv6Header_m.h:93
inet::ICMPv6_PARAMETER_PROBLEM
@ ICMPv6_PARAMETER_PROBLEM
Definition: Icmpv6Header_m.h:88
inet::ICMPv6_ROUTER_SOL
@ ICMPv6_ROUTER_SOL
Definition: Icmpv6Header_m.h:94
inet::ICMPv6_REDIRECT
@ ICMPv6_REDIRECT
Definition: Icmpv6Header_m.h:98
inet::ICMPv6_TIME_EXCEEDED
@ ICMPv6_TIME_EXCEEDED
Definition: Icmpv6Header_m.h:87
inet::ICMPv6_ROUTER_AD
@ ICMPv6_ROUTER_AD
Definition: Icmpv6Header_m.h:95
inet::ICMPv6_NEIGHBOUR_SOL
@ ICMPv6_NEIGHBOUR_SOL
Definition: Icmpv6Header_m.h:96
inet::ICMPv6_PACKET_TOO_BIG
@ ICMPv6_PACKET_TOO_BIG
Definition: Icmpv6Header_m.h:86
inet::ICMPv6_NEIGHBOUR_AD
@ ICMPv6_NEIGHBOUR_AD
Definition: Icmpv6Header_m.h:97
inet::ICMPv6_DESTINATION_UNREACHABLE
@ ICMPv6_DESTINATION_UNREACHABLE
Definition: Icmpv6Header_m.h:85
inet::ICMPv6_ECHO_REQUEST
@ ICMPv6_ECHO_REQUEST
Definition: Icmpv6Header_m.h:89