| 
 | 
 | ||||||||||||||||
In OSPF terms this class represents an interface/link; interface is too overloaded a term. The Peer class is also associated with an area. In OSPFv2 there is a one-to-one correspondence. In OSPFv3 an interface/link can belong to multiple areas.
Responsibilities: 1) Packet transmission; the outgoing queue lives here. 2) Exchange Hello packets. 3) Bring up adjacency, synchronize databases. 4) Elect designated and backup router.
| PeerOut (Ospf<A>& ospf, const string interface, const string vif, 
	    PeerID peerid,
	    const A source, const uint16_t prefix_length,
	    const uint16_t interface_mtu,
	    OspfTypes::LinkType linktype, OspfTypes::AreaID area,
	    OspfTypes::AreaType area_type) | PeerOut | 
| ~PeerOut () | ~PeerOut | 
| string  get_if_name () | get_if_name | 
[const]
For debugging only printable rendition of this interface/vif.
| bool  match (A source, string& interface, string& vif) | match | 
If the source address matches the interface address return the interface and vif.
| PeerID  get_peerid () | get_peerid | 
[const]
Get Peer ID.
| bool  set_interface_address (A interface_address) | set_interface_address | 
Set the address of this interface/vif
| A  get_interface_address () | get_interface_address | 
[const]
Address of this interface/vif.
Returns: interface/vif address.
| uint16_t  get_interface_prefix_length () | get_interface_prefix_length | 
[const]
Returns: prefix length of this interface.
| uint16_t  get_interface_mtu () | get_interface_mtu | 
[const]
Returns: mtu of this interface.
| uint16_t  get_frame_size () | get_frame_size | 
[const]
The maximum size of an OSPF frame, the MTU minus the IP header.
Returns: maximum frame size.
| void  join_multicast_group (A address) | join_multicast_group | 
Join multicast group on this interface/vif.
| void  leave_multicast_group (A address) | leave_multicast_group | 
Leave multicast group on this interface/vif.
| uint16_t  get_interface_cost () | get_interface_cost | 
[const]
Returns: cost of this interface.
| uint16_t  get_inftransdelay () | get_inftransdelay | 
[const]
Returns: InfTransDelay
| bool  add_area (OspfTypes::AreaID area, OspfTypes::AreaType area_type) | add_area | 
Add another Area for this peer to be in, should only be allowed for OSPFv3.
| bool  change_area_router_type (OspfTypes::AreaID area,
				 OspfTypes::AreaType area_type) | change_area_router_type | 
| bool  remove_area (OspfTypes::AreaID area) | remove_area | 
This area is being removed.
Returns: true if this peer is no longer associated with any areas. Allowing the caller to delete this peer.
| bool  add_neighbour (OspfTypes::AreaID area, A neighbour_address,
		       OspfTypes::RouterID) | add_neighbour | 
| bool  remove_neighbour (OspfTypes::AreaID area, A neighbour_address,
			  OspfTypes::RouterID rid) | remove_neighbour | 
Remove a neighbour from the peer.
| void  set_state (bool state) | set_state | 
| bool  get_state () | get_state | 
[const]
| void  set_link_status (bool status) | set_link_status | 
Set the link status. This is not only the link status but is the interface/vif/address configured up.
| void  peer_change () | peer_change | 
Dependent on the configured peer status and the link status decide if the peer should be brought up or taken down.
| bool  transmit (typename Transmit<A>::TransmitRef tr) | transmit | 
Used by external and internal entities to transmit packets.
| bool  receive (A dst, A src, Packet *packet) throw(BadPeer) | receive | 
Packets for this peer are received here.
| bool  send_lsa (OspfTypes::AreaID area, const OspfTypes::NeighbourID nid,
		  Lsa::LsaRef lsar) | send_lsa | 
Send this LSA directly to the neighbour. Do not place on retransmission list.
Returns: true on success
| bool  queue_lsa (PeerID peerid, OspfTypes::NeighbourID nid,
		   Lsa::LsaRef lsar, bool &multicast_on_peer) | queue_lsa | 
[const]
Queue an LSA for transmission.
Parameters:
| peer | the LSA arrived on. | 
| nid | the LSA arrived on. | 
| lsar | the lsa | 
| multicast_on_peer | Did this LSA get multicast on this peer. | 
Returns: true on success.
| bool  push_lsas () | push_lsas | 
| bool  neighbours_exchange_or_loading (OspfTypes::AreaID area) | neighbours_exchange_or_loading | 
Are any of the neighbours of this peer in the state exchange or loading.
Returns: true if any of the neighbours are in state exchange or loading.
| bool  on_link_state_request_list (OspfTypes::AreaID area,
				    const OspfTypes::NeighbourID nid,
				    Lsa::LsaRef lsar) | on_link_state_request_list | 
