|
| ||||||||||||||||
| 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, string& error_msg)
| 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. |
| error_msg | the error message (if error). |
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.
| 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<TimeVal>& query_interval ()
| query_interval |
Optain a reference to the Query Interval.
Returns: a reference to the Query Interval.
| ConfigParam<TimeVal>& query_last_member_interval ()
| query_last_member_interval |
Optain a reference to the Last Member Query Interval.
Returns: a reference to the Last Member Query Interval.
| ConfigParam<TimeVal>& query_response_interval ()
| query_response_interval |
Optain a reference to the Query Response Interval.
Returns: a reference to the Query Response Interval.
| ConfigParam<uint32_t>& robust_count ()
| robust_count |
Optain a reference to the Robustness Variable count.
Returns: a reference to the Robustness Variable count.
| 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.