| 
 | 
 | ||||||||||||||||
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 | 
| JoinedMulticastGroup (class) | JoinedMulticastGroup | 
| IoIpComm (IoIpManager& io_ip_manager, const IfTree& iftree, int family,
	     uint8_t ip_protocol) | IoIpComm | 
Constructor for IoIpComm.
Parameters:
| io_ip_manager | the corresponding I/O IP manager (IoIpManager). | 
| iftree | the interface tree to use. | 
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| ip_protocol | the IP protocol number (IPPROTO_*). | 
| ~IoIpComm () | ~IoIpComm | 
[virtual]
| 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_manager | the 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_manager | the data plane manager. | 
| void  start_io_ip_plugins () | start_io_ip_plugins | 
| void  stop_io_ip_plugins () | stop_io_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:
| filter | the 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:
| filter | the 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_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_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 (IP traffic class for IPv6). 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. | 
| ext_headers_type | a vector of integers with the types of the optional IPv6 extention headers. | 
| ext_headers_payload | a vector of payload data, one for each optional IPv6 extention header. The number of entries must match ext_headers_type. | 
| payload | the payload, everything after the IP header and options. | 
| error_msg | the 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_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_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. | 
| ext_headers_type | a vector of integers with the types of the optional IPv6 extention headers. | 
| ext_headers_payload | a vector of payload data, one for each optional IPv6 extention header. The number of entries must match ext_headers_type. | 
| packet | the 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:
| payload | the 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_name | the interface through which packets should be accepted. | 
| vif_name | the vif through which packets should be accepted. | 
| group_address | the multicast group address to join. | 
| receiver_name | the name of the receiver. | 
| error_msg | the 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_name | the interface through which packets should not be accepted. | 
| vif_name | the vif through which packets should not be accepted. | 
| group_address | the multicast group address to leave. | 
| receiver_name | the name of the receiver. | 
| error_msg | the 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.