xorp

Mld6igmpVif Class Reference

A class for MLD/IGMP-specific virtual interface. More...

#include <mld6igmp_vif.hh>

Inheritance diagram for Mld6igmpVif:
ProtoUnit Vif ProtoUnit Vif ProtoState ProtoState ServiceBase ServiceBase BugCatcher BugCatcher

List of all members.

Public Member Functions

 Mld6igmpVif (Mld6igmpNode &mld6igmp_node, const Vif &vif)
 Constructor for a given MLD/IGMP node and a generic virtual interface.
virtual ~Mld6igmpVif ()
 Destructor.
int set_proto_version (int proto_version)
 Set the current protocol version.
int start (string &error_msg)
 Start MLD/IGMP on a single virtual interface.
int stop (string &error_msg)
 Stop MLD/IGMP on a single virtual interface.
void enable ()
 Enable MLD/IGMP on a single virtual interface.
void disable ()
 Disable MLD/IGMP on a single virtual interface.
int mld6igmp_recv (const IPvX &src, const IPvX &dst, int ip_ttl, int ip_tos, bool ip_router_alert, bool ip_internet_control, buffer_t *buffer, string &error_msg)
 Receive a protocol message.
string flags_string () const
 Get the string with the flags about the vif status.
Mld6igmpNodemld6igmp_node () const
 Get the MLD6IGMP node (Mld6igmpNode).
const IPvXprimary_addr () const
 Get my primary address on this interface.
void set_primary_addr (const IPvX &v)
 Set my primary address on this interface.
int update_primary_address (string &error_msg)
 Update the primary address.
const IPvXquerier_addr () const
 Get the MLD/IGMP querier address.
void set_querier_addr (const IPvX &v)
 Set the MLD6/IGMP querier address.
Mld6igmpGroupSetgroup_records ()
 Get the set with the multicast group records information (Mld6igmpGroupSet).
const Mld6igmpGroupSetgroup_records () const
 Get the const set with the multicast group records information (Mld6igmpGroupSet).
bool proto_is_ssm () const
 Test if the protocol is Source-Specific Multicast (e.g., IGMPv3 or MLDv2).
const XorpTimerconst_other_querier_timer () const
 Get the timer to timeout the (other) MLD/IGMP querier.
ConfigParam< bool > & ip_router_alert_option_check ()
 Optain a reference to the "IP Router Alert option check" flag.
ConfigParam< TimeVal > & configured_query_interval ()
 Optain a reference to the configured Query Interval.
const TimeValeffective_query_interval () const
 Get the effective Query Interval value.
void set_effective_query_interval (const TimeVal &v)
 Set the effective Query Interval.
ConfigParam< TimeVal > & query_last_member_interval ()
 Optain a reference to the Last Member Query Interval.
ConfigParam< TimeVal > & query_response_interval ()
 Optain a reference to the Query Response Interval.
ConfigParam< uint32_t > & configured_robust_count ()
 Optain a reference to the configured Robustness Variable count.
uint32_t effective_robustness_variable () const
 Get the effective Robustness Variable value.
void set_effective_robustness_variable (uint32_t v)
 Set the effective Robustness Variable.
uint32_t last_member_query_count () const
 Get the Last Member Query Count value.
const TimeValgroup_membership_interval () const
 Obtain a reference to the Group Membership Interval.
const TimeVallast_member_query_time () const
 Obtain a reference to the Last Member Query Time.
const TimeValolder_version_host_present_interval () const
 Obtain a reference to the Older Version Host Present Interval.
int add_protocol (xorp_module_id module_id, const string &module_instance_name)
 Add a protocol that needs to be notified about multicast membership changes.
int delete_protocol (xorp_module_id module_id, const string &module_instance_name)
 Delete a protocol that needs to be notified about multicast membership changes.
int join_prune_notify_routing (const IPvX &source, const IPvX &group, action_jp_t action_jp) const
 Notify the interested parties that there is membership change among the local members.
int mld6igmp_send (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer, string &error_msg)
 Send MLD or IGMP message.
int mld6igmp_group_query_send (const IPvX &group_address, string &error_msg)
 Send Group-Specific Query message.
int mld6igmp_group_source_query_send (const IPvX &group_address, const set< IPvX > &sources, string &error_msg)
 Send MLDv2 or IGMPv3 Group-and-Source-Specific Query message.
int mld6igmp_query_send (const IPvX &src, const IPvX &dst, const TimeVal &max_resp_time, const IPvX &group_address, const set< IPvX > &sources, bool s_flag, string &error_msg)
 Send MLD or IGMP Query message.
bool is_igmpv1_mode () const
 Test if the interface is running in IGMPv1 mode.
bool is_igmpv2_mode () const
 Test if the interface is running in IGMPv2 mode.
bool is_igmpv3_mode () const
 Test if the interface is running in IGMPv3 mode.
bool is_mldv1_mode () const
 Test if the interface is running in MLDv1 mode.
bool is_mldv2_mode () const
 Test if the interface is running in MLDv2 mode.
bool is_igmpv1_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in IGMPv1 mode.
bool is_igmpv2_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in IGMPv2 mode.
bool is_igmpv3_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in IGMPv3 mode.
bool is_mldv1_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in MLDv1 mode.
bool is_mldv2_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in MLDv2 mode.
 Mld6igmpVif (Mld6igmpNode &mld6igmp_node, const Vif &vif)
 Constructor for a given MLD/IGMP node and a generic virtual interface.
virtual ~Mld6igmpVif ()
 Destructor.
int set_proto_version (int proto_version)
 Set the current protocol version.
int start (string &error_msg)
 Start MLD/IGMP on a single virtual interface.
void notifyUpdated ()
 Attempt deferred start.
int stop (string &error_msg)
 Stop MLD/IGMP on a single virtual interface.
void enable ()
 Enable MLD/IGMP on a single virtual interface.
void disable ()
 Disable MLD/IGMP on a single virtual interface.
