class IoIpComm

A class that handles raw IP I/O communication for a specific protocol. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Types

Public Methods


Detailed Description

A class that handles raw IP I/O communication for a specific protocol.

It also allows arbitrary filters to receive the raw IP data for that protocol.

InputFilter (class)

InputFilter

Filter class.

JoinedMulticastGroup (class)

JoinedMulticastGroup

Joined multicast group class.

 IoIpComm (IoIpManager& io_ip_manager, const IfTree& iftree, int family, uint8_t ip_protocol)

IoIpComm

Constructor for IoIpComm.

Parameters:

io_ip_managerthe corresponding I/O IP manager (IoIpManager).
iftreethe interface tree to use.
familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
ip_protocolthe IP protocol number (IPPROTO_*).
 ~IoIpComm ()

~IoIpComm

[virtual]

Virtual destructor.

void  allocate_io_ip_plugins ()

allocate_io_ip_plugins

Allocate the I/O IP plugins (one per data plane manager).

void  deallocate_io_ip_plugins ()

deallocate_io_ip_plugins

Deallocate the I/O IP plugins (one per data plane manager).

void  allocate_io_ip_plugin (FeaDataPlaneManager* fea_data_plane_manager)

allocate_io_ip_plugin

Allocate an I/O IP plugin for a given data plane manager.

Parameters:

fea_data_plane_managerthe data plane manager.
void  deallocate_io_ip_plugin (FeaDataPlaneManager* fea_data_plane_manager)

deallocate_io_ip_plugin

Deallocate the I/O IP plugin for a given data plane manager.

Parameters:

fea_data_plane_managerthe data plane manager.
void  start_io_ip_plugins ()

start_io_ip_plugins

Start all I/O IP plugins.

void  stop_io_ip_plugins ()

stop_io_ip_plugins

Stop all I/O IP plugins.

int  add_filter (InputFilter* filter)

add_filter

Add a filter to list of input filters.

The IoIpComm class assumes that the callee will be responsible for managing the memory associated with the filter and will call remove_filter() if the filter is deleted or goes out of scope.

Parameters:

filterthe filter to add.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  remove_filter (InputFilter* filter)

remove_filter

Remove filter from list of input filters.

Parameters:

filterthe filter to remove.

Returns: XORP_OK on success, otherwise XORP_ERROR.

bool  no_input_filters ()

no_input_filters

[const]

Returns: true if there are no filters associated with this instance.

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_packet

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 (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.

void  recv_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)

recv_packet

[virtual]

Received a raw IP packet.

Parameters:

if_namethe interface name the packet arrived on.
vif_namethe vif name the packet arrived on.
src_addressthe IP source address.
dst_addressthe IP destination address.
ip_ttlthe IP TTL (hop-limit). If it has a negative value, then the received value is unknown.
ip_tosThe type of service (Diffserv/ECN bits for IPv4). If it has a negative value, then the received value is unknown.
ip_router_alertif true, the IP Router Alert option was included in the IP packet.
ip_internet_controlif true, then this is IP control traffic.
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.
packetthe payload, everything after the IP header and options.

Reimplemented from IoIpReceiver.

void  recv_system_multicast_upcall (const vector<uint8_t>& payload)

recv_system_multicast_upcall

[virtual]

Received a multicast forwarding related upcall from the system.

Examples of such upcalls are: "nocache", "wrongiif", "wholepkt", "bw_upcall".

Parameters:

payloadthe payload data for the upcall.

Reimplemented from IoIpReceiver.

int  join_multicast_group (const string& if_name, const string& vif_name, const IPvX& group_address, const string& receiver_name, string& error_msg)

join_multicast_group

Join an IP multicast group.

Parameters:

if_namethe interface through which packets should be accepted.
vif_namethe vif through which packets should be accepted.
group_addressthe multicast group address to join.
receiver_namethe name of the receiver.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  leave_multicast_group (const string& if_name, const string& vif_name, const IPvX& group_address, const string& receiver_name, string& error_msg)

leave_multicast_group

Leave an IP multicast group.

Parameters:

if_namethe interface through which packets should not be accepted.
vif_namethe vif through which packets should not be accepted.
group_addressthe multicast group address to leave.
receiver_namethe name of the receiver.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

uint8_t  ip_protocol ()

ip_protocol

[const]

Get the IP protocol.

Returns: the IP protocol.

XorpFd  first_valid_protocol_fd_in ()

first_valid_protocol_fd_in

Get the first valid file descriptor for receiving protocol messages.

Returns: the first valid file descriptor for receiving protocol messages.


Generated by: pavlin on kobe.xorp.net on Wed Jan 7 19:10:56 2009, using kdoc 2.0a54+XORP.