xorp

RIB< A > Class Template Reference

Master class for a RIB. More...

#include <rib.hh>

Inheritance diagram for RIB< A >:
NONCOPYABLE

List of all members.

Public Member Functions

 RIB (RibTransportType rib_type, RibManager &rib_manager, EventLoop &eventloop)
 RIB Constructor.
virtual ~RIB ()
 RIB Destructor.
void set_errors_are_fatal ()
 Set test-mode: abort on some errors that we'd normally mask.
list< string > registered_protocol_names () const
 Get the list with the registered protocol names.
void initialize (RegisterServer &register_server)
 Initialize the RIB.
int initialize_redist_all (const string &all)
 Initialize the RIB's RedistTable at the end so that the winning routes are exported to the RIB clients (e.g., the FEA).
int initialize_policy_redist ()
 Initialize the RIB's PolicyRedistTable.
int initialize_register (RegisterServer &register_server)
 Initialize the RIB's RegisterTable.
int new_origin_table (const string &tablename, const string &target_class, const string &target_instance, uint32_t admin_distance, ProtocolType protocol_type)
 Add a new OriginTable.
virtual int new_vif (const string &vifname, const Vif &vif)
 Inform the RIB about the existence of a Virtual Interface.
virtual int delete_vif (const string &vifname)
 Inform the RIB that a VIF no longer exists.
virtual void destroy_deleted_vif (RibVif *rib_vif)
 Destroy a VIF container for a VIF that no longer exists.
virtual int set_vif_flags (const string &vifname, bool is_p2p, bool is_loopback, bool is_multicast, bool is_broadcast, bool is_up, uint32_t mtu)
 Set the vif flags of a configured vif.
virtual int add_vif_address (const string &vifname, const A &addr, const IPNet< A > &subnet, const A &broadcast_addr, const A &peer_addr)
 Add an address and subnet to a existing VIF.
virtual int delete_vif_address (const string &vifname, const A &addr)
 Remove an address and the associated subnet from an existing VIF.
int add_connected_route (const RibVif &vif, const IPNet< A > &net, const A &nexthop_addr, const A &peer_addr)
 Add a route to the "connected" OriginTable.
int delete_connected_route (const RibVif &vif, const IPNet< A > &net, const A &peer_addr)
 Delete a route from the "connected" OriginTable.
virtual int add_route (const string &tablename, const IPNet< A > &net, const A &nexthop_addr, const string &ifname, const string &vifname, uint32_t metric, const PolicyTags &policytags)
 Add a route via the OriginTable called tablename.
virtual int replace_route (const string &tablename, const IPNet< A > &net, const A &nexthop_addr, const string &ifname, const string &vifname, uint32_t metric, const PolicyTags &policytags)
 Replace an existing route via the OriginTable called tablename.
virtual int verify_route (const A &lookupaddr, const string &ifname, const A &nexthop_addr, uint32_t metric, RibVerifyType matchtype)
 Verify the result of a route lookup in the RIB matches the parameters we expect.
virtual int delete_route (const string &tablename, const IPNet< A > &subnet)
 Delete an existing route via the OriginTable called tablename.
virtual const A & lookup_route (const A &lookupaddr)
 Lookup an address in the RIB to determine the nexthop router to which packets for this address will be forwarded.
virtual RouteRange< A > * route_range_lookup (const A &lookupaddr)
 Used for debugging only.
virtual RouteRegister< A > * route_register (const A &lookupaddr, const string &module)
 Register interest in being notified about all changes to routing information that would affect traffic destined for a particular address.
virtual int route_deregister (const IPNet< A > &subnet, const string &module)
 De-register interest in being notified about all changes to routing information for a particular address.
Protocolfind_protocol (const string &protocol)
 Find a routing protocol, given its protocol name.
RedistTable< A > * protocol_redist_table (const string &protocol)
 Get route redistribution table for specified routing protocol.
virtual int add_igp_table (const string &tablename, const string &target_class, const string &target_instance)
 Create the OriginTable for an IGP protocol and plumb it into the RIB.
virtual int delete_igp_table (const string &tablename, const string &target_class, const string &target_instance)
 Delete the OriginTable for an IGP protocol and unplumb it from the RIB.
