RibInTable< A > Class Template Reference

Specialized BGPRouteTable that stores routes from a BGP peer. More...

#include <route_table_ribin.hh>

Inheritance diagram for RibInTable< A >:
BGPRouteTable< A > CrashDumper

List of all members.

Public Member Functions

 RibInTable (string tablename, Safi safi, const PeerHandler *peer)
void flush ()
 Remove all the stored routes.
int add_route (InternalMessage< A > &, BGPRouteTable< A > *)
int add_route (const IPNet< A > &net, FPAListRef &pa_list, const PolicyTags &policy_tags)
void ribin_peering_went_down ()
void ribin_peering_came_up ()
int replace_route (InternalMessage< A > &, InternalMessage< A > &, BGPRouteTable< A > *)
int delete_route (InternalMessage< A > &, BGPRouteTable< A > *)
int delete_route (const IPNet< A > &net)
int push (BGPRouteTable< A > *caller)
int delete_add_routes ()
const SubnetRoute< A > * lookup_route (const IPNet< A > &net, uint32_t &genid, FPAListRef &pa_list) const
void route_used (const SubnetRoute< A > *route, bool in_use)
BGPRouteTable< A > * parent ()
RouteTableType type () const
string str () const
bool get_next_message (BGPRouteTable< A > *)
void set_peer_is_up ()
bool dump_next_route (DumpIterator< A > &dump_iter)
void igp_nexthop_changed (const A &bgp_nexthop)
 Notification that the status of this next hop has changed.
int route_count () const
BgpTrie< A > & trie () const
const PeerHandlerpeer_handler () const
uint32_t genid () const
void crash_dump () const
string dump_state () const

Private Member Functions

EventLoopeventloop () const
bool push_next_changed_nexthop ()
void deletion_nexthop_check (const SubnetRoute< A > *route)
void next_chain ()
void stop_nexthop_push ()

Private Attributes

BgpTrie< A > * _route_table
const PeerHandler_peer
bool _peer_is_up
uint32_t _genid
uint32_t _table_version
set< A > _changed_nexthops
bool _nexthop_push_active
BgpTrie< A >
XorpTask _push_task

Detailed Description

template<class A>
class RibInTable< A >

Specialized BGPRouteTable that stores routes from a BGP peer.

The XORP BGP is internally implemented as a set of pipelines consisting of a series of BGPRouteTables. Each pipeline receives routes from a BGP peer, stores them, and applies filters to them to modify the routes. Then the pipelines converge on a single decision process, which decides which route wins amongst possible alternative routes. After decision, the winning routes fanout again along a set of pipelines, again being filtered, before being transmitted to peers.

RibInTable is the first stage in such a pipeline. It receives routes from a single BGP peer, and stores them. Changes are passed down the pipeline as they occur, and route lookups from downstream are answered by the RibInTable.

Member Function Documentation

template<class A >
void RibInTable< A >::flush ( )

Remove all the stored routes.

Used to flush static routes only.

template<class A>
void RibInTable< A >::igp_nexthop_changed ( const A &  bgp_nexthop) [virtual]

Notification that the status of this next hop has changed.

bgp_nexthopThe next hop that has changed.

Reimplemented from BGPRouteTable< A >.

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations