#include <IPv6ErrorHandling.h>
Protected Member Functions | |
| virtual void | initialize () |
| virtual void | handleMessage (cMessage *msg) |
Private Member Functions | |
| void | displayType1Msg (int code) |
| void | displayType2Msg () |
| void | displayType3Msg (int code) |
| void | displayType4Msg (int code) |
|
|
00087 {
00088 EV << "Destination Unreachable: ";
00089 if (code == 0)
00090 EV << "no route to destination\n";
00091 else if (code == 1)
00092 EV << "communication with destination administratively prohibited\n";
00093 else if (code == 3)
00094 EV << "address unreachable\n";
00095 else if (code == 4)
00096 EV << "port unreachable\n";
00097 else
00098 EV << "Unknown Error Code!\n";
00099 }
|
|
|
00102 {
00103 EV << "Packet Too Big" << endl;
00104 //Code is always 0 and ignored by the receiver.
00105 }
|
|
|
00108 {
00109 EV << "Time Exceeded Message: ";
00110 if (code == 0)
00111 EV << "hop limit exceeded in transit\n";
00112 else if (code == 1)
00113 EV << "fragment reassembly time exceeded\n";
00114 else
00115 EV << "Unknown Error Code!\n";
00116 }
|
|
|
00119 {
00120 EV << "Parameter Problem Message: ";
00121 if (code == 0)
00122 EV << "erroneous header field encountered\n";
00123 else if (code == 1)
00124 EV << "unrecognized Next Header type encountered\n";
00125 else if (code == 2)
00126 EV << "unrecognized IPv6 option encountered\n";
00127 else
00128 EV << "Unknown Error Code!\n";
00129 }
|
|
|
00037 {
00038 ICMPv6Message *icmpv6Msg = check_and_cast<ICMPv6Message *>(msg);
00039 IPv6Datagram *d = check_and_cast<IPv6Datagram *>(msg->encapsulatedMsg());
00040 int type = (int)icmpv6Msg->type();
00041 int code;
00042 EV << " Type: " << type;
00043 if (dynamic_cast<ICMPv6DestUnreachableMsg *>(icmpv6Msg))
00044 {
00045 ICMPv6DestUnreachableMsg *msg2 = (ICMPv6DestUnreachableMsg *)icmpv6Msg;
00046 code = msg2->code();
00047 EV << " Code: " << code;
00048 }
00049 else if (dynamic_cast<ICMPv6PacketTooBigMsg *>(icmpv6Msg))
00050 {
00051 ICMPv6PacketTooBigMsg *msg2 = (ICMPv6PacketTooBigMsg *)icmpv6Msg;
00052 code = 0;
00053 }
00054 else if (dynamic_cast<ICMPv6TimeExceededMsg *>(icmpv6Msg))
00055 {
00056 ICMPv6TimeExceededMsg *msg2 = (ICMPv6TimeExceededMsg *)icmpv6Msg;
00057 code = msg2->code();
00058 EV << " Code: " << code;
00059 }
00060 else if (dynamic_cast<ICMPv6ParamProblemMsg *>(icmpv6Msg))
00061 {
00062 ICMPv6ParamProblemMsg *msg2 = (ICMPv6ParamProblemMsg *)icmpv6Msg;
00063 code = msg2->code();
00064 EV << " Code: " << code;
00065 }
00066
00067 EV << " Byte length: " << d->byteLength()
00068 << " Src: " << d->srcAddress()
00069 << " Dest: " << d->destAddress()
00070 << " Time: " << simTime()
00071 << "\n";
00072
00073 if (type == 1)
00074 displayType1Msg(code);
00075 else if (type == 2)
00076 displayType2Msg();
00077 else if (type == 3)
00078 displayType3Msg(code);
00079 else if (type == 4)
00080 displayType4Msg(code);
00081 else
00082 EV << "Unknown Error Type!" << endl;
00083 delete icmpv6Msg;
00084 }
|
|
|
00033 {
00034 }
|
1.4.1