class AreaRouter

Area Router More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Types

Public Methods

Public Members


Detailed Description

Area Router

 AreaRouter (Ospf<A>& ospf, OspfTypes::AreaID area, OspfTypes::AreaType area_type)

AreaRouter

bool  startup ()

startup

Required by the class Subsystem. Called on startup.

Reimplemented from ServiceBase.

bool  shutdown ()

shutdown

Required by the class Subsystem. Called on shutdown.

Reimplemented from ServiceBase.

void  add_peer (PeerID peer)

add_peer

Add peer

void  delete_peer (PeerID peer)

delete_peer

Delete peer

bool  peer_up (PeerID peer)

peer_up

Peer came up

bool  peer_down (PeerID peer)

peer_down

Peer went down

void  area_border_router_transition (bool up)

area_border_router_transition

Track border router transitions.

Parameters:

uptrue of the router just became an area border router, false if the router was an area border router and is no longer.
void  change_area_router_type (OspfTypes::AreaType area_type)

change_area_router_type

Change the type of this area.

bool  add_virtual_link (OspfTypes::RouterID rid)

add_virtual_link

Add a virtual link endpoint.

bool  remove_virtual_link (OspfTypes::RouterID rid)

remove_virtual_link

Remove a virtual link endpoint.

void  start_virtual_link ()

start_virtual_link

Start looking through the list of routers for a virtual link endpoint.

void  check_for_virtual_link (const RouteCmd<Vertex>& rc, Lsa::LsaRef lsar)

check_for_virtual_link

Check this node to see if its a virtual link endpoint.

Parameters:

rcnode under consideration.
routerthis router's Router-LSA.
void  end_virtual_link ()

end_virtual_link

End looking through the list of routers for a virtual link endpoint.

bool  find_interface_address (Lsa::LsaRef src, Lsa::LsaRef dst, A& interface)

find_interface_address

[const]

Given two LSAs find the interface address of the destination LSA. The source LSA can be a Router-LSA or a Network-LSA the destination LSA must be a Router-LSA.

bool  area_range_add (IPNet<A> net, bool advertise)

area_range_add

Add area range.

bool  area_range_delete (IPNet<A> net)

area_range_delete

Delete area range.

bool  area_range_change_state (IPNet<A> net, bool advertise)

area_range_change_state

Change the advertised state of this area.

bool  area_range_covered (IPNet<A> net, bool& advertise)

area_range_covered

Is network covered by an area range and if it is should it be advertised.

bool  area_range_covering (IPNet<A> net, IPNet<A>& sumnet)

area_range_covering

This network falls in a covered area range, return the covering range.

bool  area_range_configured ()

area_range_configured

Does this area have any area ranges configured.

bool  originate_default_route (bool enable)

originate_default_route

If this is a "stub" or "nssa" area toggle the sending of a default route.

bool  stub_default_cost (uint32_t cost)

stub_default_cost

Set the StubDefaultCost, the default cost sent in a default route in a "stub" or "nssa" area.

bool  summaries (bool enable)

summaries

Toggle the sending of summaries into "stub" or "nssa" areas.

bool  get_lsa (const uint32_t index, bool& valid, bool& toohigh, bool& self, vector<uint8_t>& lsa)

get_lsa

get lsa at index if it exists.

bool  new_router_links (PeerID peer, const list<RouterLink>& router_link)

new_router_links

A new set of router links.

void  refresh_router_lsa (bool timer = false)

refresh_router_lsa

Refresh Router-LSA.

Cause the generation of a new Router-LSA if necessary.

Parameters:

timertrue if called by the timer.
void  summary_announce (OspfTypes::AreaID area, IPNet<A> net, RouteEntry<A>& rt, bool push)

summary_announce

A new route has been added to the routing table it is being presented to this area for possible Summary-LSA generation.

Parameters:

areathe route came from
rtrouting entry.
pushtrue if the routes are arriving as a consquence of calling summary_push()
void  summary_withdraw (OspfTypes::AreaID area, IPNet<A> net, RouteEntry<A>& rt)

