xorp

Mld6igmpNode Class Reference

The MLD/IGMP node class. More...

#include <mld6igmp_node.hh>

Inheritance diagram for Mld6igmpNode:
ProtoNode< Mld6igmpVif > IfMgrHintObserver ServiceChangeObserverBase ProtoNode< Mld6igmpVif > IfMgrHintObserver ServiceChangeObserverBase ProtoUnit ProtoUnit ProtoState ProtoState ServiceBase ServiceBase BugCatcher BugCatcher XrlMld6igmpNode XrlMld6igmpNode

List of all members.

Public Member Functions

 Mld6igmpNode (int family, xorp_module_id module_id, EventLoop &eventloop)
 Constructor for a given address family, module ID, and event loop.
virtual ~Mld6igmpNode ()
 Destructor.
int start ()
 Start the node operation.
int stop ()
 Stop the node operation.
int final_start ()
 Completely start the node operation.
int final_stop ()
 Completely stop the node operation.
void enable ()
 Enable node operation.
void disable ()
 Disable node operation.
uint8_t ip_protocol_number () const
 Get the IP protocol number.
int add_vif (const Vif &vif, string &error_msg)
 Install a new MLD/IGMP vif.
int add_vif (const string &vif_name, uint32_t vif_index, string &error_msg)
 Install a new MLD/IGMP vif.
int delete_vif (const string &vif_name, string &error_msg)
 Delete an existing MLD/IGMP vif.
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, uint32_t mtu, string &error_msg)
 Set flags to a vif.
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 an address to a vif.
int delete_vif_addr (const string &vif_name, const IPvX &addr, string &error_msg)
 Delete an address from a vif.
int enable_vif (const string &vif_name, string &error_msg)
 Enable an existing MLD6IGMP vif.
int disable_vif (const string &vif_name, string &error_msg)
 Disable an existing MLD6IGMP vif.
int start_vif (const string &vif_name, string &error_msg)
 Start an existing MLD6IGMP vif.
int stop_vif (const string &vif_name, string &error_msg)
 Stop an existing MLD6IGMP vif.
int start_all_vifs ()
 Start MLD/IGMP on all enabled interfaces.
int stop_all_vifs ()
 Stop MLD/IGMP on all interfaces it was running on.
int enable_all_vifs ()
 Enable MLD/IGMP on all interfaces.
int disable_all_vifs ()
 Disable MLD/IGMP on all interfaces.
void delete_all_vifs ()
 Delete all MLD/IGMP vifs.
void vif_shutdown_completed (const string &vif_name)
 A method called when a vif has completed its shutdown.
int proto_recv (const string &if_name, const string &vif_name, const IPvX &src_address, const IPvX &dst_address, uint8_t ip_protocol, int32_t ip_ttl, int32_t ip_tos, bool ip_router_alert, bool ip_internet_control, const vector< uint8_t > &payload, string &error_msg)
 Receive a protocol packet.
int mld6igmp_send (const string &if_name, const string &vif_name, const IPvX &src_address, const IPvX &dst_address, uint8_t ip_protocol, int32_t ip_ttl, int32_t ip_tos, bool ip_router_alert, bool ip_internet_control, buffer_t *buffer, string &error_msg)
 Send a protocol packet.
int signal_message_recv (const string &, int, uint32_t, const IPvX &, const IPvX &, const uint8_t *, size_t)
 Receive signal message: not used by MLD/IGMP.
int signal_message_send (const string &, int, uint32_t, const IPvX &, const IPvX &, const uint8_t *, size_t)
 Send signal message: not used by MLD/IGMP.
virtual int register_receiver (const string &if_name, const string &vif_name, uint8_t ip_protocol, bool enable_multicast_loopback)=0
 Register as a receiver to receive packets.
virtual int unregister_receiver (const string &if_name, const string &vif_name, uint8_t ip_protocol)=0
 Unregister as a receiver to receive packets.
virtual int join_multicast_group (const string &if_name, const string &vif_name, uint8_t ip_protocol, const IPvX &group_address)=0
 Join a multicast group on an interface.
virtual int leave_multicast_group (const string &if_name, const string &vif_name, uint8_t ip_protocol, const IPvX &group_address)=0
 Leave a multicast group on an interface.
int add_protocol (const string &module_instance_name, xorp_module_id module_id, uint32_t vif_index)
 Add a protocol that needs to be notified about multicast membership changes.
int delete_protocol (const string &module_instance_name, xorp_module_id module_id, uint32_t vif_index)
 Delete a protocol that needs to be notified about multicast membership changes.
virtual int send_add_membership (const string &dst_module_instance_name, xorp_module_id dst_module_id, uint32_t vif_index, const IPvX &source, const IPvX &group)=0
 Send "add membership" to a protocol that needs to be notified about multicast membership changes.
virtual int send_delete_membership (const string &dst_module_instance_name, xorp_module_id dst_module_id, uint32_t vif_index, const IPvX &source, const IPvX &group)=0
 Send "delete membership" to a protocol that needs to be notified about multicast membership changes.
int join_prune_notify_routing (const string &module_instance_name, xorp_module_id module_id, uint32_t vif_index, const IPvX &source, const IPvX &group, action_jp_t action_jp)
 Notify a protocol about multicast membership change.
bool is_directly_connected (const Mld6igmpVif &mld6igmp_vif, const IPvX &ipaddr_test) const
 Test if an address is directly connected to a specified virtual interface.
int set_config_all_vifs_done (string &error_msg)
 Complete the set of vif configuration changes.
int get_vif_proto_version (const string &vif_name, int &proto_version, string &error_msg)
 Get the protocol version on an interface.
int set_vif_proto_version (const string &vif_name, int proto_version, string &error_msg)
 Set the protocol version on an interface.
int reset_vif_proto_version (const string &vif_name, string &error_msg)
 Reset the protocol version on an interface to its default value.
int get_vif_ip_router_alert_option_check (const string &vif_name, bool &enabled, string &error_msg)
 Get the value of the flag that enables/disables the IP Router Alert option check per interface for received packets.
int set_vif_ip_router_alert_option_check (const string &vif_name, bool enable, string &error_msg)
 Enable/disable the IP Router Alert option check per interface for received packets.
int reset_vif_ip_router_alert_option_check (const string &vif_name, string &error_msg)
 Reset the value of the flag that enables/disables the IP Router Alert option check per interface for received packets to its default value.
