| 
 | 
 | ||||||||||||||||
| PimVif (PimNode& pim_node, const Vif& vif) | PimVif | 
Constructor for a given PIM node and a generic virtual interface.
Parameters:
| pim_node | the PimNode this interface belongs to. | 
| vif | the generic Vif interface that contains various information. | 
| ~PimVif () | ~PimVif | 
[virtual]
| void	 set_default_config () | set_default_config | 
Set configuration to default values.
| int		 set_proto_version (int proto_version) | set_proto_version | 
Set the current protocol version.
The protocol version must be in the interval [PIM_VERSION_MIN, PIM_VERSION_MAX].
Parameters:
| proto_version | the protocol version to set. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoUnit.
| int		 start (string& error_msg) | start | 
Start PIM on a single virtual interface.
Parameters:
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 stop (string& error_msg) | stop | 
Gracefully stop PIM on a single virtual interface.
The graceful stop will attempt to send Join/Prune, Assert, etc. messages for all multicast routing entries to gracefully clean-up state with neighbors. After the multicast routing entries cleanup is completed, PimVif::final_stop() is called to complete the job.
Parameters:
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 final_stop (string& error_msg) | final_stop | 
Completely stop PIM on a single virtual interface.
This method should be called after PimVif::stop() to complete the job.
Parameters:
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| void	 enable () | enable | 
Enable PIM on a single virtual interface.
If an unit is not enabled, it cannot be start, or pending-start.
| void	 disable () | disable | 
Disable PIM on a single virtual interface.
If an unit is disabled, it cannot be start or pending-start. If the unit was runnning, it will be stop first.
| int		 pim_recv (const IPvX& src, const IPvX& dst,
			 int ip_ttl, int ip_tos, bool is_router_alert,
			 buffer_t *buffer) | pim_recv | 
Receive a protocol message.
Parameters:
| src | the source address of the message. | 
| dst | the destination address of the message. | 
| ip_ttl | the IP TTL of the message. If it has a negative value it should be ignored. | 
| ip_ttl | the IP TOS of the message. If it has a negative value, it should be ignored. | 
| is_router_alert | if true, the IP Router Alert option in the IP packet was set (when applicable). | 
| buffer | the data buffer with the received message. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| string	 flags_string () | flags_string | 
[const]
Get the string with the flags about the vif status.
TODO: temporary here. Should go to the Vif class after the Vif class starts using the Proto class.
Returns: the C++ style string with the flags about the vif status (e.g., UP/DOWN/DISABLED, etc).
| PimNode&	 pim_node () | pim_node | 
[const]
Get the PIM node (PimNode).
Returns: a reference to the PIM node (PimNode).
| PimMrt&	 pim_mrt () | pim_mrt | 
[const]
Get the PIM Multicast Routing Table (PimMrt).
Returns: a reference to the PIM Multicast Routing Table (PimMrt).
| PimNbr&	 pim_nbr_me () | pim_nbr_me | 
Get the PIM neighbor information (PimNbr) about myself.
Returns: a reference to the PIM neighbor information (PimNbr) about myself.
| void	 pim_hello_start () | pim_hello_start | 
Start the PIM Hello operation.
| void	 pim_hello_stop () | pim_hello_stop | 
| void	 pim_dr_elect () | pim_dr_elect | 
Elect a Designated Router on this interface.
| bool	 i_may_become_dr (const IPvX& exclude_addr) | i_may_become_dr | 
Compute if I may become the Designated Router on this interface if one of the PIM neighbor addresses is not considered.
Compute if I may become the DR on this interface if exclude_addr is excluded.
Parameters:
| exclude_addr | the address to exclude in the computation. | 
Returns: true if I may become the DR on this interface, otherwise false.
| const IPvX&	 primary_addr () | primary_addr | 
[const]
Get my primary address on this interface.
Returns: my primary address on this interface.
| const IPvX&	 domain_wide_addr () | domain_wide_addr | 
[const]
Get my domain-wide reachable address on this interface.
Returns: my domain-wide reachable address on this interface.
| void	 set_domain_wide_addr (const IPvX& v) | set_domain_wide_addr | 
Set my domain-wide reachable address on this interface.
Parameters:
| v | the value of the domain-wide reachable address. | 
| int		 update_primary_and_domain_wide_address (string& error_msg) | update_primary_and_domain_wide_address | 
Update the primary and the domain-wide reachable addresses.
The primary address should be a link-local unicast address, and is used for transmitting the multicast control packets on the LAN. The domain-wide reachable address is the address that should be reachable by all PIM-SM routers in the domain (e.g., the Cand-BSR, or the Cand-RP address).
Parameters:
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| const IPvX&	 dr_addr () | dr_addr | 
[const]
Get the address of the Designated Router on this interface.
Returns: the address of the Designated Router on this interface.
| ConfigParam<bool>&  ip_router_alert_option_check () | ip_router_alert_option_check | 
Optain a reference to the "IP Router Alert option check" flag.
Returns: a reference to the "IP Router Alert option check" flag.
| ConfigParam<uint16_t>&  hello_triggered_delay () | hello_triggered_delay | 
| ConfigParam<uint16_t>&  hello_period () | hello_period | 
| ConfigParam<uint16_t>&  hello_holdtime () | hello_holdtime | 
| ConfigParam<uint32_t>&  dr_priority () | dr_priority | 
| ConfigParam<uint16_t>&  propagation_delay () | propagation_delay | 
| ConfigParam<uint16_t>&  override_interval () | override_interval | 
| ConfigParam<bool>&  is_tracking_support_disabled () | is_tracking_support_disabled | 
| ConfigParam<bool>&  accept_nohello_neighbors () | accept_nohello_neighbors | 
| ConfigParam<uint32_t>&  genid () | genid | 
| ConfigParam<uint16_t>&  join_prune_period () | join_prune_period | 
| ConfigParam<uint16_t>&  join_prune_holdtime () | join_prune_holdtime | 
| ConfigParam<uint32_t>&  assert_time () | assert_time | 
| ConfigParam<uint32_t>&  assert_override_interval () | assert_override_interval | 
| int		 pim_send (const IPvX& src, const IPvX& dst,
			 uint8_t message_type, buffer_t *buffer,
			 string& error_msg) | pim_send | 
