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]
| 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:
| h | horizon 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:
| en | true 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:
| en | true 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:
| en | true 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:
| passive | true 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  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]
| 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:
| why | reason 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:
| why | reason packet marked | 
| void  parse_request (const Addr&		  src_addr,
		       uint16_t			  src_port,
		       const PacketRouteEntry<A>* entries,
		       uint32_t			  n_entries) | parse_request | 
[protected]
| void  parse_response (const Addr&		   src_addr,
			uint16_t		   src_port,
			const PacketRouteEntry<A>* entries,
			uint32_t		   n_entries) | parse_response | 
[protected]
| 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]
| 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:
| success | indication 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:
| addr | source address of packet. | 
| port | source port of packet. | 
| rip_packet | pointer to RIP packet data. | 
| rip_packet_bytes | size 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:
| en | the 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]