int get_vif_query_interval (const string &vif_name, TimeVal &interval, string &error_msg)
 Get the Query Interval per interface.
int set_vif_query_interval (const string &vif_name, const TimeVal &interval, string &error_msg)
 Set the Query Interval per interface.
int reset_vif_query_interval (const string &vif_name, string &error_msg)
 Reset the Query Interval per interface.
int get_vif_query_last_member_interval (const string &vif_name, TimeVal &interval, string &error_msg)
 Get the Last Member Query Interval per interface.
int set_vif_query_last_member_interval (const string &vif_name, const TimeVal &interval, string &error_msg)
 Set the Last Member Query Interval per interface.
int reset_vif_query_last_member_interval (const string &vif_name, string &error_msg)
 Reset the Last Member Query Interval per interface.
int get_vif_query_response_interval (const string &vif_name, TimeVal &interval, string &error_msg)
 Get the Query Response Interval per interface.
int set_vif_query_response_interval (const string &vif_name, const TimeVal &interval, string &error_msg)
 Set the Query Response Interval per interface.
int reset_vif_query_response_interval (const string &vif_name, string &error_msg)
 Reset the Query Response Interval per interface.
int get_vif_robust_count (const string &vif_name, uint32_t &robust_count, string &error_msg)
 Get the Robustness Variable count per interface.
int set_vif_robust_count (const string &vif_name, uint32_t robust_count, string &error_msg)
 Set the Robustness Variable count per interface.
int reset_vif_robust_count (const string &vif_name, string &error_msg)
 Reset the Robustness Variable count per interface.
bool is_log_trace () const
 Test if trace log is enabled.
void set_log_trace (bool is_enabled)
 Enable/disable trace log.
 Mld6igmpNode (int family, xorp_module_id module_id, EventLoop &eventloop)
 Constructor for a given address family, module ID, and event loop.
virtual ~Mld6igmpNode ()
 Destructor.
int start ()
 Start the node operation.
int stop ()
 Stop the node operation.
int final_start ()
 Completely start the node operation.
int final_stop ()
 Completely stop the node operation.
void enable ()
 Enable node operation.
void disable ()
 Disable node operation.
uint8_t ip_protocol_number () const
 Get the IP protocol number.
int add_vif (const Vif &vif, string &error_msg)
 Install a new MLD/IGMP vif.
int add_vif (const string &vif_name, uint32_t vif_index, string &error_msg)
 Install a new MLD/IGMP vif.
int delete_vif (const string &vif_name, string &error_msg)
 Delete an existing MLD/IGMP vif.
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, uint32_t mtu, string &error_msg)
 Set flags to a vif.
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 an address to a vif.
int delete_vif_addr (const string &vif_name, const IPvX &addr, string &error_msg)
 Delete an address from a vif.
int enable_vif (const string &vif_name, string &error_msg)
 Enable an existing MLD6IGMP vif.
int disable_vif (const string &vif_name, string &error_msg)
 Disable an existing MLD6IGMP vif.
int start_vif (const string &vif_name, string &error_msg)
 Start an existing MLD6IGMP vif.
int stop_vif (const string &vif_name, string &error_msg)
 Stop an existing MLD6IGMP vif.
int start_all_vifs ()
 Start MLD/IGMP on all enabled interfaces.
int stop_all_vifs ()
 Stop MLD/IGMP on all interfaces it was running on.
int enable_all_vifs ()
 Enable MLD/IGMP on all interfaces.
int disable_all_vifs ()
 Disable MLD/IGMP on all interfaces.
void delete_all_vifs ()
 Delete all MLD/IGMP vifs.
void vif_shutdown_completed (const string &vif_name)
 A method called when a vif has completed its shutdown.
int proto_recv (const string &if_name, const string &vif_name, const IPvX &src_address, const IPvX &dst_address, uint8_t ip_protocol, int32_t ip_ttl, int32_t ip_tos, bool ip_router_alert, bool ip_internet_control, const vector< uint8_t > &payload, string &error_msg)
 Receive a protocol packet.
int mld6igmp_send (const string &if_name, const string &vif_name, const IPvX &src_address, const IPvX &dst_address, uint8_t ip_protocol, int32_t ip_ttl, int32_t ip_tos, bool ip_router_alert, bool ip_internet_control, buffer_t *buffer, string &error_msg)
 Send a protocol packet.
int signal_message_recv (const string &, int, uint32_t, const IPvX &, const IPvX &, const uint8_t *, size_t)
 Receive signal message: not used by MLD/IGMP.
int signal_message_send (const string &, int, uint32_t, const IPvX &, const IPvX &, const uint8_t *, size_t)
 Send signal message: not used by MLD/IGMP.
virtual int register_receiver (const string &if_name, const string &vif_name, uint8_t ip_protocol, bool enable_multicast_loopback)=0
 Register as a receiver to receive packets.
virtual int unregister_receiver (const string &if_name, const string &vif_name, uint8_t ip_protocol)=0
 Unregister as a receiver to receive packets.
virtual int join_multicast_group (const string &if_name, const string &vif_name, uint8_t ip_protocol, const IPvX &group_address)=0
 Join a multicast group on an interface.
virtual int leave_multicast_group (const string &if_name, const string &vif_name, uint8_t ip_protocol, const IPvX &group_address)=0
 Leave a multicast group on an interface.
int add_protocol (const string &module_instance_name, xorp_module_id module_id, uint32_t vif_index)
 Add a protocol that needs to be notified about multicast membership changes.
int delete_protocol (const string &module_instance_name, xorp_module_id module_id, uint32_t vif_index, string &error_msg)
 Delete a protocol that needs to be notified about multicast membership changes.
virtual int send_add_membership (const string &dst_module_instance_name, xorp_module_id dst_module_id, uint32_t vif_index, const IPvX &source, const IPvX &group)=0
 Send "add membership" to a protocol that needs to be notified about multicast membership changes.
virtual int send_delete_membership (const string &dst_module_instance_name, xorp_module_id dst_module_id, uint32_t vif_index, const IPvX &source, const IPvX &group)=0
 Send "delete membership" to a protocol that needs to be notified about multicast membership changes.
int join_prune_notify_routing (const string &module_instance_name, xorp_module_id module_id, uint32_t vif_index, const IPvX &source, const IPvX &group, action_jp_t action_jp)
 Notify a protocol about multicast membership change.