virtual int add_egp_table (const string &tablename, const string &target_class, const string &target_instance)
 Create the OriginTable for an EGP protocol and plumb it into the RIB.
virtual int delete_egp_table (const string &tablename, const string &target_class, const string &target_instance)
 Delete the OriginTable for an EGP protocol and unplumb it from the RIB.
void target_death (const string &target_class, const string &target_instance)
 An XRL Target died.
void print_rib () const
 Print the RIB structure for debugging.
string name () const
 Get RIB name.
void push_routes ()
 Push routes through policy filters for re-filtering.
int set_protocol_admin_distance (const string &protocol_name, const uint32_t &admin_distance)
 Set the admin distance associated with a routing protocol.
map< string, uint32_t > & get_protocol_admin_distances ()
 Get the map of all registered admin distances.
uint32_t get_protocol_admin_distance (const string &protocol_name)
 Get the admin distance associated with a routing protocol.

Protected Attributes

RibManager_rib_manager
EventLoop_eventloop
RouteTable< A > * _final_table
RegisterTable< A > * _register_table
bool _multicast
bool _errors_are_fatal
PolicyRedistTable< A > * _policy_redist_table
list< RouteTable< A > * > _tables
map< string, Protocol * > _protocols
map< string, OriginTable< A > * > _routing_protocol_instances
map< string, RibVif * > _vifs
map< string, RibVif * > _deleted_vifs
map< string, uint32_t > _admin_distances
map< A, IPExternalNextHop< A > > _external_nexthops
map< A, IPPeerNextHop< A > > _peer_nexthops

Private Member Functions

int add_origin_table (const string &tablename, const string &target_class, const string &target_instance, ProtocolType protocol_type)
 Used to implement add_igp_table and add_egp_table.
int delete_origin_table (const string &tablename, const string &target_class, const string &target_instance)
 Used to implement delete_igp_table and delete_egp_table.
int add_policy_connected_table (const string &origin_tablename)
 Add a table for policy filtering of connected routes.
int add_redist_table (const string &origin_tablename)
 Add a RedistTable behind OriginTable.
RouteTable< A > * track_back (RouteTable< A > *rt, int typemask) const
 track_back trough the RouteTables' parent pointers to find the last (i.e, nearest the OriginTable) table that matches the mask in typemask.
RouteTable< A > * track_forward (RouteTable< A > *rt, int typemask) const
 track_forward trough the RouteTables' child pointers to find the last able that matches the mask in typemask.
RouteTable< A > * find_table (const string &tablename)
 Find a routing table, given its table name.
OriginTable< A > * find_table_by_instance (const string &tablename, const string &target_class, const string &target_instance)
 Find a routing table, given its protocol name and XRL target instance name.
int add_table (RouteTable< A > *table)
 Add table to RIB, but don't do any plumbing.
int remove_table (const string &tablename)
 Remove table from RIB, but don't do any unplumbing.
RibViffind_vif (const A &addr)
 Find the virtual interface associated with one of this router's addresses.
IPExternalNextHop< A > * find_external_nexthop (const A &addr)
 Find the IP External Nexthop class instance associated with an IP address.
IPPeerNextHop< A > * find_peer_nexthop (const A &addr)
 Find the IP Peer Nexthop class instance associated with an IP address.
IPExternalNextHop< A > * find_or_create_external_nexthop (const A &addr)
 Find or create the IP External Nexthop class instance associated with an IP address.
IPPeerNextHop< A > * find_or_create_peer_nexthop (const A &addr)
 Find or create the IP Peer Nexthop class instance associated with an IP address.
void flush ()
 Flush out routing table changes to other processes.

Detailed Description

template<class A>
class RIB< A >

Master class for a RIB.

RIB is the master class for a Routing Information Base. It holds the RibVif table, routing tables for each protocol, etc. Typically we would have one RIB for IPv4 unicast, one for IPv4 multicast topology, one for IPv6 unicast and one for IPv6 multicast.

Note that the XRL commands assume some level of filtering has already taken place to route to command to the right RIB.


Constructor & Destructor Documentation

