|
|
The RedistTable is used to redistribute routes from a routing table back out to a routing protocol. For example, when you want to redistribute BGP routes into OSPF.
For most operations the RedistTable is essentially a passthrough. It keeps track of nets it hears add and deletes for so when route Redistributor objects are added to the RedistTable they can announce the existing routes at startup.
Design note: RedistTable uses a set of IPNet's to cache routes - this should be route entry pointers with an appropriate comparitor (not pointer value based).
typedef set<IPNet<A>,RedistNetCmp<A> > RouteIndex | RouteIndex |
RedistTable (const string& tablename,
RouteTable<A>* from_table)
| RedistTable |
Constructor.
Plumbs RedistTable in RIB graph after from_table.
Parameters:
from_table | table to redistribute routes from. |
~RedistTable ()
| ~RedistTable |
Destructor.
Unplumbs table and deletes Redistributor object instances previously added with add_redistributor and not previously removed with remove_redistributor.
void add_redistributor (Redistributor<A>* r)
| add_redistributor |
Add a redistributor to announce existing routes and future updates to.
void remove_redistributor (Redistributor<A>* r)
| remove_redistributor |
Redistributor<A>* redistributor (const string& name)
| redistributor |
Find redistributor with given name attribute.
int add_route (const IPRouteEntry<A>& route, RouteTable<A>* caller)
| add_route |
Reimplemented from RouteTable.
int delete_route (const IPRouteEntry<A>* route, RouteTable<A>* caller)
| delete_route |
Reimplemented from RouteTable.
const IPRouteEntry<A>* lookup_route (const IPNet<A>& net)
| lookup_route |
[const]
Reimplemented from RouteTable.
const IPRouteEntry<A>* lookup_route (const A& addr)
| lookup_route |
[const]
Reimplemented from RouteTable.
RouteRange<A>* lookup_route_range (const A& addr)
| lookup_route_range |
[const]
Reimplemented from RouteTable.
TableType type ()
| type |
[const]
Reimplemented from RouteTable.
RouteTable<A>* parent ()
| parent |
Reimplemented from RouteTable.
void replumb (RouteTable<A>* old_parent, RouteTable<A>* new_parent)
| replumb |
Reimplemented from RouteTable.
string str ()
| str |
[const]
Reimplemented from RouteTable.
inline const RouteIndex& route_index ()
| route_index |
[const]
Get nets of live routes seen by RedistTable since it was instantiated.
RouteTable<A>* _parent | _parent |
[protected]
RouteIndex _rt_index | _rt_index |
[protected]
list<Redistributor<A>*> _outputs | _outputs |
[protected]