bool is_directly_connected (const Mld6igmpVif &mld6igmp_vif, const IPvX &ipaddr_test) const
 Test if an address is directly connected to a specified virtual interface.
int set_config_all_vifs_done (string &error_msg)
 Complete the set of vif configuration changes.
int get_vif_proto_version (const string &vif_name, int &proto_version, string &error_msg)
 Get the protocol version on an interface.
int set_vif_proto_version (const string &vif_name, int proto_version, string &error_msg)
 Set the protocol version on an interface.
int reset_vif_proto_version (const string &vif_name, string &error_msg)
 Reset the protocol version on an interface to its default value.
int get_vif_ip_router_alert_option_check (const string &vif_name, bool &enabled, string &error_msg)
 Get the value of the flag that enables/disables the IP Router Alert option check per interface for received packets.
int set_vif_ip_router_alert_option_check (const string &vif_name, bool enable, string &error_msg)
 Enable/disable the IP Router Alert option check per interface for received packets.
int reset_vif_ip_router_alert_option_check (const string &vif_name, string &error_msg)
 Reset the value of the flag that enables/disables the IP Router Alert option check per interface for received packets to its default value.
int get_vif_query_interval (const string &vif_name, TimeVal &interval, string &error_msg)
 Get the Query Interval per interface.
int set_vif_query_interval (const string &vif_name, const TimeVal &interval, string &error_msg)
 Set the Query Interval per interface.
int reset_vif_query_interval (const string &vif_name, string &error_msg)
 Reset the Query Interval per interface.
int get_vif_query_last_member_interval (const string &vif_name, TimeVal &interval, string &error_msg)
 Get the Last Member Query Interval per interface.
int set_vif_query_last_member_interval (const string &vif_name, const TimeVal &interval, string &error_msg)
 Set the Last Member Query Interval per interface.
int reset_vif_query_last_member_interval (const string &vif_name, string &error_msg)
 Reset the Last Member Query Interval per interface.
int get_vif_query_response_interval (const string &vif_name, TimeVal &interval, string &error_msg)
 Get the Query Response Interval per interface.
int set_vif_query_response_interval (const string &vif_name, const TimeVal &interval, string &error_msg)
 Set the Query Response Interval per interface.
int reset_vif_query_response_interval (const string &vif_name, string &error_msg)
 Reset the Query Response Interval per interface.
int get_vif_robust_count (const string &vif_name, uint32_t &robust_count, string &error_msg)
 Get the Robustness Variable count per interface.
int set_vif_robust_count (const string &vif_name, uint32_t robust_count, string &error_msg)
 Set the Robustness Variable count per interface.
int reset_vif_robust_count (const string &vif_name, string &error_msg)
 Reset the Robustness Variable count per interface.
bool is_log_trace () const
 Test if trace log is enabled.
void set_log_trace (bool is_enabled)
 Enable/disable trace log.

Protected Member Functions

void tree_complete ()
void updates_made ()
void tree_complete ()
void updates_made ()

Private Member Functions

void status_change (ServiceBase *service, ServiceStatus old_status, ServiceStatus new_status)
 A method invoked when the status of a service changes.
virtual const ServiceBaseifmgr_mirror_service_base () const =0
 Get a reference to the service base of the interface manager.
virtual const IfMgrIfTreeifmgr_iftree () const =0
 Get a reference to the interface manager tree.
virtual void fea_register_startup ()=0
 Initiate registration with the FEA.
virtual void mfea_register_startup ()=0
 Initiate registration with the MFEA.
virtual void fea_register_shutdown ()=0
 Initiate de-registration with the FEA.
virtual void mfea_register_shutdown ()=0
 Initiate de-registration with the MFEA.
void status_change (ServiceBase *service, ServiceStatus old_status, ServiceStatus new_status)
 A method invoked when the status of a service changes.
virtual const ServiceBaseifmgr_mirror_service_base () const =0
 Get a reference to the service base of the interface manager.
virtual const IfMgrIfTreeifmgr_iftree () const =0
 Get a reference to the interface manager tree.
virtual void fea_register_startup ()=0
 Initiate registration with the FEA.
virtual void mfea_register_startup ()=0
 Initiate registration with the MFEA.
virtual void fea_register_shutdown ()=0
 Initiate de-registration with the FEA.
virtual void mfea_register_shutdown ()=0
 Initiate de-registration with the MFEA.

Private Attributes

buffer_t_buffer_recv
size_t _waiting_for_mfea_startup_events
IfMgrIfTree _iftree
bool _is_log_trace

Detailed Description

The MLD/IGMP node class.

There should be one node per MLD or IGMP instance. There should be one instance per address family.


Constructor & Destructor Documentation

Mld6igmpNode::Mld6igmpNode ( int  family,
xorp_module_id  module_id,
EventLoop eventloop 
)

Constructor for a given address family, module ID, and event loop.

Mld6igmpNode::Mld6igmpNode: : The address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).

Parameters:
familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
module_idthe module ID (xorp_module_id). Should be equal to XORP_MODULE_MLD6IGMP.
eventloopthe event loop to use.

: The module ID (must be XORP_MODULE_MLD6IGMP). : The event loop.

MLD6IGMP node constructor.

Mld6igmpNode::~Mld6igmpNode ( ) [virtual]

Destructor.

Mld6igmpNode::~Mld6igmpNode: @:

MLD6IGMP node destructor.

Mld6igmpNode::Mld6igmpNode ( int  family,
xorp_module_id  module_id,
EventLoop eventloop 
)

Constructor for a given address family, module ID, and event loop.

Parameters:
familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
module_idthe module ID (xorp_module_id). Should be equal to XORP_MODULE_MLD6IGMP.
eventloopthe event loop to use.

Member Function Documentation

int Mld6igmpNode::add_protocol ( const string &  module_instance_name,
xorp_module_id  module_id,
uint32_t  vif_index 
)

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

Mld6igmpNode::add_protocol: : 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 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.
vif_indexthe vif index of the interface to add the protocol to.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The #xorp_module_id of the protocol to add. : The vif index of the interface to add the protocol to.

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

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::add_protocol ( const string &  module_instance_name,
xorp_module_id  module_id,
uint32_t  vif_index 
)

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.
vif_indexthe vif index of the interface to add the protocol to.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::add_vif ( const Vif vif,
string &  error_msg 
)

