class PimVif
|
A class for PIM-specific virtual interface.
More... |
|
|
Public Methods
- PimVif (PimNode& pim_node, const Vif& vif)
- virtual ~PimVif ()
- void set_default_config ()
- int set_proto_version (int proto_version)
- int start ()
- int stop ()
- int final_stop ()
- int pim_recv (const IPvX& src, const IPvX& dst,
int ip_ttl, int ip_tos, bool router_alert_bool,
buffer_t *buffer)
- string flags_string () const
- PimNode& pim_node () const
- PimMrt& pim_mrt () const
- PimNbr& pim_nbr_me ()
- void pim_hello_start ()
- void pim_hello_stop ()
- void pim_hello_stop_dr ()
- void pim_dr_elect ()
- bool i_may_become_dr (const IPvX& exclude_addr)
- const IPvX& addr () const
- const IPvX& dr_addr () const
- ConfigParam<uint16_t>& hello_triggered_delay ()
- ConfigParam<uint16_t>& hello_period ()
- ConfigParam<uint16_t>& hello_holdtime ()
- ConfigParam<uint32_t>& dr_priority ()
- ConfigParam<uint16_t>& lan_delay ()
- ConfigParam<uint16_t>& override_interval ()
- ConfigParam<bool>& is_tracking_support_disabled ()
- ConfigParam<bool>& accept_nohello_neighbors ()
- ConfigParam<uint32_t>& genid ()
- ConfigParam<uint16_t>& join_prune_period ()
- ConfigParam<uint16_t>& join_prune_holdtime ()
- ConfigParam<uint32_t>& assert_time ()
- ConfigParam<uint32_t>& assert_override_interval ()
- int pim_send (const IPvX& dst, uint8_t message_type,
buffer_t *buffer)
- int pim_hello_send ()
- int pim_hello_first_send ()
- int pim_join_prune_send (PimNbr *pim_nbr, PimJpHeader *jp_header)
- int pim_assert_mre_send (PimMre *pim_mre,
const IPvX& assert_source_addr)
- int pim_assert_cancel_send (PimMre *pim_mre)
- int pim_assert_send (const IPvX& assert_source_addr,
const IPvX& assert_group_addr,
bool rpt_bit,
uint32_t metric_preference,
uint32_t metric)
- int pim_register_send (const IPvX& rp_addr,
const IPvX& source_addr,
const IPvX& group_addr,
const uint8_t *rcvbuf,
size_t rcvlen)
- int pim_register_null_send (const IPvX& rp_addr,
const IPvX& source_addr,
const IPvX& group_addr)
- int pim_register_stop_send (const IPvX& dr_addr,
const IPvX& source_addr,
const IPvX& group_addr)
- int pim_bootstrap_send (const IPvX& dst_addr,
const BsrZone& bsr_zone)
- buffer_t * pim_bootstrap_send_prepare (const IPvX& dst_addr,
const BsrZone& bsr_zone,
bool is_first_fragment)
- int pim_cand_rp_adv_send (const IPvX& bsr_addr,
const BsrZone& bsr_zone)
- void hello_timer_start (uint32_t sec, uint32_t usec)
- void hello_timer_start_random (uint32_t sec, uint32_t usec)
- bool is_lan_delay_enabled () const
- const TimeVal& vif_propagation_delay () const
- const TimeVal& vif_override_interval () const
- bool is_lan_suppression_state_enabled () const
- const TimeVal& upstream_join_timer_t_suppressed () const
- const TimeVal& upstream_join_timer_t_override () const
- const TimeVal& jp_override_interval () const
- list<PimNbr *>& pim_nbrs ()
- int pim_nbrs_number () const
- bool i_am_dr () const
- void set_i_am_dr (bool v)
- PimNbr * pim_nbr_find (const IPvX& nbr_addr)
- void add_pim_nbr (PimNbr *pim_nbr)
- int delete_pim_nbr (PimNbr *pim_nbr)
- void delete_pim_nbr_from_nbr_list (PimNbr *pim_nbr)
- size_t usage_by_pim_mre_task () const
- void incr_usage_by_pim_mre_task ()
- void decr_usage_by_pim_mre_task ()
- buffer_t * buffer_send_prepare ()
- buffer_t * buffer_send_prepare (buffer_t *buffer)
- void clear_pim_statistics ()
- uint32_t pimstat_hello_messages_received () const
- uint32_t pimstat_hello_messages_sent () const
- uint32_t pimstat_hello_messages_rx_errors () const
- uint32_t pimstat_register_messages_received () const
- uint32_t pimstat_register_messages_sent () const
- uint32_t pimstat_register_messages_rx_errors () const
- uint32_t pimstat_register_stop_messages_received () const
- uint32_t pimstat_register_stop_messages_sent () const
- uint32_t pimstat_register_stop_messages_rx_errors () const
- uint32_t pimstat_join_prune_messages_received () const
- uint32_t pimstat_join_prune_messages_sent () const
- uint32_t pimstat_join_prune_messages_rx_errors () const
- uint32_t pimstat_bootstrap_messages_received () const
- uint32_t pimstat_bootstrap_messages_sent () const
- uint32_t pimstat_bootstrap_messages_rx_errors () const
- uint32_t pimstat_assert_messages_received () const
- uint32_t pimstat_assert_messages_sent () const
- uint32_t pimstat_assert_messages_rx_errors () const
- uint32_t pimstat_graft_messages_received () const
- uint32_t pimstat_graft_messages_sent () const
- uint32_t pimstat_graft_messages_rx_errors () const
- uint32_t pimstat_graft_ack_messages_received () const
- uint32_t pimstat_graft_ack_messages_sent () const
- uint32_t pimstat_graft_ack_messages_rx_errors () const
- uint32_t pimstat_candidate_rp_messages_received () const
- uint32_t pimstat_candidate_rp_messages_sent () const
- uint32_t pimstat_candidate_rp_messages_rx_errors () const
- uint32_t pimstat_unknown_type_messages () const
- uint32_t pimstat_unknown_version_messages () const
- uint32_t pimstat_neighbor_unknown_messages () const
- uint32_t pimstat_bad_length_messages () const
- uint32_t pimstat_bad_checksum_messages () const
- uint32_t pimstat_bad_receive_interface_messages () const
- uint32_t pimstat_rx_interface_disabled_messages () const
- uint32_t pimstat_rx_register_not_rp () const
- uint32_t pimstat_rp_filtered_source () const
- uint32_t pimstat_unknown_register_stop () const
- uint32_t pimstat_rx_join_prune_no_state () const
- uint32_t pimstat_rx_graft_graft_ack_no_state () const
- uint32_t pimstat_rx_graft_on_upstream_interface () const
- uint32_t pimstat_rx_candidate_rp_not_bsr () const
- uint32_t pimstat_rx_bsr_when_bsr () const
- uint32_t pimstat_rx_bsr_not_rpf_interface () const
- uint32_t pimstat_rx_unknown_hello_option () const
- uint32_t pimstat_rx_data_no_state () const
- uint32_t pimstat_rx_rp_no_state () const
- uint32_t pimstat_rx_aggregate () const
- uint32_t pimstat_rx_malformed_packet () const
- uint32_t pimstat_no_rp () const
- uint32_t pimstat_no_route_upstream () const
- uint32_t pimstat_rp_mismatch () const
- uint32_t pimstat_rpf_neighbor_unknown () const
- uint32_t pimstat_rx_join_rp () const
- uint32_t pimstat_rx_prune_rp () const
- uint32_t pimstat_rx_join_wc () const
- uint32_t pimstat_rx_prune_wc () const
- uint32_t pimstat_rx_join_sg () const
- uint32_t pimstat_rx_prune_sg () const
- uint32_t pimstat_rx_join_sg_rpt () const
- uint32_t pimstat_rx_prune_sg_rpt () const
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.
|
[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_version | the protocol version to set.
|
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoUnit.
Start PIM on a single virtual interface.
Returns: XORP_OK on success, otherwise XORP_ERROR.
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.
If this method is called one-after-another, the second one
will force calling immediately PimVif::final_stop() to quickly
finish the job.
Returns: XORP_OK on success, otherwise XORP_ERROR.
int final_stop ()
| final_stop |
Completely stop PIM on a single virtual interface.
This method should be called after PimVif::stop() to complete
the job.
Returns: XORP_OK on success, otherwise XORP_ERROR.
int pim_recv (const IPvX& src, const IPvX& dst,
int ip_ttl, int ip_tos, bool router_alert_bool,
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.
|
router_alert_bool | 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).
[const]
Get the PIM node (PimNode).
Returns: a reference to the PIM node (PimNode).
[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_addr | the address to exclude in the computation.
|
Returns: true if I may become the DR on this interface, otherwise
false.
[const]
Get my primary address on this interface.
Returns: my primary address on this interface.
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<uint16_t>& hello_triggered_delay ()
| hello_triggered_delay |
ConfigParam<uint16_t>& hello_holdtime ()
| hello_holdtime |
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<uint16_t>& join_prune_period ()
| join_prune_period |
ConfigParam<uint16_t>& join_prune_holdtime ()
| join_prune_holdtime |
ConfigParam<uint32_t>& assert_override_interval ()
| assert_override_interval |
int pim_send (const IPvX& dst, uint8_t message_type,
buffer_t *buffer)
| pim_send |
int pim_hello_send ()
| pim_hello_send |
int pim_hello_first_send ()
| pim_hello_first_send |
int pim_join_prune_send (PimNbr *pim_nbr, PimJpHeader *jp_header)
| pim_join_prune_send |
int pim_assert_mre_send (PimMre *pim_mre,
const IPvX& assert_source_addr)
| pim_assert_mre_send |
int pim_assert_cancel_send (PimMre *pim_mre)
| 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)
| 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)
| pim_register_send |
int pim_register_null_send (const IPvX& rp_addr,
const IPvX& source_addr,
const IPvX& group_addr)
| pim_register_null_send |
int pim_register_stop_send (const IPvX& dr_addr,
const IPvX& source_addr,
const IPvX& group_addr)
| pim_register_stop_send |
int pim_bootstrap_send (const IPvX& dst_addr,
const BsrZone& bsr_zone)
| pim_bootstrap_send |
buffer_t * pim_bootstrap_send_prepare (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& vif_propagation_delay ()
| vif_propagation_delay |
[const]
const TimeVal& vif_override_interval ()
| vif_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 |
int pim_nbrs_number ()
| pim_nbrs_number |
[const]
[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 |
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 |
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 Thu Aug 28 12:52:15 2003, using kdoc 2.0a54+XORP. |