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