int mld6igmp_recv (const IPvX &src, const IPvX &dst, int ip_ttl, int ip_tos, bool ip_router_alert, bool ip_internet_control, buffer_t *buffer, string &error_msg)
 Receive a protocol message.
string flags_string () const
 Get the string with the flags about the vif status.
Mld6igmpNodemld6igmp_node () const
 Get the MLD6IGMP node (Mld6igmpNode).
const IPvXprimary_addr () const
 Get my primary address on this interface.
void set_primary_addr (const IPvX &v)
 Set my primary address on this interface.
int update_primary_address (string &error_msg)
 Update the primary address.
const IPvXquerier_addr () const
 Get the MLD/IGMP querier address.
void set_querier_addr (const IPvX &v)
 Set the MLD6/IGMP querier address.
Mld6igmpGroupSetgroup_records ()
 Get the set with the multicast group records information (Mld6igmpGroupSet).
const Mld6igmpGroupSetgroup_records () const
 Get the const set with the multicast group records information (Mld6igmpGroupSet).
bool proto_is_ssm () const
 Test if the protocol is Source-Specific Multicast (e.g., IGMPv3 or MLDv2).
const XorpTimerconst_other_querier_timer () const
 Get the timer to timeout the (other) MLD/IGMP querier.
ConfigParam< bool > & ip_router_alert_option_check ()
 Optain a reference to the "IP Router Alert option check" flag.
ConfigParam< TimeVal > & configured_query_interval ()
 Optain a reference to the configured Query Interval.
const TimeValeffective_query_interval () const
 Get the effective Query Interval value.
void set_effective_query_interval (const TimeVal &v)
 Set the effective Query Interval.
ConfigParam< TimeVal > & query_last_member_interval ()
 Optain a reference to the Last Member Query Interval.
ConfigParam< TimeVal > & query_response_interval ()
 Optain a reference to the Query Response Interval.
ConfigParam< uint32_t > & configured_robust_count ()
 Optain a reference to the configured Robustness Variable count.
uint32_t effective_robustness_variable () const
 Get the effective Robustness Variable value.
void set_effective_robustness_variable (uint32_t v)
 Set the effective Robustness Variable.
uint32_t last_member_query_count () const
 Get the Last Member Query Count value.
const TimeValgroup_membership_interval () const
 Obtain a reference to the Group Membership Interval.
const TimeVallast_member_query_time () const
 Obtain a reference to the Last Member Query Time.
const TimeValolder_version_host_present_interval () const
 Obtain a reference to the Older Version Host Present Interval.
int add_protocol (xorp_module_id module_id, const string &module_instance_name)
 Add a protocol that needs to be notified about multicast membership changes.
int delete_protocol (xorp_module_id module_id, const string &module_instance_name, string &error_msg)
 Delete a protocol that needs to be notified about multicast membership changes.
int join_prune_notify_routing (const IPvX &source, const IPvX &group, action_jp_t action_jp) const
 Notify the interested parties that there is membership change among the local members.
int mld6igmp_send (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer, string &error_msg)
 Send MLD or IGMP message.
int mld6igmp_group_query_send (const IPvX &group_address, string &error_msg)
 Send Group-Specific Query message.
int mld6igmp_group_source_query_send (const IPvX &group_address, const set< IPvX > &sources, string &error_msg)
 Send MLDv2 or IGMPv3 Group-and-Source-Specific Query message.
int mld6igmp_query_send (const IPvX &src, const IPvX &dst, const TimeVal &max_resp_time, const IPvX &group_address, const set< IPvX > &sources, bool s_flag, string &error_msg)
 Send MLD or IGMP Query message.
bool is_igmpv1_mode () const
 Test if the interface is running in IGMPv1 mode.
bool is_igmpv2_mode () const
 Test if the interface is running in IGMPv2 mode.
bool is_igmpv3_mode () const
 Test if the interface is running in IGMPv3 mode.
bool is_mldv1_mode () const
 Test if the interface is running in MLDv1 mode.
bool is_mldv2_mode () const
 Test if the interface is running in MLDv2 mode.
bool is_igmpv1_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in IGMPv1 mode.
bool is_igmpv2_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in IGMPv2 mode.
bool is_igmpv3_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in IGMPv3 mode.
bool is_mldv1_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in MLDv1 mode.
bool is_mldv2_mode (const Mld6igmpGroupRecord *group_record) const
 Test if a group is running in MLDv2 mode.

Private Types

enum  { MLD6IGMP_VIF_QUERIER = 1 << 0 }
enum  { MLD6IGMP_VIF_QUERIER = 1 << 0 }

Private Member Functions

const char * proto_message_type2ascii (uint8_t message_type) const
 Return the ASCII text description of the protocol message.
buffer_tbuffer_send_prepare ()
 Reset and prepare the buffer for sending data.
uint16_t calculate_ipv6_pseudo_header_checksum (const IPvX &src, const IPvX &dst, size_t len, uint8_t protocol)
 Calculate the checksum of an IPv6 "pseudo-header" as described in RFC 2460.
bool i_am_querier () const
 Test whether I am the querier for this vif.
void set_i_am_querier (bool v)
 Set the state whether I am the querier for this vif.
void set_configured_query_interval_cb (TimeVal v)
void set_query_last_member_interval_cb (TimeVal v)
void set_query_response_interval_cb (TimeVal v)
void set_configured_robust_count_cb (uint32_t v)
void recalculate_effective_query_interval ()
void recalculate_effective_robustness_variable ()
void recalculate_last_member_query_count ()
void recalculate_group_membership_interval ()
void recalculate_last_member_query_time ()
void recalculate_older_version_host_present_interval ()
void restore_effective_variables ()
int mld6igmp_membership_query_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
 Mld6igmpVif::mld6igmp_membership_query_recv: : The message source address.
int mld6igmp_ssm_membership_query_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
 Mld6igmpVif::mld6igmp_ssm_membership_query_recv: : The message source address.
int mld6igmp_membership_report_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
 Mld6igmpVif::mld6igmp_membership_report_recv: : The message source address.
int mld6igmp_leave_group_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
 Mld6igmpVif::mld6igmp_leave_group_recv: : The message source address.
