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