|
|
There should be one node per MFEA instance. There should be one instance per address family.
MfeaNode (int family, xorp_module_id module_id, EventLoop& eventloop,
FtiConfig& ftic)
| MfeaNode |
Constructor for a given address family, module ID, and event loop.
Parameters:
family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). |
module_id | the module ID (xorp_module_id). Should be equal to XORP_MODULE_MFEA. |
eventloop | the event loop to use. |
ftic | the FtiConfig entry to use to obtain the routing table (NOTE: this parameter is only temporary here, and will be removed in the near future). |
~MfeaNode ()
| ~MfeaNode |
[virtual]
Destructor
int start ()
| start |
Start the node operation.
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int stop ()
| stop |
Stop the node operation.
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int add_vif (const Vif& vif, string& err)
| add_vif |
Install a new MFEA vif.
Parameters:
vif | vif information about new MfeaVif to install. |
err | the error message (if error). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int delete_vif (const string& vif_name, string& err)
| delete_vif |
Delete an existing MFEA vif.
Parameters:
vif_name | the name of the vif to delete. |
err | the error message (if error). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int add_config_vif (const Vif& vif, string& reason)
| add_config_vif |
Add a configured vif.
Parameters:
vif | the vif with the information to add. |
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int add_config_vif (const string& vif_name,
uint16_t vif_index,
string& reason)
| add_config_vif |
Add a configured vif.
Parameters:
vif_name | the name of the vif to add. |
vif_index | the vif index of the vif to add. |
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int delete_config_vif (const string& vif_name,
string& reason)
| delete_config_vif |
Delete a configured vif.
Parameters:
vif_name | the name of the vif to delete. |
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int add_config_vif_addr (const string& vif_name,
const IPvX& addr,
const IPvXNet& subnet,
const IPvX& broadcast,
const IPvX& peer,
string& reason)
| add_config_vif_addr |
Add an address to a configured vif.
Parameters:
vif_name | the name of the vif. |
addr | the address to add. |
subnet | the subnet address to add. |
broadcast | the broadcast address to add. |
peer | the peer address to add. |
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int delete_config_vif_addr (const string& vif_name,
const IPvX& addr,
string& reason)
| delete_config_vif_addr |
Delete an address from a configured vif.
Parameters:
vif_name | the name of the vif. |
addr | the address to delete. |
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int set_config_vif_flags (const string& vif_name,
bool is_pim_register,
bool is_p2p,
bool is_loopback,
bool is_multicast,
bool is_broadcast,
bool is_up,
string& reason)
| set_config_vif_flags |
Set the vif flags to a configured vif.
Parameters:
vif_name | the name of the vif. |
is_pim_register | true if the vif is a PIM Register interface. |
is_p2p | true if the vif is point-to-point interface. |
is_loopback | true if the vif 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 underlying vif is UP. |
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int set_config_all_vifs_done (string& reason)
| set_config_all_vifs_done |
Complete the set of vif configuration changes.
Parameters:
reason | return-by-reference string that contains human-readable string with information about the reason for failure (if any). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_add_config_vif (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const string& vif_name,
uint16_t vif_index)
| send_add_config_vif |
[pure virtual]
Send to a client to add a configured vif.
Parameters:
dst_module_instance_name | the name of the protocol instance-destination of the message. |
dst_module_id | the module ID of the protocol-destination of the message. |
vif_name | the name of the vif to add. |
vif_index | the vif index of the vif to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_delete_config_vif (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const string& vif_name)
| send_delete_config_vif |
[pure virtual]
Send to a client to delete a configured vif.
Parameters:
dst_module_instance_name | the name of the protocol instance-destination of the message. |
dst_module_id | the module ID of the protocol-destination of the message. |
vif_name | the name of the vif to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_add_config_vif_addr (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const string& vif_name,
const IPvX& addr,
const IPvXNet& subnet,
const IPvX& broadcast,
const IPvX& peer)
| send_add_config_vif_addr |
[pure virtual]
Send to a client to add an address to a configured vif.
Parameters:
dst_module_instance_name | the name of the protocol instance-destination of the message. |
dst_module_id | the module ID of the protocol-destination of the message. |
vif_name | the name of the vif. |
addr | the address to add. |
subnet | the subnet address to add. |
broadcast | the broadcast address to add. |
peer | the peer address to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_delete_config_vif_addr (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const string& vif_name,
const IPvX& addr)
| send_delete_config_vif_addr |
[pure virtual]
Send to a client to delete an address from a configured vif.
Parameters:
dst_module_instance_name | the name of the protocol instance-destination of the message. |
dst_module_id | the module ID of the protocol-destination of the message. |
vif_name | the name of the vif. |
addr | the address to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_set_config_vif_flags (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const string& vif_name,
bool is_pim_register,
bool is_p2p,
bool is_loopback,
bool is_multicast,
bool is_broadcast,
bool is_up)
| send_set_config_vif_flags |
[pure virtual]
Send to a client to set the vif flags to a configured vif.
Parameters:
dst_module_instance_name | the name of the protocol instance-destination of the message. |
dst_module_id | the module ID of the protocol-destination of the message. |
vif_name | the name of the vif. |
is_pim_register | true if the vif is a PIM Register interface. |
is_p2p | true if the vif is point-to-point interface. |
is_loopback | true if the vif 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 underlying vif is UP. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_set_config_all_vifs_done (const string& dst_module_instance_name,
xorp_module_id dst_module_id)
| send_set_config_all_vifs_done |
[pure virtual]
Send to a client to complete the set of vif configuration changes.
Parameters:
dst_module_instance_name | the name of the protocol instance-destination of the message. |
dst_module_id | the module ID of the protocol-destination of the message. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int start_all_vifs ()
| start_all_vifs |
Start MFEA on all enabled interfaces.
Returns: the number of virtual interfaces MFEA was started on, or XORP_ERROR if error occured.
int stop_all_vifs ()
| stop_all_vifs |
Stop MFEA on all interfaces it was running on.
Returns: the number of virtual interfaces MFEA was stopped on, or XORP_ERROR if error occured.
int enable_all_vifs ()
| enable_all_vifs |
Enable MFEA on all interfaces.
Returns: XORP_OK on success, otherwise XORP_ERROR.
int disable_all_vifs ()
| disable_all_vifs |
Disable MFEA on all interfaces.
All running interfaces are stopped first.
Returns: XORP_OK on success, otherwise XORP_ERROR.
void delete_all_vifs ()
| delete_all_vifs |
Delete all MFEA vifs.
int start_protocol (xorp_module_id module_id)
| start_protocol |
Start operation for a given protocol.
Parameters:
module_id | the module ID (xorp_module_id) of the protocol to start. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int stop_protocol (xorp_module_id module_id)
| stop_protocol |
Stop operation for a given protocol.
Parameters:
module_id | the module ID (xorp_module_id) of the protocol to stop. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int add_protocol (const string& module_instance_name,
xorp_module_id module_id)
| add_protocol |
A method used by a protocol instance to register with this MfeaNode.
Parameters:
module_instance_name | the module instance name of the protocol to add. |
module_id | the module ID (xorp_module_id) of the protocol to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_protocol (const string& module_instance_name,
xorp_module_id module_id)
| delete_protocol |
A method used by a protocol instance to deregister with this MfeaNode.
Parameters:
module_instance_name | the module instance name of the protocol to delete. |
module_id | the module ID (xorp_module_id) of the protocol to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int start_protocol_vif (const string& module_instance_name,
xorp_module_id module_id,
uint16_t vif_index)
| start_protocol_vif |
Start a protocol on an interface.
Parameters:
module_instance_name | the module instance name of the protocol to start on the interface. |
module_id | the module ID (xorp_module_id) of the protocol to start on the interface. |
vif_index | the vif index of the interface to start the protocol on. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int stop_protocol_vif (const string& module_instance_name,
xorp_module_id module_id,
uint16_t vif_index)
| stop_protocol_vif |
Stop a protocol on an interface.
Parameters:
module_instance_name | the module instance name of the protocol to stop on the interface. |
module_id | the module ID (xorp_module_id) of the protocol to stop on the interface. |
vif_index | the vif index of the interface to stop the protocol on. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int add_allow_kernel_signal_messages (const string& module_instance_name,
xorp_module_id module_id)
| add_allow_kernel_signal_messages |
Add a protocol to receive kernel signal messages.
Add a protocol to the set of protocols that are interested in receiving kernel signal messages.
Parameters:
module_instance_name | the module instance name of the protocol to add. |
module_id | the module ID (xorp_module_id) of the protocol to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_allow_kernel_signal_messages (const string& module_instance_name,
xorp_module_id module_id)
| delete_allow_kernel_signal_messages |
Delete a protocol from receiving kernel signal messages.
Delete a protocol from the set of protocols that are interested in receiving kernel signal messages.
Parameters:
module_instance_name | the module instance name of the protocol to delete. |
module_id | the module ID (xorp_module_id) of the protocol to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int add_allow_mrib_messages (const string& module_instance_name,
xorp_module_id module_id)
| add_allow_mrib_messages |
Add a protocol to receive MRIB messages.
Add a protocol to the set of protocols that are interested in receiving MRIB (see Mrib) messages.
The MRIB (see Mrib) messages contain (unicast) routing information that can be used for obtaining the RPF (Reverse-Path Forwarding) information.
Parameters:
module_instance_name | the module instance name of the protocol to add. |
module_id | the module ID (xorp_module_id) of the protocol to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_allow_mrib_messages (const string& module_instance_name,
xorp_module_id module_id)
| delete_allow_mrib_messages |
Delete a protocol from receiving MRIB messages.
Delete a protocol to the set of protocols that are interested in receiving MRIB (see Mrib) messages.
The MRIB (see Mrib) messages contain (unicast) routing information that can be used for obtaining the RPF (Reverse-Path Forwarding) information.
Parameters:
module_instance_name | the module instance name of the protocol to delete. |
module_id | the module ID (xorp_module_id) of the protocol to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_add_mrib (const Mrib& mrib)
| send_add_mrib |
Add a Mrib entry to user-level protocols.
Add a Mrib entry to all user-level protocols that are interested in receiving MRIB messages.
Parameters:
mrib | the Mrib entry to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_delete_mrib (const Mrib& mrib)
| send_delete_mrib |
Delete a Mrib entry from user-level protocols.
Delete a Mrib entry from all user-level protocols that are interested in receiving MRIB messages.
Parameters:
mrib | the Mrib entry to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_set_mrib_done ()
| send_set_mrib_done |
Complete a transaction of add/delete Mrib entries.
Complete a transaction of add/delete Mrib entries with all user-level protocols that are interested in receiving MRIB messages.
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_add_mrib (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const Mrib& mrib)
| send_add_mrib |
[pure virtual]
Add a Mrib entry to an user-level protocol.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
dst_module_instance_name | the module instance name of the module-recepient of the message. |
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
mrib | the Mrib entry to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_delete_mrib (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const Mrib& mrib)
| send_delete_mrib |
[pure virtual]
Delete a Mrib entry from an user-level protocol.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
dst_module_instance_name | the module instance name of the module-recepient of the message. |
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
mrib | the Mrib entry to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int send_set_mrib_done (const string& dst_module_instance_name,
xorp_module_id dst_module_id)
| send_set_mrib_done |
[pure virtual]
Signal completion of a transaction of add/delete Mrib entries to an user-level protocol.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Parameters:
dst_module_instance_name | the module instance name of the module-recepient of the message. |
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int proto_recv (const string& src_module_instance_name,
xorp_module_id src_module_id,
uint16_t vif_index,
const IPvX& src, const IPvX& dst,
int ip_ttl, int ip_tos, bool router_alert_bool,
const uint8_t *rcvbuf, size_t rcvlen)
| proto_recv |
Receive a protocol message from an user-level protocol.
Parameters:
src_module_instance_name | the module instance name of the module-origin of the message. |
src_module_id | the module ID (xorp_module_id) of the module-origin of the message. |
vif_index | the vif index of the interface used to receive this message. |
src | the source address of the message. |
dst | the destination address of the message. |
ip_ttl | the IP TTL of the message. If it has a negative value, the TTL will be set by the lower layers (including the MFEA). |
ip_tos | the IP TOS of the message. If it has a negative value, the TOS will be set by the lower layers (including the MFEA). |
router_alert_bool | if true, set the ROUTER_ALERT IP option for the IP packet of the outgoung message. |
rcvbuf | the data buffer with the received message. |
rcvlen | the data length in rcvbuf. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int proto_comm_recv (xorp_module_id dst_module_id,
uint16_t vif_index,
const IPvX& src, const IPvX& dst,
int ip_ttl, int ip_tos, bool router_alert_bool,
const uint8_t *rcvbuf, size_t rcvlen)
| proto_comm_recv |
Process an incoming message from the kernel.
This method sends the protocol message to an user-level protocol module. Note: it uses the pure virtual ProtoNode::proto_send() method that is implemented somewhere else (at a class that inherits this one).
Parameters:
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
vif_index | the vif index of the interface used to receive this message. |
src | the source address of the message. |
dst | the destination address of the message. |
ip_ttl | the IP TTL (Time To Live) of the message. If it has a negative value, it should be ignored. |
ip_tos | the IP TOS (Type of Service) of the message. If it has a negative value, it should be ignored. |
router_alert_bool | if true, the ROUTER_ALERT IP option for the IP packet of the incoming message was set. |
rcvbuf | the data buffer with the received message. |
rcvlen | the data length in rcvbuf. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int signal_message_recv (const string& src_module_instance_name,
xorp_module_id src_module_id,
int message_type,
uint16_t vif_index,
const IPvX& src,
const IPvX& dst,
const uint8_t *rcvbuf,
size_t rcvlen)
| signal_message_recv |
Process NOCACHE, WRONGVIF/WRONGMIF, WHOLEPKT signals from the kernel.
The signal is sent to all user-level protocols that expect it.
#define IGMPMSG_NOCACHE 1 #define IGMPMSG_WRONGVIF 2 #define IGMPMSG_WHOLEPKT 3 #define MRT6MSG_NOCACHE 1 #define MRT6MSG_WRONGMIF 2 #define MRT6MSG_WHOLEPKT 3 |
Parameters:
src_module_instance_name | unused. |
src_module_id | the xorp_module_id module ID of the associated ProtoComm entry. Note: in the future it may become irrelevant. |
message_type | the message type of the kernel signal (for IPv4 and IPv6 respectively): |
vif_index | the vif index of the related interface (message-specific). |
src | the source address in the message. |
dst | the destination address in the message. |
rcvbuf | the data buffer with the additional information in the message. |
rcvlen | the data length in rcvbuf. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
Reimplemented from ProtoNode.
int signal_dataflow_message_recv (const IPvX& source,
const IPvX& group,
const TimeVal& threshold_interval,
const TimeVal& measured_interval,
uint32_t threshold_packets,
uint32_t threshold_bytes,
uint32_t measured_packets,
uint32_t measured_bytes,
bool is_threshold_in_packets,
bool is_threshold_in_bytes,
bool is_geq_upcall,
bool is_leq_upcall)
| signal_dataflow_message_recv |
Process a dataflow upcall from the kernel or from the MFEA internal mechanism.
The MFEA internal bandwidth-estimation mechanism is based on periodic reading of the kernel multicast forwarding statistics. The signal is sent to all user-level protocols that expect it.
Note: either is_threshold_in_packets or is_threshold_in_bytes (or both) must be true. Note: either is_geq_upcall or is_leq_upcall (but not both) must be true.
Parameters:
source | the source address. |
group | the group address. |
threshold_interval | the dataflow threshold interval. |
measured_interval | the dataflow measured interval. |
threshold_packets | the threshold (in number of packets) to compare against. |
threshold_bytes | the threshold (in number of bytes) to compare against. |
measured_packets | the number of packets measured within the measured_interval. |
measured_bytes | the number of bytes measured within the measured_interval. |
is_threshold_in_packets | if true, threshold_packets is valid. |
is_threshold_in_bytes | if true, threshold_bytes is valid. |
is_geq_upcall | if true, the operation for comparison is ">=". |
is_leq_upcall | if true, the operation for comparison is "<=". |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int dataflow_signal_send (const string& dst_module_instance_name,
xorp_module_id dst_module_id,
const IPvX& source_addr,
const IPvX& group_addr,
uint32_t threshold_interval_sec,
uint32_t threshold_interval_usec,
uint32_t measured_interval_sec,
uint32_t measured_interval_usec,
uint32_t threshold_packets,
uint32_t threshold_bytes,
uint32_t measured_packets,
uint32_t measured_bytes,
bool is_threshold_in_packets,
bool is_threshold_in_bytes,
bool is_geq_upcall,
bool is_leq_upcall)
| dataflow_signal_send |
[pure virtual]
Send a signal that a dataflow-related pre-condition is true.
This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.
Note: either is_threshold_in_packets or is_threshold_in_bytes (or both) must be true. Note: either is_geq_upcall or is_leq_upcall (but not both) must be true.
Parameters:
dst_module_instance_name | the module instance name of the module-recepient of the message. |
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
source_addr | the source address of the dataflow. |
group_addr | the group address of the dataflow. |
threshold_interval_sec | the number of seconds in the interval requested for measurement. |
threshold_interval_usec | the number of microseconds in the interval requested for measurement. |
measured_interval_sec | the number of seconds in the last measured interval that has triggered the signal. |
measured_interval_usec | the number of microseconds in the last measured interval that has triggered the signal. |
threshold_packets | the threshold value to trigger a signal (in number of packets). |
threshold_bytes | the threshold value to trigger a signal (in bytes). |
measured_packets | the number of packets measured within the measured_interval. |
measured_bytes | the number of bytes measured within the measured_interval. |
is_threshold_in_packets | if true, threshold_packets is valid. |
is_threshold_in_bytes | if true, threshold_bytes is valid. |
is_geq_upcall | if true, the operation for comparison is ">=". |
is_leq_upcall | if true, the operation for comparison is "<=". |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int join_multicast_group (const string& module_instance_name,
xorp_module_id module_id,
uint16_t vif_index,
const IPvX& group)
| join_multicast_group |
Join a multicast group.
Parameters:
module_instance_name | the module instance name of the protocol to join the multicast group. |
module_id | the module ID (xorp_module_id) of the protocol to join the multicast group. |
vif_index | the vif index of the interface to join. |
group | the multicast group to join. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int leave_multicast_group (const string& module_instance_name,
xorp_module_id module_id,
uint16_t vif_index,
const IPvX& group)
| leave_multicast_group |
Leave a multicast group.
Parameters:
module_instance_name | the module instance name of the protocol to leave the multicast group. |
module_id | the module ID (xorp_module_id) of the protocol to leave the multicast group. |
vif_index | the vif index of the interface to leave. |
group | the multicast group to leave. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int add_mfc (const string& module_instance_name,
const IPvX& source, const IPvX& group,
uint16_t iif_vif_index, const Mifset& oiflist,
const Mifset& oiflist_disable_wrongvif,
uint32_t max_vifs_oiflist,
const IPvX& rp_addr)
| add_mfc |
Add Multicast Forwarding Cache (MFC) to the kernel.
Parameters:
module_instance_name | the module instance name of the protocol that adds the MFC. |
source | the source address. |
group | the group address. |
iif_vif_index | the vif index of the incoming interface. |
oiflist | the bitset with the outgoing interfaces. |
oiflist_disable_wrongvif | the bitset with the outgoing interfaces to disable the WRONGVIF signal. |
max_vifs_oiflist | the number of vifs covered by oiflist or oiflist_disable_wrongvif. |
rp_addr | the RP address. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_mfc (const string& module_instance_name,
const IPvX& source, const IPvX& group)
| delete_mfc |
Delete Multicast Forwarding Cache (MFC) from the kernel.
Note: all corresponding dataflow entries are also removed.
Parameters:
module_instance_name | the module instance name of the protocol that deletes the MFC. |
source | the source address. |
group | the group address. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int add_dataflow_monitor (const string& module_instance_name,
const IPvX& source, const IPvX& group,
const TimeVal& threshold_interval,
uint32_t threshold_packets,
uint32_t threshold_bytes,
bool is_threshold_in_packets,
bool is_threshold_in_bytes,
bool is_geq_upcall,
bool is_leq_upcall)
| add_dataflow_monitor |
Add a dataflow monitor entry.
Note: either is_threshold_in_packets or is_threshold_in_bytes (or both) must be true. Note: either is_geq_upcall or is_leq_upcall (but not both) must be true.
Parameters:
module_instance_name | the module instance name of the protocol that adds the dataflow monitor entry. |
source | the source address. |
group | the group address. |
threshold_interval | the dataflow threshold interval. |
threshold_packets | the threshold (in number of packets) to compare against. |
threshold_bytes | the threshold (in number of bytes) to compare against. |
is_threshold_in_packets | if true, threshold_packets is valid. |
is_threshold_in_bytes | if true, threshold_bytes is valid. |
is_geq_upcall | if true, the operation for comparison is ">=". |
is_leq_upcall | if true, the operation for comparison is "<=". |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_dataflow_monitor (const string& module_instance_name,
const IPvX& source, const IPvX& group,
const TimeVal& threshold_interval,
uint32_t threshold_packets,
uint32_t threshold_bytes,
bool is_threshold_in_packets,
bool is_threshold_in_bytes,
bool is_geq_upcall,
bool is_leq_upcall)
| delete_dataflow_monitor |
Delete a dataflow monitor entry.
Note: either is_threshold_in_packets or is_threshold_in_bytes (or both) must be true. Note: either is_geq_upcall or is_leq_upcall (but not both) must be true.
Parameters:
module_instance_name | the module instance name of the protocol that deletes the dataflow monitor entry. |
source | the source address. |
group | the group address. |
threshold_interval | the dataflow threshold interval. |
threshold_packets | the threshold (in number of packets) to compare against. |
threshold_bytes | the threshold (in number of bytes) to compare against. |
is_threshold_in_packets | if true, threshold_packets is valid. |
is_threshold_in_bytes | if true, threshold_bytes is valid. |
is_geq_upcall | if true, the operation for comparison is ">=". |
is_leq_upcall | if true, the operation for comparison is "<=". |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_all_dataflow_monitor (const string& module_instance_name,
const IPvX& source,
const IPvX& group)
| delete_all_dataflow_monitor |
Delete all dataflow monitor entries for a given source and group address.
Parameters:
module_instance_name | the module instance name of the protocol that deletes the dataflow monitor entry. |
source | the source address. |
group | the group address. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int add_multicast_vif (uint16_t vif_index)
| add_multicast_vif |
Add a multicast vif to the kernel.
Parameters:
vif_index | the vif index of the interface to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int delete_multicast_vif (uint16_t vif_index)
| delete_multicast_vif |
Delete a multicast vif from the kernel.
Parameters:
vif_index | the vif index of the interface to delete. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int get_sg_count (const IPvX& source, const IPvX& group,
SgCount& sg_count)
| get_sg_count |
Get MFC multicast forwarding statistics from the kernel.
Get the number of packets and bytes forwarded by a particular Multicast Forwarding Cache (MFC) entry in the kernel, and the number of packets arrived on wrong interface for that entry.
Parameters:
source | the MFC source address. |
group | the MFC group address. |
sg_count | a reference to a SgCount class to place the result: the number of packets and bytes forwarded by the particular MFC entry, and the number of packets arrived on a wrong interface. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int get_vif_count (uint16_t vif_index, VifCount& vif_count)
| get_vif_count |
Get interface multicast forwarding statistics from the kernel.
Get the number of packets and bytes received on, or forwarded on a particular multicast interface.
Parameters:
vif_index | the vif index of the virtual multicast interface whose statistics we need. |
vif_count | a reference to a VifCount class to store the result. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
MribTable& mrib_table ()
| mrib_table |
Get a reference to the local copy of the MRIB table (MribTable).
Returns: a reference to the local copy of the MRIB table (MribTable).
ConfigParam<uint32_t>& mrib_table_default_metric_preference ()
| mrib_table_default_metric_preference |
Get a reference to the default metric preference for the MRIB table.
Note that this is a configurable parameter.
Returns: a reference to the default metric preference for the MRIB table.
int set_mrib_table_default_metric_preference (uint32_t metric_preference)
| set_mrib_table_default_metric_preference |
Set the default metric preference for the MRIB table.
Parameters:
metric_preference | the new value for the default metric preference. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int reset_mrib_table_default_metric_preference ()
| reset_mrib_table_default_metric_preference |
Reset the default metric preference for the MRIB table to its original value.
Returns: XORP_OK on success, otherwise XORP_ERROR.
ConfigParam<uint32_t>& mrib_table_default_metric ()
| mrib_table_default_metric |
Get a reference to the default metric for the MRIB table.
Note that this is a configurable parameter.
Returns: a reference to the default metric for the MRIB table.
int set_mrib_table_default_metric (uint32_t metric)
| set_mrib_table_default_metric |
Set the default metric for the MRIB table.
Parameters:
metric | the new value for the default metric. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int reset_mrib_table_default_metric ()
| reset_mrib_table_default_metric |
Reset the default metric for the MRIB table to its original value.
Returns: XORP_OK on success, otherwise XORP_ERROR.
int get_mrib_table (Mrib **mrib_table)
| get_mrib_table |
Get a copy of the kernel MRIB (Mrib) information.
Parameters:
mrib_table | a pointer to the routing table array composed of Mrib elements. |
Returns: The number of entries in mrib_table, or XORP_ERROR if there was an error.
MfeaDft& mfea_dft ()
| mfea_dft |
Get a reference to the dataflow table (MfeaDft).
Returns: a reference to the dataflow table (MfeaDft).
vector<ProtoComm *>& proto_comms ()
| proto_comms |
Get a reference to the vector-array of installed ProtoComm entries.
Returns: a reference to the vector-array of installed ProtoComm entries.
ProtoComm * proto_comm_find_by_module_id (xorp_module_id module_id)
| proto_comm_find_by_module_id |
[const]
Find an ProtoComm entry for a given module ID (xorp_module_id).
Parameters:
module_id | the module ID (xorp_module_id) to search for. |
Returns: the corresponding ProtoComm entry if found, otherwise NULL.
bool is_log_trace ()
| is_log_trace |
[const]
Test if trace log is enabled.
This method is used to test whether to output trace log debug messges.
Returns: true if trace log is enabled, otherwise false.
void set_log_trace (bool is_enabled)
| set_log_trace |
Enable/disable trace log.
This method is used to enable/disable trace log debug messages output.
Parameters:
is_enabled | if true, trace log is enabled, otherwise is disabled. |
Generated by: pavlin on possum.icir.org on Mon Jun 9 13:23:54 2003, using kdoc 2.0a54+XORP. |