template<typename A >
RIB< A >::RIB ( RibTransportType  rib_type,
RibManager rib_manager,
EventLoop eventloop 
)

RIB Constructor.

Parameters:
rib_typeindicates whether this RIB holds UNICAST or MULTICAST routing information. In the case of multicast, this is the topology information, not the forwarding information.
rib_managerthe main RIB manager process holding stuff that's common to all the individual RIBs.
eventloopthe main event loop.

Member Function Documentation

template<typename A>
int RIB< A >::add_connected_route ( const RibVif vif,
const IPNet< A > &  net,
const A &  nexthop_addr,
const A &  peer_addr 
)

Add a route to the "connected" OriginTable.

Parameters:
vifthe vif with the connected route.
netthe subnet (address and prefix length) of the route.
nexthop_addrthe nexthop address of the route to add.
peer_addrthe peer address for the route to add (if a point-to-point interface).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::add_egp_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance 
) [virtual]

Create the OriginTable for an EGP protocol and plumb it into the RIB.

Typically this will be called when a new instance of an EGP routing protocol such as EBGP or IBGP starts up. Note that EBGP and IBGP should register separately.

Parameters:
tablenamethe routing protocol name. This should be one of the list of names the RIB knows about, or the incorrect default administrative distance will be applied.
target_classthe XRL target class of the routing protocol that will supply routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that will supply routes to this OriginTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::add_igp_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance 
) [virtual]

Create the OriginTable for an IGP protocol and plumb it into the RIB.

Typically this will be called when a new instance of an IGP routing protocol such as OSPF starts up.

Parameters:
tablenamethe routing protocol name. This should be one of the list of names the RIB knows about, or the incorrect default administrative distance will be applied.
target_classthe XRL target class of the routing protocol that will supply routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that will supply routes to this OriginTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::add_origin_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance,
ProtocolType  protocol_type 
) [private]

Used to implement add_igp_table and add_egp_table.

Parameters:
tablenamethe routing protocol name.
target_classthe XRL target class of the routing protocol that will supply routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that will supply routes to this OriginTable.
protocol_typethe routing protocol type (ProtocolType).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::add_policy_connected_table ( const string &  origin_tablename) [private]

Add a table for policy filtering of connected routes.

This is used to enable route redistribution of connected routes.

Parameters:
origin_tablenameThe name of the origin table.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::add_redist_table ( const string &  origin_tablename) [private]

Add a RedistTable behind OriginTable.

This allows routes associated with the OriginTable to be redistributed in future.

Parameters:
origin_tablenameName of OriginTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::add_route ( const string &  tablename,
const IPNet< A > &  net,
const A &  nexthop_addr,
const string &  ifname,
const string &  vifname,
uint32_t  metric,
const PolicyTags policytags 
) [virtual]

Add a route via the OriginTable called tablename.

Parameters:
tablenamethe name of the OriginTable into which the route should be inserted.
netthe subnet (address and prefix length) of the route.
nexthop_addrthe nexthop that packets destined for net should be forwarded to.
ifnamethe name of the physical interface toward the destination. If an empty string the interface will be chosen by RIB.
vifnamethe name of the virtual interface toward the destination. If an empty string the interface will be chosen by RIB.
metricthe routing protocol metric associated with this route.
policytagsthe policy-tags for this route.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::add_table ( RouteTable< A > *  table) [inline, private]

Add table to RIB, but don't do any plumbing.

It is an error to add the same table twice or multiple tables with the same name.

Parameters:
tablethe table to be added.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::add_vif_address ( const string &  vifname,
const A &  addr,
const IPNet< A > &  subnet,
const A &  broadcast_addr,
const A &  peer_addr 
) [virtual]

Add an address and subnet to a existing VIF.

Each VIF may have multiple addresses and associated subnets.

Parameters:
vifnamethe name of the VIF the address will be added to.
addrthe address to be added. This must be one of the addresses of this router.
subnetthe subnet that is connected to this VIF corresponding to the address addr.
broadcastthe broadcast address to add. In case of IPv6 this address is ignored.
peerthe peer address to add.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::delete_connected_route ( const RibVif vif,
const IPNet< A > &  net,
const A &  peer_addr 
)