| int		 pim_hello_send (string& error_msg) | pim_hello_send | 
| int		 pim_hello_first_send () | pim_hello_first_send | 
| int		 pim_join_prune_send (PimNbr *pim_nbr, PimJpHeader *jp_header,
				    string& error_msg) | pim_join_prune_send | 
| int		 pim_assert_mre_send (PimMre *pim_mre,
				    const IPvX& assert_source_addr,
				    string& error_msg) | pim_assert_mre_send | 
| int		 pim_assert_cancel_send (PimMre *pim_mre, string& error_msg) | pim_assert_cancel_send | 
| int		 pim_assert_send (const IPvX& assert_source_addr,
				const IPvX& assert_group_addr,
				bool rpt_bit,
				uint32_t metric_preference,
				uint32_t metric,
				string& error_msg) | pim_assert_send | 
| int		 pim_register_send (const IPvX& rp_addr,
				  const IPvX& source_addr,
				  const IPvX& group_addr,
				  const uint8_t *rcvbuf,
				  size_t rcvlen,
				  string& error_msg) | pim_register_send | 
| int		 pim_register_null_send (const IPvX& rp_addr,
				       const IPvX& source_addr,
				       const IPvX& group_addr,
				       string& error_msg) | pim_register_null_send | 
| int		 pim_register_stop_send (const IPvX& dr_addr,
				       const IPvX& source_addr,
				       const IPvX& group_addr,
				       string& error_msg) | pim_register_stop_send | 
| int		 pim_bootstrap_send (const IPvX& dst_addr,
				   const BsrZone& bsr_zone,
				   string& error_msg) | pim_bootstrap_send | 
| buffer_t	* pim_bootstrap_send_prepare (const IPvX& src_addr,
					    const IPvX& dst_addr,
					    const BsrZone& bsr_zone,
					    bool is_first_fragment) | pim_bootstrap_send_prepare | 
| int		 pim_cand_rp_adv_send (const IPvX& bsr_addr,
				     const BsrZone& bsr_zone) | pim_cand_rp_adv_send | 