Install a new MLD/IGMP vif.

Mld6igmpNode::add_vif: : Information about the new Mld6igmpVif to install.

Parameters:
vifvif information about the new Mld6igmpVif to install.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The error message (if error).

Install a new MLD/IGMP vif.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::add_vif ( const string &  vif_name,
uint32_t  vif_index,
string &  error_msg 
)

Install a new MLD/IGMP vif.

Mld6igmpNode::add_vif: : The name of the new vif.

Parameters:
vif_namethe name of the new vif.
vif_indexthe vif index of the new vif.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The vif index of the new vif. : The error message (if error).

Install a new MLD/IGMP vif. If the vif exists, nothing is installed.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::add_vif ( const Vif vif,
string &  error_msg 
)

Install a new MLD/IGMP vif.

Parameters:
vifvif information about the new Mld6igmpVif to install.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::add_vif ( const string &  vif_name,
uint32_t  vif_index,
string &  error_msg 
)

Install a new MLD/IGMP vif.

Parameters:
vif_namethe name of the new vif.
vif_indexthe vif index of the new vif.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::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 an address to a vif.

Parameters:
vif_namethe name of the vif.
addrthe unicast address to add.
subnet_addrthe subnet address to add.
broadcast_addrthe broadcast address (when applicable).
peer_addrthe peer address (when applicable).
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::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 an address to a vif.

Parameters:
vif_namethe name of the vif.
addrthe unicast address to add.
subnet_addrthe subnet address to add.
broadcast_addrthe broadcast address (when applicable).
peer_addrthe peer address (when applicable).
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
void Mld6igmpNode::delete_all_vifs ( )

Delete all MLD/IGMP vifs.

Mld6igmpNode::delete_all_vifs: @:

int Mld6igmpNode::delete_protocol ( const string &  module_instance_name,
xorp_module_id  module_id,
uint32_t  vif_index 
)

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

Mld6igmpNode::delete_protocol: : 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 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.
vif_indexthe vif index of the interface to delete the protocol from.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The #xorp_module_id of the protocol to delete. : The vif index of the interface to delete the protocol from.

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

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::delete_protocol ( const string &  module_instance_name,
xorp_module_id  module_id,
uint32_t  vif_index,
string &  error_msg 
)

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

Mld6igmpNode::delete_protocol: : 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 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.
vif_indexthe vif index of the interface to delete the protocol from.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The #xorp_module_id of the protocol to delete. : The vif index of the interface to delete the protocol from.

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

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::delete_vif ( const string &  vif_name,
string &  error_msg 
)

Delete an existing MLD/IGMP vif.

Parameters:
vif_namethe name of the vif to delete.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::delete_vif ( const string &  vif_name,
string &  error_msg 
)

Delete an existing MLD/IGMP vif.

Mld6igmpNode::delete_vif: : The name of the vif to delete.

Parameters:
vif_namethe name of the vif to delete.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The error message (if error).

Delete an existing MLD/IGMP vif.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::delete_vif_addr ( const string &  vif_name,
const IPvX addr,
string &  error_msg 
)

Delete an address from a vif.

Parameters:
vif_namethe name of the vif.
addrthe unicast address to delete.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::delete_vif_addr ( const string &  vif_name,
const IPvX addr,
string &  error_msg 
)

Delete an address from a vif.

Parameters:
vif_namethe name of the vif.
addrthe unicast address to delete.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
void Mld6igmpNode::disable ( )

Disable node operation.

Disable the node operation.

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 Mld6igmpNode::disable ( )

Disable node operation.

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.

int Mld6igmpNode::disable_all_vifs ( )

Disable MLD/IGMP on all interfaces.

Mld6igmpNode::disable_all_vifs: @:

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Disable MLD/IGMP on all interfaces. All running interfaces are stopped first.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::disable_all_vifs ( )

Disable MLD/IGMP on all interfaces.

Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::disable_vif ( const string &  vif_name,
string &  error_msg 
)

Disable an existing MLD6IGMP vif.

Parameters:
vif_namethe name of the vif to disable.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::disable_vif ( const string &  vif_name,
string &  error_msg 
)

Disable an existing MLD6IGMP vif.

Mld6igmpNode::disable_vif: : The name of the vif to disable.

Parameters:
vif_namethe name of the vif to disable.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The error message (if error).

Disable an existing MLD6IGMP vif.

Return value: XORP_OK on success, otherwise XORP_ERROR.

void Mld6igmpNode::enable ( )

Enable node operation.

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

Reimplemented from ProtoState.

void Mld6igmpNode::enable ( )

Enable node operation.

Enable the node operation.

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

Reimplemented from ProtoState.

int Mld6igmpNode::enable_all_vifs ( )

Enable MLD/IGMP on all interfaces.

Mld6igmpNode::enable_all_vifs: @:

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Enable MLD/IGMP on all interfaces.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::enable_all_vifs ( )

Enable MLD/IGMP on all interfaces.

Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::enable_vif ( const string &  vif_name,
string &  error_msg 
)

Enable an existing MLD6IGMP vif.

Parameters:
vif_namethe name of the vif to enable.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::enable_vif ( const string &  vif_name,
string &  error_msg 
)

Enable an existing MLD6IGMP vif.

Mld6igmpNode::enable_vif: : The name of the vif to enable.

Parameters:
vif_namethe name of the vif to enable.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The error message (if error).

Enable an existing MLD6IGMP vif.

Return value: XORP_OK on success, otherwise XORP_ERROR.

virtual void Mld6igmpNode::fea_register_shutdown ( ) [private, pure virtual]

Initiate de-registration with the FEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::fea_register_shutdown ( ) [private, pure virtual]

Initiate de-registration with the FEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::fea_register_startup ( ) [private, pure virtual]

Initiate registration with the FEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::fea_register_startup ( ) [private, pure virtual]

Initiate registration with the FEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

int Mld6igmpNode::final_start ( )

Completely start the node operation.

This method should be called internally after Mld6igmpNode::start() to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::final_start ( )

Completely start the node operation.

Mld6igmpNode::final_start: @:

This method should be called internally after Mld6igmpNode::start() to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Complete the start-up of the MLD/IGMP protocol.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::final_stop ( )

Completely stop the node operation.

