DESERT 3.5.1
Loading...
Searching...
No Matches
marptable.h
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
30// This module has only slightly modification as respect to the mll module
31// contained in Miracle,
32// released under the same BSD copyright and implemented by
33// Erik Andersson, Emil Ljungdahl, Lars-Olof Moilanen (Karlstad University)
34
44#ifndef UW_ARPTABLE_H
45#define UW_ARPTABLE_H
46
47#include <packet.h>
48#include <map>
49
50#ifndef EADDRNOTAVAIL
51#define EADDRNOTAVAIL 125
52#endif /* !EADDRNOTAVAIL */
53
54#ifndef DROP_IFQ_ARP_FULL
55#define DROP_IFQ_ARP_FULL "ARP"
56#endif
57
58#define ARP_MAX_REQUEST_COUNT 3
59
64{
65public:
70 UWARPEntry(nsaddr_t dst)
71 : up_(0)
72 , macaddr_(0)
73 , ipaddr_(dst)
74 , hold_(0)
75 , count_(0)
76 {
77 }
78
80 int up_;
82 nsaddr_t ipaddr_;
86 Packet *hold_;
88 int count_;
89};
90
95{
96public:
98 UWARPTable();
100 ~UWARPTable();
101
106 void addEntry(UWARPEntry *entry);
107
113 UWARPEntry *lookup(nsaddr_t addr);
114
118 void clear();
119
120private:
122 map<nsaddr_t, UWARPEntry *> table_;
123};
124
125#endif /* ARPTABLE_H */
ARP table entry.
Definition marptable.h:64
UWARPEntry(nsaddr_t dst)
Constructor.
Definition marptable.h:70
int macaddr_
mac address
Definition marptable.h:84
Packet * hold_
cached packet
Definition marptable.h:86
nsaddr_t ipaddr_
network address
Definition marptable.h:82
int up_
Is address up?
Definition marptable.h:80
int count_
Number of tries.
Definition marptable.h:88
ARP table.
Definition marptable.h:95
map< nsaddr_t, UWARPEntry * > table_
The ARP table as an associative array.
Definition marptable.h:122
UWARPTable()
Constructor.
Definition marptable.cpp:46
~UWARPTable()
Desctructor.
Definition marptable.cpp:50
UWARPEntry * lookup(nsaddr_t addr)
Lookup entry in table.
Definition marptable.cpp:61
void clear()
Remove all entries in table.
Definition marptable.cpp:72
void addEntry(UWARPEntry *entry)
Add entry to ARP table.
Definition marptable.cpp:55