int mld6igmp_ssm_membership_report_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, buffer_t *buffer)
 Mld6igmpVif::mld6igmp_ssm_membership_report_recv: : The message source address.
int mld6igmp_query_version_consistency_check (const IPvX &src, const IPvX &dst, uint8_t message_type, int message_version)
 mld6igmp_query_version_consistency_check: : The message source address.
int mld6igmp_process (const IPvX &src, const IPvX &dst, int ip_ttl, int ip_tos, bool ip_router_alert, bool ip_internet_control, buffer_t *buffer, string &error_msg)
 Mld6igmpVif::mld6igmp_process: : The message source address.
size_t mld6igmp_constant_minlen () const
uint32_t mld6igmp_constant_timer_scale () const
uint8_t mld6igmp_constant_membership_query () const
void other_querier_timer_timeout ()
 Mld6igmpVif::other_querier_timer_timeout:
void query_timer_timeout ()
 Mld6igmpVif::query_timer_timeout:
void decode_exp_time_code8 (uint8_t code, TimeVal &timeval, uint32_t timer_scale)
void decode_exp_time_code16 (uint16_t code, TimeVal &timeval, uint32_t timer_scale)
void encode_exp_time_code8 (const TimeVal &timeval, uint8_t &code, uint32_t timer_scale)
void encode_exp_time_code16 (const TimeVal &timeval, uint16_t &code, uint32_t timer_scale)
const char * proto_message_type2ascii (uint8_t message_type) const
 Return the ASCII text description of the protocol message.
buffer_tbuffer_send_prepare ()
 Reset and prepare the buffer for sending data.
uint16_t calculate_ipv6_pseudo_header_checksum (const IPvX &src, const IPvX &dst, size_t len, uint8_t protocol)
 Calculate the checksum of an IPv6 "pseudo-header" as described in RFC 2460.
bool i_am_querier () const
 Test whether I am the querier for this vif.
void set_i_am_querier (bool v)
 Set the state whether I am the querier for this vif.
void set_configured_query_interval_cb (TimeVal v)
void set_query_last_member_interval_cb (TimeVal v)
void set_query_response_interval_cb (TimeVal v)
void set_configured_robust_count_cb (uint32_t v)
void recalculate_effective_query_interval ()
void recalculate_effective_robustness_variable ()
void recalculate_last_member_query_count ()
void recalculate_group_membership_interval ()
void recalculate_last_member_query_time ()
void recalculate_older_version_host_present_interval ()
void restore_effective_variables ()
int mld6igmp_membership_query_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
int mld6igmp_ssm_membership_query_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
int mld6igmp_membership_report_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
int mld6igmp_leave_group_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, uint16_t max_resp_code, const IPvX &group_address, buffer_t *buffer)
int mld6igmp_ssm_membership_report_recv (const IPvX &src, const IPvX &dst, uint8_t message_type, buffer_t *buffer)
int mld6igmp_query_version_consistency_check (const IPvX &src, const IPvX &dst, uint8_t message_type, int message_version)
int mld6igmp_process (const IPvX &src, const IPvX &dst, int ip_ttl, int ip_tos, bool ip_router_alert, bool ip_internet_control, buffer_t *buffer, string &error_msg)
size_t mld6igmp_constant_minlen () const
uint32_t mld6igmp_constant_timer_scale () const
uint8_t mld6igmp_constant_membership_query () const
void other_querier_timer_timeout ()
void query_timer_timeout ()
void decode_exp_time_code8 (uint8_t code, TimeVal &timeval, uint32_t timer_scale)
void decode_exp_time_code16 (uint16_t code, TimeVal &timeval, uint32_t timer_scale)
void encode_exp_time_code8 (const TimeVal &timeval, uint8_t &code, uint32_t timer_scale)
void encode_exp_time_code16 (const TimeVal &timeval, uint16_t &code, uint32_t timer_scale)

Private Attributes

Mld6igmpNode_mld6igmp_node
buffer_t_buffer_send
uint32_t _proto_flags
IPvX _primary_addr
IPvX _querier_addr
XorpTimer _other_querier_timer
XorpTimer _query_timer
uint8_t _startup_query_count
Mld6igmpGroupSet _group_records
ConfigParam< bool > _ip_router_alert_option_check
ConfigParam< TimeVal_configured_query_interval
TimeVal _effective_query_interval
ConfigParam< TimeVal_query_last_member_interval
ConfigParam< TimeVal_query_response_interval
ConfigParam< uint32_t > _configured_robust_count
uint32_t _effective_robustness_variable
uint32_t _last_member_query_count
TimeVal _group_membership_interval
TimeVal _last_member_query_time
TimeVal _older_version_host_present_interval
vector< pair< xorp_module_id,
string > > 
_notify_routing_protocols
bool _dummy_flag
bool wants_to_be_started

Detailed Description

A class for MLD/IGMP-specific virtual interface.


Constructor & Destructor Documentation

Mld6igmpVif::Mld6igmpVif ( Mld6igmpNode mld6igmp_node,
const Vif vif 
)

Constructor for a given MLD/IGMP node and a generic virtual interface.

Mld6igmpVif::Mld6igmpVif: : The MLD6IGMP node this interface belongs to.

Parameters:
mld6igmp_nodethe Mld6igmpNode this interface belongs to.
vifthe generic Vif interface that contains various information.

: The generic Vif interface that contains various information.

MLD6IGMP protocol vif constructor.

Mld6igmpVif::~Mld6igmpVif ( ) [virtual]

Destructor.

Mld6igmpVif::~Mld6igmpVif: @:

MLD6IGMP protocol vif destructor.

Mld6igmpVif::Mld6igmpVif ( Mld6igmpNode mld6igmp_node,
const Vif vif 
)

Constructor for a given MLD/IGMP node and a generic virtual interface.

Parameters:
mld6igmp_nodethe Mld6igmpNode this interface belongs to.
vifthe generic Vif interface that contains various information.

Member Function Documentation

int Mld6igmpVif::add_protocol ( xorp_module_id  module_id,
const string &  module_instance_name 
)

