| 
 
 | 
 | |||||||||||||||||
There should be one node per MLD or IGMP instance. There should be one instance per address family.
| Mld6igmpNode (int family, xorp_module_id module_id, EventLoop& eventloop) | Mld6igmpNode | 
Constructor for a given address family, module ID, and event loop.
Parameters:
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| module_id | the module ID (xorp_module_id). Should be equal to XORP_MODULE_MLD6IGMP. | 
| eventloop | the event loop to use. | 
| ~Mld6igmpNode () | ~Mld6igmpNode | 
[virtual]
Destructor
| int		 start () | start | 
Start the node operation.
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
| int		 stop () | stop | 
Stop the node operation.
Stop the MLD or IGMP protocol.
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
| bool  is_waiting_for_mfea_startup () | is_waiting_for_mfea_startup | 
[const]
Test if waiting to complete registration with the MFEA.
Returns: true if waiting to complete registration with the MFEA, otherwise false.
| bool	 has_pending_down_units (string& reason_msg) | has_pending_down_units | 
Test if there is an unit that is in PENDING_DOWN state.
Parameters:
| reason_msg | return-by-reference string that contains human-readable information about the unit that is in PENDING_DOWN state (if any). | 
Returns: true if there is an unit that is in PENDING_DOWN state, otherwise false.
| ProcessStatus	 node_status (string& reason_msg) | node_status | 
Get the node status (see ProcessStatus).
Parameters:
| reason_msg | return-by-reference string that contains human-readable information about the status. | 
Returns: the node status (see ProcessStatus).
Reimplemented from ProtoNode.
| int		 add_vif (const Vif& vif, string& error_msg) | add_vif | 
Install a new MLD/IGMP vif.
Parameters:
| vif | vif information about the new Mld6igmpVif to install. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
| int		 add_vif (const string& vif_name, uint32_t vif_index,
			string& error_msg) | add_vif | 
Install a new MLD/IGMP vif.
Parameters:
| vif_name | the name of the new vif. | 
| vif_index | the vif index of the new vif. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
| int		 delete_vif (const string& vif_name, string& error_msg) | delete_vif | 
Delete an existing MLD/IGMP vif.
Parameters:
| vif_name | the name of the vif to delete. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
| int		 set_vif_flags (const string& vif_name,
			      bool is_pim_register, bool is_p2p,
			      bool is_loopback, bool is_multicast,
			      bool is_broadcast, bool is_up,
			      string& error_msg) | set_vif_flags | 
Set flags to a vif.
Parameters:
| vif_name | the name of the vif. | 
| is_pim_register | true if this is a PIM Register vif. | 
| is_p2p | true if this is a point-to-point vif. | 
| is_loopback | true if this is a loopback interface. | 
| is_multicast | true if the vif is multicast-capable. | 
| is_broadcast | true if the vif is broadcast-capable. | 
| is_up | true if the vif is UP and running. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 add_vif_addr (const string& vif_name,
			     const IPvX& addr,
			     const IPvXNet& subnet_addr,
			     const IPvX& broadcast_addr,
			     const IPvX& peer_addr,
			     string& error_msg) | add_vif_addr | 
Add an address to a vif.
Parameters:
| vif_name | the name of the vif. | 
| addr | the unicast address to add. | 
| subnet_addr | the subnet address to add. | 
| broadcast_addr | the broadcast address (when applicable). | 
| peer_addr | the peer address (when applicable). | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 delete_vif_addr (const string& vif_name,
				const IPvX& addr,
				string& error_msg) | delete_vif_addr | 
