Changeset 4e5c7ba in mainline for uspace/srv/net/tl/tcp/tcp.c
- Timestamp:
- 2010-11-18T22:36:12Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f772bc55
- Parents:
- cb569e6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tl/tcp/tcp.c
rcb569e6 r4e5c7ba 166 166 167 167 static int tcp_release_and_return(packet_t, int); 168 static void tcp_prepare_operation_header(socket_core_ref, tcp_socket_data_ ref,169 tcp_header_ ref, int synchronize, int);168 static void tcp_prepare_operation_header(socket_core_ref, tcp_socket_data_t *, 169 tcp_header_t *, int synchronize, int); 170 170 static int tcp_prepare_timeout(int (*)(void *), socket_core_ref, 171 tcp_socket_data_ ref, size_t, tcp_socket_state_t, suseconds_t, int);171 tcp_socket_data_t *, size_t, tcp_socket_state_t, suseconds_t, int); 172 172 static void tcp_free_socket_data(socket_core_ref); 173 173 … … 179 179 static int tcp_connect_core(socket_core_ref, socket_cores_ref, 180 180 struct sockaddr *, socklen_t); 181 static int tcp_queue_prepare_packet(socket_core_ref, tcp_socket_data_ ref,181 static int tcp_queue_prepare_packet(socket_core_ref, tcp_socket_data_t *, 182 182 packet_t, size_t); 183 static int tcp_queue_packet(socket_core_ref, tcp_socket_data_ ref, packet_t,183 static int tcp_queue_packet(socket_core_ref, tcp_socket_data_t *, packet_t, 184 184 size_t); 185 static packet_t tcp_get_packets_to_send(socket_core_ref, tcp_socket_data_ ref);185 static packet_t tcp_get_packets_to_send(socket_core_ref, tcp_socket_data_t *); 186 186 static void tcp_send_packets(device_id_t, packet_t); 187 187 188 static void tcp_process_acknowledgement(socket_core_ref, tcp_socket_data_ ref,189 tcp_header_ ref);190 static packet_t tcp_send_prepare_packet(socket_core_ref, tcp_socket_data_ ref,188 static void tcp_process_acknowledgement(socket_core_ref, tcp_socket_data_t *, 189 tcp_header_t *); 190 static packet_t tcp_send_prepare_packet(socket_core_ref, tcp_socket_data_t *, 191 191 packet_t, size_t, size_t); 192 static packet_t tcp_prepare_copy(socket_core_ref, tcp_socket_data_ ref, packet_t,192 static packet_t tcp_prepare_copy(socket_core_ref, tcp_socket_data_t *, packet_t, 193 193 size_t, size_t); 194 /* static */ void tcp_retransmit_packet(socket_core_ref, tcp_socket_data_ ref,194 /* static */ void tcp_retransmit_packet(socket_core_ref, tcp_socket_data_t *, 195 195 size_t); 196 196 static int tcp_create_notification_packet(packet_t *, socket_core_ref, 197 tcp_socket_data_ ref, int, int);198 static void tcp_refresh_socket_data(tcp_socket_data_ ref);199 200 static void tcp_initialize_socket_data(tcp_socket_data_ ref);201 202 static int tcp_process_listen(socket_core_ref, tcp_socket_data_ ref,203 tcp_header_ ref, packet_t, struct sockaddr *, struct sockaddr *, size_t);204 static int tcp_process_syn_sent(socket_core_ref, tcp_socket_data_ ref,205 tcp_header_ ref, packet_t);206 static int tcp_process_syn_received(socket_core_ref, tcp_socket_data_ ref,207 tcp_header_ ref, packet_t);208 static int tcp_process_established(socket_core_ref, tcp_socket_data_ ref,209 tcp_header_ ref, packet_t, int, size_t);210 static int tcp_queue_received_packet(socket_core_ref, tcp_socket_data_ ref,197 tcp_socket_data_t *, int, int); 198 static void tcp_refresh_socket_data(tcp_socket_data_t *); 199 200 static void tcp_initialize_socket_data(tcp_socket_data_t *); 201 202 static int tcp_process_listen(socket_core_ref, tcp_socket_data_t *, 203 tcp_header_t *, packet_t, struct sockaddr *, struct sockaddr *, size_t); 204 static int tcp_process_syn_sent(socket_core_ref, tcp_socket_data_t *, 205 tcp_header_t *, packet_t); 206 static int tcp_process_syn_received(socket_core_ref, tcp_socket_data_t *, 207 tcp_header_t *, packet_t); 208 static int tcp_process_established(socket_core_ref, tcp_socket_data_t *, 209 tcp_header_t *, packet_t, int, size_t); 210 static int tcp_queue_received_packet(socket_core_ref, tcp_socket_data_t *, 211 211 packet_t, int, size_t); 212 212 … … 290 290 size_t offset; 291 291 int result; 292 tcp_header_ refheader;292 tcp_header_t *header; 293 293 socket_core_ref socket; 294 tcp_socket_data_ refsocket_data;294 tcp_socket_data_t *socket_data; 295 295 packet_t next_packet; 296 296 size_t total_length; … … 343 343 344 344 /* Get tcp header */ 345 header = (tcp_header_ ref) packet_get_data(packet);345 header = (tcp_header_t *) packet_get_data(packet); 346 346 if (!header) 347 347 return tcp_release_and_return(packet, NO_DATA); … … 380 380 381 381 printf("socket id %d\n", socket->socket_id); 382 socket_data = (tcp_socket_data_ ref) socket->specific_data;382 socket_data = (tcp_socket_data_t *) socket->specific_data; 383 383 assert(socket_data); 384 384 … … 497 497 } 498 498 499 int tcp_process_established(socket_core_ref socket, tcp_socket_data_ ref500 socket_data, tcp_header_ refheader, packet_t packet, int fragments,499 int tcp_process_established(socket_core_ref socket, tcp_socket_data_t * 500 socket_data, tcp_header_t *header, packet_t packet, int fragments, 501 501 size_t total_length) 502 502 { … … 806 806 807 807 int tcp_queue_received_packet(socket_core_ref socket, 808 tcp_socket_data_ refsocket_data, packet_t packet, int fragments,808 tcp_socket_data_t *socket_data, packet_t packet, int fragments, 809 809 size_t total_length) 810 810 { … … 842 842 } 843 843 844 int tcp_process_syn_sent(socket_core_ref socket, tcp_socket_data_ ref845 socket_data, tcp_header_ refheader, packet_t packet)844 int tcp_process_syn_sent(socket_core_ref socket, tcp_socket_data_t * 845 socket_data, tcp_header_t *header, packet_t packet) 846 846 { 847 847 packet_t next_packet; … … 901 901 902 902 int tcp_process_listen(socket_core_ref listening_socket, 903 tcp_socket_data_ ref listening_socket_data, tcp_header_refheader,903 tcp_socket_data_t *listening_socket_data, tcp_header_t *header, 904 904 packet_t packet, struct sockaddr *src, struct sockaddr *dest, 905 905 size_t addrlen) … … 907 907 packet_t next_packet; 908 908 socket_core_ref socket; 909 tcp_socket_data_ refsocket_data;909 tcp_socket_data_t *socket_data; 910 910 int socket_id; 911 911 int listening_socket_id = listening_socket->socket_id; … … 922 922 return tcp_release_and_return(packet, EINVAL); 923 923 924 socket_data = (tcp_socket_data_ ref) malloc(sizeof(*socket_data));924 socket_data = (tcp_socket_data_t *) malloc(sizeof(*socket_data)); 925 925 if (!socket_data) 926 926 return tcp_release_and_return(packet, ENOMEM); … … 979 979 } 980 980 listening_socket_data = 981 (tcp_socket_data_ ref) listening_socket->specific_data;981 (tcp_socket_data_t *) listening_socket->specific_data; 982 982 assert(listening_socket_data); 983 983 … … 991 991 return ENOTSOCK; 992 992 } 993 socket_data = (tcp_socket_data_ ref) socket->specific_data;993 socket_data = (tcp_socket_data_t *) socket->specific_data; 994 994 assert(socket_data); 995 995 … … 1061 1061 1062 1062 int tcp_process_syn_received(socket_core_ref socket, 1063 tcp_socket_data_ ref socket_data, tcp_header_refheader, packet_t packet)1063 tcp_socket_data_t *socket_data, tcp_header_t *header, packet_t packet) 1064 1064 { 1065 1065 socket_core_ref listening_socket; 1066 tcp_socket_data_ reflistening_socket_data;1066 tcp_socket_data_t *listening_socket_data; 1067 1067 int rc; 1068 1068 … … 1086 1086 if (listening_socket) { 1087 1087 listening_socket_data = 1088 (tcp_socket_data_ ref) listening_socket->specific_data;1088 (tcp_socket_data_t *) listening_socket->specific_data; 1089 1089 assert(listening_socket_data); 1090 1090 … … 1128 1128 1129 1129 void tcp_process_acknowledgement(socket_core_ref socket, 1130 tcp_socket_data_ ref socket_data, tcp_header_refheader)1130 tcp_socket_data_t *socket_data, tcp_header_t *header) 1131 1131 { 1132 1132 size_t number; … … 1265 1265 } 1266 1266 1267 void tcp_refresh_socket_data(tcp_socket_data_ refsocket_data)1267 void tcp_refresh_socket_data(tcp_socket_data_t *socket_data) 1268 1268 { 1269 1269 assert(socket_data); … … 1281 1281 } 1282 1282 1283 void tcp_initialize_socket_data(tcp_socket_data_ refsocket_data)1283 void tcp_initialize_socket_data(tcp_socket_data_t *socket_data) 1284 1284 { 1285 1285 assert(socket_data); … … 1304 1304 ipc_call_t answer; 1305 1305 int answer_count; 1306 tcp_socket_data_ refsocket_data;1306 tcp_socket_data_t *socket_data; 1307 1307 socket_core_ref socket; 1308 1308 packet_dimension_ref packet_dimension; … … 1336 1336 case NET_SOCKET: 1337 1337 socket_data = 1338 (tcp_socket_data_ ref) malloc(sizeof(*socket_data));1338 (tcp_socket_data_t *) malloc(sizeof(*socket_data)); 1339 1339 if (!socket_data) { 1340 1340 res = ENOMEM; … … 1383 1383 SOCKET_GET_SOCKET_ID(call)); 1384 1384 if (socket) { 1385 socket_data = (tcp_socket_data_ ref)1385 socket_data = (tcp_socket_data_t *) 1386 1386 socket->specific_data; 1387 1387 assert(socket_data); … … 1543 1543 int keep_write_lock = false; 1544 1544 socket_core_ref socket; 1545 tcp_socket_data_ refsocket_data;1545 tcp_socket_data_t *socket_data; 1546 1546 1547 1547 assert(timeout); … … 1561 1561 goto out; 1562 1562 1563 socket_data = (tcp_socket_data_ ref) socket->specific_data;1563 socket_data = (tcp_socket_data_t *) socket->specific_data; 1564 1564 assert(socket_data); 1565 1565 if (socket_data->local_sockets != timeout->local_sockets) … … 1619 1619 tcp_timeout_ref timeout = data; 1620 1620 socket_core_ref socket; 1621 tcp_socket_data_ refsocket_data;1621 tcp_socket_data_t *socket_data; 1622 1622 fibril_rwlock_t *local_lock; 1623 1623 … … 1635 1635 1636 1636 if (socket && (socket->socket_id == timeout->socket_id)) { 1637 socket_data = (tcp_socket_data_ ref) socket->specific_data;1637 socket_data = (tcp_socket_data_t *) socket->specific_data; 1638 1638 assert(socket_data); 1639 1639 if (socket_data->local_sockets == timeout->local_sockets) { … … 1656 1656 } 1657 1657 1658 void tcp_retransmit_packet(socket_core_ref socket, tcp_socket_data_ ref1658 void tcp_retransmit_packet(socket_core_ref socket, tcp_socket_data_t * 1659 1659 socket_data, size_t sequence_number) 1660 1660 { … … 1687 1687 { 1688 1688 socket_core_ref socket; 1689 tcp_socket_data_ refsocket_data;1689 tcp_socket_data_t *socket_data; 1690 1690 1691 1691 assert(local_sockets); … … 1700 1700 1701 1701 /* Get the socket specific data */ 1702 socket_data = (tcp_socket_data_ ref) socket->specific_data;1702 socket_data = (tcp_socket_data_t *) socket->specific_data; 1703 1703 assert(socket_data); 1704 1704 … … 1740 1740 struct sockaddr *addr, socklen_t addrlen) 1741 1741 { 1742 tcp_socket_data_ refsocket_data;1742 tcp_socket_data_t *socket_data; 1743 1743 packet_t packet; 1744 1744 int rc; … … 1749 1749 1750 1750 /* Get the socket specific data */ 1751 socket_data = (tcp_socket_data_ ref) socket->specific_data;1751 socket_data = (tcp_socket_data_t *) socket->specific_data; 1752 1752 assert(socket_data); 1753 1753 assert(socket->specific_data == socket_data); … … 1829 1829 1830 1830 int tcp_queue_prepare_packet(socket_core_ref socket, 1831 tcp_socket_data_ refsocket_data, packet_t packet, size_t data_length)1832 { 1833 tcp_header_ refheader;1831 tcp_socket_data_t *socket_data, packet_t packet, size_t data_length) 1832 { 1833 tcp_header_t *header; 1834 1834 int rc; 1835 1835 … … 1839 1839 1840 1840 /* Get TCP header */ 1841 header = (tcp_header_ ref) packet_get_data(packet);1841 header = (tcp_header_t *) packet_get_data(packet); 1842 1842 if (!header) 1843 1843 return NO_DATA; … … 1859 1859 } 1860 1860 1861 int tcp_queue_packet(socket_core_ref socket, tcp_socket_data_ refsocket_data,1861 int tcp_queue_packet(socket_core_ref socket, tcp_socket_data_t *socket_data, 1862 1862 packet_t packet, size_t data_length) 1863 1863 { … … 1881 1881 } 1882 1882 1883 packet_t tcp_get_packets_to_send(socket_core_ref socket, tcp_socket_data_ ref1883 packet_t tcp_get_packets_to_send(socket_core_ref socket, tcp_socket_data_t * 1884 1884 socket_data) 1885 1885 { … … 1941 1941 } 1942 1942 1943 packet_t tcp_send_prepare_packet(socket_core_ref socket, tcp_socket_data_ ref1943 packet_t tcp_send_prepare_packet(socket_core_ref socket, tcp_socket_data_t * 1944 1944 socket_data, packet_t packet, size_t data_length, size_t sequence_number) 1945 1945 { 1946 tcp_header_ refheader;1946 tcp_header_t *header; 1947 1947 uint32_t checksum; 1948 1948 int rc; … … 1961 1961 1962 1962 /* Get the header */ 1963 header = (tcp_header_ ref) packet_get_data(packet);1963 header = (tcp_header_t *) packet_get_data(packet); 1964 1964 if (!header) { 1965 1965 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet)); … … 2002 2002 } 2003 2003 2004 packet_t tcp_prepare_copy(socket_core_ref socket, tcp_socket_data_ ref2004 packet_t tcp_prepare_copy(socket_core_ref socket, tcp_socket_data_t * 2005 2005 socket_data, packet_t packet, size_t data_length, size_t sequence_number) 2006 2006 { … … 2033 2033 2034 2034 void tcp_prepare_operation_header(socket_core_ref socket, 2035 tcp_socket_data_ ref socket_data, tcp_header_refheader, int synchronize,2035 tcp_socket_data_t *socket_data, tcp_header_t *header, int synchronize, 2036 2036 int finalize) 2037 2037 { … … 2050 2050 2051 2051 int tcp_prepare_timeout(int (*timeout_function)(void *tcp_timeout_t), 2052 socket_core_ref socket, tcp_socket_data_ refsocket_data,2052 socket_core_ref socket, tcp_socket_data_t *socket_data, 2053 2053 size_t sequence_number, tcp_socket_state_t state, suseconds_t timeout, 2054 2054 int globals_read_only) … … 2100 2100 { 2101 2101 socket_core_ref socket; 2102 tcp_socket_data_ refsocket_data;2102 tcp_socket_data_t *socket_data; 2103 2103 int packet_id; 2104 2104 packet_t packet; … … 2117 2117 return NO_DATA; 2118 2118 2119 socket_data = (tcp_socket_data_ ref) socket->specific_data;2119 socket_data = (tcp_socket_data_t *) socket->specific_data; 2120 2120 2121 2121 /* Check state */ … … 2158 2158 { 2159 2159 socket_core_ref socket; 2160 tcp_socket_data_ refsocket_data;2160 tcp_socket_data_t *socket_data; 2161 2161 packet_dimension_ref packet_dimension; 2162 2162 packet_t packet; 2163 2163 size_t total_length; 2164 tcp_header_ refheader;2164 tcp_header_t *header; 2165 2165 int index; 2166 2166 int result; … … 2179 2179 return NO_DATA; 2180 2180 2181 socket_data = (tcp_socket_data_ ref) socket->specific_data;2181 socket_data = (tcp_socket_data_t *) socket->specific_data; 2182 2182 2183 2183 /* Check state */ … … 2233 2233 { 2234 2234 socket_core_ref socket; 2235 tcp_socket_data_ refsocket_data;2235 tcp_socket_data_t *socket_data; 2236 2236 packet_t packet; 2237 2237 int rc; … … 2243 2243 2244 2244 /* Get the socket specific data */ 2245 socket_data = (tcp_socket_data_ ref) socket->specific_data;2245 socket_data = (tcp_socket_data_t *) socket->specific_data; 2246 2246 assert(socket_data); 2247 2247 … … 2299 2299 2300 2300 int tcp_create_notification_packet(packet_t *packet, socket_core_ref socket, 2301 tcp_socket_data_ refsocket_data, int synchronize, int finalize)2301 tcp_socket_data_t *socket_data, int synchronize, int finalize) 2302 2302 { 2303 2303 packet_dimension_ref packet_dimension; 2304 tcp_header_ refheader;2304 tcp_header_t *header; 2305 2305 int rc; 2306 2306 … … 2337 2337 socket_core_ref accepted; 2338 2338 socket_core_ref socket; 2339 tcp_socket_data_ refsocket_data;2339 tcp_socket_data_t *socket_data; 2340 2340 packet_dimension_ref packet_dimension; 2341 2341 int rc; … … 2351 2351 2352 2352 /* Get the socket specific data */ 2353 socket_data = (tcp_socket_data_ ref) socket->specific_data;2353 socket_data = (tcp_socket_data_t *) socket->specific_data; 2354 2354 assert(socket_data); 2355 2355 … … 2369 2369 2370 2370 /* Get the socket specific data */ 2371 socket_data = (tcp_socket_data_ ref) accepted->specific_data;2371 socket_data = (tcp_socket_data_t *) accepted->specific_data; 2372 2372 assert(socket_data); 2373 2373 /* TODO can it be in another state? */ … … 2407 2407 void tcp_free_socket_data(socket_core_ref socket) 2408 2408 { 2409 tcp_socket_data_ refsocket_data;2409 tcp_socket_data_t *socket_data; 2410 2410 2411 2411 assert(socket); … … 2414 2414 2415 2415 /* Get the socket specific data */ 2416 socket_data = (tcp_socket_data_ ref) socket->specific_data;2416 socket_data = (tcp_socket_data_t *) socket->specific_data; 2417 2417 assert(socket_data); 2418 2418
Note:
See TracChangeset
for help on using the changeset viewer.