|
xorp
|
The MLD/IGMP node class. More...
#include <mld6igmp_node.hh>
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 ServiceBase * | ifmgr_mirror_service_base () const =0 |
| Get a reference to the service base of the interface manager. | |
| virtual const IfMgrIfTree & | ifmgr_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 ServiceBase * | ifmgr_mirror_service_base () const =0 |
| Get a reference to the service base of the interface manager. | |
| virtual const IfMgrIfTree & | ifmgr_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 |
The MLD/IGMP node class.
There should be one node per MLD or IGMP instance. There should be one instance per address family.
| 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).
| 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. |
: The module ID (must be XORP_MODULE_MLD6IGMP). : The event loop.
MLD6IGMP node constructor.
| Mld6igmpNode::~Mld6igmpNode | ( | ) | [virtual] |
| Mld6igmpNode::Mld6igmpNode | ( | int | family, |
| xorp_module_id | module_id, | ||
| EventLoop & | eventloop | ||
| ) |
| 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.
| 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. |
: 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.
| 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. |
| 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.
| vif | vif information about the new Mld6igmpVif to install. |
| error_msg | the error message (if 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.
| vif_name | the name of the new vif. |
| vif_index | the vif index of the new vif. |
| error_msg | the error message (if 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.
| vif | vif information about the new Mld6igmpVif to install. |
| error_msg | the error message (if error). |
| int Mld6igmpNode::add_vif | ( | const string & | vif_name, |
| uint32_t | vif_index, | ||
| string & | error_msg | ||
| ) |
| 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.
| 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). |
| 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.
| 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). |
| void Mld6igmpNode::delete_all_vifs | ( | ) |
Delete all MLD/IGMP 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.
| 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. |
: 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.
| 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. |
: 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 | ||
| ) |
| 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.
: 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 | ||
| ) |
| int Mld6igmpNode::delete_vif_addr | ( | const string & | vif_name, |
| const IPvX & | addr, | ||
| string & | error_msg | ||
| ) |
| 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: @:
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.
| int Mld6igmpNode::disable_vif | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| 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.
: 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: @:
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.
| int Mld6igmpNode::enable_vif | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| 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.
: 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.
| int Mld6igmpNode::final_start | ( | ) |
Completely start the node operation.
This method should be called internally after Mld6igmpNode::start() to complete the job.
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.
| int Mld6igmpNode::final_stop | ( | ) |
Completely stop the node operation.
This method should be called internally after Mld6igmpNode::stop() to complete the job.
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.
| vif_name | the name of the vif to apply to. |
| enabled | the return-by-reference flag value. |
| error_msg | the error message (if 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.
| vif_name | the name of the vif to apply to. |
| enabled | the return-by-reference flag value. |
| error_msg | the error message (if error). |
| int Mld6igmpNode::get_vif_proto_version | ( | const string & | vif_name, |
| int & | proto_version, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_proto_version | ( | const string & | vif_name, |
| int & | proto_version, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_query_interval | ( | const string & | vif_name, |
| TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_query_interval | ( | const string & | vif_name, |
| TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_query_last_member_interval | ( | const string & | vif_name, |
| TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_query_last_member_interval | ( | const string & | vif_name, |
| TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_query_response_interval | ( | const string & | vif_name, |
| TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_query_response_interval | ( | const string & | vif_name, |
| TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_robust_count | ( | const string & | vif_name, |
| uint32_t & | robust_count, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::get_vif_robust_count | ( | const string & | vif_name, |
| uint32_t & | robust_count, | ||
| string & | error_msg | ||
| ) |
| 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.
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.
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.
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.
Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.
| uint8_t Mld6igmpNode::ip_protocol_number | ( | ) | const |
| uint8_t Mld6igmpNode::ip_protocol_number | ( | ) | const |
| 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.
: 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 |
| 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.
| 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.
| 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!!
| if_name | the interface name to join. |
| vif_name | the vif name to join. |
| ip_protocol | the IP protocol number that the receiver is interested in. |
| group_address | the multicast group address to join. |
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!!
| if_name | the interface name to join. |
| vif_name | the vif name to join. |
| ip_protocol | the IP protocol number that the receiver is interested in. |
| group_address | the multicast group address to join. |
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.
| 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. |
: 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.
| 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. |
| 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!!
| if_name | the interface name to leave. |
| vif_name | the vif name to leave. |
| ip_protocol | the IP protocol number that the receiver is not interested in anymore. |
| group_address | the multicast group address to leave. |
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!!
| if_name | the interface name to leave. |
| vif_name | the vif name to leave. |
| ip_protocol | the IP protocol number that the receiver is not interested in anymore. |
| group_address | the multicast group address to leave. |
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.
| if_name | the interface to send the packet on. It is essential for multicast. In the unicast case this field may be empty. |
| vif_name | the vif to send the packet on. It is essential for multicast. In the unicast case this field may be empty. |
| src_address | the IP source address. |
| dst_address | the IP destination address. |
| ip_protocol | the IP protocol number. It must be between 1 and 255. |
| ip_ttl | the IP TTL (hop-limit). If it has a negative value, the TTL will be set internally before transmission. |
| ip_tos | the Type Of Service (Diffserv/ECN bits for IPv4). If it has a negative value, the TOS will be set internally before transmission. |
| ip_router_alert | if true, then add the IP Router Alert option to the IP packet. |
| ip_internet_control | if true, then this is IP control traffic. |
| buffer | the data buffer with the packet to send. |
| error_msg | the error message (if 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.
| if_name | the interface to send the packet on. It is essential for multicast. In the unicast case this field may be empty. |
| vif_name | the vif to send the packet on. It is essential for multicast. In the unicast case this field may be empty. |
| src_address | the IP source address. |
| dst_address | the IP destination address. |
| ip_protocol | the IP protocol number. It must be between 1 and 255. |
| ip_ttl | the IP TTL (hop-limit). If it has a negative value, the TTL will be set internally before transmission. |
| ip_tos | the Type Of Service (Diffserv/ECN bits for IPv4). If it has a negative value, the TOS will be set internally before transmission. |
| ip_router_alert | if true, then add the IP Router Alert option to the IP packet. |
| ip_internet_control | if true, then this is IP control traffic. |
| buffer | the data buffer with the packet to send. |
| error_msg | the error message (if 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.
| if_name | the interface name the packet arrived on. |
| vif_name | the vif name the packet arrived on. |
| src_address | the IP source address. |
| dst_address | the IP destination address. |
| ip_protocol | the IP protocol number. |
| ip_ttl | the IP TTL (hop-limit). If it has a negative value, then the received value is unknown. |
| ip_tos | the Type of Service (Diffserv/ECN bits for IPv4). If it has a negative value, then the received value is unknown. |
| ip_router_alert | if true, the IP Router Alert option was included in the IP packet. |
| ip_internet_control | if true, then this is IP control traffic. |
| payload | the payload, everything after the IP header and options. |
| error_msg | the error message (if 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.
| if_name | the interface name the packet arrived on. |
| vif_name | the vif name the packet arrived on. |
| src_address | the IP source address. |
| dst_address | the IP destination address. |
| ip_protocol | the IP protocol number. |
| ip_ttl | the IP TTL (hop-limit). If it has a negative value, then the received value is unknown. |
| ip_tos | the Type of Service (Diffserv/ECN bits for IPv4). If it has a negative value, then the received value is unknown. |
| ip_router_alert | if true, the IP Router Alert option was included in the IP packet. |
| ip_internet_control | if true, then this is IP control traffic. |
| payload | the payload, everything after the IP header and options. |
| error_msg | the error message (if 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.
| if_name | the interface through which packets should be accepted. |
| vif_name | the vif through which packets should be accepted. |
| ip_protocol | the 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_loopback | if true then enable delivering of multicast datagrams back to this host (assuming the host is a member of the same multicast group). |
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.
| if_name | the interface through which packets should be accepted. |
| vif_name | the vif through which packets should be accepted. |
| ip_protocol | the 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_loopback | if true then enable delivering of multicast datagrams back to this host (assuming the host is a member of the same multicast group). |
Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.
| int Mld6igmpNode::reset_vif_ip_router_alert_option_check | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_ip_router_alert_option_check | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_proto_version | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_proto_version | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_query_interval | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_query_interval | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_query_last_member_interval | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_query_last_member_interval | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_query_response_interval | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_query_response_interval | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_robust_count | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::reset_vif_robust_count | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| 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.
| 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. |
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.
| 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. |
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.
| 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. |
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.
| 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. |
Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.
| int Mld6igmpNode::set_config_all_vifs_done | ( | string & | error_msg | ) |
| int Mld6igmpNode::set_config_all_vifs_done | ( | string & | error_msg | ) |
| 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.
| is_enabled | if 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.
| is_enabled | if 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.
| 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. |
| mtu | the MTU of the vif. |
| error_msg | the error message (if 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.
| 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. |
| mtu | the MTU of the vif. |
| error_msg | the error message (if 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.
| vif_name | the name of the vif to apply to. |
| enable | if true, then enable the IP Router Alert option check, otherwise disable it. |
| error_msg | the error message (if 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.
| vif_name | the name of the vif to apply to. |
| enable | if true, then enable the IP Router Alert option check, otherwise disable it. |
| error_msg | the error message (if error). |
| int Mld6igmpNode::set_vif_proto_version | ( | const string & | vif_name, |
| int | proto_version, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_proto_version | ( | const string & | vif_name, |
| int | proto_version, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_query_interval | ( | const string & | vif_name, |
| const TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_query_interval | ( | const string & | vif_name, |
| const TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_query_last_member_interval | ( | const string & | vif_name, |
| const TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_query_last_member_interval | ( | const string & | vif_name, |
| const TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_query_response_interval | ( | const string & | vif_name, |
| const TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_query_response_interval | ( | const string & | vif_name, |
| const TimeVal & | interval, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_robust_count | ( | const string & | vif_name, |
| uint32_t | robust_count, | ||
| string & | error_msg | ||
| ) |
| int Mld6igmpNode::set_vif_robust_count | ( | const string & | vif_name, |
| uint32_t | robust_count, | ||
| string & | error_msg | ||
| ) |
| 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.
Reimplemented from ProtoState.
| 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.
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: @:
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.
| int Mld6igmpNode::start_vif | ( | const string & | vif_name, |
| string & | error_msg | ||
| ) |
| 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.
: 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.
| service | the service whose status has changed. |
| old_status | the old status. |
| new_status | the 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.
| service | the service whose status has changed. |
| old_status | the old status. |
| new_status | the new status. |
Implements ServiceChangeObserverBase.
| 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.
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.
Reimplemented from ProtoState.
| int Mld6igmpNode::stop_all_vifs | ( | ) |
Stop MLD/IGMP on all interfaces it was running on.
| int Mld6igmpNode::stop_all_vifs | ( | ) |
Stop MLD/IGMP on all interfaces it was running on.
Mld6igmpNode::stop_all_vifs: @:
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 | ||
| ) |
| 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.
: 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.
| if_name | the interface through which packets should not be accepted. |
| vif_name | the vif through which packets should not be accepted. |
| ip_protocol | the 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. |
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.
| if_name | the interface through which packets should not be accepted. |
| vif_name | the vif through which packets should not be accepted. |
| ip_protocol | the 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. |
Implemented in XrlMld6igmpNode, and XrlMld6igmpNode.
| void Mld6igmpNode::vif_shutdown_completed | ( | const string & | vif_name | ) |
| void Mld6igmpNode::vif_shutdown_completed | ( | const string & | vif_name | ) |