summary_withdraw

A route has been deleted from the routing table. It may previously have caused a Summary-LSA which now needs to be withdrawn.

bool  external_area_type ()

external_area_type

[const]

Returns: true if this area should accept an AS-External-LSA or a Type-7-LSA.

void  external_copy_net_nexthop (A, ASExternalLsa *dst, ASExternalLsa *src)

external_copy_net_nexthop

Copy the net and nexthop information from one AS-External-LSA to another.

The first dummy argument A is to allow template specialisation by address family.

Lsa::LsaRef  external_generate_type7 (Lsa::LsaRef lsar, bool& indb)

external_generate_type7

Given an AS-External-LSA generate a Type-7 LSA.

Parameters:

indbif true the Type-7-LSA is already in the database.
Lsa::LsaRef  external_generate_external (Lsa::LsaRef lsar)

external_generate_external

Given a Type-7 LSA generate an AS-External-LSA.

void  external_announce (Lsa::LsaRef lsar, bool push, bool redist)

external_announce

An AS-External-LSA being announced either from another area or from the RIB as a redist.

The LSAs should not be scheduled for transmission until the external_shove() is seen. In many cases a number of LSAs may arrive in a single packet, waiting for the external_shove() offers an opportunity for aggregation.

Parameters:

lsarthe AS-External-LSA
pushset to true if the push is a result of an external_push().
redisttrue if this LSA was locally generated due to a redistribution.
void  external_shove ()

external_shove

Called to complete a series of calls to external_announce().

void  external_refresh (Lsa::LsaRef lsar)

external_refresh

Refresh this LSA either because a timer has expired or because a newer LSA has arrived from another area. In either cause the LSA should already be in this area's database.

void  external_withdraw (Lsa::LsaRef lsar)

external_withdraw

An AS-External-LSA being withdrawn either from another area or from the RIB as a redist.

Parameters:

lsarthe AS-External-LSA
bool  generate_network_lsa (PeerID peer, OspfTypes::RouterID link_state_id, list<OspfTypes::RouterID>& attached_routers, uint32_t network_mask)

generate_network_lsa

Generate a Network-LSA for this peer.

bool  update_network_lsa (PeerID peer, OspfTypes::RouterID link_state_id, list<OspfTypes::RouterID>& attached_routers, uint32_t network_mask)

update_network_lsa

Update the Network-LSA for this peer.

bool  withdraw_network_lsa (PeerID peer, OspfTypes::RouterID link_state_id)

withdraw_network_lsa

Withdraw the Network-LSA for this peer by prematurely aging.

void  refresh_network_lsa (PeerID peerid, Lsa::LsaRef lsar, bool timer = false)

refresh_network_lsa

Refresh the Network-LSAs.

Parameters:

peeridthe peer that needs its Network-LSA refreshed.
lsarthe Network-LSA itself.
timeris the Network-LSA being refreshed due to the timer firing?
void  generate_default_route ()

generate_default_route

Create an LSA that will be used to announce the default route into "stub" and "nssa" areas.

bool  find_default_route (size_t& index)

find_default_route

Find the default route LSA in the database if it exists.

Lsa::LsaRef _saved_default_route

_saved_default_route

void  save_default_route ()

save_default_route

If the default route LSA is in the database remove it. Typically to stop it being purged when the area type changes or summarisation is disable.

void  restore_default_route ()

restore_default_route

If the default route LSA should be in the database put it back. Either from the previously saved or generate a new one if necessary. Typically paired with save_default_route().

void  withdraw_default_route ()

withdraw_default_route

Withdraw the default route LSA if it exists. Set the LSA to MaxAge and floods.

void  refresh_default_route ()

refresh_default_route

Refresh the default route LSA. Increments the sequence and floods updates the cost if it has changed.

OspfTypes::AreaType  get_area_type ()

get_area_type

[const]

Returns: the type of this area.

