class PimVif

A class for PIM-specific virtual interface. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Methods


Detailed Description

 PimVif (PimNode& pim_node, const Vif& vif)

PimVif

Constructor for a given PIM node and a generic virtual interface.

Parameters:

pim_nodethe PimNode this interface belongs to.
vifthe generic Vif interface that contains various information.
 ~PimVif ()

~PimVif

[virtual]

Destructor

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_versionthe 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_msgthe 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_msgthe 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_msgthe 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:

srcthe source address of the message.
dstthe destination address of the message.
ip_ttlthe IP TTL of the message. If it has a negative value it should be ignored.
ip_ttlthe IP TOS of the message. If it has a negative value, it should be ignored.
is_router_alertif true, the IP Router Alert option in the IP packet was set (when applicable).
bufferthe 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

Stop the PIM Hello operation.

void  pim_hello_stop_dr ()

pim_hello_stop_dr

Attempt to inform other PIM neighbors that this interface is not more the Designated Router.

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_addrthe 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:

vthe 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_msgthe 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

PimNbrpim_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:

srcthe source address of the pseudo-header.
dstthe destination address of the pseudo-header.
lenthe upper-layer packet length of the pseudo-header (in host-order).
protocolthe 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]


Generated by: pavlin on possum.icir.org on Wed Aug 2 15:36:25 2006, using kdoc $.