Subversion Repositories Kolibri OS

Rev

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