This method should be called internally after Mld6igmpNode::stop() to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::final_stop ( )

Completely stop the node operation.

Mld6igmpNode::final_stop: @:

This method should be called internally after Mld6igmpNode::stop() to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Completely stop the MLD/IGMP protocol.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::get_vif_ip_router_alert_option_check ( const string &  vif_name,
bool &  enabled,
string &  error_msg 
)

Get the value of the flag that enables/disables the IP Router Alert option check per interface for received packets.

Parameters:
vif_namethe name of the vif to apply to.
enabledthe return-by-reference flag value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_ip_router_alert_option_check ( const string &  vif_name,
bool &  enabled,
string &  error_msg 
)

Get the value of the flag that enables/disables the IP Router Alert option check per interface for received packets.

Parameters:
vif_namethe name of the vif to apply to.
enabledthe return-by-reference flag value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_proto_version ( const string &  vif_name,
int &  proto_version,
string &  error_msg 
)

Get the protocol version on an interface.

Parameters:
vif_namethe name of the vif to get the protocol version of.
proto_versionthe return-by-reference protocol version.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_proto_version ( const string &  vif_name,
int &  proto_version,
string &  error_msg 
)

Get the protocol version on an interface.

Parameters:
vif_namethe name of the vif to get the protocol version of.
proto_versionthe return-by-reference protocol version.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_query_interval ( const string &  vif_name,
TimeVal interval,
string &  error_msg 
)

Get the Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe return-by-reference interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_query_interval ( const string &  vif_name,
TimeVal interval,
string &  error_msg 
)

Get the Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe return-by-reference interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_query_last_member_interval ( const string &  vif_name,
TimeVal interval,
string &  error_msg 
)

Get the Last Member Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe return-by-reference interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_query_last_member_interval ( const string &  vif_name,
TimeVal interval,
string &  error_msg 
)

Get the Last Member Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe return-by-reference interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_query_response_interval ( const string &  vif_name,
TimeVal interval,
string &  error_msg 
)

Get the Query Response Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe return-by-reference interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_query_response_interval ( const string &  vif_name,
TimeVal interval,
string &  error_msg 
)

Get the Query Response Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe return-by-reference interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_robust_count ( const string &  vif_name,
uint32_t &  robust_count,
string &  error_msg 
)

Get the Robustness Variable count per interface.

Parameters:
vif_namethe name of the vif to apply to.
robust_countthe return-by-reference count value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::get_vif_robust_count ( const string &  vif_name,
uint32_t &  robust_count,
string &  error_msg 
)

Get the Robustness Variable count per interface.

Parameters:
vif_namethe name of the vif to apply to.
robust_countthe return-by-reference count value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
virtual const IfMgrIfTree& Mld6igmpNode::ifmgr_iftree ( ) const [private, pure virtual]

Get a reference to the interface manager tree.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Returns:
a reference to the interface manager tree.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual const IfMgrIfTree& Mld6igmpNode::ifmgr_iftree ( ) const [private, pure virtual]

Get a reference to the interface manager tree.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Returns:
a reference to the interface manager tree.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual const ServiceBase* Mld6igmpNode::ifmgr_mirror_service_base ( ) const [private, pure virtual]

Get a reference to the service base of the interface manager.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Returns:
a reference to the service base of the interface manager.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual const ServiceBase* Mld6igmpNode::ifmgr_mirror_service_base ( ) const [private, pure virtual]

Get a reference to the service base of the interface manager.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Returns:
a reference to the service base of the interface manager.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

uint8_t Mld6igmpNode::ip_protocol_number ( ) const

Get the IP protocol number.

Returns:
the IP protocol number.
uint8_t Mld6igmpNode::ip_protocol_number ( ) const

Get the IP protocol number.

Returns:
the IP protocol number.
bool Mld6igmpNode::is_directly_connected ( const Mld6igmpVif mld6igmp_vif,
const IPvX ipaddr_test 
) const

Test if an address is directly connected to a specified virtual interface.

Mld6igmpNode::is_directly_connected: : The virtual interface to test against.

Note that the virtual interface the address is directly connected to must be UP.

Parameters:
mld6igmp_vifthe virtual interface to test against.
ipaddr_testthe address to test.
Returns:
true if ipaddr_test is directly connected to vif, otherwise false.

: The address to test.

Note that the virtual interface the address is directly connected to must be UP.

Return value: True if is directly connected to , otherwise false.

bool Mld6igmpNode::is_directly_connected ( const Mld6igmpVif mld6igmp_vif,
const IPvX ipaddr_test 
) const

Test if an address is directly connected to a specified virtual interface.

Note that the virtual interface the address is directly connected to must be UP.

