Changes in uspace/srv/net/tl/tcp/tcp.c [aaa3f33a:fb04cba8] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tl/tcp/tcp.c
raaa3f33a rfb04cba8 127 127 typedef struct tcp_timeout tcp_timeout_t; 128 128 129 /** Type definition of the TCP timeout pointer. 130 * @see tcp_timeout 131 */ 132 typedef tcp_timeout_t *tcp_timeout_ref; 133 129 134 /** TCP reply timeout data. 130 135 * Used as a timeouting fibril argument. … … 139 144 140 145 /** Local sockets. */ 141 socket_cores_ t *local_sockets;146 socket_cores_ref local_sockets; 142 147 143 148 /** Socket identifier. */ … … 161 166 162 167 static int tcp_release_and_return(packet_t, int); 163 static void tcp_prepare_operation_header(socket_core_ t *, tcp_socket_data_t *,164 tcp_header_ t *, int synchronize, int);165 static int tcp_prepare_timeout(int (*)(void *), socket_core_ t *,166 tcp_socket_data_ t *, size_t, tcp_socket_state_t, suseconds_t, int);167 static void tcp_free_socket_data(socket_core_ t *);168 static void tcp_prepare_operation_header(socket_core_ref, tcp_socket_data_ref, 169 tcp_header_ref, int synchronize, int); 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); 172 static void tcp_free_socket_data(socket_core_ref); 168 173 169 174 static int tcp_timeout(void *); … … 172 177 173 178 static int tcp_process_packet(device_id_t, packet_t, services_t); 174 static int tcp_connect_core(socket_core_ t *, socket_cores_t *,179 static int tcp_connect_core(socket_core_ref, socket_cores_ref, 175 180 struct sockaddr *, socklen_t); 176 static int tcp_queue_prepare_packet(socket_core_ t *, tcp_socket_data_t *,181 static int tcp_queue_prepare_packet(socket_core_ref, tcp_socket_data_ref, 177 182 packet_t, size_t); 178 static int tcp_queue_packet(socket_core_ t *, tcp_socket_data_t *, packet_t,183 static int tcp_queue_packet(socket_core_ref, tcp_socket_data_ref, packet_t, 179 184 size_t); 180 static packet_t tcp_get_packets_to_send(socket_core_ t *, tcp_socket_data_t *);185 static packet_t tcp_get_packets_to_send(socket_core_ref, tcp_socket_data_ref); 181 186 static void tcp_send_packets(device_id_t, packet_t); 182 187 183 static void tcp_process_acknowledgement(socket_core_ t *, tcp_socket_data_t *,184 tcp_header_ t *);185 static packet_t tcp_send_prepare_packet(socket_core_ t *, tcp_socket_data_t *,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, 186 191 packet_t, size_t, size_t); 187 static packet_t tcp_prepare_copy(socket_core_ t *, tcp_socket_data_t *, packet_t,192 static packet_t tcp_prepare_copy(socket_core_ref, tcp_socket_data_ref, packet_t, 188 193 size_t, size_t); 189 /* static */ void tcp_retransmit_packet(socket_core_ t *, tcp_socket_data_t *,194 /* static */ void tcp_retransmit_packet(socket_core_ref, tcp_socket_data_ref, 190 195 size_t); 191 static int tcp_create_notification_packet(packet_t *, socket_core_ t *,192 tcp_socket_data_ t *, int, int);193 static void tcp_refresh_socket_data(tcp_socket_data_ t *);194 195 static void tcp_initialize_socket_data(tcp_socket_data_ t *);196 197 static int tcp_process_listen(socket_core_ t *, tcp_socket_data_t *,198 tcp_header_ t *, packet_t, struct sockaddr *, struct sockaddr *, size_t);199 static int tcp_process_syn_sent(socket_core_ t *, tcp_socket_data_t *,200 tcp_header_ t *, packet_t);201 static int tcp_process_syn_received(socket_core_ t *, tcp_socket_data_t *,202 tcp_header_ t *, packet_t);203 static int tcp_process_established(socket_core_ t *, tcp_socket_data_t *,204 tcp_header_ t *, packet_t, int, size_t);205 static int tcp_queue_received_packet(socket_core_ t *, tcp_socket_data_t *,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, 206 211 packet_t, int, size_t); 207 212 … … 209 214 static int tcp_process_client_messages(ipc_callid_t, ipc_call_t); 210 215 211 static int tcp_listen_message(socket_cores_ t *, int, int);212 static int tcp_connect_message(socket_cores_ t *, int, struct sockaddr *,216 static int tcp_listen_message(socket_cores_ref, int, int); 217 static int tcp_connect_message(socket_cores_ref, int, struct sockaddr *, 213 218 socklen_t); 214 static int tcp_recvfrom_message(socket_cores_ t *, int, int, size_t *);215 static int tcp_send_message(socket_cores_ t *, int, int, size_t *, int);216 static int tcp_accept_message(socket_cores_ t *, int, int, size_t *, size_t *);217 static int tcp_close_message(socket_cores_ t *, int);219 static int tcp_recvfrom_message(socket_cores_ref, int, int, size_t *); 220 static int tcp_send_message(socket_cores_ref, int, int, size_t *, int); 221 static int tcp_accept_message(socket_cores_ref, int, int, size_t *, size_t *); 222 static int tcp_close_message(socket_cores_ref, int); 218 223 219 224 /** TCP global data. */ … … 285 290 size_t offset; 286 291 int result; 287 tcp_header_ t *header;288 socket_core_ t *socket;289 tcp_socket_data_ t *socket_data;292 tcp_header_ref header; 293 socket_core_ref socket; 294 tcp_socket_data_ref socket_data; 290 295 packet_t next_packet; 291 296 size_t total_length; … … 338 343 339 344 /* Get tcp header */ 340 header = (tcp_header_ t *) packet_get_data(packet);345 header = (tcp_header_ref) packet_get_data(packet); 341 346 if (!header) 342 347 return tcp_release_and_return(packet, NO_DATA); … … 375 380 376 381 printf("socket id %d\n", socket->socket_id); 377 socket_data = (tcp_socket_data_ t *) socket->specific_data;382 socket_data = (tcp_socket_data_ref) socket->specific_data; 378 383 assert(socket_data); 379 384 … … 492 497 } 493 498 494 int tcp_process_established(socket_core_ t *socket, tcp_socket_data_t *495 socket_data, tcp_header_ t *header, packet_t packet, int fragments,499 int tcp_process_established(socket_core_ref socket, tcp_socket_data_ref 500 socket_data, tcp_header_ref header, packet_t packet, int fragments, 496 501 size_t total_length) 497 502 { … … 800 805 } 801 806 802 int tcp_queue_received_packet(socket_core_ t *socket,803 tcp_socket_data_ t *socket_data, packet_t packet, int fragments,807 int tcp_queue_received_packet(socket_core_ref socket, 808 tcp_socket_data_ref socket_data, packet_t packet, int fragments, 804 809 size_t total_length) 805 810 { 806 packet_dimension_ t *packet_dimension;811 packet_dimension_ref packet_dimension; 807 812 int rc; 808 813 … … 837 842 } 838 843 839 int tcp_process_syn_sent(socket_core_ t *socket, tcp_socket_data_t *840 socket_data, tcp_header_ t *header, packet_t packet)844 int tcp_process_syn_sent(socket_core_ref socket, tcp_socket_data_ref 845 socket_data, tcp_header_ref header, packet_t packet) 841 846 { 842 847 packet_t next_packet; … … 895 900 } 896 901 897 int tcp_process_listen(socket_core_ t *listening_socket,898 tcp_socket_data_ t *listening_socket_data, tcp_header_t *header,902 int tcp_process_listen(socket_core_ref listening_socket, 903 tcp_socket_data_ref listening_socket_data, tcp_header_ref header, 899 904 packet_t packet, struct sockaddr *src, struct sockaddr *dest, 900 905 size_t addrlen) 901 906 { 902 907 packet_t next_packet; 903 socket_core_ t *socket;904 tcp_socket_data_ t *socket_data;908 socket_core_ref socket; 909 tcp_socket_data_ref socket_data; 905 910 int socket_id; 906 911 int listening_socket_id = listening_socket->socket_id; … … 917 922 return tcp_release_and_return(packet, EINVAL); 918 923 919 socket_data = (tcp_socket_data_ t *) malloc(sizeof(*socket_data));924 socket_data = (tcp_socket_data_ref) malloc(sizeof(*socket_data)); 920 925 if (!socket_data) 921 926 return tcp_release_and_return(packet, ENOMEM); … … 974 979 } 975 980 listening_socket_data = 976 (tcp_socket_data_ t *) listening_socket->specific_data;981 (tcp_socket_data_ref) listening_socket->specific_data; 977 982 assert(listening_socket_data); 978 983 … … 986 991 return ENOTSOCK; 987 992 } 988 socket_data = (tcp_socket_data_ t *) socket->specific_data;993 socket_data = (tcp_socket_data_ref) socket->specific_data; 989 994 assert(socket_data); 990 995 … … 1055 1060 } 1056 1061 1057 int tcp_process_syn_received(socket_core_ t *socket,1058 tcp_socket_data_ t *socket_data, tcp_header_t *header, packet_t packet)1059 { 1060 socket_core_ t *listening_socket;1061 tcp_socket_data_ t *listening_socket_data;1062 int tcp_process_syn_received(socket_core_ref socket, 1063 tcp_socket_data_ref socket_data, tcp_header_ref header, packet_t packet) 1064 { 1065 socket_core_ref listening_socket; 1066 tcp_socket_data_ref listening_socket_data; 1062 1067 int rc; 1063 1068 … … 1081 1086 if (listening_socket) { 1082 1087 listening_socket_data = 1083 (tcp_socket_data_ t *) listening_socket->specific_data;1088 (tcp_socket_data_ref) listening_socket->specific_data; 1084 1089 assert(listening_socket_data); 1085 1090 … … 1122 1127 } 1123 1128 1124 void tcp_process_acknowledgement(socket_core_ t *socket,1125 tcp_socket_data_ t *socket_data, tcp_header_t *header)1129 void tcp_process_acknowledgement(socket_core_ref socket, 1130 tcp_socket_data_ref socket_data, tcp_header_ref header) 1126 1131 { 1127 1132 size_t number; … … 1260 1265 } 1261 1266 1262 void tcp_refresh_socket_data(tcp_socket_data_ t *socket_data)1267 void tcp_refresh_socket_data(tcp_socket_data_ref socket_data) 1263 1268 { 1264 1269 assert(socket_data); … … 1276 1281 } 1277 1282 1278 void tcp_initialize_socket_data(tcp_socket_data_ t *socket_data)1283 void tcp_initialize_socket_data(tcp_socket_data_ref socket_data) 1279 1284 { 1280 1285 assert(socket_data); … … 1299 1304 ipc_call_t answer; 1300 1305 int answer_count; 1301 tcp_socket_data_ t *socket_data;1302 socket_core_ t *socket;1303 packet_dimension_ t *packet_dimension;1306 tcp_socket_data_ref socket_data; 1307 socket_core_ref socket; 1308 packet_dimension_ref packet_dimension; 1304 1309 1305 1310 /* … … 1331 1336 case NET_SOCKET: 1332 1337 socket_data = 1333 (tcp_socket_data_ t *) malloc(sizeof(*socket_data));1338 (tcp_socket_data_ref) malloc(sizeof(*socket_data)); 1334 1339 if (!socket_data) { 1335 1340 res = ENOMEM; … … 1378 1383 SOCKET_GET_SOCKET_ID(call)); 1379 1384 if (socket) { 1380 socket_data = (tcp_socket_data_ t *)1385 socket_data = (tcp_socket_data_ref) 1381 1386 socket->specific_data; 1382 1387 assert(socket_data); … … 1535 1540 int tcp_timeout(void *data) 1536 1541 { 1537 tcp_timeout_ t *timeout = data;1542 tcp_timeout_ref timeout = data; 1538 1543 int keep_write_lock = false; 1539 socket_core_ t *socket;1540 tcp_socket_data_ t *socket_data;1544 socket_core_ref socket; 1545 tcp_socket_data_ref socket_data; 1541 1546 1542 1547 assert(timeout); … … 1556 1561 goto out; 1557 1562 1558 socket_data = (tcp_socket_data_ t *) socket->specific_data;1563 socket_data = (tcp_socket_data_ref) socket->specific_data; 1559 1564 assert(socket_data); 1560 1565 if (socket_data->local_sockets != timeout->local_sockets) … … 1612 1617 int tcp_release_after_timeout(void *data) 1613 1618 { 1614 tcp_timeout_ t *timeout = data;1615 socket_core_ t *socket;1616 tcp_socket_data_ t *socket_data;1619 tcp_timeout_ref timeout = data; 1620 socket_core_ref socket; 1621 tcp_socket_data_ref socket_data; 1617 1622 fibril_rwlock_t *local_lock; 1618 1623 … … 1630 1635 1631 1636 if (socket && (socket->socket_id == timeout->socket_id)) { 1632 socket_data = (tcp_socket_data_ t *) socket->specific_data;1637 socket_data = (tcp_socket_data_ref) socket->specific_data; 1633 1638 assert(socket_data); 1634 1639 if (socket_data->local_sockets == timeout->local_sockets) { … … 1651 1656 } 1652 1657 1653 void tcp_retransmit_packet(socket_core_ t *socket, tcp_socket_data_t *1658 void tcp_retransmit_packet(socket_core_ref socket, tcp_socket_data_ref 1654 1659 socket_data, size_t sequence_number) 1655 1660 { … … 1678 1683 } 1679 1684 1680 int tcp_listen_message(socket_cores_ t *local_sockets, int socket_id,1685 int tcp_listen_message(socket_cores_ref local_sockets, int socket_id, 1681 1686 int backlog) 1682 1687 { 1683 socket_core_ t *socket;1684 tcp_socket_data_ t *socket_data;1688 socket_core_ref socket; 1689 tcp_socket_data_ref socket_data; 1685 1690 1686 1691 assert(local_sockets); … … 1695 1700 1696 1701 /* Get the socket specific data */ 1697 socket_data = (tcp_socket_data_ t *) socket->specific_data;1702 socket_data = (tcp_socket_data_ref) socket->specific_data; 1698 1703 assert(socket_data); 1699 1704 … … 1704 1709 } 1705 1710 1706 int tcp_connect_message(socket_cores_ t *local_sockets, int socket_id,1711 int tcp_connect_message(socket_cores_ref local_sockets, int socket_id, 1707 1712 struct sockaddr *addr, socklen_t addrlen) 1708 1713 { 1709 socket_core_ t *socket;1714 socket_core_ref socket; 1710 1715 int rc; 1711 1716 … … 1732 1737 } 1733 1738 1734 int tcp_connect_core(socket_core_ t *socket, socket_cores_t *local_sockets,1739 int tcp_connect_core(socket_core_ref socket, socket_cores_ref local_sockets, 1735 1740 struct sockaddr *addr, socklen_t addrlen) 1736 1741 { 1737 tcp_socket_data_ t *socket_data;1742 tcp_socket_data_ref socket_data; 1738 1743 packet_t packet; 1739 1744 int rc; … … 1744 1749 1745 1750 /* Get the socket specific data */ 1746 socket_data = (tcp_socket_data_ t *) socket->specific_data;1751 socket_data = (tcp_socket_data_ref) socket->specific_data; 1747 1752 assert(socket_data); 1748 1753 assert(socket->specific_data == socket_data); … … 1823 1828 } 1824 1829 1825 int tcp_queue_prepare_packet(socket_core_ t *socket,1826 tcp_socket_data_ t *socket_data, packet_t packet, size_t data_length)1827 { 1828 tcp_header_ t *header;1830 int tcp_queue_prepare_packet(socket_core_ref socket, 1831 tcp_socket_data_ref socket_data, packet_t packet, size_t data_length) 1832 { 1833 tcp_header_ref header; 1829 1834 int rc; 1830 1835 … … 1834 1839 1835 1840 /* Get TCP header */ 1836 header = (tcp_header_ t *) packet_get_data(packet);1841 header = (tcp_header_ref) packet_get_data(packet); 1837 1842 if (!header) 1838 1843 return NO_DATA; … … 1854 1859 } 1855 1860 1856 int tcp_queue_packet(socket_core_ t *socket, tcp_socket_data_t *socket_data,1861 int tcp_queue_packet(socket_core_ref socket, tcp_socket_data_ref socket_data, 1857 1862 packet_t packet, size_t data_length) 1858 1863 { … … 1876 1881 } 1877 1882 1878 packet_t tcp_get_packets_to_send(socket_core_ t *socket, tcp_socket_data_t *1883 packet_t tcp_get_packets_to_send(socket_core_ref socket, tcp_socket_data_ref 1879 1884 socket_data) 1880 1885 { … … 1936 1941 } 1937 1942 1938 packet_t tcp_send_prepare_packet(socket_core_ t *socket, tcp_socket_data_t *1943 packet_t tcp_send_prepare_packet(socket_core_ref socket, tcp_socket_data_ref 1939 1944 socket_data, packet_t packet, size_t data_length, size_t sequence_number) 1940 1945 { 1941 tcp_header_ t *header;1946 tcp_header_ref header; 1942 1947 uint32_t checksum; 1943 1948 int rc; … … 1956 1961 1957 1962 /* Get the header */ 1958 header = (tcp_header_ t *) packet_get_data(packet);1963 header = (tcp_header_ref) packet_get_data(packet); 1959 1964 if (!header) { 1960 1965 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet)); … … 1997 2002 } 1998 2003 1999 packet_t tcp_prepare_copy(socket_core_ t *socket, tcp_socket_data_t *2004 packet_t tcp_prepare_copy(socket_core_ref socket, tcp_socket_data_ref 2000 2005 socket_data, packet_t packet, size_t data_length, size_t sequence_number) 2001 2006 { … … 2027 2032 } 2028 2033 2029 void tcp_prepare_operation_header(socket_core_ t *socket,2030 tcp_socket_data_ t *socket_data, tcp_header_t *header, int synchronize,2034 void tcp_prepare_operation_header(socket_core_ref socket, 2035 tcp_socket_data_ref socket_data, tcp_header_ref header, int synchronize, 2031 2036 int finalize) 2032 2037 { … … 2045 2050 2046 2051 int tcp_prepare_timeout(int (*timeout_function)(void *tcp_timeout_t), 2047 socket_core_ t *socket, tcp_socket_data_t *socket_data,2052 socket_core_ref socket, tcp_socket_data_ref socket_data, 2048 2053 size_t sequence_number, tcp_socket_state_t state, suseconds_t timeout, 2049 2054 int globals_read_only) 2050 2055 { 2051 tcp_timeout_ t *operation_timeout;2056 tcp_timeout_ref operation_timeout; 2052 2057 fid_t fibril; 2053 2058 … … 2091 2096 } 2092 2097 2093 int tcp_recvfrom_message(socket_cores_ t *local_sockets, int socket_id,2098 int tcp_recvfrom_message(socket_cores_ref local_sockets, int socket_id, 2094 2099 int flags, size_t *addrlen) 2095 2100 { 2096 socket_core_ t *socket;2097 tcp_socket_data_ t *socket_data;2101 socket_core_ref socket; 2102 tcp_socket_data_ref socket_data; 2098 2103 int packet_id; 2099 2104 packet_t packet; … … 2112 2117 return NO_DATA; 2113 2118 2114 socket_data = (tcp_socket_data_ t *) socket->specific_data;2119 socket_data = (tcp_socket_data_ref) socket->specific_data; 2115 2120 2116 2121 /* Check state */ … … 2149 2154 } 2150 2155 2151 int tcp_send_message(socket_cores_ t *local_sockets, int socket_id,2156 int tcp_send_message(socket_cores_ref local_sockets, int socket_id, 2152 2157 int fragments, size_t *data_fragment_size, int flags) 2153 2158 { 2154 socket_core_ t *socket;2155 tcp_socket_data_ t *socket_data;2156 packet_dimension_ t *packet_dimension;2159 socket_core_ref socket; 2160 tcp_socket_data_ref socket_data; 2161 packet_dimension_ref packet_dimension; 2157 2162 packet_t packet; 2158 2163 size_t total_length; 2159 tcp_header_ t *header;2164 tcp_header_ref header; 2160 2165 int index; 2161 2166 int result; … … 2174 2179 return NO_DATA; 2175 2180 2176 socket_data = (tcp_socket_data_ t *) socket->specific_data;2181 socket_data = (tcp_socket_data_ref) socket->specific_data; 2177 2182 2178 2183 /* Check state */ … … 2225 2230 2226 2231 int 2227 tcp_close_message(socket_cores_ t *local_sockets, int socket_id)2228 { 2229 socket_core_ t *socket;2230 tcp_socket_data_ t *socket_data;2232 tcp_close_message(socket_cores_ref local_sockets, int socket_id) 2233 { 2234 socket_core_ref socket; 2235 tcp_socket_data_ref socket_data; 2231 2236 packet_t packet; 2232 2237 int rc; … … 2238 2243 2239 2244 /* Get the socket specific data */ 2240 socket_data = (tcp_socket_data_ t *) socket->specific_data;2245 socket_data = (tcp_socket_data_ref) socket->specific_data; 2241 2246 assert(socket_data); 2242 2247 … … 2293 2298 } 2294 2299 2295 int tcp_create_notification_packet(packet_t *packet, socket_core_ t *socket,2296 tcp_socket_data_ t *socket_data, int synchronize, int finalize)2297 { 2298 packet_dimension_ t *packet_dimension;2299 tcp_header_ t *header;2300 int tcp_create_notification_packet(packet_t *packet, socket_core_ref socket, 2301 tcp_socket_data_ref socket_data, int synchronize, int finalize) 2302 { 2303 packet_dimension_ref packet_dimension; 2304 tcp_header_ref header; 2300 2305 int rc; 2301 2306 … … 2327 2332 } 2328 2333 2329 int tcp_accept_message(socket_cores_ t *local_sockets, int socket_id,2334 int tcp_accept_message(socket_cores_ref local_sockets, int socket_id, 2330 2335 int new_socket_id, size_t *data_fragment_size, size_t *addrlen) 2331 2336 { 2332 socket_core_ t *accepted;2333 socket_core_ t *socket;2334 tcp_socket_data_ t *socket_data;2335 packet_dimension_ t *packet_dimension;2337 socket_core_ref accepted; 2338 socket_core_ref socket; 2339 tcp_socket_data_ref socket_data; 2340 packet_dimension_ref packet_dimension; 2336 2341 int rc; 2337 2342 … … 2346 2351 2347 2352 /* Get the socket specific data */ 2348 socket_data = (tcp_socket_data_ t *) socket->specific_data;2353 socket_data = (tcp_socket_data_ref) socket->specific_data; 2349 2354 assert(socket_data); 2350 2355 … … 2364 2369 2365 2370 /* Get the socket specific data */ 2366 socket_data = (tcp_socket_data_ t *) accepted->specific_data;2371 socket_data = (tcp_socket_data_ref) accepted->specific_data; 2367 2372 assert(socket_data); 2368 2373 /* TODO can it be in another state? */ … … 2400 2405 } 2401 2406 2402 void tcp_free_socket_data(socket_core_ t *socket)2403 { 2404 tcp_socket_data_ t *socket_data;2407 void tcp_free_socket_data(socket_core_ref socket) 2408 { 2409 tcp_socket_data_ref socket_data; 2405 2410 2406 2411 assert(socket); … … 2409 2414 2410 2415 /* Get the socket specific data */ 2411 socket_data = (tcp_socket_data_ t *) socket->specific_data;2416 socket_data = (tcp_socket_data_ref) socket->specific_data; 2412 2417 assert(socket_data); 2413 2418
Note:
See TracChangeset
for help on using the changeset viewer.