Click
Loading...
Searching...
No Matches
iptable.hh
1// -*- c-basic-offset: 2; related-file-name: "../../lib/iptable.cc" -*-
2#ifndef CLICK_IPTABLE_HH
3#define CLICK_IPTABLE_HH
4#include <click/glue.hh>
5#include <click/vector.hh>
6#include <click/ipaddress.hh>
7CLICK_DECLS
8
9// IP routing table.
10// Lookup by longest prefix.
11// Each entry contains a gateway and an output index.
12
13class IPTable { public:
14
15 IPTable();
16 ~IPTable();
17
18 bool lookup(IPAddress dst, IPAddress &gw, int &index) const;
19
20 void add(IPAddress dst, IPAddress mask, IPAddress gw, int index);
21 void del(IPAddress dst, IPAddress mask);
22 void clear() { _v.clear(); }
23 inline int size() { return _v.size(); }
24
25 private:
26
27 struct Entry {
28 IPAddress dst;
29 IPAddress mask;
30 IPAddress gw;
31 int index;
32 bool valid() const { return mask || !dst; }
33 };
35
36};
37
38CLICK_ENDDECLS
39#endif
An IPv4 address.
Definition ipaddress.hh:16
Vector template.
Definition vector.hh:111
The IPAddress type for IPv4 addresses.
Click's vector container template.