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 <sap.h>
00031 #include <address.h>
00032 #include <mac.h>
00033 #include <mac-802_11.h>
00034 #include <packettracer.h>
00035
00036 class AltTracerMac80211 : public Tracer
00037 {
00038 public:
00039 AltTracerMac80211();
00040
00041 void format(Packet *p, SAP *sap);
00042
00043 };
00044
00045
00046 AltTracerMac80211::AltTracerMac80211() : Tracer(2) {}
00047
00048 void AltTracerMac80211::format(Packet *p, SAP *sap)
00049 {
00050 struct hdr_mac802_11 *mh = HDR_MAC802_11(p);
00051 hdr_cmn *ch = hdr_cmn::access(p);
00052
00053 u_int32_t src = ETHER_ADDR(mh->dh_ta);
00054 u_int32_t dst = ETHER_ADDR(mh->dh_ra);
00055
00056 u_int8_t type = mh->dh_fc.fc_type;
00057 u_int8_t subtype = mh->dh_fc.fc_subtype;
00058
00059 char* typestr;
00060 char* subtypestr;
00061
00062 switch(type)
00063 {
00064 case MAC_Type_Management:
00065 typestr = "MGMT";
00066 subtypestr = "";
00067 break;
00068
00069 case MAC_Type_Control:
00070 typestr = "CTRL";
00071 switch(subtype)
00072 {
00073 case MAC_Subtype_RTS:
00074 subtypestr = "RTS";
00075 break;
00076 case MAC_Subtype_CTS:
00077 subtypestr = "CTS";
00078 break;
00079 case MAC_Subtype_ACK:
00080 subtypestr = "ACK";
00081 break;
00082 default:
00083 subtypestr = NULL;
00084 break;
00085 }
00086 break;
00087
00088 case MAC_Type_Data:
00089 typestr = "DATA";
00090 switch(subtype)
00091 {
00092 case MAC_Subtype_Data:
00093 subtypestr = "";
00094 break;
00095 default:
00096 subtypestr = NULL;
00097 break;
00098 }
00099 break;
00100
00101 default:
00102 typestr = NULL;
00103 }
00104
00105
00106 if (typestr && subtypestr)
00107 {
00108 writeTrace(sap, " --MAC-- %d -> %d %s %s ",
00109 src,
00110 dst,
00111 typestr,
00112 subtypestr);
00113 }
00114 }
00115
00116
00117 extern "C" int Alttracermac_Init()
00118 {
00119
00120
00121
00122
00123
00124
00125 SAP::addTracer(new AltTracerMac80211);
00126 return 0;
00127 }
00128 extern "C" int Cygalttracermac_Init()
00129 {
00130 Alttracermac_Init();
00131 }
00132
00133