class FilterTable
|
specialized BGPRouteTable implementing a filter bank to
modify or drop routes.
More... |
|
|
Public Methods
- FilterTable (string tablename,
Safi safi,
BGPRouteTable<A> *parent,
NextHopResolver<A>& next_hop_resolver)
- ~FilterTable ()
- void reconfigure_filter ()
- int add_route (InternalMessage<A> &rtmsg,
BGPRouteTable<A> *caller)
- int replace_route (InternalMessage<A> &old_rtmsg,
InternalMessage<A> &new_rtmsg,
BGPRouteTable<A> *caller)
- int delete_route (InternalMessage<A> &rtmsg,
BGPRouteTable<A> *caller)
- int route_dump (InternalMessage<A> &rtmsg,
BGPRouteTable<A> *caller,
const PeerHandler *dump_peer)
- int push (BGPRouteTable<A> *caller)
- 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)
- RouteTableType type () const
- string str () const
- bool get_next_message (BGPRouteTable<A> *next_table)
- int add_aggregation_filter (bool is_ibgp)
- int add_simple_AS_filter (const AsNum &asn)
- int add_route_reflector_input_filter (IPv4 bgp_id, IPv4 cluster_id)
- int add_AS_prepend_filter (const AsNum &asn, bool is_confederation_peer)
- int add_nexthop_rewrite_filter (const A& nexthop,
bool directly_connected,
const IPNet<A> &subnet)
- int add_nexthop_peer_check_filter (const A& nexthop,
const A& peer_address)
- int add_ibgp_loop_filter ()
- int add_route_reflector_ibgp_loop_filter (bool client,
IPv4 bgp_id,
IPv4 cluster_id)
- int add_route_reflector_purge_filter ()
- int add_localpref_insertion_filter (uint32_t default_local_pref)
- int add_localpref_removal_filter ()
- int add_med_insertion_filter ()
- int add_med_removal_filter ()
- int add_known_community_filter (PeerType peer_type)
- int add_unknown_filter ()
- int add_originate_route_filter (const AsNum &asn, PeerType peer_type)
- void do_versioning ()
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.
FilterTable is a BGPRouteTable that can hold banks of route
filters. Normally FilterTable propagates add_route,
delete_route and the response to lookup_route directly through from
the parent to the child. A route filter can cause these to not be
be propagated, or can modify the attributes of the route in the
message.
Typically there are two FilterTables for each peer, one in the
input branch from that peer, and one in the output branch to that
peer. A FilterTable does not store the routes it modifies. Thus
is is normally followed by a CacheTable which stores those routes
for later use.
~FilterTable ()
| ~FilterTable |
void reconfigure_filter ()
| reconfigure_filter |
Reimplemented from BGPRouteTable.
Reimplemented from BGPRouteTable.
Reimplemented from BGPRouteTable.
Reimplemented from BGPRouteTable.
Reimplemented from BGPRouteTable.
const SubnetRoute<A> * lookup_route (const IPNet<A> &net,
uint32_t& genid,
FPAListRef& pa_list)
| lookup_route |
[const]
Reimplemented from BGPRouteTable.
void route_used (const SubnetRoute<A>* route, bool in_use)
| route_used |
Reimplemented from BGPRouteTable.
[const]
Reimplemented from BGPRouteTable.
[const]
Reimplemented from BGPRouteTable.
bool get_next_message (BGPRouteTable<A> *next_table)
| get_next_message |
Reimplemented from BGPRouteTable.
int add_aggregation_filter (bool is_ibgp)
| add_aggregation_filter |
int add_simple_AS_filter (const AsNum &asn)
| add_simple_AS_filter |
int add_route_reflector_input_filter (IPv4 bgp_id, IPv4 cluster_id)
| add_route_reflector_input_filter |
int add_AS_prepend_filter (const AsNum &asn, bool is_confederation_peer)
| add_AS_prepend_filter |
int add_nexthop_rewrite_filter (const A& nexthop,
bool directly_connected,
const IPNet<A> &subnet)
| add_nexthop_rewrite_filter |
int add_nexthop_peer_check_filter (const A& nexthop,
const A& peer_address)
| add_nexthop_peer_check_filter |
int add_ibgp_loop_filter ()
| add_ibgp_loop_filter |
int add_route_reflector_ibgp_loop_filter (bool client,
IPv4 bgp_id,
IPv4 cluster_id)
| add_route_reflector_ibgp_loop_filter |
int add_route_reflector_purge_filter ()
| add_route_reflector_purge_filter |
int add_localpref_insertion_filter (uint32_t default_local_pref)
| add_localpref_insertion_filter |
int add_localpref_removal_filter ()
| add_localpref_removal_filter |
int add_med_insertion_filter ()
| add_med_insertion_filter |
int add_med_removal_filter ()
| add_med_removal_filter |
int add_known_community_filter (PeerType peer_type)
| add_known_community_filter |
int add_unknown_filter ()
| add_unknown_filter |
int add_originate_route_filter (const AsNum &asn, PeerType peer_type)
| add_originate_route_filter |
void do_versioning ()
| do_versioning |
Generated by: pavlin on kobe.xorp.net on Wed Jan 7 19:11:04 2009, using kdoc 2.0a54+XORP.