Delete a route from the "connected" OriginTable.

Parameters:
vifthe vif with the connected route.
netthe subnet (address and prefix length) of the route.
peer_addrthe peer address for the route to delete (if a point-to-point interface).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::delete_egp_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance 
) [virtual]

Delete the OriginTable for an EGP protocol and unplumb it from the RIB.

Typically this will be called when an instance of an EGP routing protocol such as BGP exits.

Parameters:
tablenamethe routing protocol name, previously registered using add_igp_table.
target_classthe XRL target class of the routing protocol that supplied routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that supplied routes to this OriginTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::delete_igp_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance 
) [virtual]

Delete the OriginTable for an IGP protocol and unplumb it from the RIB.

Typically this will be called when an instance of an IGP routing protocol such as OSPF exits.

Parameters:
tablenamethe routing protocol name, previously registered using add_igp_table.
target_classthe XRL target class of the routing protocol that supplied routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that supplied routes to this OriginTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<class A >
int RIB< A >::delete_origin_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance 
) [private]

Used to implement delete_igp_table and delete_egp_table.

Parameters:
tablenamethe routing protocol name.
target_classthe XRL target class of the routing protocol that will supply routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that supplied routes to this OriginTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::delete_route ( const string &  tablename,
const IPNet< A > &  subnet 
) [virtual]

Delete an existing route via the OriginTable called tablename.

Parameters:
tablenamethe name of the OriginTable in which the route should be deleted.
subnetthe subnet (address and prefix length) of the route to be deleted.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::delete_vif ( const string &  vifname) [virtual]

Inform the RIB that a VIF no longer exists.

Parameters:
vifnamethe name of the VIF, as previously indicated by new_vif.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::delete_vif_address ( const string &  vifname,
const A &  addr 
) [virtual]

Remove an address and the associated subnet from an existing VIF.

Parameters:
vifnamethe name of the VIF the address will be removed from.
addrthe address to be removed. This must be an address previously added by add_vif_address.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
void RIB< A >::destroy_deleted_vif ( RibVif rib_vif) [virtual]

Destroy a VIF container for a VIF that no longer exists.

Parameters:
rib_vifthe VIF container that will be destroyed.
template<typename A>
IPExternalNextHop< A > * RIB< A >::find_external_nexthop ( const A &  addr) [inline, private]

Find the IP External Nexthop class instance associated with an IP address.

Parameters:
addrthe IP address of the nexthop router.
Returns:
pointer to external next hop if it exists, NULL otherwise.
template<typename A>
IPExternalNextHop< A > * RIB< A >::find_or_create_external_nexthop ( const A &  addr) [inline, private]

Find or create the IP External Nexthop class instance associated with an IP address.

Parameters:
addrthe IP address of the nexthop router.
Returns:
the IPExternalNextHop class instance for addr
template<typename A>
IPPeerNextHop< A > * RIB< A >::find_or_create_peer_nexthop ( const A &  addr) [inline, private]

Find or create the IP Peer Nexthop class instance associated with an IP address.

Parameters:
addrthe IP address of the nexthop router.
Returns:
the IPPeerNextHop class instance for addr.
template<typename A>
IPPeerNextHop< A > * RIB< A >::find_peer_nexthop ( const A &  addr) [inline, private]

Find the IP Peer Nexthop class instance associated with an IP address.

Parameters:
addrthe IP address of the nexthop router.
Returns:
pointer to peer next hop if it exists, NULL otherwise.
template<typename A >
Protocol * RIB< A >::find_protocol ( const string &  protocol)

Find a routing protocol, given its protocol name.

Parameters:
protocolthe name of the protocol to search for.
Returns:
pointer to protocol if exists, NULL otherwise.
template<typename A >
RouteTable< A > * RIB< A >::find_table ( const string &  tablename) [inline, private]

Find a routing table, given its table name.

Parameters:
tablenamethe name of the table to search for.
Returns:
pointer to table if exists, NULL otherwise.
template<typename A >
OriginTable< A > * RIB< A >::find_table_by_instance ( const string &  tablename,
const string &  target_class,
const string &  target_instance 
) [inline, private]

