DESERT 3.5.1
Loading...
Searching...
No Matches
uw-mac-DACAP-tracer.cpp
Go to the documentation of this file.
1//
2// Copyright (c) 2017 Regents of the SIGNET lab, University of Padova.
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11// notice, this list of conditions and the following disclaimer in the
12// documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the University of Padova (SIGNET lab) nor the
14// names of its contributors may be used to endorse or promote products
15// derived from this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28//
29
39#include "uw-mac-DACAP-alter.h"
40#include <mac.h>
41
42enum { RTS_PKT = 3, CTS_PKT = 4, WRN_PKT = 5, DATA_PKT = 6, ACK_PKT = 7 };
43
47class DACAPTracer : public Tracer
48{
49public:
54
55protected:
62 void format(Packet *p, SAP *sap);
68 char *printType(int type);
69};
70
72 : Tracer(4)
73{
74}
75
76void
77DACAPTracer::format(Packet *p, SAP *sap)
78{
79 hdr_cmn *ch = hdr_cmn::access(p);
80
81 if (ch->ptype() != PT_DACAP)
82 return;
83
84 hdr_dacap *dacaph = HDR_DACAP(p);
85 hdr_mac *mach = HDR_MAC(p);
86
87 writeTrace(sap,
88 " MACSRC=%d MACDST=%d SN=%d TS=%f TP=%s SZ=%d",
89 mach->macSA(),
90 mach->macDA(),
91 dacaph->sn,
92 dacaph->ts,
93 printType(dacaph->dacap_type),
94 ch->size());
95}
96
97extern "C" int
99{
100 SAP::addTracer(new DACAPTracer);
101 return 0;
102}
103extern "C" int
108
109char *
111{
112 if (type == RTS_PKT)
113 return "RTS";
114 else if (type == CTS_PKT)
115 return "CTS";
116 else if (type == WRN_PKT)
117 return "WRN";
118 else if (type == ACK_PKT)
119 return "ACK";
120 else if (type == DATA_PKT)
121 return "DAT";
122 else
123 return "ERR";
124}
DACAP Tracer class.
DACAPTracer()
Constructor of DACAPTracer class.
char * printType(int type)
Print the type of packet to trace.
void format(Packet *p, SAP *sap)
Format the output of the trace.
Definition of the header of DACAP packets.
int sn
sequence number of this packet
int dacap_type
sequence number of this packet
double ts
packet timestamp, i.e., its generation time)
Provides the DACAP Class header description.
#define HDR_DACAP(P)
int Cyguwmacdacaptracer_Init()
int Uwmacdacaptracer_Init()