Add a protocol that needs to be notified about multicast membership changes.

Mld6igmpVif::add_protocol: : The #xorp_module_id of the protocol to add.

Add a protocol to the list of entries that would be notified if there is membership change on a particular interface.

Parameters:
module_instance_namethe module instance name of the protocol to add.
module_idthe module ID (xorp_module_id) of the protocol to add.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The module instance name of the protocol to add.

Add a protocol to the list of entries that would be notified if there is membership change on this interface.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::add_protocol ( xorp_module_id  module_id,
const string &  module_instance_name 
)

Add a protocol that needs to be notified about multicast membership changes.

Add a protocol to the list of entries that would be notified if there is membership change on a particular interface.

Parameters:
module_instance_namethe module instance name of the protocol to add.
module_idthe module ID (xorp_module_id) of the protocol to add.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
buffer_t* Mld6igmpVif::buffer_send_prepare ( ) [private]

Reset and prepare the buffer for sending data.

Returns:
the prepared buffer.
buffer_t * Mld6igmpVif::buffer_send_prepare ( ) [private]

Reset and prepare the buffer for sending data.

Returns:
the prepared buffer.
uint16_t Mld6igmpVif::calculate_ipv6_pseudo_header_checksum ( const IPvX src,
const IPvX dst,
size_t  len,
uint8_t  protocol 
) [private]

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".
uint16_t Mld6igmpVif::calculate_ipv6_pseudo_header_checksum ( const IPvX src,
const IPvX dst,
size_t  len,
uint8_t  protocol 
) [private]

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".
ConfigParam<TimeVal>& Mld6igmpVif::configured_query_interval ( ) [inline]

Optain a reference to the configured Query Interval.

Returns:
a reference to the configured Query Interval.
ConfigParam<TimeVal>& Mld6igmpVif::configured_query_interval ( ) [inline]

Optain a reference to the configured Query Interval.

Returns:
a reference to the configured Query Interval.
ConfigParam<uint32_t>& Mld6igmpVif::configured_robust_count ( ) [inline]

Optain a reference to the configured Robustness Variable count.

Returns:
a reference to the configured Robustness Variable count.
ConfigParam<uint32_t>& Mld6igmpVif::configured_robust_count ( ) [inline]

Optain a reference to the configured Robustness Variable count.

Returns:
a reference to the configured Robustness Variable count.
const XorpTimer& Mld6igmpVif::const_other_querier_timer ( ) const [inline]

Get the timer to timeout the (other) MLD/IGMP querier.

Returns:
a reference to the timer to timeout the (other) MLD/IGMP querier.
const XorpTimer& Mld6igmpVif::const_other_querier_timer ( ) const [inline]

Get the timer to timeout the (other) MLD/IGMP querier.

Returns:
a reference to the timer to timeout the (other) MLD/IGMP querier.
int Mld6igmpVif::delete_protocol ( xorp_module_id  module_id,
const string &  module_instance_name 
)

Delete a protocol that needs to be notified about multicast membership changes.

Mld6igmpVif::delete_protocol: : The #xorp_module_id of the protocol to delete.

Delete a protocol from the list of entries that would be notified if there is membership change on a particular interface.

Parameters:
module_instance_namethe module instance name of the protocol to delete.
module_idthe module ID (xorp_module_id) of the protocol to delete.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The module instance name of the protocol to delete.

Delete a protocol from the list of entries that would be notified if there is membership change on this interface.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::delete_protocol ( xorp_module_id  module_id,
const string &  module_instance_name,
string &  error_msg 
)

Delete a protocol that needs to be notified about multicast membership changes.

Mld6igmpVif::delete_protocol: : The #xorp_module_id of the protocol to delete.

Delete a protocol from the list of entries that would be notified if there is membership change on a particular interface.

Parameters:
module_instance_namethe module instance name of the protocol to delete.
module_idthe module ID (xorp_module_id) of the protocol to delete.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The module instance name of the protocol to delete.

Delete a protocol from the list of entries that would be notified if there is membership change on this interface.

Return value: XORP_OK on success, otherwise XORP_ERROR.

void Mld6igmpVif::disable ( )

Disable MLD/IGMP 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.

Reimplemented from ProtoState.

void Mld6igmpVif::disable ( )

Disable MLD/IGMP 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.

Reimplemented from ProtoState.

const TimeVal& Mld6igmpVif::effective_query_interval ( ) const [inline]

Get the effective Query Interval value.

Note that this value may be modified by reconfiguring the router, or by the Query message from the current Querier.

Returns:
the value of the effective Query Interval.
const TimeVal& Mld6igmpVif::effective_query_interval ( ) const [inline]

Get the effective Query Interval value.

Note that this value may be modified by reconfiguring the router, or by the Query message from the current Querier.

Returns:
the value of the effective Query Interval.
uint32_t Mld6igmpVif::effective_robustness_variable ( ) const [inline]

Get the effective Robustness Variable value.

Note that this value may be modified by reconfiguring the router, or by the Query messages from the current Querier.

Returns:
the value of the effective Robustness Variable.
uint32_t Mld6igmpVif::effective_robustness_variable ( ) const [inline]

Get the effective Robustness Variable value.

Note that this value may be modified by reconfiguring the router, or by the Query messages from the current Querier.

Returns:
the value of the effective Robustness Variable.
void Mld6igmpVif::enable ( )

Enable MLD/IGMP on a single virtual interface.

If an unit is not enabled, it cannot be start, or pending-start.

Reimplemented from ProtoState.

void Mld6igmpVif::enable ( )

Enable MLD/IGMP on a single virtual interface.

If an unit is not enabled, it cannot be start, or pending-start.

Reimplemented from ProtoState.

string Mld6igmpVif::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).
string Mld6igmpVif::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 TimeVal& Mld6igmpVif::group_membership_interval ( ) const [inline]

Obtain a reference to the Group Membership Interval.

Note that it is not directly configurable, but may be tuned by changing the values of the parameters it depends on.