Find a routing table, given its protocol name and XRL target instance name.

Parameters:
tablenamethe name of the protocol to search for.
target_classthe name of the target class to search for.
target_instancethe name of the target instance to search for.
Returns:
pointer to table if exists, NULL otherwise.
template<typename A>
RibVif * RIB< A >::find_vif ( const A &  addr) [inline, private]

Find the virtual interface associated with one of this router's addresses.

Parameters:
addrthe IP address to lookup.
Returns:
pointer to RibVif on success, NULL otherwise.
template<typename A >
uint32_t RIB< A >::get_protocol_admin_distance ( const string &  protocol_name) [inline]

Get the admin distance associated with a routing protocol.

Parameters:
protocol_namethe canonical name of a routing protocol, in lower case. Eg "ospf", "ibgp", etc.
Returns:
the admin distance; UNKNOWN_ADMIN_DISTANCE if unknown.
template<class A>
map<string, uint32_t>& RIB< A >::get_protocol_admin_distances ( ) [inline]

Get the map of all registered admin distances.

Returns:
a reference to the _admin_distance map.
template<typename A >
void RIB< A >::initialize ( RegisterServer register_server)

Initialize the RIB.

Note that it is an error to initialize the table twice.

Parameters:
register_serverthe RegisterServer to initialize the Rib with.
template<typename A >
int RIB< A >::initialize_policy_redist ( )

Initialize the RIB's PolicyRedistTable.

The PolicyRedistTable enables route redistribution according to policy configuration. Based on the policy tags of routes passing through this table, a redistribution request is sent to the relevant protocols. If routes are being deleted, protocols are informed to stop advertising the route.

template<typename A >
int RIB< A >::initialize_redist_all ( const string &  all)

Initialize the RIB's RedistTable at the end so that the winning routes are exported to the RIB clients (e.g., the FEA).

Note that it is an error to initialize the table twice.

See also:
RedistTable
Parameters:
alla keyword string which can be used by RIB clients to register with the RIB to receive the winning routes from the RedistTable.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::initialize_register ( RegisterServer register_server)

Initialize the RIB's RegisterTable.

The RegisterTable allows routing protocols such as BGP to register interest in routing information that affects specfic addresses. Note that it is an error to initialize the table twice.

Parameters:
register_serverthe RegisterServer to initialize the Rib with.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
const A & RIB< A >::lookup_route ( const A &  lookupaddr) [virtual]

Lookup an address in the RIB to determine the nexthop router to which packets for this address will be forwarded.

Parameters:
lookupaddrthe address to be looked up.
Returns:
pointer to address of next hop for lookupaddr if available, otherwise A::ZERO().
template<typename A >
int RIB< A >::new_origin_table ( const string &  tablename,
const string &  target_class,
const string &  target_instance,
uint32_t  admin_distance,
ProtocolType  protocol_type 
)

Add a new OriginTable.

Use is deprecated, except in test suites.

See also:
OriginTable
Parameters:
tablenamehuman-readable name for this table to help in debugging.
target_classthe XRL target class of the routing protocol that will supply routes to this OriginTable.
target_instancethe XRL target instance of the routing protocol that will supply routes to this OriginTable.
admin_distancedefault administrative distance to be applied to routes that enter the RIB through this OriginTable.
protocol_typethe routing protocol type (ProtocolType).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::new_vif ( const string &  vifname,
const Vif vif 
) [virtual]

Inform the RIB about the existence of a Virtual Interface.

Note that it is an error to add twice a vif with the same vifname.

See also:
Vif
Parameters:
vifnamethe name of the VIF, as understood by the FEA.
vifVif class instance giving the information about this vif.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
list< string > RIB< A >::registered_protocol_names ( ) const

Get the list with the registered protocol names.

Returns:
the list with the registered protocol names.
template<typename A >
int RIB< A >::remove_table ( const string &  tablename) [inline, private]

Remove table from RIB, but don't do any unplumbing.

The table is not deleted by this.

Parameters:
tablenamethe name of the table to be removed.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::replace_route ( const string &  tablename,
const IPNet< A > &  net,
const A &  nexthop_addr,
const string &  ifname,
const string &  vifname,
uint32_t  metric,
const PolicyTags policytags 
) [virtual]

