class Port

RIP Port. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Types

Public Methods

Protected Methods

Protected Members


Detailed Description

A RIP Port is an origin and sink of RIP packets. It is uniquely identified by the tuplet of <interface, virtual interface, address>. The Port sends and receives RIP packets via an attached Port IO object (PortIOBase<A>). The Port contains a list of Peers (Peer<A>) that it has received communication on and is responsible for updating information sent by peers in the RIP route database (RouteDB<A>).

typedef A Addr

Addr

typedef list<Peer<A>*> PeerList

PeerList

 Port (PortManagerBase<A>& manager)

Port

 ~Port ()

~Port

PortManagerBase<A>&  port_manager ()

port_manager

void  set_enabled (bool en)

set_enabled

Set enabled state. When a port is enabled it can perform input and output processing. When not enabled, input data is discarded and output processing can not occur.

bool  enabled ()

enabled

[const]

Get enabled state.

inline PortTimerConstants&  constants ()

constants

Get timer constants in use for routes received on this port.

inline const PortTimerConstants&  constants ()

constants

[const]

Get timer constants in use for routes received on this port.

inline PortAFSpecState<A>&  af_state ()

af_state

Get Address Family specific state associated with port. This is state that only has meaning within the IP address family.

inline const PortAFSpecState<A>&  af_state ()

af_state

[const]

Get Address Family specific state associated with port. This is state that only has meaning within the IP address family.

inline uint32_t  cost ()

cost

[const]

Get cost metric associated with Port.

inline void  set_cost (uint32_t cost)

set_cost

Set cost metric associated with Port.

inline const RipHorizon&  horizon ()

horizon

[const]

Get horizon type associated with Port.

inline void  set_horizon (const RipHorizon& h)

set_horizon

Set horizon type associated with Port.

Parameters:

hhorizon type.
bool  advertise ()

advertise

[const]

Determine whether Port address should be advertised.

Returns: true if port should be advertised to other hosts, false otherwise.

inline void  set_advertise (bool en)

set_advertise

Set Port advertisement status.

Parameters:

entrue if port should be advertised, false otherwise.
inline bool  advertise_default_route ()

advertise_default_route

[const]

Include default route in RIP response messages.

Returns: true if default route is advertised.

void  set_advertise_default_route (bool en)

set_advertise_default_route

Configure whether default route is advertised in RIP response messages.

Parameters:

entrue if default route should be advertised.
inline bool  accept_default_route ()

accept_default_route

[const]

Accept default route if found in RIP response messages.

Returns: true if default route should be accepted.

void  set_accept_default_route (bool en)

set_accept_default_route

Accept default route if found in RIP response messages.

Parameters:

entrue if default route should be accepted.
inline bool  passive ()

passive

[const]

Accept routes, but do not advertise them.

Returns: true if this port is passive.

void  set_passive (bool passive)

set_passive

Accept routes, but do not advertise them.

Parameters:

passivetrue if port should receive and not send packets.
inline bool  accept_non_rip_requests ()

accept_non_rip_requests

[const]

Accept and respond to non-RIP requests. Testing and Debugging tools typically send requests from non-RIP IP ports.

void  set_accept_non_rip_requests (bool en)

set_accept_non_rip_requests

Accept and respond to non-RIP requests. Testing and Debugging tools typically send requests from non-RIP IP ports.

inline const PeerList&  peers ()

peers

[const]

Get Peers associated with this Port.

inline PeerList&  peers ()

peers

Get Peers associated with this Port.

NB This method is a backdoor for testing purposes and should not be relied upon to exist in future.

inline const PortCounters&  counters ()

counters

[const]

Get counters associated with Port.

inline PortCounters&  counters ()

counters

Get counters associated with Port.

const Peer<A>*  peer (const Addr& addr)

peer

[const]

Get Peer identified by address.

Returns: pointer to Peer on success, 0 otherwise.

void  set_max_packet_buffer_bytes (uint32_t max_bytes)

set_max_packet_buffer_bytes

Set the maximum packet buffer size.

uint32_t  set_max_packet_buffer_bytes ()

set_max_packet_buffer_bytes

[const]

Get the maximum packet buffer size.

uint32_t  packet_buffer_bytes ()

packet_buffer_bytes

[const]

Get the current number of bytes buffered in RIP packets.

void  reschedule_dummy_timer ()

reschedule_dummy_timer

A dummy method to reschedule a non-existing timer.

void  reschedule_request_table_timer ()

reschedule_request_table_timer

Reschedule request table timer. If the timer was not running, then don't schedule it.

void  start_request_table_timer ()

start_request_table_timer

[protected]

Start request table timer. When there are no peers, this schedules the periodic transmission of request table packets.

void  stop_request_table_timer ()

stop_request_table_timer

[protected]

Stop request table timer.

bool  request_table ()

request_table

[protected]

Send request packet.

Returns: true if packet sent, false if no packet sent.

bool  request_table_timeout ()

request_table_timeout

[protected]

Send request packet if there are no peers.

Returns: true if packet sent, false if no packet sent.

void  start_peer_gc_timer ()

start_peer_gc_timer

[protected]

Start periodic timer to garbage collect peers. Timer deschedules itself when no peers exist.

bool  peer_gc_timeout ()

peer_gc_timeout

[protected]

Poll peers and remove those with no routes. return true if peers still exist, false otherwise.

void  kill_peer_routes ()