Returns:
a reference to the Group Membership Interval.
const TimeVal& Mld6igmpVif::group_membership_interval ( ) const [inline]

Obtain a reference to the Group Membership Interval.

Note that it is not directly configurable, but may be tuned by changing the values of the parameters it depends on.

Returns:
a reference to the Group Membership Interval.
Mld6igmpGroupSet& Mld6igmpVif::group_records ( ) [inline]

Get the set with the multicast group records information (Mld6igmpGroupSet).

Returns:
the set with the multicast group records information (Mld6igmpGroupSet).
const Mld6igmpGroupSet& Mld6igmpVif::group_records ( ) const [inline]

Get the const set with the multicast group records information (Mld6igmpGroupSet).

Returns:
the const set with the multicast group records information (Mld6igmpGroupSet).
Mld6igmpGroupSet& Mld6igmpVif::group_records ( ) [inline]

Get the set with the multicast group records information (Mld6igmpGroupSet).

Returns:
the set with the multicast group records information (Mld6igmpGroupSet).
const Mld6igmpGroupSet& Mld6igmpVif::group_records ( ) const [inline]

Get the const set with the multicast group records information (Mld6igmpGroupSet).

Returns:
the const set with the multicast group records information (Mld6igmpGroupSet).
bool Mld6igmpVif::i_am_querier ( ) const [private]

Test whether I am the querier for this vif.

Returns:
true if I am the querier for this vif, otherwise false.
bool Mld6igmpVif::i_am_querier ( ) const [private]

Test whether I am the querier for this vif.

Returns:
true if I am the querier for this vif, otherwise false.
ConfigParam<bool>& Mld6igmpVif::ip_router_alert_option_check ( ) [inline]

Optain a reference to the "IP Router Alert option check" flag.

Returns:
a reference to the "IP Router Alert option check" flag.
ConfigParam<bool>& Mld6igmpVif::ip_router_alert_option_check ( ) [inline]

Optain a reference to the "IP Router Alert option check" flag.

Returns:
a reference to the "IP Router Alert option check" flag.
bool Mld6igmpVif::is_igmpv1_mode ( ) const

Test if the interface is running in IGMPv1 mode.

Returns:
true if the interface is running in IGMPv1 mode, otherwise false.
bool Mld6igmpVif::is_igmpv1_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in IGMPv1 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in IGMPv1 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in IGMPv1 mode, otherwise false.
bool Mld6igmpVif::is_igmpv1_mode ( ) const

Test if the interface is running in IGMPv1 mode.

Returns:
true if the interface is running in IGMPv1 mode, otherwise false.
bool Mld6igmpVif::is_igmpv1_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in IGMPv1 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in IGMPv1 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in IGMPv1 mode, otherwise false.
bool Mld6igmpVif::is_igmpv2_mode ( ) const

Test if the interface is running in IGMPv2 mode.

Returns:
true if the interface is running in IGMPv2 mode, otherwise false.
bool Mld6igmpVif::is_igmpv2_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in IGMPv2 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in IGMPv2 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in IGMPv2 mode, otherwise false.
bool Mld6igmpVif::is_igmpv2_mode ( ) const

Test if the interface is running in IGMPv2 mode.

Returns:
true if the interface is running in IGMPv2 mode, otherwise false.
bool Mld6igmpVif::is_igmpv2_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in IGMPv2 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in IGMPv2 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in IGMPv2 mode, otherwise false.
bool Mld6igmpVif::is_igmpv3_mode ( ) const

Test if the interface is running in IGMPv3 mode.

Returns:
true if the interface is running in IGMPv3 mode, otherwise false.
bool Mld6igmpVif::is_igmpv3_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in IGMPv3 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in IGMPv3 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in IGMPv3 mode, otherwise false.
bool Mld6igmpVif::is_igmpv3_mode ( ) const

Test if the interface is running in IGMPv3 mode.

Returns:
true if the interface is running in IGMPv3 mode, otherwise false.
bool Mld6igmpVif::is_igmpv3_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in IGMPv3 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in IGMPv3 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in IGMPv3 mode, otherwise false.
bool Mld6igmpVif::is_mldv1_mode ( ) const

Test if the interface is running in MLDv1 mode.

Returns:
true if the interface is running in MLDv1 mode, otherwise false.
bool Mld6igmpVif::is_mldv1_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in MLDv1 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in MLDv1 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in MLDv1 mode, otherwise false.
bool Mld6igmpVif::is_mldv1_mode ( ) const

Test if the interface is running in MLDv1 mode.

Returns:
true if the interface is running in MLDv1 mode, otherwise false.
bool Mld6igmpVif::is_mldv1_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in MLDv1 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in MLDv1 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in MLDv1 mode, otherwise false.
bool Mld6igmpVif::is_mldv2_mode ( ) const

Test if the interface is running in MLDv2 mode.

Returns:
true if the interface is running in MLDv2 mode, otherwise false.
bool Mld6igmpVif::is_mldv2_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in MLDv2 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in MLDv2 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in MLDv2 mode, otherwise false.
bool Mld6igmpVif::is_mldv2_mode ( ) const

Test if the interface is running in MLDv2 mode.

Returns:
true if the interface is running in MLDv2 mode, otherwise false.
bool Mld6igmpVif::is_mldv2_mode ( const Mld6igmpGroupRecord group_record) const

Test if a group is running in MLDv2 mode.

Note that if group_record is NULL, then we test whether the interface itself is running in MLDv2 mode.

Parameters:
group_recordthe group record to test.
Returns:
true if the group is running in MLDv2 mode, otherwise false.
int Mld6igmpVif::join_prune_notify_routing ( const IPvX source,
const IPvX group,
action_jp_t  action_jp 
) const

Notify the interested parties that there is membership change among the local members.

Parameters:
sourcethe source address of the (S,G) entry that has changed. In case of group-specific membership, it could be IPvX::ZERO().
groupthe group address of the (S,G) entry that has changed.
action_jpthe membership change: ACTION_JOIN or ACTION_PRUNE.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::join_prune_notify_routing ( const IPvX source,
const IPvX group,
action_jp_t  action_jp 
) const

