|
|
This is the base class for a routing table. A RIB consists of a tree of RouteTables that take routes from routing protocols and merge them together so that routes that emerge from the last table are the best routes available, and have nexthop information that is for an immediate neighbor of this router. See the RIB design document for an overview of how RouteTable are plumbed together to form a RIB.
All RouteTables that form the RIB are derived from this base class.
RouteTables take routing changes in from one or more parents, and pass on those changes to the _next_table if the change is for the best of the alternative routes.
RouteTables take route lookup requests from their _next_table, and pass on those requests to their parents. If more than one parent has a response, only the best is returned as the answer.
Note: A = Address Type, e.g., IPv4 or IPv6.
RouteTable (const string& name)
| RouteTable |
~RouteTable ()
| ~RouteTable |
[virtual]
int add_route (const IPRouteEntry<A>& route,
RouteTable* caller)
| add_route |
[pure virtual]
int delete_route (const IPRouteEntry<A>* route,
RouteTable* caller)
| delete_route |
[pure virtual]
const IPRouteEntry<A>* lookup_route (const IPNet<A>& net)
| lookup_route |
[const pure virtual]
const IPRouteEntry<A>* lookup_route (const A& addr)
| lookup_route |
[const pure virtual]
RouteRange<A>* lookup_route_range (const A& addr)
| lookup_route_range |
[const pure virtual]
void set_next_table (RouteTable* next_table)
| set_next_table |
[virtual]
RouteTable* parent ()
| parent |
[virtual]
TableType type ()
| type |
[const pure virtual]
void replumb (RouteTable* old_parent, RouteTable* new_parent)
| replumb |
[pure virtual]
string str ()
| str |
[const pure virtual]
void flush ()
| flush |
[virtual]
inline const string& tablename ()
| tablename |
[const]
inline RouteTable* next_table ()
| next_table |
inline const RouteTable* next_table ()
| next_table |
[const]
inline void set_tablename (const string& s)
| set_tablename |
[protected]