00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <packet.h>
00031 #include <ip.h>
00032
00033 #include<packettracer.h>
00034 #include<sap.h>
00035
00036 class RoutingTracer : public Tracer
00037 {
00038 public:
00039 RoutingTracer();
00040 protected:
00041 void format(Packet *p, SAP* sap);
00042 };
00043
00044
00045
00046
00047 RoutingTracer::RoutingTracer() : Tracer(3)
00048 {
00049 }
00050
00051 void RoutingTracer::format(Packet *p, SAP *sap)
00052 {
00053 hdr_cmn *ch = hdr_cmn::access(p);
00054 hdr_ip *iph = hdr_ip::access(p);
00055
00056 writeTrace(sap, " %d.%d.%d.%d --> %d.%d.%d.%d SRC %d.%d.%d.%d:%d DST %d.%d.%d.%d:%d",
00057 (ch->prev_hop_ & 0xff000000)>>24,
00058 (ch->prev_hop_ & 0x00ff0000)>>16,
00059 (ch->prev_hop_ & 0x0000ff00)>>8,
00060 (ch->prev_hop_ & 0x000000ff),
00061 (ch->next_hop_ & 0xff000000)>>24,
00062 (ch->next_hop_ & 0x00ff0000)>>16,
00063 (ch->next_hop_ & 0x0000ff00)>>8,
00064 (ch->next_hop_ & 0x000000ff),
00065 (iph->saddr() & 0xff000000)>>24,
00066 (iph->saddr() & 0x00ff0000)>>16,
00067 (iph->saddr() & 0x0000ff00)>>8,
00068 (iph->saddr() & 0x000000ff),
00069 iph->sport(),
00070 (iph->daddr() & 0xff000000)>>24,
00071 (iph->daddr() & 0x00ff0000)>>16,
00072 (iph->daddr() & 0x0000ff00)>>8,
00073 (iph->daddr() & 0x000000ff),
00074 iph->dport());
00075
00076 }
00077
00078 extern "C" int Routingtracer_Init()
00079 {
00080 SAP::addTracer(new RoutingTracer);
00081 return 0;
00082 }
00083 extern "C" int Cygroutingtracer_Init()
00084 {
00085 Routingtracer_Init();
00086 }
00087
00088