xorp

IoIpDummy Class Reference

A base class for Dummy I/O IP raw communication. More...

#include <io_ip_dummy.hh>

Inheritance diagram for IoIpDummy:
IoIp

List of all members.

Public Member Functions

 IoIpDummy (FeaDataPlaneManager &fea_data_plane_manager, const IfTree &iftree, int family, uint8_t ip_protocol)
 Constructor for a given address family and protocol.
virtual ~IoIpDummy ()
 Virtual destructor.
int start (string &error_msg)
 Start operation.
int stop (string &error_msg)
 Stop operation.
int set_multicast_ttl (int ttl, string &error_msg)
 Set the default TTL (or hop-limit in IPv6) for the outgoing multicast packets.
int enable_multicast_loopback (bool is_enabled, string &error_msg)
 Enable/disable multicast loopback when transmitting multicast packets.
int set_default_multicast_interface (const string &if_name, const string &vif_name, string &error_msg)
 Set default interface for transmitting multicast packets.
int join_multicast_group (const string &if_name, const string &vif_name, const IPvX &group, string &error_msg)
 Join a multicast group on an interface.
int leave_multicast_group (const string &if_name, const string &vif_name, const IPvX &group, string &error_msg)
 Leave a multicast group on an interface.
int send_packet (const string &if_name, const string &vif_name, const IPvX &src_address, const IPvX &dst_address, int32_t ip_ttl, int32_t ip_tos, bool ip_router_alert, bool ip_internet_control, const vector< uint8_t > &ext_headers_type, const vector< vector< uint8_t > > &ext_headers_payload, const vector< uint8_t > &payload, string &error_msg)
 Send a raw IP packet.
XorpFdmcast_protocol_fd_in ()
 Get the file descriptor for receiving protocol messages.

Private Attributes

XorpFd _dummy_protocol_fd_in
uint8_t _multicast_ttl
bool _multicast_loopback
string _default_multicast_interface
string _default_multicast_vif
set
< IoIpComm::JoinedMulticastGroup
_joined_groups_table

Detailed Description

A base class for Dummy I/O IP raw communication.

Each protocol 'registers' for I/O and gets assigned one object of this class.


Constructor & Destructor Documentation

IoIpDummy::IoIpDummy ( FeaDataPlaneManager fea_data_plane_manager,
const IfTree iftree,
int  family,
uint8_t  ip_protocol 
)

Constructor for a given address family and protocol.

Parameters:
fea_data_plane_managerthe corresponding data plane manager (FeaDataPlaneManager).
iftreethe interface tree to use.
familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
ip_protocolthe IP protocol number (IPPROTO_*).

Member Function Documentation

int IoIpDummy::enable_multicast_loopback ( bool  is_enabled,
string &  error_msg 
) [virtual]

Enable/disable multicast loopback when transmitting multicast packets.

If the multicast loopback is enabled, a transmitted multicast packet will be delivered back to this host (assuming the host is a member of the same multicast group).

Parameters:
is_enabledif true, enable the loopback, otherwise disable it.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

int IoIpDummy::join_multicast_group ( const string &  if_name,
const string &  vif_name,
const IPvX group,
string &  error_msg 
) [virtual]

Join a multicast group on an interface.

Parameters:
if_namethe name of the interface to join the multicast group.
vif_namethe name of the vif to join the multicast group.
groupthe multicast group to join.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

int IoIpDummy::leave_multicast_group ( const string &  if_name,
const string &  vif_name,
const IPvX group,
string &  error_msg 
) [virtual]

Leave a multicast group on an interface.

Parameters:
if_namethe name of the interface to leave the multicast group.
vif_namethe name of the vif to leave the multicast group.
groupthe multicast group to leave.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

XorpFd* IoIpDummy::mcast_protocol_fd_in ( ) [inline, virtual]

Get the file descriptor for receiving protocol messages.

Returns:
a reference to the file descriptor for receiving protocol messages.

Implements IoIp.

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

Send a raw IP packet.

Parameters:
if_namethe interface to send the packet on. It is essential for multicast. In the unicast case this field may be empty.
vif_namethe vif to send the packet on. It is essential for multicast. In the unicast case this field may be empty.
src_addressthe IP source address.
dst_addressthe IP destination address.
ip_ttlthe IP TTL (hop-limit). If it has a negative value, the TTL will be set internally before transmission.
ip_tosthe Type Of Service (Diffserv/ECN bits for IPv4 or IP traffic class for IPv6). If it has a negative value, the TOS will be set internally before transmission.
ip_router_alertif true, then add the IP Router Alert option to the IP packet.
ip_internet_controlif true, then this is IP control traffic.
ext_headers_typea vector of integers with the types of the optional IPv6 extention headers.
ext_headers_payloada vector of payload data, one for each optional IPv6 extention header. The number of entries must match ext_headers_type.
payloadthe payload, everything after the IP header and options.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

int IoIpDummy::set_default_multicast_interface ( const string &  if_name,
const string &  vif_name,
string &  error_msg 
) [virtual]

Set default interface for transmitting multicast packets.

Parameters:
if_namethe name of the interface that would become the default multicast interface.
vif_namethe name of the vif that would become the default multicast interface.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

int IoIpDummy::set_multicast_ttl ( int  ttl,
string &  error_msg 
) [virtual]

Set the default TTL (or hop-limit in IPv6) for the outgoing multicast packets.

Parameters:
ttlthe desired IP TTL (a.k.a. hop-limit in IPv6) value.
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

int IoIpDummy::start ( string &  error_msg) [virtual]

Start operation.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.

int IoIpDummy::stop ( string &  error_msg) [virtual]

Stop operation.

Parameters:
error_msgthe error message (if error).
Returns:
XORP_OK on success, otherwise XORP_ERROR.

Implements IoIp.


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