forked from KolibriOS/kolibrios
Small update in TCP code, stub for TCP_close
git-svn-id: svn://kolibrios.org@1716 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b0017d06ea
commit
d93ba1183b
@ -30,7 +30,7 @@ virtual at 0
|
|||||||
.Domain dd ? ; INET/UNIX/..
|
.Domain dd ? ; INET/UNIX/..
|
||||||
.Type dd ? ; RAW/STREAM/DGRAP
|
.Type dd ? ; RAW/STREAM/DGRAP
|
||||||
.Protocol dd ? ; ICMP/IPv4/ARP/TCP/UDP
|
.Protocol dd ? ; ICMP/IPv4/ARP/TCP/UDP
|
||||||
; .errorcode dd ?
|
.errorcode dd ?
|
||||||
|
|
||||||
.options dd ?
|
.options dd ?
|
||||||
.state dd ?
|
.state dd ?
|
||||||
|
@ -76,6 +76,14 @@ NET_TYPE_SLIP equ 2
|
|||||||
|
|
||||||
MAX_backlog equ 20 ; maximum backlog for stream sockets
|
MAX_backlog equ 20 ; maximum backlog for stream sockets
|
||||||
|
|
||||||
|
; Error Codes
|
||||||
|
ENOBUFS equ 55
|
||||||
|
ECONNREFUSED equ 61
|
||||||
|
ECONNRESET equ 52
|
||||||
|
ETIMEDOUT equ 60
|
||||||
|
ECONNABORTED equ 53
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual at 0
|
virtual at 0
|
||||||
|
|
||||||
|
@ -779,7 +779,8 @@ align 4
|
|||||||
test [edx + TCP_segment.Flags], TH_ACK
|
test [edx + TCP_segment.Flags], TH_ACK
|
||||||
jz .drop
|
jz .drop
|
||||||
|
|
||||||
;tp = tcp_drop(tp, ECONNREFUSED)
|
mov ebx, ECONNREFUSED
|
||||||
|
call TCP_drop
|
||||||
|
|
||||||
jmp .drop
|
jmp .drop
|
||||||
@@:
|
@@:
|
||||||
@ -1063,7 +1064,9 @@ align 4
|
|||||||
test [edx + TCP_segment.Flags], TH_SYN
|
test [edx + TCP_segment.Flags], TH_SYN
|
||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
;;; tcp_drop ( ECONNRESET)
|
mov ebx, ECONNRESET
|
||||||
|
call TCP_drop
|
||||||
|
|
||||||
jmp .drop_with_reset
|
jmp .drop_with_reset
|
||||||
|
|
||||||
test [edx + TCP_segment.Flags], TH_ACK
|
test [edx + TCP_segment.Flags], TH_ACK
|
||||||
@ -1964,8 +1967,9 @@ TCP_outflags:
|
|||||||
; TCP_drop
|
; TCP_drop
|
||||||
;
|
;
|
||||||
; IN: eax = socket ptr
|
; IN: eax = socket ptr
|
||||||
|
; ebx = error number
|
||||||
;
|
;
|
||||||
; OUT: /
|
; OUT: eax = socket ptr
|
||||||
;
|
;
|
||||||
;-------------------------
|
;-------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -1973,21 +1977,48 @@ TCP_drop:
|
|||||||
|
|
||||||
DEBUGF 1,"TCP_drop\n"
|
DEBUGF 1,"TCP_drop\n"
|
||||||
|
|
||||||
; cmp [eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED
|
cmp [eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED
|
||||||
; jl .no_syn_received
|
jl .no_syn_received
|
||||||
|
|
||||||
mov [eax + TCP_SOCKET.t_state], TCB_CLOSED
|
mov [eax + TCP_SOCKET.t_state], TCB_CLOSED
|
||||||
|
|
||||||
call TCP_output
|
call TCP_output
|
||||||
|
|
||||||
; .no_syn_received:
|
;;; TODO: update stats
|
||||||
|
|
||||||
|
jmp TCP_close
|
||||||
|
|
||||||
|
.no_syn_received:
|
||||||
|
|
||||||
|
;;; TODO: update stats
|
||||||
|
|
||||||
|
;;; TODO: check if error code is "Connection timed out' and handle accordingly
|
||||||
|
|
||||||
|
mov [eax + SOCKET.errorcode], ebx
|
||||||
|
|
||||||
|
jmp TCP_close
|
||||||
|
|
||||||
|
|
||||||
|
;-------------------------
|
||||||
|
;
|
||||||
|
; TCP_close
|
||||||
|
;
|
||||||
|
; IN: eax = socket ptr
|
||||||
|
; OUT: eax = socket ptr
|
||||||
|
;
|
||||||
|
;-------------------------
|
||||||
|
align 4
|
||||||
|
TCP_close:
|
||||||
|
|
||||||
|
;;; TODO: update RTT and mean deviation
|
||||||
|
;;; TODO: update slow start threshold
|
||||||
|
;;; TODO: release connection resources
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
;
|
;
|
||||||
; The easy way to send an ACK/RST/keepalive segment
|
; The easy way to send an ACK/RST/keepalive segment
|
||||||
|
Loading…
Reference in New Issue
Block a user