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
63
class
UWARPEntry
64
{
65
public
:
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_
;
84
int
macaddr_
;
86
Packet *
hold_
;
88
int
count_
;
89
};
90
94
class
UWARPTable
95
{
96
public
:
98
UWARPTable
();
100
~UWARPTable
();
101
106
void
addEntry
(
UWARPEntry
*entry);
107
113
UWARPEntry
*
lookup
(nsaddr_t addr);
114
118
void
clear
();
119
120
private
:
122
map<nsaddr_t, UWARPEntry *>
table_
;
123
};
124
125
#endif
/* ARPTABLE_H */
UWARPEntry
ARP table entry.
Definition
marptable.h:64
UWARPEntry::UWARPEntry
UWARPEntry(nsaddr_t dst)
Constructor.
Definition
marptable.h:70
UWARPEntry::macaddr_
int macaddr_
mac address
Definition
marptable.h:84
UWARPEntry::hold_
Packet * hold_
cached packet
Definition
marptable.h:86
UWARPEntry::ipaddr_
nsaddr_t ipaddr_
network address
Definition
marptable.h:82
UWARPEntry::up_
int up_
Is address up?
Definition
marptable.h:80
UWARPEntry::count_
int count_
Number of tries.
Definition
marptable.h:88
UWARPTable
ARP table.
Definition
marptable.h:95
UWARPTable::table_
map< nsaddr_t, UWARPEntry * > table_
The ARP table as an associative array.
Definition
marptable.h:122
UWARPTable::UWARPTable
UWARPTable()
Constructor.
Definition
marptable.cpp:46
UWARPTable::~UWARPTable
~UWARPTable()
Desctructor.
Definition
marptable.cpp:50
UWARPTable::lookup
UWARPEntry * lookup(nsaddr_t addr)
Lookup entry in table.
Definition
marptable.cpp:61
UWARPTable::clear
void clear()
Remove all entries in table.
Definition
marptable.cpp:72
UWARPTable::addEntry
void addEntry(UWARPEntry *entry)
Add entry to ARP table.
Definition
marptable.cpp:55
DESERT_Framework
DESERT
data_link
uwmll
marptable.h
Generated by
1.9.8