| 
 | 
 | ||||||||||||||||
A class that handles I/O TCP/UDP communication.
| JoinedMulticastGroup (class) | JoinedMulticastGroup | 
| IoTcpUdpComm (IoTcpUdpManager& io_tcpudp_manager, const IfTree& iftree,
		 int family, bool is_tcp, const string& creator) | IoTcpUdpComm | 
Constructor for IoTcpUdpComm.
Parameters:
| io_tcpudp_manager | the corresponding I/O TCP/UDP manager (IoTcpUdpManager). | 
| iftree | the interface tree to use. | 
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| is_tcp | if true this is TCP entry, otherwise UDP. | 
| creator | the name of the socket creator. | 
| IoTcpUdpComm (IoTcpUdpManager& io_tcpudp_manager, const IfTree& iftree,
		 int family, bool is_tcp, const string& creator,
		 const string& listener_sockid, const IPvX& peer_host,
		 uint16_t peer_port) | IoTcpUdpComm | 
Constructor for connected IoTcpUdpComm.
Parameters:
| io_tcpudp_manager | the corresponding I/O TCP/UDP manager (IoTcpUdpManager). | 
| iftree | the interface tree to use. | 
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| is_tcp | if true this is TCP entry, otherwise UDP. | 
| creator | the name of the socket creator. | 
| listener_sockid | the socket ID of the listener socket. | 
| peer_host | the peer host IP address. | 
| peer_port | the peer host port number. | 
| ~IoTcpUdpComm () | ~IoTcpUdpComm | 
[virtual]
| void  allocate_io_tcpudp_plugins () | allocate_io_tcpudp_plugins | 
Allocate the I/O TCP/UDP plugins (one per data plane manager).
| void  deallocate_io_tcpudp_plugins () | deallocate_io_tcpudp_plugins | 
Deallocate the I/O TCP/UDP plugins (one per data plane manager).
| void  allocate_io_tcpudp_plugin (FeaDataPlaneManager* fea_data_plane_manager) | allocate_io_tcpudp_plugin | 
Allocate an I/O TCP/UDP plugin for a given data plane manager.
Parameters:
| fea_data_plane_manager | the data plane manager. | 
| void  deallocate_io_tcpudp_plugin (FeaDataPlaneManager* fea_data_plane_manager) | deallocate_io_tcpudp_plugin | 
Deallocate the I/O TCP/UDP plugin for a given data plane manager.
Parameters:
| fea_data_plane_manager | the data plane manager. | 
| void  add_plugin (IoTcpUdp* new_io_tcpudp) | add_plugin | 
Add a pre-allocated I/O TCP/UDP plugin.
Parameters:
| new_io_tcpudp | the plugin to add. | 
| void  start_io_tcpudp_plugins () | start_io_tcpudp_plugins | 
Start all I/O TCP/UDP plugins.
| void  stop_io_tcpudp_plugins () | stop_io_tcpudp_plugins | 
| int  tcp_open (string& sockid, string& error_msg) | tcp_open | 
Open a TCP socket.
Parameters:
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_open (string& sockid, string& error_msg) | udp_open | 
Open an UDP socket.
Parameters:
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  tcp_open_and_bind (const IPvX& local_addr, uint16_t local_port,
			  string& sockid, string& error_msg) | tcp_open_and_bind | 
Create a bound TCP socket.
Parameters:
| local_addr | the interface address to bind socket to. | 
| local_port | the port to bind socket to. | 
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_open_and_bind (const IPvX& local_addr, uint16_t local_port,
			  string& sockid, string& error_msg) | udp_open_and_bind | 
Create a bound UDP socket.
Parameters:
| local_addr | the interface address to bind socket to. | 
| local_port | the port to bind socket to. | 
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_open_bind_join (const IPvX& local_addr, uint16_t local_port,
			   const IPvX& mcast_addr, uint8_t ttl, bool reuse,
			   string& sockid, string& error_msg) | udp_open_bind_join | 
Create a bound UDP multicast socket.
Parameters:
| local_addr | the interface address to bind socket to. | 
| local_port | the port to bind socket to. | 
| mcast_addr | the multicast group address to join. | 
| ttl | the TTL to use for this multicast socket. | 
| reuse | allow other sockets to bind to same multicast group. | 
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  tcp_open_bind_connect (const IPvX& local_addr, uint16_t local_port,
			      const IPvX& remote_addr, uint16_t remote_port,
			      string& sockid, string& error_msg) | tcp_open_bind_connect | 
Create a bound and connected TCP socket.
Parameters:
| local_addr | the interface address to bind socket to. | 
| local_port | the port to bind socket to. | 
| remote_addr | the address to connect to. | 
| remote_port | the remote port to connect to. | 
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_open_bind_connect (const IPvX& local_addr, uint16_t local_port,
			      const IPvX& remote_addr, uint16_t remote_port,
			      string& sockid, string& error_msg) | udp_open_bind_connect | 
Create a bound and connected UDP socket.
Parameters:
| local_addr | the interface address to bind socket to. | 
| local_port | the port to bind socket to. | 
| remote_addr | the address to connect to. | 
| remote_port | the remote port to connect to. | 
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_open_bind_broadcast (const string& ifname, const string& vifname,
			        uint16_t local_port, uint16_t remote_port,
			        bool reuse, bool limited, bool connected,
			        string& sockid, string& error_msg) | udp_open_bind_broadcast | 