Is this LSA on this neighbours link state request list.
Returns: true if it is.
| bool  event_bad_link_state_request (OspfTypes::AreaID area,
				      const OspfTypes::NeighbourID nid) | event_bad_link_state_request | 
Generate a BadLSReq event.
| bool  virtual_link_endpoint (OspfTypes::AreaID area) | virtual_link_endpoint | 
Are any of neighbours of this peer a virtual link endpoint.
Returns: true if any are.
| OspfTypes::LinkType  get_linktype () | get_linktype | 
[const]
Returns: the link type.
| void  router_id_changing () | router_id_changing | 
The router ID is about to change.
| bool  set_interface_id (OspfTypes::AreaID area, uint32_t interface_id) | set_interface_id | 
Set the interface ID OSPFv3 only.
| bool  set_hello_interval (OspfTypes::AreaID area, uint16_t hello_interval) | set_hello_interval | 
Set the hello interval in seconds.
| bool  set_options (OspfTypes::AreaID area, uint32_t options) | set_options | 
| bool  set_router_priority (OspfTypes::AreaID area, uint8_t priority) | set_router_priority | 
| bool  set_router_dead_interval (OspfTypes::AreaID area,
				  uint32_t router_dead_interval) | set_router_dead_interval | 
Set the router dead interval in seconds.
| bool  set_simple_authentication_key (OspfTypes::AreaID area,
				       const string& password,
				       string& error_msg) | set_simple_authentication_key | 
Set a simple password authentication key.
Note that the current authentication handler is replaced with a simple password authentication handler.
Parameters:
| area | the area ID. | 
| password | the password to set. | 
| the | error message (if error). | 
Returns: true on success, otherwise false.
| bool  delete_simple_authentication_key (OspfTypes::AreaID area,
					  string& error_msg) | delete_simple_authentication_key | 
Delete a simple password authentication key.
Note that after the deletion the simple password authentication handler is replaced with a Null authentication handler.
Parameters:
| area | the area ID. | 
| the | error message (if error). | 
Returns: true on success, otherwise false.
| bool  set_md5_authentication_key (OspfTypes::AreaID area, uint8_t key_id,
				    const string& password,
				    const TimeVal& start_timeval,
				    const TimeVal& end_timeval,
				    const TimeVal& max_time_drift,
				    string& error_msg) | set_md5_authentication_key | 
Set an MD5 authentication key.
Note that the current authentication handler is replaced with an MD5 authentication handler.
Parameters:
| area | the area ID. | 
| key_id | unique ID associated with key. | 
| password | phrase used for MD5 digest computation. | 
| start_timeval | start time when key becomes valid. | 
| end_timeval | end time when key becomes invalid. | 
| max_time_drift | the maximum time drift among all routers. | 
| the | error message (if error). | 
Returns: true on success, otherwise false.
| bool  delete_md5_authentication_key (OspfTypes::AreaID area, uint8_t key_id,
				       string& error_msg) | delete_md5_authentication_key | 
Delete an MD5 authentication key.
Note that after the deletion if there are no more valid MD5 keys, the MD5 authentication handler is replaced with a Null authentication handler.
Parameters:
| area | the area ID. | 
| key_id | the ID of the key to delete. | 
| the | error message (if error). | 
Returns: true on success, otherwise false.
| bool  set_passive (OspfTypes::AreaID area, bool passive) | set_passive | 
Toggle the passive status of an interface.
| bool  set_interface_cost (uint16_t interface_cost) | set_interface_cost | 
| bool  set_retransmit_interval (OspfTypes::AreaID area,
				 uint16_t retransmit_interval) | set_retransmit_interval | 
| bool  set_inftransdelay (uint16_t inftransdelay) | set_inftransdelay | 
| bool  get_neighbour_list (list<OspfTypes::NeighbourID>& neighbours) | get_neighbour_list | 
[const]
Get a list of all the neighbours.
| bool  get_neighbour_info (OspfTypes::NeighbourID nid,
			    NeighbourInfo& ninfo) | get_neighbour_info | 
[const]
Get state information about this neighbour.
Parameters:
| nid | neighbour information is being request about. | 
| ninfo | if neighbour is found its information. |