| void	 hello_timer_start (uint32_t sec, uint32_t usec) | hello_timer_start | 
| void	 hello_timer_start_random (uint32_t sec, uint32_t usec) | hello_timer_start_random | 
| bool	 is_lan_delay_enabled () | is_lan_delay_enabled | 
[const]
| const TimeVal&  effective_propagation_delay () | effective_propagation_delay | 
[const]
| const TimeVal&  effective_override_interval () | effective_override_interval | 
[const]
| bool	 is_lan_suppression_state_enabled () | is_lan_suppression_state_enabled | 
[const]
| const TimeVal&  upstream_join_timer_t_suppressed () | upstream_join_timer_t_suppressed | 
[const]
| const TimeVal&  upstream_join_timer_t_override () | upstream_join_timer_t_override | 
[const]
| const TimeVal&  jp_override_interval () | jp_override_interval | 
[const]
| list<PimNbr *>&  pim_nbrs () | pim_nbrs | 
| size_t	 pim_nbrs_number () | pim_nbrs_number | 
[const]
| bool	 i_am_dr () | i_am_dr | 
[const]
| void	 set_i_am_dr (bool v) | set_i_am_dr | 
| PimNbr	* pim_nbr_find (const IPvX& nbr_addr) | pim_nbr_find | 
| void	 add_pim_nbr (PimNbr *pim_nbr) | add_pim_nbr | 
| int		 delete_pim_nbr (PimNbr *pim_nbr) | delete_pim_nbr | 
| void	 delete_pim_nbr_from_nbr_list (PimNbr *pim_nbr) | delete_pim_nbr_from_nbr_list | 
| const list<IPvXNet>&  alternative_subnet_list () | alternative_subnet_list | 
[const]
| void  add_alternative_subnet (const IPvXNet& subnet) | add_alternative_subnet | 
| void  delete_alternative_subnet (const IPvXNet& subnet) | delete_alternative_subnet | 
| void  remove_all_alternative_subnets () | remove_all_alternative_subnets | 
| size_t	 usage_by_pim_mre_task () | usage_by_pim_mre_task | 
[const]
| void	 incr_usage_by_pim_mre_task () | incr_usage_by_pim_mre_task | 
| void	 decr_usage_by_pim_mre_task () | decr_usage_by_pim_mre_task | 
| uint16_t	 calculate_ipv6_pseudo_header_checksum (const IPvX& src,
						      const IPvX& dst,
						      size_t len,
						      uint8_t protocol) | calculate_ipv6_pseudo_header_checksum | 
