Rev 5596 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5596 | Rev 5984 | ||
---|---|---|---|
Line 102... | Line 102... | ||
102 | 102 | ||
Line 103... | Line 103... | ||
103 | 103 | ||
104 | } |
- | |
- | 104 | } |
|
105 | 105 | ||
106 | - | ||
- | 106 | ||
107 | ;--------------------------- |
107 | ;-----------------------------------------------------------------; |
108 | ; |
108 | ; ; |
109 | ; TCP_pull_out_of_band |
109 | ; TCP_pull_out_of_band ; |
110 | ; |
- | |
- | 110 | ; ; |
|
111 | ; IN: eax = |
111 | ; IN: eax = ? ; |
112 | ; ebx = socket ptr |
- | |
- | 112 | ; ebx = socket ptr ; |
|
113 | ; edx = tcp packet ptr |
113 | ; edx = tcp packet ptr ; |
114 | ; |
- | |
115 | ; OUT: / |
114 | ; ; |
116 | ; |
115 | ; OUT: / ; |
Line 117... | Line 116... | ||
117 | ;--------------------------- |
116 | ; ; |
Line 125... | Line 124... | ||
125 | 124 | ||
Line 126... | Line -... | ||
126 | ret |
- | |
127 | - | ||
128 | - | ||
129 | - | ||
130 | - | ||
131 | 125 | ret |
|
132 | - | ||
- | 126 | ||
133 | 127 | ||
134 | - | ||
- | 128 | ||
135 | ;------------------------- |
129 | ;-----------------------------------------------------------------; |
136 | ; |
130 | ; ; |
137 | ; TCP_drop |
- | |
- | 131 | ; TCP_drop ; |
|
138 | ; |
132 | ; ; |
139 | ; IN: eax = socket ptr |
- | |
- | 133 | ; IN: eax = socket ptr ; |
|
140 | ; ebx = error number |
134 | ; ebx = error number ; |
141 | ; |
135 | ; ; |
142 | ; OUT: eax = socket ptr |
136 | ; OUT: eax = socket ptr ; |
Line 143... | Line 137... | ||
143 | ; |
137 | ; ; |
Line 169... | Line 163... | ||
169 | ; mov [eax + SOCKET.errorcode], ebx |
163 | ; mov [eax + SOCKET.errorcode], ebx |
Line 170... | Line 164... | ||
170 | 164 | ||
171 | - | ||
- | 165 | ||
172 | 166 | ||
173 | - | ||
- | 167 | ||
174 | ;------------------------- |
168 | ;-----------------------------------------------------------------; |
- | 169 | ; ; |
|
175 | ; |
170 | ; TCP_disconnect ; |
176 | ; TCP_disconnect |
- | |
- | 171 | ; ; |
|
177 | ; |
172 | ; IN: eax = socket ptr ; |
178 | ; IN: eax = socket ptr |
173 | ; ; |
179 | ; OUT: eax = socket ptr / 0 |
174 | ; OUT: eax = socket ptr / 0 ; |
Line 180... | Line 175... | ||
180 | ; |
175 | ; ; |
Line 196... | Line 191... | ||
196 | jz @f |
191 | jz @f |
197 | push eax |
192 | push eax |
198 | call TCP_output |
193 | call TCP_output |
199 | pop eax |
194 | pop eax |
200 | @@: |
195 | @@: |
201 | - | ||
202 | ret |
196 | ret |
Line 203... | Line 197... | ||
203 | 197 | ||
204 | - | ||
- | 198 | ||
205 | ;------------------------- |
199 | ;-----------------------------------------------------------------; |
206 | ; |
- | |
- | 200 | ; ; |
|
207 | ; TCP_close |
201 | ; TCP_close ; |
- | 202 | ; ; |
|
208 | ; |
203 | ; IN: eax = socket ptr ; |
209 | ; IN: eax = socket ptr |
- | |
- | 204 | ; ; |
|
210 | ; OUT: / |
205 | ; OUT: / ; |
211 | ; |
206 | ; ; |
212 | ;------------------------- |
207 | ;-----------------------------------------------------------------; |
Line 213... | Line 208... | ||
213 | align 4 |
208 | align 4 |
Line 220... | Line 215... | ||
220 | 215 | ||
221 | call SOCKET_is_disconnected |
216 | call SOCKET_is_disconnected |
Line 222... | Line 217... | ||
222 | call SOCKET_free |
217 | call SOCKET_free |
223 | - | ||
224 | xor eax, eax |
218 | |
Line 225... | Line -... | ||
225 | - | ||
226 | ret |
219 | xor eax, eax |
227 | - | ||
- | 220 | ret |
|
228 | 221 | ||
229 | - | ||
- | 222 | ||
230 | 223 | ||
231 | ;------------------------- |
- | |
- | 224 | ;-----------------------------------------------------------------; |
|
232 | ; |
225 | ; ; |
233 | ; TCP_outflags |
- | |
- | 226 | ; TCP_outflags ; |
|
234 | ; |
227 | ; ; |
235 | ; IN: eax = socket ptr |
228 | ; IN: eax = socket ptr ; |
236 | ; |
229 | ; ; |
Line 237... | Line 230... | ||
237 | ; OUT: edx = flags |
230 | ; OUT: edx = flags ; |
238 | ; |
231 | ; ; |
Line 264... | Line 257... | ||
264 | 257 | ||
265 | - | ||
- | 258 | ||
266 | 259 | ||
267 | - | ||
268 | 260 | ||
269 | ;--------------------------------------- |
- | |
270 | ; |
261 | |
271 | ; The fast way to send an ACK/RST/keepalive segment |
262 | ;-----------------------------------------------------------------; |
272 | ; |
- | |
- | 263 | ; ; |
|
- | 264 | ; TCP_respond: Fast way to send an ACK/RST/keepalive segment. ; |
|
- | 265 | ; ; |
|
273 | ; TCP_respond |
266 | ; IN: ebx = socket ptr ; |
274 | ; |
267 | ; cl = flags ; |
275 | ; IN: ebx = socket ptr |
268 | ; ; |
Line 276... | Line 269... | ||
276 | ; cl = flags |
269 | ; OUT: / ; |
Line 277... | Line 270... | ||
277 | ; |
270 | ; ; |
278 | ;-------------------------------------- |
271 | ;-----------------------------------------------------------------; |
Line 279... | Line 272... | ||
279 | align 4 |
272 | align 4 |
280 | TCP_respond: |
- | |
281 | 273 | TCP_respond: |
|
282 | DEBUGF DEBUG_NETWORK_VERBOSE, "TCP_respond_socket: socket=%x flags=%x\n", ebx, cl |
274 | |
- | 275 | DEBUGF DEBUG_NETWORK_VERBOSE, "TCP_respond_socket: socket=%x flags=%x\n", ebx, cl |
|
- | 276 | ||
283 | 277 | ;--------------------- |
|
284 | ;--------------------- |
278 | ; Create the IP packet |
285 | ; Create the IP packet |
279 | |
286 | 280 | push cx ebx |
|
287 | push cx ebx |
281 | mov edx, [ebx + IP_SOCKET.LocalIP] |
288 | mov eax, [ebx + IP_SOCKET.RemoteIP] |
282 | mov edi, [ebx + IP_SOCKET.RemoteIP] |
Line 345... | Line 339... | ||
345 | add esp, 2 + 4 |
339 | add esp, 2 + 4 |
Line 346... | Line 340... | ||
346 | 340 | ||
Line 347... | Line -... | ||
347 | ret |
- | |
348 | - | ||
349 | - | ||
350 | - | ||
351 | - | ||
352 | - | ||
353 | 341 | ret |
|
- | 342 | ||
354 | 343 | ||
355 | - | ||
- | 344 | ;-----------------------------------------------------------------; |
|
- | 345 | ; ; |
|
356 | ;------------------------- |
346 | ; TCP_respond_segment ; |
357 | ; TCP_respond_segment: |
347 | ; ; |
358 | ; |
348 | ; IN: ebx = device ptr ; |
359 | ; IN: edx = segment ptr (a previously received segment) |
- | |
- | 349 | ; edx = segment ptr (a previously received segment) ; |
|
- | 350 | ; edi = ptr to IPv4 header ; |
|
- | 351 | ; cl = flags ; |
|
- | 352 | ; ; |
|
360 | ; edi = ptr to dest and src IPv4 addresses |
353 | ; OUT: / ; |
361 | ; cl = flags |
354 | ; ; |
Line 362... | Line 355... | ||
362 | 355 | ;-----------------------------------------------------------------; |
|
Line 363... | Line 356... | ||
363 | align 4 |
356 | align 4 |
364 | TCP_respond_segment: |
357 | TCP_respond_segment: |
Line 365... | Line 358... | ||
365 | 358 | ||
366 | DEBUGF DEBUG_NETWORK_VERBOSE,"TCP_respond_segment: frame=%x flags=%x\n", edx, cl |
359 | DEBUGF DEBUG_NETWORK_VERBOSE, "TCP_respond_segment: frame=%x flags=%x\n", edx, cl |
367 | 360 | ||
368 | ;--------------------- |
361 | ;--------------------- |
369 | ; Create the IP packet |
362 | ; Create the IP packet |
370 | - | ||
371 | push cx edx |
363 | |
372 | mov edx, [edi + 4] |
364 | push cx edx |
373 | mov eax, [edi] |
365 | mov edx, [edi + IPv4_header.DestinationAddress] |
Line 374... | Line 366... | ||
374 | mov ecx, sizeof.TCP_header |
366 | mov edi, [edi + IPv4_header.SourceAddress] |
Line 452... | Line 444... | ||
452 | jmp .done |
444 | jmp .done |
Line 453... | Line 445... | ||
453 | 445 | ||
454 | .done: |
446 | .done: |
Line 455... | Line -... | ||
455 | } |
- | |
- | 447 | } |
|
- | 448 | ||
- | 449 | ;-----------------------------------------------------------------; |
|
- | 450 | ; ; |
|
- | 451 | ; TCP_set_persist ; |
|
456 | 452 | ; ; |
|
457 | 453 | ;-----------------------------------------------------------------; |
|
Line 458... | Line 454... | ||
458 | align 4 |
454 | align 4 |
Line 489... | Line 485... | ||
489 | 485 | ||
Line -... | Line 486... | ||
- | 486 | ret |
|
- | 487 | ||
- | 488 | ||
- | 489 | ||
490 | ret |
490 | ;-----------------------------------------------------------------; |
491 | 491 | ; ; |
|
492 | - | ||
- | 492 | ; TCP_xmit_timer: Calculate new smoothed RTT. ; |
|
- | 493 | ; ; |
|
- | 494 | ; IN: eax = rtt ; |
|
- | 495 | ; ebx = socket ptr ; |
|
493 | 496 | ; ; |
|
494 | ; eax = rtt |
497 | ; OUT: / ; |
Line 495... | Line 498... | ||
495 | ; ebx = socket ptr |
498 | ; ; |
Line 496... | Line 499... | ||
496 | 499 | ;-----------------------------------------------------------------; |
|
Line 497... | Line 500... | ||
497 | align 4 |
500 | align 4 |
498 | TCP_xmit_timer: |
501 | TCP_xmit_timer: |
Line 544... | Line 547... | ||
544 | @@: |
547 | @@: |
545 | ret |
548 | ret |
Line 546... | Line 549... | ||
546 | 549 | ||
547 | - | ||
548 | .no_rtt_yet: |
550 | |
549 | 551 | .no_rtt_yet: |
|
550 | push ecx |
552 | push ecx |
551 | mov ecx, eax |
553 | mov ecx, eax |
Line 557... | Line 559... | ||
557 | pop ecx |
559 | pop ecx |
Line 558... | Line 560... | ||
558 | 560 | ||
Line 559... | Line -... | ||
559 | ret |
- | |
560 | - | ||
- | 561 | ret |
|
- | 562 | ||
- | 563 | ||
- | 564 | ;-----------------------------------------------------------------; |
|
561 | 565 | ; ; |
|
562 | 566 | ; TCP_mss: Update maximum segment size ; |
|
- | 567 | ; ; |
|
- | 568 | ; IN: eax = max segment size ; |
|
- | 569 | ; ebx = socket ptr ; |
|
- | 570 | ; ; |
|
563 | 571 | ; OUT: / ; |
|
564 | ; eax = max segment size |
572 | ; ; |
Line 565... | Line 573... | ||
565 | ; ebx = socket ptr |
573 | ;-----------------------------------------------------------------; |
566 | align 4 |
574 | align 4 |
Line 575... | Line 583... | ||
575 | 583 | ||
Line 576... | Line -... | ||
576 | ret |
- | |
- | 584 | ret |
|
- | 585 | ||
- | 586 | ||
- | 587 | ||
577 | 588 | ;-----------------------------------------------------------------; |
|
578 | 589 | ; ; |
|
- | 590 | ; TCP_reassemble ; |
|
- | 591 | ; ; |
|
- | 592 | ; IN: ebx = socket ptr ; |
|
- | 593 | ; edx = segment ptr ; |
|
579 | 594 | ; ; |
|
580 | 595 | ; OUT: / ; |
|
Line 581... | Line -... | ||
581 | ; ebx = socket ptr |
- | |
- | 596 | ; ; |
|
Line 582... | Line 597... | ||
582 | ; edx = segment ptr |
597 | ;-----------------------------------------------------------------; |