-
Notifications
You must be signed in to change notification settings - Fork 82
/
sortediplookup.hh
52 lines (35 loc) · 1.2 KB
/
sortediplookup.hh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// -*- c-basic-offset: 4 -*-
#ifndef CLICK_SORTEDIPLOOKUP_HH
#define CLICK_SORTEDIPLOOKUP_HH
#include "lineariplookup.hh"
CLICK_DECLS
/*
=c
SortedIPLookup(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
=s iproute
simple IP routing table
=deprecated LinearIPLookup
=d
SortedIPLookup is a version of LinearIPLookup that sorts the routing table.
In practice, however, it performs worse than LinearIPLookup, which itself
performs terribly, so it is deprecated.
=a LinearIPLookup */
class SortedIPLookup : public LinearIPLookup { public:
SortedIPLookup() CLICK_COLD;
~SortedIPLookup() CLICK_COLD;
const char *class_name() const override { return "SortedIPLookup"; }
int configure(Vector<String> &, ErrorHandler *) CLICK_COLD;
inline int smaction(Packet* p);
void push(int port, Packet *p) final; //If overriden, remove final and don't forget push_batch
#if HAVE_BATCH
void push_batch(int port, PacketBatch* p) final;
#endif
int add_route(const IPRoute&, bool, IPRoute*, ErrorHandler *);
int remove_route(const IPRoute&, IPRoute*, ErrorHandler *);
bool check() const;
protected:
inline int lookup_entry(IPAddress) const;
void sort_table();
};
CLICK_ENDDECLS
#endif