Notify the interested parties that there is membership change among the local members.

Parameters:
sourcethe source address of the (S,G) entry that has changed. In case of group-specific membership, it could be IPvX::ZERO().
groupthe group address of the (S,G) entry that has changed.
action_jpthe membership change: ACTION_JOIN or ACTION_PRUNE.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
uint32_t Mld6igmpVif::last_member_query_count ( ) const [inline]

Get the Last Member Query Count value.

Note: According to the IGMP/MLD spec, the default value for the Last Member Query Count is the Robustness Variable. Hence, the Last Member Query Count itself should be configurable. For simplicity (and for consistency with other router vendors), it is always same as the Robustness Variable.

Returns:
the value of the Last Member Query Count.
uint32_t Mld6igmpVif::last_member_query_count ( ) const [inline]

Get the Last Member Query Count value.

Note: According to the IGMP/MLD spec, the default value for the Last Member Query Count is the Robustness Variable. Hence, the Last Member Query Count itself should be configurable. For simplicity (and for consistency with other router vendors), it is always same as the Robustness Variable.

Returns:
the value of the Last Member Query Count.
const TimeVal& Mld6igmpVif::last_member_query_time ( ) const [inline]

Obtain a reference to the Last Member Query Time.

Note that it is not directly configurable, but may be tuned by changing the values of the parameters it depends on.

Returns:
a reference to the Last Member Query Time.
const TimeVal& Mld6igmpVif::last_member_query_time ( ) const [inline]

Obtain a reference to the Last Member Query Time.

Note that it is not directly configurable, but may be tuned by changing the values of the parameters it depends on.

Returns:
a reference to the Last Member Query Time.
int Mld6igmpVif::mld6igmp_group_query_send ( const IPvX group_address,
string &  error_msg 
)

Send Group-Specific Query message.

Parameters:
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_group_query_send ( const IPvX group_address,
string &  error_msg 
)

Send Group-Specific Query message.

Parameters:
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_group_source_query_send ( const IPvX group_address,
const set< IPvX > &  sources,
string &  error_msg 
)

Send MLDv2 or IGMPv3 Group-and-Source-Specific Query message.

Parameters:
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
sourcesthe set of source addresses.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_group_source_query_send ( const IPvX group_address,
const set< IPvX > &  sources,
string &  error_msg 
)

Send MLDv2 or IGMPv3 Group-and-Source-Specific Query message.

Parameters:
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
sourcesthe set of source addresses.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_leave_group_recv ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
uint16_t  max_resp_code,
const IPvX group_address,
buffer_t buffer 
) [private]

Mld6igmpVif::mld6igmp_leave_group_recv: : The message source address.

: The message destination address. : The message type. : The Maximum Response Code from the MLD/IGMP header. : The Group Address from the MLD/IGMP message. : The buffer with the rest of the message.

Receive and process IGMP_V2_LEAVE_GROUP/MLD_LISTENER_DONE message from a host.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_membership_query_recv ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
uint16_t  max_resp_code,
const IPvX group_address,
buffer_t buffer 
) [private]

Mld6igmpVif::mld6igmp_membership_query_recv: : The message source address.

: The message destination address. : The message type. : The Maximum Response Code from the MLD/IGMP header. : The Group Address from the MLD/IGMP message. : The buffer with the rest of the message.

Receive and process IGMP_MEMBERSHIP_QUERY/MLD_LISTENER_QUERY message from another router.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_membership_report_recv ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
uint16_t  max_resp_code,
const IPvX group_address,
buffer_t buffer 
) [private]

Mld6igmpVif::mld6igmp_membership_report_recv: : The message source address.

: The message destination address. : The message type. : The Maximum Response Code from the MLD/IGMP header. : The Group Address from the MLD/IGMP message. : The buffer with the rest of the message.

Receive and process (IGMP_V1_MEMBERSHIP_REPORT or IGMP_V2_MEMBERSHIP_REPORT)/MLD_LISTENER_REPORT message from a host.

Return value: XORP_OK on success, otherwise XORP_ERROR.

Mld6igmpNode& Mld6igmpVif::mld6igmp_node ( ) const [inline]

Get the MLD6IGMP node (Mld6igmpNode).

Returns:
a reference to the MLD6IGMP node (Mld6igmpNode).
Mld6igmpNode& Mld6igmpVif::mld6igmp_node ( ) const [inline]

Get the MLD6IGMP node (Mld6igmpNode).

Returns:
a reference to the MLD6IGMP node (Mld6igmpNode).
int Mld6igmpVif::mld6igmp_process ( const IPvX src,
const IPvX dst,
int  ip_ttl,
int  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
buffer_t buffer,
string &  error_msg 
) [private]

Mld6igmpVif::mld6igmp_process: : The message source address.

: The message destination address. : The IP TTL of the message. If it has a negative value, it should be ignored. : The IP TOS of the message. If it has a negative value, it should be ignored. : True if the received IP packet had the Router Alert IP option set. : If true, then this is IP control traffic. : The buffer with the message. : The error message (if error).

Process MLD or IGMP message and pass the control to the type-specific functions.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_query_send ( const IPvX src,
const IPvX dst,
const TimeVal max_resp_time,
const IPvX group_address,
const set< IPvX > &  sources,
bool  s_flag,
string &  error_msg 
)

Send MLD or IGMP Query message.

Parameters:
srcthe message source address.
dstthe message destination address.
max_resp_timethe maximum response time.
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
sourcesthe set of source addresses (for IGMPv3 or MLDv2 only).
s_flagthe "Suppress Router-Side Processing" bit (for IGMPv3 or MLDv2 only; in all other cases it should be set to false).
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_query_send ( const IPvX src,
const IPvX dst,
const TimeVal max_resp_time,
const IPvX group_address,
const set< IPvX > &  sources,
bool  s_flag,
string &  error_msg 
)

Send MLD or IGMP Query message.