Delete an address from a vif.
Parameters:
| vif_name | the name of the vif. | 
| addr | the unicast address to delete. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 enable_vif (const string& vif_name, string& error_msg) | enable_vif | 
Enable an existing MLD6IGMP vif.
Parameters:
| vif_name | the name of the vif to enable. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 disable_vif (const string& vif_name, string& error_msg) | disable_vif | 
Disable an existing MLD6IGMP vif.
Parameters:
| vif_name | the name of the vif to disable. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 start_vif (const string& vif_name, string& error_msg) | start_vif | 
Start an existing MLD6IGMP vif.
Parameters:
| vif_name | the name of the vif to start. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 stop_vif (const string& vif_name, string& error_msg) | stop_vif | 
Stop an existing MLD6IGMP vif.
Parameters:
| vif_name | the name of the vif to start. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 start_all_vifs () | start_all_vifs | 
Start MLD/IGMP on all enabled interfaces.
Returns: the number of virtual interfaces MLD/IGMP was started on, or XORP_ERROR if error occured.
| int		 stop_all_vifs () | stop_all_vifs | 
Stop MLD/IGMP on all interfaces it was running on.
Returns: he number of virtual interfaces MLD/IGMP was stopped on, or XORP_ERROR if error occured.
| int		 enable_all_vifs () | enable_all_vifs | 
Enable MLD/IGMP on all interfaces.
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 disable_all_vifs () | disable_all_vifs | 
Disable MLD/IGMP on all interfaces.
Returns: XORP_OK on success, otherwise XORP_ERROR.
| void	 delete_all_vifs () | delete_all_vifs | 
Delete all MLD/IGMP vifs.
| int		 proto_recv (const string& src_module_instance_name,
			   xorp_module_id src_module_id,
			   uint16_t vif_index,
			   const IPvX& src, const IPvX& dst,
			   int ip_ttl, int ip_tos, bool router_alert_bool,
			   const uint8_t *rcvbuf, size_t rcvlen) | proto_recv | 
Receive a protocol message.
Parameters:
| src_module_instance_name | the module instance name of the module-origin of the message. | 
| src_module_id | the module ID (xorp_module_id) of the module-origin of the message. | 
| vif_index | the vif index of the interface used to receive this message. | 
| 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_tos | 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). | 
| rcvbuf | the data buffer with the received message. | 
| rcvlen | the data length in rcvbuf. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
| int		 mld6igmp_send (uint16_t vif_index,
			      const IPvX& src, const IPvX& dst,
			      int ip_ttl, int ip_tos,
			      bool router_alert_bool,
			      buffer_t *buffer) | mld6igmp_send | 
Send a protocol message.
Note: this method uses the pure virtual ProtoNode::proto_send() method that is implemented somewhere else (in a class that inherits this one).
Parameters:
| vif_index | the vif index of the vif to send the message. | 
| src | the source address of the message. | 
| dst | the destination address of the message. | 
| ip_ttl | the TTL of the IP packet to send. If it has a negative value, the TTL will be set by the lower layers. | 
| ip_tos | the TOS of the IP packet to send. If it has a negative value, the TOS will be set by the lower layers. | 
| router_alert_bool | if true, set the IP Router Alert option in the IP packet to send (when applicable). | 
| buffer | the data buffer with the message to send. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int	 signal_message_recv (const string&	, 
			    xorp_module_id	, 
			    int			, 
			    uint16_t		, 
			    const IPvX&		, 
			    const IPvX&		, 
			    const uint8_t *	, 
			    size_t		  
	) | signal_message_recv | 
Receive signal message: not used by MLD/IGMP.
Reimplemented from ProtoNode.
| int	 signal_message_send (const string&	, 
			    xorp_module_id	, 
			    int			, 
			    uint16_t		, 
			    const IPvX&		, 
			    const IPvX&		, 
			    const uint8_t *	, 
			    size_t		  
	) | signal_message_send | 
Send signal message: not used by MLD/IGMP.
Reimplemented from ProtoNode.
| int  start_protocol_kernel () | start_protocol_kernel | 
[pure virtual]
Start the protocol with the kernel.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  stop_protocol_kernel () | stop_protocol_kernel | 
[pure virtual]
Stop the protocol with the kernel.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  start_protocol_kernel_vif (uint16_t vif_index) | start_protocol_kernel_vif | 
[pure virtual]
Start a protocol vif with the kernel.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
| vif_index | the vif index of the interface to start. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  stop_protocol_kernel_vif (uint16_t vif_index) | stop_protocol_kernel_vif | 
[pure virtual]
Stop a protocol vif with the kernel.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
| vif_index | the vif index of the interface to stop. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  join_multicast_group (uint16_t vif_index,
				     const IPvX& multicast_group) | join_multicast_group | 
[pure virtual]
Join a multicast group on an interface.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
TODO: add a source address as well!!
Parameters:
| vif_index | the vif index of the interface to join. | 
| multicast_group | the multicast group address. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  leave_multicast_group (uint16_t vif_index,
				      const IPvX& multicast_group) | leave_multicast_group | 