uint32_t  get_options ()

get_options

Get the options that are sent in hello packets, data description packets, LSA headers (OSPFv2), Router-LSAs (OSPFv3) and Network-LSAs (OSPFv3).

void  receive_lsas (PeerID peerid, OspfTypes::NeighbourID nid, list<Lsa::LsaRef>& lsas, list<Lsa_header>& direct_ack, list<Lsa_header>& delayed_ack, bool backup, bool dr)

receive_lsas

Receive LSAs

Parameters:

peeridthat the LSAs arrived on.
nidneighbourID that the LSAs arrived on.
lsaslist of recived lsas.
direct_acklist of direct acks to send in response to the LSA
delayed_acklist of delayed acks to send in response to the LSA
backuptrue if the receiving interface was in state backup.
drtrue if the LSA was received from the designated router.
enum LsaSearch { NOMATCH, EQUIVALENT, NEWER, OLDER, }

LsaSearch

Returned by compare_lsa.

LsaSearch  compare_lsa (const Lsa_header& candidate, const Lsa_header& current)

compare_lsa

[const]

Compare two LSAs.

Parameters:

candidateoffered LSA
currentequivalent to the database copy.

Returns: LsaSearch that describes the type of match.

LsaSearch  compare_lsa (const Lsa_header&)

compare_lsa

[const]

Compare this LSA to

Parameters:

Lsa_headerthat is being sought.

Returns: LsaSearch that describes the type of match.

bool  newer_lsa (const Lsa_header&)

newer_lsa

[const]

Returns: true if this is a newer LSA than we already have.

bool  get_lsas (const list<Ls_request>& requests, list<Lsa::LsaRef>& lsas)

get_lsas

Fetch a list of lsas given a list of requests.

The age fields of the returned LSAs will be correctly set.

Parameters:

requestslist of requests
lsaslist of LSAs

Returns: True if *all* the requests have been satisfied. If an LSA can not be found False is returned and the state of the lsas list is undefined; hence should not be used.

DataBaseHandle  open_database (bool& empty)

open_database

Open database

Used only by the peer to generate the database description packets.

Parameters:

emptytrue if the database is empty.

Returns: Database Handle

bool  valid_entry_database (size_t index)

valid_entry_database

Is this a valid entry to be returned by the database.

This method is for internal use and its use is not recommended.

Returns: true if this entry is valid.

bool  subsequent (DataBaseHandle& dbh)

subsequent

Is there another database entry following this one.

This method is for internal use and its use is not recommended.

Returns: true if there is a subsequent entry.

Lsa::LsaRef  get_entry_database (DataBaseHandle& dbh, bool& last)

get_entry_database

Next database entry

Parameters:

lasttrue if this is the last entry.

Returns: The next LSA in the database.

void  close_database (DataBaseHandle& dbh)

close_database

Close the database

Parameters:

dbdDatabase descriptor
void  clear_database ()

clear_database

Clear the database.

void  maxage_type_database (uint16_t type)

maxage_type_database

All self originated LSAs of this type MaxAge them.

bool  backbone ()

backbone

[const]

Is this the backbone area?

bool  backbone (OspfTypes::AreaID area)

backbone

[const]

void  testing_print_link_state_database ()

testing_print_link_state_database

[const]

Print link state database.

bool  testing_replace_router_lsa (Lsa::LsaRef lsar)

testing_replace_router_lsa

Testing entry point to add this router Router-LSA to the database replacing the one that is already there.

bool  testing_add_lsa (Lsa::LsaRef lsar)

testing_add_lsa

Testing entry point to add an LSA to the database.

bool  testing_delete_lsa (Lsa::LsaRef lsar)

testing_delete_lsa

Testing entry point to delete an LSA from the database.

void  testing_routing_total_recompute ()

testing_routing_total_recompute

Testing enty point to force a toal routing computation.

string  str ()

str


Generated by: pavlin on possum.icir.org on Thu Mar 9 04:43:44 2006, using kdoc $.