Create a bound, and optionally connected, UDP broadcast socket.
Parameters:
| ifname | the interface name to bind socket to. | 
| vifname | the vif to bind socket to. | 
| local_port | the port to bind socket to. | 
| remote_port | the remote port to connect to. | 
| reuse | allow other sockets to bind to same port. | 
| limited | set the socket up for transmission to the limited broadcast address 255.255.255.255. | 
| connected | connect the socket for use with send() not sendto(). | 
| sockid | return parameter that contains unique socket ID when socket instantiation is successful. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  bind (const IPvX& local_addr, uint16_t local_port, string& error_msg) | bind | 
Bind a socket.
Parameters:
| local_addr | the interface address to bind socket to. | 
| local_port | the port to bind socket to. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_join_group (const IPvX& mcast_addr, const IPvX& join_if_addr,
		       string& error_msg) | udp_join_group | 
Join multicast group on already bound socket.
Parameters:
| mcast_addr | group to join. | 
| join_if_addr | interface address to perform join on. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_leave_group (const IPvX& mcast_addr, const IPvX& leave_if_addr,
			string& error_msg) | udp_leave_group | 
Leave multicast group on already bound socket.
Parameters:
| mcast_addr | group to leave. | 
| leave_if_addr | interface address to perform leave on. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  close (string& error_msg) | close | 
Close socket.
Parameters:
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  tcp_listen (uint32_t backlog, string& error_msg) | tcp_listen | 
Listen for inbound connections on socket.
When a connection request is received the socket creator will receive notification.
Parameters:
| backlog | the maximum number of pending connections. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  udp_enable_recv (string& error_msg) | udp_enable_recv | 
Enable a UDP socket for datagram reception.
Parameters:
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  send (const vector<uint8_t>& data, string& error_msg) | send | 
Send data on socket.
Parameters:
| data | block of data to be sent. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  send_to (const IPvX& remote_addr, uint16_t remote_port,
		const vector<uint8_t>& data, string& error_msg) | send_to | 
Send data on socket to a given destination.
The packet is not routed as the forwarding engine sending the packet may not have access to the full routing table.
Parameters:
| remote_addr | destination address for data. | 
| remote_port | destination port for data. | 
| data | block of data to be sent. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  send_from_multicast_if (const IPvX& group_addr, uint16_t group_port,
			       const IPvX& ifaddr, const vector<uint8_t>& data,
			       string& error_msg) | send_from_multicast_if | 
Send data on socket to a given multicast group from a given interface.
Parameters:
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| sockid | unique socket ID. | 
| group_addr | destination address for data. | 
| group_port | destination port for data. | 
| ifaddr | interface address. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  set_socket_option (const string& optname, uint32_t optval,
			  string& error_msg) | set_socket_option | 
Set a named socket option with an integer value.
Parameters:
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| sockid | unique socket ID. | 
| optname | name of option to be set. Valid values are: "onesbcast" (IPv4 only) "receive_broadcast" (IPv4 only) "reuseport" "send_broadcast" (IPv4 only) "tos" (IPv4 only) "ttl" "multicast_loopback" "multicast_ttl" | 
| optval | value of option to be set. If value is logically boolean then zero represents false and any non-zero value true. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  set_socket_option (const string& optname, const string& optval,
			  string& error_msg) | set_socket_option | 
Set a named socket option with a string value.
Parameters:
| family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). | 
| sockid | unique socket ID. | 
| optname | name of option to be set. Valid values are: "bindtodevice" | 
| optval | value of option to be set. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  accept_connection (bool is_accepted, string& error_msg) | accept_connection | 
Accept or reject a pending connection.
Parameters:
| is_accepted | if true, the connection is accepted, otherwise is rejected. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| void  recv_event (const string&		if_name,
		    const string&		vif_name,
		    const IPvX&			src_host,
		    uint16_t			src_port,
		    const vector<uint8_t>&	data) | recv_event | 
Data received event.
Parameters:
| if_name | the interface name the packet arrived on, if known. If unknown, then it is an empty string. | 
| vif_name | the vif name the packet arrived on, if known. If unknown, then it is an empty string. | 
| src_host | the originating host IP address. | 
| src_port | the originating host port number. | 
| data | the data received. | 
Reimplemented from IoTcpUdpReceiver.
| void  inbound_connect_event (const IPvX&	src_host,
			       uint16_t		src_port,
			       IoTcpUdp*	new_io_tcpudp) | inbound_connect_event | 
Inbound connection request received event.
It applies only to TCP sockets.
Parameters:
| src_host | the originating host IP address. | 
| src_port | the originating host port number. | 
| new_io_tcpudp | the handler for the new connection. | 
Reimplemented from IoTcpUdpReceiver.
| void  outgoing_connect_event () | outgoing_connect_event | 
Outgoing connection request completed event.
It applies only to TCP sockets.
Reimplemented from IoTcpUdpReceiver.
| void  error_event (const string&		error,
		     bool			fatal) | error_event | 
Error occured event.
Parameters:
| error | a textual description of the error. | 
| fatal | indication of whether socket is shutdown because of error. | 
Reimplemented from IoTcpUdpReceiver.
| void  disconnect_event () | disconnect_event | 
Connection closed by peer event.
It applies only to TCP sockets. This method is not called if the socket is gracefully closed through close().
Reimplemented from IoTcpUdpReceiver.
| const string&  creator () | creator | 
[const]
Get the creator name.
Returns: the creator name.
| const string&  sockid () | sockid | 
[const]
Get the socket ID.
Returns: the socket ID.
| const string&  listener_sockid () | listener_sockid | 
[const]
Get the listener socket ID.
Returns: the listener socket ID.
| const IPvX&  peer_host () | peer_host | 
[const]
Get the peer host IP address.
Returns: the peer host IP address.
| uint16_t  peer_port () | peer_port | 
[const]
Get the peer host port number.
Returns: the peer host port number.