[pure virtual]
Leave a multicast group on an interface.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
TODO: add a source address as well!!
Parameters:
| vif_index | the vif index of the interface to leave. | 
| multicast_group | the multicast group address. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  add_protocol (const string& module_instance_name,
		     xorp_module_id module_id,
		     uint16_t vif_index) | 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. | 
| vif_index | the vif index of the interface to add the protocol to. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  delete_protocol (const string& module_instance_name,
			xorp_module_id module_id,
			uint16_t vif_index) | 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. | 
| vif_index | the vif index of the interface to delete the protocol from. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  send_add_membership (const string& dst_module_instance_name,
				    xorp_module_id dst_module_id,
				    uint16_t vif_index,
				    const IPvX& source,
				    const IPvX& group) | send_add_membership | 
[pure virtual]
Send "add membership" to a protocol that needs to be notified about multicast membership changes.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
| dst_module_instance_name | the module instance name of the protocol to notify. | 
| dst_module_id | the module ID (xorp_module_id) of the protocol to notify. | 
| vif_index | the vif index of the interface with membership change. | 
| source | the source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO(). | 
| group | the group address. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  send_delete_membership (const string& dst_module_instance_name,
				       xorp_module_id dst_module_id,
				       uint16_t vif_index,
				       const IPvX& source,
				       const IPvX& group) | send_delete_membership | 
[pure virtual]
Send "delete membership" to a protocol that needs to be notified about multicast membership changes.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
| dst_module_instance_name | the module instance name of the protocol to notify. | 
| dst_module_id | the module ID (xorp_module_id) of the protocol to notify. | 
| vif_index | the vif index of the interface with membership change. | 
| source | the source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO(). | 
| group | the group address of the (S,G) or (*,G) entry that has changed. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  join_prune_notify_routing (const string& module_instance_name,
				  xorp_module_id module_id,
				  uint16_t vif_index,
				  const IPvX& source,
				  const IPvX& group,
				  action_jp_t action_jp) | join_prune_notify_routing | 
Notify a protocol about multicast membership change.
Parameters:
| module_instance_name | the module instance name of the protocol to notify. | 
| module_id | the module ID (xorp_module_id) of the protocol to notify. | 
| vif_index | the vif index of the interface with membership change. | 
| source | the source address of the (S,G) or (*,G) entry that has changed. In case of group-specific multicast, it is IPvX::ZERO(). | 
| group | the group address of the (S,G) or (*,G) entry that has changed. | 
| action_jp | the membership change type (action_jp_t): either ACTION_JOIN or ACTION_PRUNE. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 get_vif_proto_version (const string& vif_name,
				      int& proto_version,
				      string& error_msg) | get_vif_proto_version | 
Get the protocol version on an interface.
Parameters:
| vif_name | the name of the vif to get the protocol version of. | 
| proto_version | the return-by-reference protocol version. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 set_vif_proto_version (const string& vif_name,
				      int proto_version,
				      string& error_msg) | set_vif_proto_version | 
Set the protocol version on an interface.
Parameters:
| vif_name | the name of the vif to set the protocol version of. | 
| proto_version | the new protocol version. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 reset_vif_proto_version (const string& vif_name,
					string& error_msg) | reset_vif_proto_version | 
Reset the protocol version on an interface to its default value.
Parameters:
| vif_name | the name of the vif to reset the protocol version of to its default value. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| bool	 is_log_trace () | is_log_trace | 
[const]
Test if trace log is enabled.
This method is used to test whether to output trace log debug messges.
Returns: true if trace log is enabled, otherwise false.
| void	 set_log_trace (bool is_enabled) | set_log_trace | 
Enable/disable trace log.
This method is used to enable/disable trace log debug messages output.
Parameters:
| is_enabled | if true, trace log is enabled, otherwise is disabled. | 
| void  incr_waiting_for_mfea_startup_events () | incr_waiting_for_mfea_startup_events | 
| void  decr_waiting_for_mfea_startup_events () | decr_waiting_for_mfea_startup_events | 
| Generated by: pavlin on possum.icir.org on Thu Nov 6 23:47:00 2003, using kdoc 2.0a54+XORP. |