class Mld6igmpVif

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

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Methods


Detailed Description

 Mld6igmpVif (Mld6igmpNode& mld6igmp_node, const Vif& vif)

Mld6igmpVif

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.
 ~Mld6igmpVif ()

~Mld6igmpVif

[virtual]

Destructor

int  set_proto_version (int proto_version)

set_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.

int  start (string& error_msg)

start

Start MLD/IGMP 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

Stop MLD/IGMP on a single virtual interface.

Parameters:

error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

void  enable ()

enable

Enable MLD/IGMP on a single virtual interface.

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

void  disable ()

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.

int  mld6igmp_recv (const IPvX& src, const IPvX& dst, int ip_ttl, int ip_tos, bool is_router_alert, buffer_t *buffer)

mld6igmp_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).

Mld6igmpNode&  mld6igmp_node ()

mld6igmp_node

[const]

Get the MLD6IGMP node (Mld6igmpNode).

Returns: a reference to the MLD6IGMP node (Mld6igmpNode).

const IPvX&  primary_addr ()

primary_addr

[const]

Get my primary address on this interface.

Returns: my primary address on this interface.

void  set_primary_addr (const IPvX& v)

set_primary_addr

Set my primary address on this interface.

Parameters:

vthe value of the primary address.
int  update_primary_address (string& error_msg)

update_primary_address

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.

const IPvX&  querier_addr ()

querier_addr

[const]

Get the MLD/IGMP querier address.

Returns: the MLD/IGMP querier address.

void  set_querier_addr (const IPvX& v)

set_querier_addr

Set the MLD6/IGMP querier address.

Parameters:

vthe value of the MLD/IGMP querier address.
const list<MemberQuery *>&  members ()

members

[const]

Get the list with the multicast membership information (MemberQuery).

Returns: the list with the multicast membership information (MemberQuery).

bool  proto_is_ssm ()

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 XorpTimer&  const_other_querier_timer ()

const_other_querier_timer

[const]

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

Returns: a reference to the timer to timeout the (other) MLD/IGMP querier.

int  add_protocol (xorp_module_id module_id, const string& module_instance_name)

add_protocol

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.

int  delete_protocol (xorp_module_id module_id, const string& module_instance_name)

delete_protocol

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

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.


Generated by: pavlin on possum.icir.org on Wed Apr 13 21:53:08 2005, using kdoc $.