Replace an existing route via the OriginTable called tablename.

Parameters:
tablenamethe name of the OriginTable in which the route should be replaced.
netthe subnet (address and prefix length) of the route.
nexthop_addrthe new nexthop that packets destined for net should be forwarded to.
ifnamethe name of the physical interface toward the destination. If an empty string the interface will be chosen by RIB.
vifnamethe name of the virtual interface toward the destination. If an empty string the interface will be chosen by RIB.
metricthe new routing protocol metric associated with this
policytagsthe policy-tags for this route. route.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
int RIB< A >::route_deregister ( const IPNet< A > &  subnet,
const string &  module 
) [virtual]

De-register interest in being notified about all changes to routing information for a particular address.

See also:
RIB<A>::route_register
Parameters:
lookupaddrthe address to de-register interest in.
modulethe XRL module name to which notifications of changes should no longer be sent.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A>
RouteRegister< A > * RIB< A >::route_register ( const A &  lookupaddr,
const string &  module 
) [virtual]

Register interest in being notified about all changes to routing information that would affect traffic destined for a particular address.

Parameters:
lookupaddrthe address to register interest in.
modulethe XRL module name to which notifications of changes should be sent.
template<typename A >
int RIB< A >::set_protocol_admin_distance ( const string &  protocol_name,
const uint32_t &  admin_distance 
)

Set the admin distance associated with a routing protocol.

Parameters:
protocol_namethe canonical name of a routing protocol, in lower case. Eg "ospf", "ibgp", etc.
admin_distancethe admin distance to set.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<typename A >
int RIB< A >::set_vif_flags ( const string &  vifname,
bool  is_p2p,
bool  is_loopback,
bool  is_multicast,
bool  is_broadcast,
bool  is_up,
uint32_t  mtu 
) [virtual]

Set the vif flags of a configured vif.

Parameters:
vifnamethe name of the vif.
is_pim_registertrue if the vif is a PIM Register interface.
is_p2ptrue if the vif is point-to-point interface.
is_loopbacktrue if the vif is a loopback interface.
is_multicasttrue if the vif is multicast capable.
is_broadcasttrue if the vif is broadcast capable.
is_uptrue if the underlying vif is UP.
mtuthe MTU of the vif.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
template<class A >
void RIB< A >::target_death ( const string &  target_class,
const string &  target_instance 
)

An XRL Target died.

We need to check if it's a routing protocol, and if it was, clean up after it.

Parameters:
target_classthe XRL Class of the target that died.
target_instancethe XRL Class Instance of the target that died.
template<typename A>
RouteTable< A > * RIB< A >::track_back ( RouteTable< A > *  rt,
int  typemask 
) const [private]

track_back trough the RouteTables' parent pointers to find the last (i.e, nearest the OriginTable) table that matches the mask in typemask.

If the table given by rt doesn't match the mask, return it anyway. If a table has more than one parent, then this is an error.

Parameters:
rtthe routing table to start with.
typemaskthe bitwise-or of the routing table types that we may track back through.
Returns:
the last matching table, or rt if rt itself doesn't match.
template<typename A>
RouteTable< A > * RIB< A >::track_forward ( RouteTable< A > *  rt,
int  typemask 
) const [private]

track_forward trough the RouteTables' child pointers to find the last able that matches the mask in typemask.

Unlike track_back, if rt doesn't match, but the next does, the track forward anyway.

Parameters:
rtthe routing table to start with.
typemaskthe bitwise-or of the routing table types that we may track forward through.
Returns:
the last matching table.
template<typename A>
int RIB< A >::verify_route ( const A &  lookupaddr,
const string &  ifname,
const A &  nexthop_addr,
uint32_t  metric,
RibVerifyType  matchtype 
) [virtual]

Verify the result of a route lookup in the RIB matches the parameters we expect.

Intended for testing purposes only.

Parameters:
lookupaddrthe destination to be verified.
nexthop_addrthe expected next hop address.
ifnamethe expected interface.
metricthe expected routing protocol metric.
typethe expected type of match.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

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