Parameters:
mld6igmp_vifthe virtual interface to test against.
ipaddr_testthe address to test.
Returns:
true if ipaddr_test is directly connected to vif, otherwise false.
bool Mld6igmpNode::is_log_trace ( ) const [inline]

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.
bool Mld6igmpNode::is_log_trace ( ) const [inline]

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.
virtual int Mld6igmpNode::join_multicast_group ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol,
const IPvX group_address 
) [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:
if_namethe interface name to join.
vif_namethe vif name to join.
ip_protocolthe IP protocol number that the receiver is interested in.
group_addressthe multicast group address to join.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::join_multicast_group ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol,
const IPvX group_address 
) [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:
if_namethe interface name to join.
vif_namethe vif name to join.
ip_protocolthe IP protocol number that the receiver is interested in.
group_addressthe multicast group address to join.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

int Mld6igmpNode::join_prune_notify_routing ( const string &  module_instance_name,
xorp_module_id  module_id,
uint32_t  vif_index,
const IPvX source,
const IPvX group,
action_jp_t  action_jp 
)

Notify a protocol about multicast membership change.

Mld6igmpNode::join_prune_notify_routing: : The module instance name of the protocol to notify.

Parameters:
module_instance_namethe module instance name of the protocol to notify.
module_idthe module ID (xorp_module_id) of the protocol to notify.
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed. In case of group-specific multicast, it is IPvX::ZERO().
groupthe group address of the (S,G) or (*,G) entry that has changed.
action_jpthe membership change type (action_jp_t): either ACTION_JOIN or ACTION_PRUNE.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The #xorp_module_id of the protocol to notify. : The vif index of the interface with membership change. : The source address of the (S,G) or (*,G) entry that has changed. In case of group-specific membership, it is IPvX::ZERO(). : The group address of the (S,G) or (*,G) entry that has changed. : The membership change type #action_jp_t: either ACTION_JOIN or ACTION_PRUNE.

Notify the protocol instance with name that there is multicast membership change on interface with vif index of .

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::join_prune_notify_routing ( const string &  module_instance_name,
xorp_module_id  module_id,
uint32_t  vif_index,
const IPvX source,
const IPvX group,
action_jp_t  action_jp 
)

Notify a protocol about multicast membership change.

Parameters:
module_instance_namethe module instance name of the protocol to notify.
module_idthe module ID (xorp_module_id) of the protocol to notify.
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed. In case of group-specific multicast, it is IPvX::ZERO().
groupthe group address of the (S,G) or (*,G) entry that has changed.
action_jpthe membership change type (action_jp_t): either ACTION_JOIN or ACTION_PRUNE.
Returns:
XORP_OK on success, otherwise XORP_ERROR.
virtual int Mld6igmpNode::leave_multicast_group ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol,
const IPvX group_address 
) [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:
if_namethe interface name to leave.
vif_namethe vif name to leave.
ip_protocolthe IP protocol number that the receiver is not interested in anymore.
group_addressthe multicast group address to leave.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::leave_multicast_group ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol,
const IPvX group_address 
) [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:
if_namethe interface name to leave.
vif_namethe vif name to leave.
ip_protocolthe IP protocol number that the receiver is not interested in anymore.
group_addressthe multicast group address to leave.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::mfea_register_shutdown ( ) [private, pure virtual]

Initiate de-registration with the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::mfea_register_shutdown ( ) [private, pure virtual]

Initiate de-registration with the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::mfea_register_startup ( ) [private, pure virtual]

Initiate registration with the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual void Mld6igmpNode::mfea_register_startup ( ) [private, pure virtual]

Initiate registration with the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

int Mld6igmpNode::mld6igmp_send ( const string &  if_name,
const string &  vif_name,
const IPvX src_address,
const IPvX dst_address,
uint8_t  ip_protocol,
int32_t  ip_ttl,
int32_t  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
buffer_t buffer,
string &  error_msg 
)

Send a protocol packet.

Parameters:
if_namethe interface to send the packet on. It is essential for multicast. In the unicast case this field may be empty.
vif_namethe vif to send the packet on. It is essential for multicast. In the unicast case this field may be empty.
src_addressthe IP source address.
dst_addressthe IP destination address.
ip_protocolthe IP protocol number. It must be between 1 and 255.
ip_ttlthe IP TTL (hop-limit). If it has a negative value, the TTL will be set internally before transmission.
ip_tosthe Type Of Service (Diffserv/ECN bits for IPv4). If it has a negative value, the TOS will be set internally before transmission.
ip_router_alertif true, then add the IP Router Alert option to the IP packet.
ip_internet_controlif true, then this is IP control traffic.
bufferthe data buffer with the packet to send.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::mld6igmp_send ( const string &  if_name,
const string &  vif_name,
const IPvX src_address,
const IPvX dst_address,
uint8_t  ip_protocol,
int32_t  ip_ttl,
int32_t  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
buffer_t buffer,
string &  error_msg 
)

Send a protocol packet.

Parameters:
if_namethe interface to send the packet on. It is essential for multicast. In the unicast case this field may be empty.
vif_namethe vif to send the packet on. It is essential for multicast. In the unicast case this field may be empty.
src_addressthe IP source address.
dst_addressthe IP destination address.
ip_protocolthe IP protocol number. It must be between 1 and 255.
ip_ttlthe IP TTL (hop-limit). If it has a negative value, the TTL will be set internally before transmission.
ip_tosthe Type Of Service (Diffserv/ECN bits for IPv4). If it has a negative value, the TOS will be set internally before transmission.
ip_router_alertif true, then add the IP Router Alert option to the IP packet.
ip_internet_controlif true, then this is IP control traffic.
bufferthe data buffer with the packet to send.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::proto_recv ( const string &  if_name,
const string &  vif_name,
const IPvX src_address,
const IPvX dst_address,
uint8_t  ip_protocol,
int32_t  ip_ttl,
int32_t  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
const vector< uint8_t > &  payload,
string &  error_msg 
) [virtual]

Receive a protocol packet.

Parameters:
if_namethe interface name the packet arrived on.
vif_namethe vif name the packet arrived on.
src_addressthe IP source address.
dst_addressthe IP destination address.
ip_protocolthe IP protocol number.
ip_ttlthe IP TTL (hop-limit). If it has a negative value, then the received value is unknown.
ip_tosthe Type of Service (Diffserv/ECN bits for IPv4). If it has a negative value, then the received value is unknown.
ip_router_alertif true, the IP Router Alert option was included in the IP packet.
ip_internet_controlif true, then this is IP control traffic.
payloadthe payload, everything after the IP header and options.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements ProtoNode< Mld6igmpVif >.

int Mld6igmpNode::proto_recv ( const string &  if_name,
const string &  vif_name,
const IPvX src_address,
const IPvX dst_address,
uint8_t  ip_protocol,
int32_t  ip_ttl,
int32_t  ip_tos,
bool  ip_router_alert,
bool  ip_internet_control,
const vector< uint8_t > &  payload,
string &  error_msg 
) [virtual]

Receive a protocol packet.

Parameters:
if_namethe interface name the packet arrived on.
vif_namethe vif name the packet arrived on.
src_addressthe IP source address.
dst_addressthe IP destination address.
ip_protocolthe IP protocol number.
ip_ttlthe IP TTL (hop-limit). If it has a negative value, then the received value is unknown.
ip_tosthe Type of Service (Diffserv/ECN bits for IPv4). If it has a negative value, then the received value is unknown.
ip_router_alertif true, the IP Router Alert option was included in the IP packet.
ip_internet_controlif true, then this is IP control traffic.
payloadthe payload, everything after the IP header and options.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements ProtoNode< Mld6igmpVif >.

virtual int Mld6igmpNode::register_receiver ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol,
bool  enable_multicast_loopback 
) [pure virtual]