kill_peer_routes

[protected]

Kill peer routes. Change cost of routes learned from peers to infinity. Typically called when port instance is disabled or io system reports that it is not enabled.

Peer<A>*  peer (const Addr& addr)

peer

[protected]

Get Peer identified by address.

Returns: pointer to Peer on success, 0 otherwise.

Peer<A>*  create_peer (const Addr& addr)

create_peer

[protected]

Create Peer.

Returns: pointer to Peer if created, 0 on failure or peer already exists.

void  record_packet (Peer<A>* p)

record_packet

[protected]

Record packet arrival. Updates port and peer counters.

void  record_response_packet (Peer<A>* p)

record_response_packet

[protected]

Record response packet arrival.

void  record_request_packet (Peer<A>* p)

record_request_packet

[protected]

Record request packet arrival.

void  record_bad_packet (const string& why, const Addr& addr, uint16_t port, Peer<A>* p)

record_bad_packet

[protected]

Record bad packet.

Parameters:

whyreason packet marked
void  record_bad_auth_packet (const string& why, const Addr& addr, uint16_t port, Peer<A>* p)

record_bad_auth_packet

[protected]

Record bad authentication packet.

void  record_bad_route (const string& why, const Addr& src, uint16_t port, Peer<A>* p)

record_bad_route

[protected]

Record bad route.

Parameters:

whyreason packet marked
void  parse_request (const Addr& src_addr, uint16_t rc_port, const uint8_t* entries_ptr, uint32_t n_entries)

parse_request

[protected]

Parse request message.

void  parse_response (const Addr& src_addr, uint16_t src_port, const uint8_t* entries_ptr, uint32_t n_entries)

parse_response

[protected]

Parse response message.

void  block_queries ()

block_queries

[protected]

Block route queries for amount of time determined by PortTimerConstants::interquery_delay_ms().

bool  queries_blocked ()

queries_blocked

[protected const]

Determine whether queries are currently blocked and should be discarded.

void  unsolicited_response_timeout ()

unsolicited_response_timeout

[protected]

Unsolicited update output timer timeout.

void  triggered_update_timeout ()

triggered_update_timeout

[protected]

Triggered update timeout.

bool  output_allowed ()

output_allowed

[protected const]

Query output process policy.

Check whether instance is enabled, whether it is active or passive, and whether the associated I/O object is enabled.

void  start_stop_output_processing ()

start_stop_output_processing

[protected]

Check whether output is allowed and start or stop output processing accordingly.

void  start_output_processing ()

start_output_processing

[protected]

Start output processing.

Starts timers for unsolicited updates and triggered updates.

void  stop_output_processing ()

stop_output_processing

[protected]

Stop output processing.

Stops timers for unsolicited updates and triggered updates.

void  push_packets ()

push_packets

If I/O handler is not already sending a packet, take a packet from packet queue and send it.

pair<A,uint16_t>  route_policy (const RouteEntry<A>& re)

route_policy

[const]

Check policy on route.

Returns: tuple (nexthop,cost). If route should not be advertised the cost value will be greater than RIP_INFINITY.

void  port_io_send_completion (bool success)

port_io_send_completion

Send completion notification. Called by PortIO instance when a send request is completed.

Parameters:

successindication of whether send completed successfully.

Reimplemented from PortIOUserBase.

void  port_io_receive (const Addr& src_addr, uint16_t src_port, const uint8_t* rip_packet, const size_t rip_packet_bytes)

port_io_receive

Receive RIP packet. Called by PortIO instance when a RIP packet arrives.

Parameters:

addrsource address of packet.
portsource port of packet.
rip_packetpointer to RIP packet data.
rip_packet_bytessize of RIP packet data.

Reimplemented from PortIOUserBase.

void  port_io_enabled_change (bool en)

port_io_enabled_change

Notification that PortIO enabled state has changed. Called by PortIO when it's enabled status changes.

Parameters:

enthe enabled status of the I/O system.

Reimplemented from PortIOUserBase.

PortManagerBase<A>& _pm

_pm

[protected]

PortAFSpecState<A> _af_state

_af_state

[protected]

PeerList _peers

_peers

[protected]

XorpTimer _rt_timer

_rt_timer

[protected]

XorpTimer _gc_timer

_gc_timer

[protected]

XorpTimer _ur_timer

_ur_timer

[protected]

XorpTimer _tu_timer

_tu_timer

[protected]

XorpTimer _query_blocked_timer

_query_blocked_timer

[protected]

bool _en

_en

[protected]

uint32_t _cost

_cost

[protected]

RipHorizon _horizon

_horizon

[protected]

bool _advertise

_advertise

[protected]

bool _adv_def_rt

_adv_def_rt

[protected]

bool _acc_def_rt

_acc_def_rt

[protected]

bool _passive

_passive

[protected]

bool _acc_non_rip_reqs

_acc_non_rip_reqs

[protected]

PacketQueue<A>* _packet_queue

_packet_queue

[protected]

PortTimerConstants _constants

_constants

[protected]

PortCounters _counters

_counters

[protected]

OutputTable<A>* _ur_out

_ur_out

[protected]

OutputUpdates<A>* _tu_out

_tu_out

[protected]

OutputTable<A>* _su_out

_su_out

[protected]


Generated by: pavlin on possum.icir.org on Wed Mar 21 11:24:07 2007, using kdoc $.