TCP socket specific data. More...
#include <tcp.h>
Data Fields | |
tcp_socket_state_t | state |
TCP socket state. | |
size_t | data_fragment_size |
Data fragment size. | |
device_id_t | device_id |
Device identifier. | |
int | backlog |
Listening backlog. | |
int | listening_socket_id |
Segment size. | |
size_t | treshold |
Treshold size in bytes. | |
size_t | window |
Window size in bytes. | |
suseconds_t | timeout |
Acknowledgement timeout. | |
uint32_t | acknowledged |
Last acknowledged byte. | |
uint32_t | next_incoming |
Next incoming sequence number. | |
uint32_t | fin_incoming |
Incoming FIN. | |
uint32_t | next_outgoing |
Next outgoing sequence number. | |
uint32_t | last_outgoing |
Last outgoing sequence number. | |
uint32_t | fin_outgoing |
Outgoing FIN. | |
uint32_t | expected |
Expected sequence number by the remote host. | |
int | expected_count |
Expected sequence number counter. | |
packet_t | incoming |
Incoming packet queue. | |
packet_t | outgoing |
Outgoing packet queue. | |
ip_pseudo_header_ref | pseudo_header |
IP pseudo header. | |
size_t | headerlen |
IP pseudo header length. | |
struct sockaddr * | addr |
Remote host address. | |
socklen_t | addrlen |
Remote host address length. | |
uint16_t | dest_port |
Remote host port. | |
socket_cores_ref | local_sockets |
Parent local sockets. | |
fibril_rwlock_t * | local_lock |
Local sockets safety lock. | |
tcp_operation_t | operation |
Pending operation data. | |
int | timeout_count |
Timeouts in a row counter. |
TCP socket specific data.
uint32_t tcp_socket_data::acknowledged |
Last acknowledged byte.
Referenced by tcp_refresh_socket_data().
struct sockaddr* tcp_socket_data::addr [read] |
Remote host address.
Referenced by tcp_accept_message(), tcp_connect_core(), tcp_free_socket_data(), tcp_process_listen(), tcp_queue_prepare_packet(), tcp_recvfrom_message(), and tcp_send_message().
Remote host address length.
Referenced by tcp_accept_message(), tcp_connect_core(), tcp_free_socket_data(), tcp_process_listen(), tcp_queue_prepare_packet(), tcp_recvfrom_message(), and tcp_send_message().
Listening backlog.
The maximal number of connected but not yet accepted sockets.
Referenced by tcp_listen_message(), and tcp_process_syn_received().
Data fragment size.
Sending optimalization.
Referenced by tcp_accept_message(), tcp_initialize_socket_data(), tcp_process_client_messages(), tcp_process_syn_received(), tcp_queue_received_packet(), and tcp_send_message().
uint16_t tcp_socket_data::dest_port |
Remote host port.
Referenced by tcp_connect_core(), tcp_prepare_operation_header(), tcp_process_listen(), and tcp_queue_prepare_packet().
Device identifier.
Referenced by tcp_accept_message(), tcp_close_message(), tcp_connect_core(), tcp_create_notification_packet(), tcp_process_established(), tcp_process_listen(), tcp_process_syn_received(), tcp_process_syn_sent(), tcp_queue_received_packet(), tcp_refresh_socket_data(), tcp_retransmit_packet(), and tcp_send_message().
uint32_t tcp_socket_data::expected |
Expected sequence number by the remote host.
The sequence number the other host expects. The notification is sent only upon a packet reecival.
Referenced by tcp_get_packets_to_send(), tcp_process_acknowledgement(), and tcp_refresh_socket_data().
Expected sequence number counter.
Counts the number of received notifications for the same sequence number.
Referenced by tcp_process_acknowledgement().
uint32_t tcp_socket_data::fin_incoming |
Incoming FIN.
Referenced by tcp_process_established().
uint32_t tcp_socket_data::fin_outgoing |
Outgoing FIN.
Referenced by tcp_process_acknowledgement(), and tcp_queue_prepare_packet().
size_t tcp_socket_data::headerlen |
IP pseudo header length.
Referenced by tcp_connect_core(), tcp_free_socket_data(), tcp_process_listen(), tcp_process_packet(), and tcp_send_prepare_packet().
Incoming packet queue.
Packets are buffered until received in the right order. The packets are excluded after successfully read. Packets are sorted by their starting byte. Packets metric is set as their data length.
Referenced by tcp_process_established().
uint32_t tcp_socket_data::last_outgoing |
Last outgoing sequence number.
Referenced by tcp_get_packets_to_send(), tcp_process_established(), and tcp_refresh_socket_data().
Segment size.
Parent listening socket identifier. Set if this socket is an accepted one.
Referenced by tcp_process_listen(), and tcp_process_syn_received().
fibril_rwlock_t* tcp_socket_data::local_lock |
Local sockets safety lock.
May be locked for writing while holding the global lock for reading when changing the local sockets only. The global lock may to be locked only before locking the local lock. The global lock may be locked more weakly than the local lock. The global lock may be released before releasing the local lock.
Referenced by tcp_close_message(), tcp_connect_core(), tcp_process_client_messages(), tcp_process_established(), tcp_process_listen(), tcp_process_packet(), tcp_process_syn_received(), tcp_process_syn_sent(), tcp_release_after_timeout(), tcp_retransmit_packet(), tcp_send_message(), and tcp_timeout().
socket_cores_ref tcp_socket_data::local_sockets |
Parent local sockets.
Referenced by tcp_prepare_timeout(), tcp_process_client_messages(), tcp_process_listen(), tcp_process_syn_received(), tcp_release_after_timeout(), and tcp_timeout().
uint32_t tcp_socket_data::next_incoming |
Next incoming sequence number.
Referenced by tcp_process_established(), tcp_process_listen(), tcp_process_syn_received(), tcp_process_syn_sent(), and tcp_send_prepare_packet().
uint32_t tcp_socket_data::next_outgoing |
Next outgoing sequence number.
Referenced by tcp_get_packets_to_send(), tcp_queue_packet(), tcp_queue_prepare_packet(), and tcp_refresh_socket_data().
Pending operation data.
Referenced by tcp_connect_core(), tcp_initialize_socket_data(), tcp_process_syn_sent(), and tcp_timeout().
Outgoing packet queue.
Packets are buffered until acknowledged by the remote host in the right order. The packets are excluded after acknowledged. Packets are sorted by their starting byte. Packets metric is set as their data length.
Referenced by tcp_get_packets_to_send(), tcp_process_acknowledgement(), tcp_queue_packet(), and tcp_retransmit_packet().
IP pseudo header.
Referenced by tcp_connect_core(), tcp_free_socket_data(), tcp_process_listen(), tcp_process_packet(), and tcp_send_prepare_packet().
TCP socket state.
Referenced by tcp_accept_message(), tcp_close_message(), tcp_connect_core(), tcp_process_acknowledgement(), tcp_process_client_messages(), tcp_process_established(), tcp_process_listen(), tcp_process_packet(), tcp_process_syn_received(), tcp_process_syn_sent(), tcp_recvfrom_message(), tcp_refresh_socket_data(), tcp_send_message(), tcp_send_prepare_packet(), and tcp_timeout().
suseconds_t tcp_socket_data::timeout |
Acknowledgement timeout.
Referenced by tcp_refresh_socket_data(), and tcp_send_prepare_packet().
Timeouts in a row counter.
If TCP_MAX_TIMEOUTS is reached, the connection is lost.
Referenced by tcp_process_packet(), and tcp_timeout().
size_t tcp_socket_data::treshold |
Treshold size in bytes.
Referenced by tcp_get_packets_to_send(), tcp_process_acknowledgement(), tcp_process_listen(), and tcp_refresh_socket_data().
size_t tcp_socket_data::window |
Window size in bytes.
Referenced by tcp_process_established(), tcp_queue_received_packet(), tcp_refresh_socket_data(), and tcp_send_prepare_packet().