Register as a receiver to receive packets.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
if_namethe interface through which packets should be accepted.
vif_namethe vif through which packets should be accepted.
ip_protocolthe IP protocol number that the receiver is interested in. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols.
enable_multicast_loopbackif true then enable delivering of multicast datagrams back to this host (assuming the host is a member of the same multicast group).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::register_receiver ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol,
bool  enable_multicast_loopback 
) [pure virtual]

Register as a receiver to receive packets.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
if_namethe interface through which packets should be accepted.
vif_namethe vif through which packets should be accepted.
ip_protocolthe IP protocol number that the receiver is interested in. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols.
enable_multicast_loopbackif true then enable delivering of multicast datagrams back to this host (assuming the host is a member of the same multicast group).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

int Mld6igmpNode::reset_vif_ip_router_alert_option_check ( const string &  vif_name,
string &  error_msg 
)

Reset the value of the flag that enables/disables the IP Router Alert option check per interface for received packets to its default value.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_ip_router_alert_option_check ( const string &  vif_name,
string &  error_msg 
)

Reset the value of the flag that enables/disables the IP Router Alert option check per interface for received packets to its default value.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_proto_version ( const string &  vif_name,
string &  error_msg 
)

Reset the protocol version on an interface to its default value.

Parameters:
vif_namethe name of the vif to reset the protocol version of to its default value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_proto_version ( const string &  vif_name,
string &  error_msg 
)

Reset the protocol version on an interface to its default value.

Parameters:
vif_namethe name of the vif to reset the protocol version of to its default value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_query_interval ( const string &  vif_name,
string &  error_msg 
)

Reset the Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_query_interval ( const string &  vif_name,
string &  error_msg 
)

Reset the Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_query_last_member_interval ( const string &  vif_name,
string &  error_msg 
)

Reset the Last Member Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_query_last_member_interval ( const string &  vif_name,
string &  error_msg 
)

Reset the Last Member Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_query_response_interval ( const string &  vif_name,
string &  error_msg 
)

Reset the Query Response Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_query_response_interval ( const string &  vif_name,
string &  error_msg 
)

Reset the Query Response Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_robust_count ( const string &  vif_name,
string &  error_msg 
)

Reset the Robustness Variable count per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::reset_vif_robust_count ( const string &  vif_name,
string &  error_msg 
)

Reset the Robustness Variable count per interface.

