xorp

InternalMessage< A > Class Template Reference

InternalMessage is used to pass route changes between BGP route table classes. More...

#include <internal_message.hh>

List of all members.

Public Member Functions

 InternalMessage (const SubnetRoute< A > *route, const PeerHandler *origin_peer, uint32_t genid)
 InternalMessage (const SubnetRoute< A > *route, FPAListRef pa_list, const PeerHandler *origin_peer, uint32_t genid)
const IPNet< A > & net () const
const SubnetRoute< A > * route () const
const PeerHandlerorigin_peer () const
const A & nexthop () const
FPAListRef & attributes ()
const FPAListRef & const_attributes () const
bool changed () const
void set_changed ()
void clear_changed () const
bool copied () const
void set_copied ()
void clear_copied () const
bool push () const
void set_push ()
void clear_push ()
bool from_previous_peering () const
void set_from_previous_peering ()
uint32_t genid () const
void inactivate () const
string str () const

Private Attributes

const SubnetRoute< A > * _subnet_route
 the actual route data.
FPAListRef _attributes
 the path attribute list we use for fast accesses.
const PeerHandler_origin_peer
 we need origin_peer to make sure we don't send a route back to the peer it came from, or send an IBGP route to an IBGP peer.
bool _changed
 changed indicates that the route data has been modified since the route was last stored (and so needs storing by a CacheTable).
bool _copied
 copied indicates that the subnet route data has been copied since the route was last stored (and so needs freeing by the final recipient)
uint32_t _genid
 genid is the generation ID from the RibIn, if known, or zero if it's not known.
bool _push
 push indicates that this is the last route in a batch, so the push to peers is implicit.
bool _from_previous_peering
 from_previous_peering is set on messages where the deleted route originates from a previous peering that has now gone down.

Detailed Description

template<class A>
class InternalMessage< A >

InternalMessage is used to pass route changes between BGP route table classes.

XORP BGP is implemented as a pipelined series of route_tables, starting with a RibInTable for each peering, converging on a DecisionTable to decide which competing route is prefered, and then fanning out again to a RibOutTable for each peer. Routing changes such as add_route, delete_route, and replace_route propagate through this pipeline. The "payload" of these changes is an InternalMessage, which contains the route itself, the peering from which this route originated, and the generation ID of the RibIn at that peering.


Member Data Documentation

template<class A>
FPAListRef InternalMessage< A >::_attributes [private]

the path attribute list we use for fast accesses.

This is reference counted so we don't need to worry about freeing it when we copy it from message to message.


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