Parameters:
srcthe message source address.
dstthe message destination address.
max_resp_timethe maximum response time.
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
sourcesthe set of source addresses (for IGMPv3 or MLDv2 only).
s_flagthe "Suppress Router-Side Processing" bit (for IGMPv3 or MLDv2 only; in all other cases it should be set to false).
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_query_version_consistency_check ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
int  message_version 
) [private]

mld6igmp_query_version_consistency_check: : The message source address.

: The message destination address. : The type of the MLD/IGMP message. : The protocol version of the received Query message: (IGMP_V1, IGMP_V2, IGMP_V3 for IGMP) or (MLD_V1, MLD_V2 for MLD).

Check for MLD/IGMP protocol version interface configuration consistency. For example, if the received Query message was IGMPv1, a correctly configured local interface must be operating in IGMPv1 mode. Similarly, if the local interface is operating in IGMPv1 mode, all other neighbor routers (for that interface) must be operating in IGMPv1 as well.

Return value: XORP_OK if consistency, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_recv ( const IPvX src,
const IPvX dst,
int  ip_ttl,
int  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
buffer_t buffer,
string &  error_msg 
)

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.
ip_router_alertif true, the IP Router Alert option in the IP packet was set (when applicable).
ip_internet_controlif true, then this is IP control traffic.
bufferthe data buffer with the received message.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_recv ( const IPvX src,
const IPvX dst,
int  ip_ttl,
int  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
buffer_t buffer,
string &  error_msg 
)

Receive a protocol message.

Mld6igmpVif::mld6igmp_recv: : The message source address.

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.
ip_router_alertif true, the IP Router Alert option in the IP packet was set (when applicable).
ip_internet_controlif true, then this is IP control traffic.
bufferthe data buffer with the received message.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The message destination address. : The IP TTL of the message. If it has a negative value, it should be ignored. : The IP TOS of the message. If it has a negative value, it should be ignored. : True if the received IP packet had the Router Alert IP option set. : If true, then this is IP control traffic. : The buffer with the received message. : The error message (if error).

Receive MLD or IGMP message and pass it for processing.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_send ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
uint16_t  max_resp_code,
const IPvX group_address,
buffer_t buffer,
string &  error_msg 
)

Send MLD or IGMP message.

Mld6igmpVif::mld6igmp_send: : The message source address.

Parameters:
srcthe message source address.
dstthe message destination address.
message_typethe MLD or IGMP type of the message.
max_resp_codethe "Maximum Response Code" or "Max Resp Code" field in the MLD or IGMP headers respectively (in the particular protocol resolution).
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
bufferthe buffer with the rest of the message.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The message destination address. : The MLD or IGMP type of the message. : The "Maximum Response Code" or "Max Resp Code" field in the MLD or IGMP headers respectively (in the particular protocol resolution). : The "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively. : The buffer with the rest of the message. : The error message (if error).

Send MLD or IGMP message.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_send ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
uint16_t  max_resp_code,
const IPvX group_address,
buffer_t buffer,
string &  error_msg 
)

Send MLD or IGMP message.

Parameters:
srcthe message source address.
dstthe message destination address.
message_typethe MLD or IGMP type of the message.
max_resp_codethe "Maximum Response Code" or "Max Resp Code" field in the MLD or IGMP headers respectively (in the particular protocol resolution).
group_addressthe "Multicast Address" or "Group Address" field in the MLD or IGMP headers respectively.
bufferthe buffer with the rest of the message.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::mld6igmp_ssm_membership_query_recv ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
uint16_t  max_resp_code,
const IPvX group_address,
buffer_t buffer 
) [private]

Mld6igmpVif::mld6igmp_ssm_membership_query_recv: : The message source address.

: The message destination address. : The message type. : The Maximum Response Code from the MLD/IGMP header. : The Group Address from the MLD/IGMP message. : The buffer with the rest of the message.

Receive and process IGMPv3/MLDv2 IGMP_MEMBERSHIP_QUERY/MLD_LISTENER_QUERY message from another router.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::mld6igmp_ssm_membership_report_recv ( const IPvX src,
const IPvX dst,
uint8_t  message_type,
buffer_t buffer 
) [private]

Mld6igmpVif::mld6igmp_ssm_membership_report_recv: : The message source address.

: The message destination address. : The message type. : The buffer with the rest of the message.

Receive and process IGMP_V3_MEMBERSHIP_REPORT/MLDV2_LISTENER_REPORT message from a host.

Return value: XORP_OK on success, otherwise XORP_ERROR.

void Mld6igmpVif::notifyUpdated ( )

Attempt deferred start.

System detected some change.

const TimeVal& Mld6igmpVif::older_version_host_present_interval ( ) const [inline]

Obtain a reference to the Older Version Host Present Interval.

Note that it is not directly configurable, but may be tuned by changing the values of the parameters it depends on.

Returns:
a reference to the Older Version Host Present Interval.
const TimeVal& Mld6igmpVif::older_version_host_present_interval ( ) const [inline]

Obtain a reference to the Older Version Host Present Interval.

Note that it is not directly configurable, but may be tuned by changing the values of the parameters it depends on.

Returns:
a reference to the Older Version Host Present Interval.
void Mld6igmpVif::other_querier_timer_timeout ( ) [private]

Mld6igmpVif::other_querier_timer_timeout:

Timeout: the previous querier has expired. I will become the querier.

const IPvX& Mld6igmpVif::primary_addr ( ) const [inline]

Get my primary address on this interface.

Returns:
my primary address on this interface.
const IPvX& Mld6igmpVif::primary_addr ( ) const [inline]

Get my primary address on this interface.

Returns:
my primary address on this interface.
bool Mld6igmpVif::proto_is_ssm ( ) const

Test if the protocol is Source-Specific Multicast (e.g., IGMPv3 or MLDv2).

Mld6igmpVif::proto_is_ssm: @:

Returns:
true if the protocol is Source-Specific Multicast (e.g., IGMPv3 or MLDv2).

Test if the interface is running a source-specific multicast capable protocol version (e.g. IGMPv3 or MLDv2).

Return value: if the protocol version is source-specific multicast capable, otherwise .se

