class ExternalRoutes

Class which manages distribution of external routes throughout the OLSR domain. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Methods


Detailed Description

 ExternalRoutes (Olsr& olsr, EventLoop& eventloop, FaceManager& fm, Neighborhood& nh)

ExternalRoutes

 ~ExternalRoutes ()

~ExternalRoutes

FaceManager&  face_manager ()

face_manager

inline RouteManager*  route_manager ()

route_manager

inline void  set_route_manager (RouteManager* rm)

set_route_manager

inline TimeVal  get_hna_interval ()

get_hna_interval

[const]

void  set_hna_interval (const TimeVal& hna_interval)

set_hna_interval

Set the HNA send timer.

The timer will only be restarted if previously scheduled. If the period of the HNA broadcasts is changed, a HNA broadcast MAY be scheduled to take place immediately.

Parameters:

hna_intervalthe interval between HNA advertisements.
inline TimeVal  get_hna_hold_time ()

get_hna_hold_time

[const]

OlsrTypes::ExternalID  update_hna_route_in (const IPv4Net& dest, const IPv4& lasthop, const uint16_t distance, const TimeVal& expiry_time, bool& is_created)
throw(BadExternalRoute)

update_hna_route_in

Update or create a route entry learned from HNA.

If the origin of the HNA route is not reachable in the OLSR SPT, the route will be rejected; see NOTES. TODO: In future distance may also be treated as an advertised metric.

Parameters:

destThe destination being updated.
lasthopThe last-hop to reach the destination.
distancethe number of hops to reach lasthop.
expiry_timeThe time at which the entry will expire.
is_createdreference to a boolean which is set to true iff a new entry was created by this method.

Returns: The ID of the created or updated route entry. @throw BadExternalRoute if the route could not be created.

OlsrTypes::ExternalID  add_hna_route_in (const IPv4Net& dest, const IPv4& lasthop, const uint16_t distance, const TimeVal& expiry_time)
throw(BadExternalRoute)

add_hna_route_in

Create a route entry learned from HNA.

Parameters:

destThe destination being updated.
lasthopThe last-hop to reach the destination; usually this is the origin of the route.
distancethe number of hops to reach lasthop.
expiry_timeThe time at which the entry will expire.

Returns: The ID of the created route entry. @throw BadExternalRoute if the route could not be created.

bool  delete_hna_route_in (OlsrTypes::ExternalID erid)

delete_hna_route_in

Delete an HNA learned route entry given its ID.

Parameters:

eridThe ID of the external route to delete.

Returns: true if the entry was found and deleted.

void  clear_hna_routes_in ()

clear_hna_routes_in

Clear the learned HNA routes.

const ExternalRoute*  get_hna_route_in (const IPv4Net& dest, const IPv4& lasthop)
throw(BadExternalRoute)

get_hna_route_in

Look up an ExternalRoute learned from HNA, given its origin and destination network prefix.

Parameters:

destthe destination network prefix.
lasthopthe origin.

Returns: pointer to the ExternalRoute. @throw BadExternalRoute if the route could not be found.

OlsrTypes::ExternalID  get_hna_route_in_id (const IPv4Net& dest, const IPv4& lasthop)
throw(BadExternalRoute)

get_hna_route_in_id

Look up the ID of a learned HNA entry. Both the destination and the OLSR last-hop must be specified to match.

Parameters:

destThe destination address.
lasthopThe last-hop advertised for the destination.

Returns: the ID of the learned external route. @throw BadExternalRoute if the route could not be found.

const ExternalRoute*  get_hna_route_in_by_id ( const OlsrTypes::ExternalID erid)
throw(BadExternalRoute)

get_hna_route_in_by_id

Look up a learned HNA route entry by its ID.

Parameters:

eridthe ID of the learned ExternalRoute.

Returns: the pointer to the learned ExternalRoute. @throw BadExternalRoute if the route could not be found.

size_t  hna_origin_count ()

hna_origin_count

[const]

Calculate the number of unique OLSR nodes with HNA entries in this node's HNA learned route database.

Used only by the protocol simulator.

As we don't currently maintain a list of origins for HNA, this is a more computationally expensive invariant than for TC or MID.

Returns: the number of unique origins in the HNA route-in map.

size_t  hna_dest_count ()

hna_dest_count

[const]

Calculate the number of unique HNA prefixes which have been learned.

Used only by the protocol simulator.

Returns: the number of unique destinations in the HNA route-in map.

inline size_t  hna_entry_count ()

hna_entry_count

[const]

Returns: the number of entries in the learned HNA route database.

void  get_hna_route_in_list (list<OlsrTypes::ExternalID>& hnalist)

get_hna_route_in_list

Fill out a list of all the external learned route IDs.

Parameters:

hnalistthe list to fill out.
bool  originate_hna_route_out (const IPv4Net& dest)
throw(BadExternalRoute)

originate_hna_route_out

Originate an HNA route.

Parameters:

destthe network for which to originate HNA broadcasts.

Returns: true if the route was originated successfully. @throw BadExternalRoute if the route could not be originated.

void  withdraw_hna_route_out (const IPv4Net& dest)
throw(BadExternalRoute)

withdraw_hna_route_out

Withdraw an HNA route.

Parameters:

destthe network to withdraw from HNA broadcasts. @throw BadExternalRoute if no route to the given destination could be found.
void  clear_hna_routes_out ()

clear_hna_routes_out

Clear the advertised HNA routes.

OlsrTypes::ExternalID  get_hna_route_out_id (const IPv4Net& dest)
throw(BadExternalRoute)

get_hna_route_out_id

Look up the ID of an originated HNA entry. Both the destination and the OLSR last-hop must be specified to match.

Parameters:

destThe destination address.

Returns: the ID of the originated external route. @throw BadExternalRoute if the route could not be found.

void  push_external_routes ()

push_external_routes

Push candidate HNA routes to the RouteManager.

12.6: The distance to the last-hop, as measured from the HNA message, is used as the current discriminator; this is what's specified in the RFC.

TODO: Deal with the metric here rather than in the RouteManager. For now, RouteManager will invent a metric before plumbing to the RIB.

void  start_hna_send_timer ()

start_hna_send_timer

void  stop_hna_send_timer ()

stop_hna_send_timer

void  restart_hna_send_timer ()

restart_hna_send_timer

void  reschedule_hna_send_timer ()

reschedule_hna_send_timer

Reschedule the HNA send timer (if the HNA interval has changed).

void  reschedule_immediate_hna_send_timer ()

reschedule_immediate_hna_send_timer

Schedule the HNA send timer to fire as soon as possible.

bool  event_send_hna ()

event_send_hna

Callback method to: service the HNA transmission timer. Section 12: Non-OLSR Interfaces.

Flood a HNA message to the rest of the OLSR domain which contains this node's Host and Network Associations.

Returns: true if the callback should be rescheduled, otherwise false.

bool  event_receive_hna (Message* msg, const IPv4& remote_addr, const IPv4& local_addr)

event_receive_hna

Process incoming HNA message. Section 12.5: HNA Message Processing.

Parameters:

msgthe message to process.
remote_addrthe source address of the Packet containing msg.
local_addrthe address of the OLSR interface where the Packet containing msg was received.

Returns: true if msg was consumed by this method, otherwise false.

void  event_hna_route_in_expired (const OlsrTypes::ExternalID erid)

event_hna_route_in_expired

Callback method to: delete a learned route entry when it expires.

Parameters:

eridThe ID of the external route to delete.

Generated by: pavlin on kobe.xorp.net on Wed Jan 7 19:11:15 2009, using kdoc 2.0a54+XORP.