Calculate the checksum of an IPv6 "pseudo-header" as described in RFC 2460.
Parameters:
| src | the source address of the pseudo-header. | 
| dst | the destination address of the pseudo-header. | 
| len | the upper-layer packet length of the pseudo-header (in host-order). | 
| protocol | the upper-layer protocol number. | 
Returns: the checksum of the IPv6 "pseudo-header".
| buffer_t	* buffer_send_prepare () | buffer_send_prepare | 
| buffer_t	* buffer_send_prepare (buffer_t *buffer) | buffer_send_prepare | 
| void	 clear_pim_statistics () | clear_pim_statistics | 
| uint32_t	 pimstat_hello_messages_received () | pimstat_hello_messages_received | 
[const]
| uint32_t	 pimstat_hello_messages_sent () | pimstat_hello_messages_sent | 
[const]
| uint32_t	 pimstat_hello_messages_rx_errors () | pimstat_hello_messages_rx_errors | 
[const]
| uint32_t	 pimstat_register_messages_received () | pimstat_register_messages_received | 
[const]
| uint32_t	 pimstat_register_messages_sent () | pimstat_register_messages_sent | 
[const]
| uint32_t	 pimstat_register_messages_rx_errors () | pimstat_register_messages_rx_errors | 
[const]
| uint32_t	 pimstat_register_stop_messages_received () | pimstat_register_stop_messages_received | 
[const]
| uint32_t	 pimstat_register_stop_messages_sent () | pimstat_register_stop_messages_sent | 
[const]
| uint32_t	 pimstat_register_stop_messages_rx_errors () | pimstat_register_stop_messages_rx_errors | 
[const]
| uint32_t	 pimstat_join_prune_messages_received () | pimstat_join_prune_messages_received | 
[const]
| uint32_t	 pimstat_join_prune_messages_sent () | pimstat_join_prune_messages_sent | 
[const]
| uint32_t	 pimstat_join_prune_messages_rx_errors () | pimstat_join_prune_messages_rx_errors | 
[const]
| uint32_t	 pimstat_bootstrap_messages_received () | pimstat_bootstrap_messages_received | 
[const]
| uint32_t	 pimstat_bootstrap_messages_sent () | pimstat_bootstrap_messages_sent | 
[const]
| uint32_t	 pimstat_bootstrap_messages_rx_errors () | pimstat_bootstrap_messages_rx_errors | 
[const]
| uint32_t	 pimstat_assert_messages_received () | pimstat_assert_messages_received | 
[const]
| uint32_t	 pimstat_assert_messages_sent () | pimstat_assert_messages_sent | 
[const]
| uint32_t	 pimstat_assert_messages_rx_errors () | pimstat_assert_messages_rx_errors | 
[const]
| uint32_t	 pimstat_graft_messages_received () | pimstat_graft_messages_received | 
[const]
| uint32_t	 pimstat_graft_messages_sent () | pimstat_graft_messages_sent | 
[const]
| uint32_t	 pimstat_graft_messages_rx_errors () | pimstat_graft_messages_rx_errors | 
[const]
| uint32_t	 pimstat_graft_ack_messages_received () | pimstat_graft_ack_messages_received | 
[const]
| uint32_t	 pimstat_graft_ack_messages_sent () | pimstat_graft_ack_messages_sent | 
[const]
| uint32_t	 pimstat_graft_ack_messages_rx_errors () | pimstat_graft_ack_messages_rx_errors | 
[const]
| uint32_t	 pimstat_candidate_rp_messages_received () | pimstat_candidate_rp_messages_received | 
[const]
| uint32_t	 pimstat_candidate_rp_messages_sent () | pimstat_candidate_rp_messages_sent | 
[const]
| uint32_t	 pimstat_candidate_rp_messages_rx_errors () | pimstat_candidate_rp_messages_rx_errors | 
[const]
| uint32_t	 pimstat_unknown_type_messages () | pimstat_unknown_type_messages | 
[const]
| uint32_t	 pimstat_unknown_version_messages () | pimstat_unknown_version_messages | 
[const]
| uint32_t	 pimstat_neighbor_unknown_messages () | pimstat_neighbor_unknown_messages | 
[const]
| uint32_t	 pimstat_bad_length_messages () | pimstat_bad_length_messages | 
[const]
| uint32_t	 pimstat_bad_checksum_messages () | pimstat_bad_checksum_messages | 
[const]
| uint32_t	 pimstat_bad_receive_interface_messages () | pimstat_bad_receive_interface_messages | 
[const]
| uint32_t	 pimstat_rx_interface_disabled_messages () | pimstat_rx_interface_disabled_messages | 
[const]
| uint32_t	 pimstat_rx_register_not_rp () | pimstat_rx_register_not_rp | 
[const]
| uint32_t	 pimstat_rp_filtered_source () | pimstat_rp_filtered_source | 
[const]
| uint32_t	 pimstat_unknown_register_stop () | pimstat_unknown_register_stop | 
[const]
| uint32_t	 pimstat_rx_join_prune_no_state () | pimstat_rx_join_prune_no_state | 
[const]
| uint32_t	 pimstat_rx_graft_graft_ack_no_state () | pimstat_rx_graft_graft_ack_no_state | 
[const]
| uint32_t	 pimstat_rx_graft_on_upstream_interface () | pimstat_rx_graft_on_upstream_interface | 
[const]
| uint32_t	 pimstat_rx_candidate_rp_not_bsr () | pimstat_rx_candidate_rp_not_bsr | 
[const]
| uint32_t	 pimstat_rx_bsr_when_bsr () | pimstat_rx_bsr_when_bsr | 
[const]
| uint32_t	 pimstat_rx_bsr_not_rpf_interface () | pimstat_rx_bsr_not_rpf_interface | 
[const]
| uint32_t	 pimstat_rx_unknown_hello_option () | pimstat_rx_unknown_hello_option | 
[const]
| uint32_t	 pimstat_rx_data_no_state () | pimstat_rx_data_no_state | 
[const]
| uint32_t	 pimstat_rx_rp_no_state () | pimstat_rx_rp_no_state | 
[const]
| uint32_t	 pimstat_rx_aggregate () | pimstat_rx_aggregate | 
[const]
| uint32_t	 pimstat_rx_malformed_packet () | pimstat_rx_malformed_packet | 
[const]
| uint32_t	 pimstat_no_rp () | pimstat_no_rp | 
[const]
| uint32_t	 pimstat_no_route_upstream () | pimstat_no_route_upstream | 
[const]
| uint32_t	 pimstat_rp_mismatch () | pimstat_rp_mismatch | 
[const]
| uint32_t	 pimstat_rpf_neighbor_unknown () | pimstat_rpf_neighbor_unknown | 
[const]
| uint32_t	 pimstat_rx_join_rp () | pimstat_rx_join_rp | 
[const]
| uint32_t	 pimstat_rx_prune_rp () | pimstat_rx_prune_rp | 
[const]
| uint32_t	 pimstat_rx_join_wc () | pimstat_rx_join_wc | 
[const]
| uint32_t	 pimstat_rx_prune_wc () | pimstat_rx_prune_wc | 
[const]
| uint32_t	 pimstat_rx_join_sg () | pimstat_rx_join_sg | 
[const]
| uint32_t	 pimstat_rx_prune_sg () | pimstat_rx_prune_sg | 
[const]
| uint32_t	 pimstat_rx_join_sg_rpt () | pimstat_rx_join_sg_rpt | 
[const]
| uint32_t	 pimstat_rx_prune_sg_rpt () | pimstat_rx_prune_sg_rpt | 
[const]