Parameters:
vif_namethe name of the vif to apply to.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
virtual int Mld6igmpNode::send_add_membership ( const string &  dst_module_instance_name,
xorp_module_id  dst_module_id,
uint32_t  vif_index,
const IPvX source,
const IPvX group 
) [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_namethe module instance name of the protocol to notify.
dst_module_idthe module ID (xorp_module_id) of the protocol to notify.
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO().
groupthe group address.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::send_add_membership ( const string &  dst_module_instance_name,
xorp_module_id  dst_module_id,
uint32_t  vif_index,
const IPvX source,
const IPvX group 
) [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_namethe module instance name of the protocol to notify.
dst_module_idthe module ID (xorp_module_id) of the protocol to notify.
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO().
groupthe group address.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::send_delete_membership ( const string &  dst_module_instance_name,
xorp_module_id  dst_module_id,
uint32_t  vif_index,
const IPvX source,
const IPvX group 
) [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_namethe module instance name of the protocol to notify.
dst_module_idthe module ID (xorp_module_id) of the protocol to notify.
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO().
groupthe group address of the (S,G) or (*,G) entry that has changed.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::send_delete_membership ( const string &  dst_module_instance_name,
xorp_module_id  dst_module_id,
uint32_t  vif_index,
const IPvX source,
const IPvX group 
) [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_namethe module instance name of the protocol to notify.
dst_module_idthe module ID (xorp_module_id) of the protocol to notify.
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO().
groupthe group address of the (S,G) or (*,G) entry that has changed.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

int Mld6igmpNode::set_config_all_vifs_done ( string &  error_msg)

Complete the set of vif configuration changes.

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

Complete the set of vif configuration changes.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
void Mld6igmpNode::set_log_trace ( bool  is_enabled) [inline]

Enable/disable trace log.

This method is used to enable/disable trace log debug messages output.

Parameters:
is_enabledif true, trace log is enabled, otherwise is disabled.
void Mld6igmpNode::set_log_trace ( bool  is_enabled) [inline]

Enable/disable trace log.

This method is used to enable/disable trace log debug messages output.

Parameters:
is_enabledif true, trace log is enabled, otherwise is disabled.
int Mld6igmpNode::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,
uint32_t  mtu,
string &  error_msg 
)

Set flags to a vif.

Parameters:
vif_namethe name of the vif.
is_pim_registertrue if this is a PIM Register vif.
is_p2ptrue if this is a point-to-point vif.
is_loopbacktrue if this is a loopback interface.
is_multicasttrue if the vif is multicast-capable.
is_broadcasttrue if the vif is broadcast-capable.
is_uptrue if the vif is UP and running.
mtuthe MTU of the vif.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::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,
uint32_t  mtu,
string &  error_msg 
)

Set flags to a vif.

Parameters:
vif_namethe name of the vif.
is_pim_registertrue if this is a PIM Register vif.
is_p2ptrue if this is a point-to-point vif.
is_loopbacktrue if this is a loopback interface.
is_multicasttrue if the vif is multicast-capable.
is_broadcasttrue if the vif is broadcast-capable.
is_uptrue if the vif is UP and running.
mtuthe MTU of the vif.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_ip_router_alert_option_check ( const string &  vif_name,
bool  enable,
string &  error_msg 
)

Enable/disable the IP Router Alert option check per interface for received packets.

Parameters:
vif_namethe name of the vif to apply to.
enableif true, then enable the IP Router Alert option check, otherwise disable it.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_ip_router_alert_option_check ( const string &  vif_name,
bool  enable,
string &  error_msg 
)

Enable/disable the IP Router Alert option check per interface for received packets.

Parameters:
vif_namethe name of the vif to apply to.
enableif true, then enable the IP Router Alert option check, otherwise disable it.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_proto_version ( const string &  vif_name,
int  proto_version,
string &  error_msg 
)

Set the protocol version on an interface.

Parameters:
vif_namethe name of the vif to set the protocol version of.
proto_versionthe new protocol version.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_proto_version ( const string &  vif_name,
int  proto_version,
string &  error_msg 
)

Set the protocol version on an interface.

Parameters:
vif_namethe name of the vif to set the protocol version of.
proto_versionthe new protocol version.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_query_interval ( const string &  vif_name,
const TimeVal interval,
string &  error_msg 
)

Set the Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_query_interval ( const string &  vif_name,
const TimeVal interval,
string &  error_msg 
)

Set the Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_query_last_member_interval ( const string &  vif_name,
const TimeVal interval,
string &  error_msg 
)

Set the Last Member Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_query_last_member_interval ( const string &  vif_name,
const TimeVal interval,
string &  error_msg 
)

Set the Last Member Query Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_query_response_interval ( const string &  vif_name,
const TimeVal interval,
string &  error_msg 
)

Set the Query Response Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_query_response_interval ( const string &  vif_name,
const TimeVal interval,
string &  error_msg 
)

Set the Query Response Interval per interface.

Parameters:
vif_namethe name of the vif to apply to.
intervalthe interval.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_robust_count ( const string &  vif_name,
uint32_t  robust_count,
string &  error_msg 
)

Set the Robustness Variable count per interface.

Parameters:
vif_namethe name of the vif to apply to.
robust_countthe count value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::set_vif_robust_count ( const string &  vif_name,
uint32_t  robust_count,
string &  error_msg 
)

Set the Robustness Variable count per interface.

Parameters:
vif_namethe name of the vif to apply to.
robust_countthe count value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::start ( )

Start the node operation.

Start the MLD or IGMP protocol. After the startup operations are completed, Mld6igmpNode::final_start() is called internally to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoState.

int Mld6igmpNode::start ( )

Start the node operation.

Mld6igmpNode::start: @:

Start the MLD or IGMP protocol. After the startup operations are completed, Mld6igmpNode::final_start() is called internally to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Start the MLD or IGMP protocol. TODO: This function should not start the protocol operation on the interfaces. The interfaces must be activated separately. After the startup operations are completed, Mld6igmpNode::final_start() is called to complete the job.

Return value: XORP_OK on success, otherwize XORP_ERROR.

Reimplemented from ProtoState.

int Mld6igmpNode::start_all_vifs ( )

Start MLD/IGMP on all enabled interfaces.

Mld6igmpNode::start_all_vifs: @:

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Start MLD/IGMP on all enabled interfaces.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::start_all_vifs ( )

Start MLD/IGMP on all enabled interfaces.

Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::start_vif ( const string &  vif_name,
string &  error_msg 
)

Start an existing MLD6IGMP vif.

Parameters:
vif_namethe name of the vif to start.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::start_vif ( const string &  vif_name,
string &  error_msg 
)

Start an existing MLD6IGMP vif.

Mld6igmpNode::start_vif: : The name of the vif to start.

Parameters:
vif_namethe name of the vif to start.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The error message (if error).

Start an existing MLD6IGMP vif.

Return value: XORP_OK on success, otherwise XORP_ERROR.

void Mld6igmpNode::status_change ( ServiceBase service,
ServiceStatus  old_status,
ServiceStatus  new_status 
) [private, virtual]

A method invoked when the status of a service changes.

Parameters:
servicethe service whose status has changed.
old_statusthe old status.
new_statusthe new status.

Implements ServiceChangeObserverBase.

void Mld6igmpNode::status_change ( ServiceBase service,
ServiceStatus  old_status,
ServiceStatus  new_status 
) [private, virtual]

A method invoked when the status of a service changes.

Parameters:
servicethe service whose status has changed.
old_statusthe old status.
new_statusthe new status.

Implements ServiceChangeObserverBase.

int Mld6igmpNode::stop ( )

Stop the node operation.

Mld6igmpNode::stop: @:

Gracefully stop the MLD or IGMP protocol. After the shutdown operations are completed, Mld6igmpNode::final_stop() is called internally to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Gracefully stop the MLD or IGMP protocol. XXX: After the cleanup is completed, Mld6igmpNode::final_stop() is called to complete the job. XXX: This function, unlike start(), will stop the protocol operation on all interfaces.

Return value: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoState.

int Mld6igmpNode::stop ( )

Stop the node operation.

Gracefully stop the MLD or IGMP protocol. After the shutdown operations are completed, Mld6igmpNode::final_stop() is called internally to complete the job.

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoState.

int Mld6igmpNode::stop_all_vifs ( )

Stop MLD/IGMP on all interfaces it was running on.

Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::stop_all_vifs ( )

Stop MLD/IGMP on all interfaces it was running on.

Mld6igmpNode::stop_all_vifs: @:

Returns:
XORP_OK on success, otherwise XORP_ERROR.

Stop MLD/IGMP on all interfaces it was running on.

Return value: XORP_OK on success, otherwise XORP_ERROR.

int Mld6igmpNode::stop_vif ( const string &  vif_name,
string &  error_msg 
)

Stop an existing MLD6IGMP vif.

Parameters:
vif_namethe name of the vif to start.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.
int Mld6igmpNode::stop_vif ( const string &  vif_name,
string &  error_msg 
)

Stop an existing MLD6IGMP vif.

Mld6igmpNode::stop_vif: : The name of the vif to stop.

Parameters:
vif_namethe name of the vif to start.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

: The error message (if error).

Stop an existing MLD6IGMP vif.

Return value: XORP_OK on success, otherwise XORP_ERROR.

virtual int Mld6igmpNode::unregister_receiver ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol 
) [pure virtual]

Unregister as a receiver to receive packets.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
if_namethe interface through which packets should not be accepted.
vif_namethe vif through which packets should not be accepted.
ip_protocolthe IP Protocol number that the receiver is not interested in anymore. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

virtual int Mld6igmpNode::unregister_receiver ( const string &  if_name,
const string &  vif_name,
uint8_t  ip_protocol 
) [pure virtual]

Unregister as a receiver to receive packets.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
if_namethe interface through which packets should not be accepted.
vif_namethe vif through which packets should not be accepted.
ip_protocolthe IP Protocol number that the receiver is not interested in anymore. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols.
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.

void Mld6igmpNode::vif_shutdown_completed ( const string &  vif_name)

A method called when a vif has completed its shutdown.

Parameters:
vif_namethe name of the vif that has completed its shutdown.
void Mld6igmpNode::vif_shutdown_completed ( const string &  vif_name)

A method called when a vif has completed its shutdown.

Parameters:
vif_namethe name of the vif that has completed its shutdown.

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