16 #include <rofl/common/crofbase.h>
17 #include <rofl/common/crofdpt.h>
18 #include <rofl/common/caddress.h>
20 #include "cfibentry.h"
64 if (cfibtable::fibtables.find(dptid) != cfibtable::fibtables.end()) {
65 delete cfibtable::fibtables[dptid];
66 cfibtable::fibtables.erase(dptid);
69 return *(cfibtable::fibtables[dptid]);
85 if (cfibtable::fibtables.find(dptid) == cfibtable::fibtables.end()) {
88 return *(cfibtable::fibtables[dptid]);
105 if (cfibtable::fibtables.find(dptid) == cfibtable::fibtables.end()) {
108 return *(cfibtable::fibtables.at(dptid));
120 if (cfibtable::fibtables.find(dptid) == cfibtable::fibtables.end()) {
123 delete cfibtable::fibtables[dptid];
124 cfibtable::fibtables.erase(dptid);
136 return (not (cfibtable::fibtables.find(dptid) == cfibtable::fibtables.end()));
154 for (std::map<rofl::caddress_ll, cfibentry*>::iterator
155 it = ftable.begin(); it != ftable.end(); ++it) {
178 if (ftable.find(hwaddr) != ftable.end()) {
181 ftable[hwaddr] =
new cfibentry(
this, dptid, hwaddr, portno);
182 return *(ftable[hwaddr]);
202 if (ftable.find(hwaddr) == ftable.end()) {
203 ftable[hwaddr] =
new cfibentry(
this, dptid, hwaddr, portno);
205 return *(ftable[hwaddr]);
224 if (ftable.find(hwaddr) == ftable.end()) {
227 return *(ftable[hwaddr]);
246 if (ftable.find(hwaddr) == ftable.end()) {
249 return *(ftable.at(hwaddr));
260 if (ftable.find(hwaddr) == ftable.end()) {
264 ftable.erase(hwaddr);
276 return (not (ftable.find(hwaddr) == ftable.end()));
289 cfibtable::fibtables[dptid] =
this;
298 cfibtable::fibtables.erase(dptid);
320 const cfibentry& entry)
329 operator<< (std::ostream& os, cfibtable
const& fib) {
334 os <<
rofl::indent(0) <<
"<cfibtable dptid:" <<
"dpid: " << fib.dptid <<
" >" << std::endl;
337 for (std::map<rofl::caddress_ll, cfibentry*>::const_iterator
338 it = fib.ftable.begin(); it != fib.ftable.end(); ++it) {
346 static std::map<rofl::cdptid, cfibtable*> fibtables;
348 std::map<rofl::caddress_ll, cfibentry*> ftable;
Definition: caddress.h:152
void clear()
Deletes all entries stored in this cfibtable instance.
Definition: cfibtable.h:153
bool is_multicast() const
Check for multicast bit in hardware address.
Definition: caddress.cc:74
static void drop_fib(const rofl::cdptid &dptid)
Removes an existing cfibtable instance.
Definition: cfibtable.h:118
rofl-common's internal remote datapath handle.
Definition: cdptid.h:24
bool has_fib_entry(const rofl::caddress_ll &hwaddr) const
Checks whether a cfibentry exists for given hardware address.
Definition: cfibtable.h:274
const rofl::cdpid & get_dpid() const
Returns OpenFlow datapath identifier for this instance.
Definition: crofdpt.h:1259
cfibentry & add_fib_entry(const rofl::caddress_ll &hwaddr, uint32_t portno)
Returns reference to empty cfibentry instance for given hardware address.
Definition: cfibtable.h:172
bool is_null() const
Check for null hardware address.
Definition: caddress.cc:94
static cfibtable & add_fib(const rofl::cdptid &dptid)
Returns reference to new or existing and resetted cfibtable instance.
Definition: cfibtable.h:62
Defines the environment expected by an instance of class cfibentry.
Definition: cfibentry.h:69
void drop_fib_entry(const rofl::caddress_ll &hwaddr)
Removes an existing cfibentry for given hardware address.
Definition: cfibtable.h:258
Stores a FIB entry mapping host hwaddr to switch port number.
Definition: cfibentry.h:113
Invalid parameter specified.
Definition: cfibentry.h:42
cfibentry & set_fib_entry(const rofl::caddress_ll &hwaddr, uint32_t portno)
Returns reference to existing cfibentry instance for given hardware address.
Definition: cfibtable.h:196
static const cfibtable & get_fib(const rofl::cdptid &dptid)
Returns const reference to existing cfibtable instance or throws exception.
Definition: cfibtable.h:103
static cfibtable & set_fib(const rofl::cdptid &dptid)
Returns reference to existing cfibtable instance or creates a new empty one.
Definition: cfibtable.h:83
Element not found.
Definition: cfibentry.h:52
static bool has_fib(const rofl::cdptid &dptid)
Checks existence of cfibtable for given identifier.
Definition: cfibtable.h:134
Forwarding Information Base.
Definition: cfibtable.h:43
const cfibentry & get_fib_entry(const rofl::caddress_ll &hwaddr) const
Returns const reference to existing cfibentry instance for given hardware address.
Definition: cfibtable.h:241
static rofl::crofdpt & get_dpt(const rofl::cdptid &dptid)
Returns reference to rofl::crofdpt instance identified by rofl-common's internal identifier.
Definition: crofdpt.cc:17
cfibentry & set_fib_entry(const rofl::caddress_ll &hwaddr)
Returns reference to existing cfibentry instance for given hardware address.
Definition: cfibtable.h:219