|
|
Mld6igmpVif (Mld6igmpNode& mld6igmp_node, const Vif& vif)
| Mld6igmpVif |
Constructor for a given MLD/IGMP node and a generic virtual interface.
Parameters:
mld6igmp_node | the Mld6igmpNode this interface belongs to. |
vif | the generic Vif interface that contains various information. |
~Mld6igmpVif ()
| ~Mld6igmpVif |
[virtual]
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_version | the 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_msg | the 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_msg | the 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:
src | the source address of the message. |
dst | the destination address of the message. |
ip_ttl | the IP TTL of the message. If it has a negative value it should be ignored. |
ip_ttl | the IP TOS of the message. If it has a negative value, it should be ignored. |
is_router_alert | if true, the IP Router Alert option in the IP packet was set (when applicable). |
buffer | the data buffer with the received message. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
string flags_string ()
| flags_string |
[const]
Get the string with the flags about the vif status.
TODO: temporary here. Should go to the Vif class after the Vif class starts using the Proto class.
Returns: the C++ style string with the flags about the vif status (e.g., UP/DOWN/DISABLED, etc).
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:
v | the 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_msg | the 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:
v | the 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_name | the module instance name of the protocol to add. |
module_id | the 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_name | the module instance name of the protocol to delete. |
module_id | the module ID (xorp_module_id) of the protocol to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.