bool Mld6igmpVif::proto_is_ssm ( ) const

Test if the protocol is Source-Specific Multicast (e.g., IGMPv3 or MLDv2).

Returns:
true if the protocol is Source-Specific Multicast (e.g., IGMPv3 or MLDv2).
const char* Mld6igmpVif::proto_message_type2ascii ( uint8_t  message_type) const [private]

Return the ASCII text description of the protocol message.

Parameters:
message_typethe protocol message type.
Returns:
the ASCII text descrpition of the protocol message.
const char * Mld6igmpVif::proto_message_type2ascii ( uint8_t  message_type) const [private]

Return the ASCII text description of the protocol message.

Parameters:
message_typethe protocol message type.
Returns:
the ASCII text descrpition of the protocol message.
const IPvX& Mld6igmpVif::querier_addr ( ) const [inline]

Get the MLD/IGMP querier address.

Returns:
the MLD/IGMP querier address.
const IPvX& Mld6igmpVif::querier_addr ( ) const [inline]

Get the MLD/IGMP querier address.

Returns:
the MLD/IGMP querier address.
ConfigParam<TimeVal>& Mld6igmpVif::query_last_member_interval ( ) [inline]

Optain a reference to the Last Member Query Interval.

Returns:
a reference to the Last Member Query Interval.
ConfigParam<TimeVal>& Mld6igmpVif::query_last_member_interval ( ) [inline]

Optain a reference to the Last Member Query Interval.

Returns:
a reference to the Last Member Query Interval.
ConfigParam<TimeVal>& Mld6igmpVif::query_response_interval ( ) [inline]

Optain a reference to the Query Response Interval.

Returns:
a reference to the Query Response Interval.
ConfigParam<TimeVal>& Mld6igmpVif::query_response_interval ( ) [inline]

Optain a reference to the Query Response Interval.

Returns:
a reference to the Query Response Interval.
void Mld6igmpVif::query_timer_timeout ( ) [private]

Mld6igmpVif::query_timer_timeout:

Timeout: time to send a membership query.

void Mld6igmpVif::set_effective_query_interval ( const TimeVal v)

Set the effective Query Interval.

Note that this value may be modified by reconfiguring the router, or by the Query message from the current Querier.

Parameters:
vthe value of the effective Query Interval.
void Mld6igmpVif::set_effective_query_interval ( const TimeVal v)

Set the effective Query Interval.

Note that this value may be modified by reconfiguring the router, or by the Query message from the current Querier.

Parameters:
vthe value of the effective Query Interval.
void Mld6igmpVif::set_effective_robustness_variable ( uint32_t  v)

Set the effective Robustness Variable.

Note that this value may be modified by reconfiguring the router, or by the Query messages from the current Querier.

Parameters:
vthe value of the effective Robustness Variable.
void Mld6igmpVif::set_effective_robustness_variable ( uint32_t  v)

Set the effective Robustness Variable.

Note that this value may be modified by reconfiguring the router, or by the Query messages from the current Querier.

Parameters:
vthe value of the effective Robustness Variable.
void Mld6igmpVif::set_i_am_querier ( bool  v) [private]

Set the state whether I am the querier for this vif.

Parameters:
vif true, then I am the querier for this vif.
void Mld6igmpVif::set_i_am_querier ( bool  v) [private]

Set the state whether I am the querier for this vif.

Parameters:
vif true, then I am the querier for this vif.
void Mld6igmpVif::set_primary_addr ( const IPvX v) [inline]

Set my primary address on this interface.

Parameters:
vthe value of the primary address.
void Mld6igmpVif::set_primary_addr ( const IPvX v) [inline]

Set my primary address on this interface.

Parameters:
vthe value of the primary address.
int Mld6igmpVif::set_proto_version ( int  proto_version)

Set the current protocol version.

Mld6igmpVif::set_proto_version: : The protocol version to set.

The protocol version must be in the interval [IGMP_VERSION_MIN, IGMP_VERSION_MAX] or [MLD_VERSION_MIN, MLD_VERSION_MAX]

Parameters:
proto_versionthe protocol version to set.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Set protocol version.

Return value: XORP_OK is is valid, otherwise XORP_ERROR.

Reimplemented from ProtoUnit.

int Mld6igmpVif::set_proto_version ( int  proto_version)

Set the current protocol version.

The protocol version must be in the interval [IGMP_VERSION_MIN, IGMP_VERSION_MAX] or [MLD_VERSION_MIN, MLD_VERSION_MAX]

Parameters:
proto_versionthe protocol version to set.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoUnit.

void Mld6igmpVif::set_querier_addr ( const IPvX v) [inline]

Set the MLD6/IGMP querier address.

Parameters:
vthe value of the MLD/IGMP querier address.
void Mld6igmpVif::set_querier_addr ( const IPvX v) [inline]

Set the MLD6/IGMP querier address.

Parameters:
vthe value of the MLD/IGMP querier address.
int Mld6igmpVif::start ( string &  error_msg)

Start MLD/IGMP on a single virtual interface.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::start ( string &  error_msg)

Start MLD/IGMP on a single virtual interface.

Mld6igmpVif::start: : The error message (if error).

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Start MLD or IGMP on a single virtual interface.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::stop ( string &  error_msg)

Stop MLD/IGMP on a single virtual interface.

Mld6igmpVif::stop: : The error message (if error).

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Stop MLD or IGMP on a single virtual interface.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpVif::stop ( string &  error_msg)

Stop MLD/IGMP on a single virtual interface.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::update_primary_address ( string &  error_msg)

Update the primary address.

The primary address should be a link-local unicast address, and is used for transmitting the multicast control packets on the LAN.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpVif::update_primary_address ( string &  error_msg)

Update the primary address.

Mld6igmpVif::update_primary_address: : The error message (if error).

The primary address should be a link-local unicast address, and is used for transmitting the multicast control packets on the LAN.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Update the primary address.

The primary address should be a link-local unicast address, and is used for transmitting the multicast control packets on the LAN.

Return value: XORP_OK on success, otherwise XORP_ERROR.


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations