Rev 1543 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1543 | Rev 1716 | ||
---|---|---|---|
Line 14... | Line 14... | ||
14 | ;; GNU GENERAL PUBLIC LICENSE ;; |
14 | ;; GNU GENERAL PUBLIC LICENSE ;; |
15 | ;; Version 2, June 1991 ;; |
15 | ;; Version 2, June 1991 ;; |
16 | ;; ;; |
16 | ;; ;; |
17 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
17 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 18... | Line 18... | ||
18 | 18 | ||
Line 19... | Line 19... | ||
19 | $Revision: 1543 $ |
19 | $Revision: 1716 $ |
20 | 20 | ||
21 | ; Socket states |
21 | ; Socket states |
22 | TCB_CLOSED equ 0 |
22 | TCB_CLOSED equ 0 |
Line 777... | Line 777... | ||
777 | jz @f |
777 | jz @f |
Line 778... | Line 778... | ||
778 | 778 | ||
779 | test [edx + TCP_segment.Flags], TH_ACK |
779 | test [edx + TCP_segment.Flags], TH_ACK |
Line 780... | Line 780... | ||
780 | jz .drop |
780 | jz .drop |
- | 781 | ||
Line 781... | Line 782... | ||
781 | 782 | mov ebx, ECONNREFUSED |
|
782 | ;tp = tcp_drop(tp, ECONNREFUSED) |
783 | call TCP_drop |
Line 783... | Line 784... | ||
783 | 784 | ||
Line 1061... | Line 1062... | ||
1061 | ; handle SYN-full and ACK-less segments |
1062 | ; handle SYN-full and ACK-less segments |
Line 1062... | Line 1063... | ||
1062 | 1063 | ||
1063 | test [edx + TCP_segment.Flags], TH_SYN |
1064 | test [edx + TCP_segment.Flags], TH_SYN |
Line 1064... | Line 1065... | ||
1064 | jz @f |
1065 | jz @f |
- | 1066 | ||
- | 1067 | mov ebx, ECONNRESET |
|
1065 | 1068 | call TCP_drop |
|
Line 1066... | Line 1069... | ||
1066 | ;;; tcp_drop ( ECONNRESET) |
1069 | |
1067 | jmp .drop_with_reset |
1070 | jmp .drop_with_reset |
1068 | 1071 | ||
Line 1962... | Line 1965... | ||
1962 | ;------------------------- |
1965 | ;------------------------- |
1963 | ; |
1966 | ; |
1964 | ; TCP_drop |
1967 | ; TCP_drop |
1965 | ; |
1968 | ; |
1966 | ; IN: eax = socket ptr |
1969 | ; IN: eax = socket ptr |
- | 1970 | ; ebx = error number |
|
1967 | ; |
1971 | ; |
1968 | ; OUT: / |
1972 | ; OUT: eax = socket ptr |
1969 | ; |
1973 | ; |
1970 | ;------------------------- |
1974 | ;------------------------- |
1971 | align 4 |
1975 | align 4 |
1972 | TCP_drop: |
1976 | TCP_drop: |
Line 1973... | Line 1977... | ||
1973 | 1977 | ||
Line 1974... | Line 1978... | ||
1974 | DEBUGF 1,"TCP_drop\n" |
1978 | DEBUGF 1,"TCP_drop\n" |
1975 | 1979 | ||
Line 1976... | Line 1980... | ||
1976 | ; cmp [eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED |
1980 | cmp [eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED |
Line 1977... | Line 1981... | ||
1977 | ; jl .no_syn_received |
1981 | jl .no_syn_received |
Line -... | Line 1982... | ||
- | 1982 | ||
- | 1983 | mov [eax + TCP_SOCKET.t_state], TCB_CLOSED |
|
- | 1984 | ||
- | 1985 | call TCP_output |
|
1978 | 1986 | ||
- | 1987 | ;;; TODO: update stats |
|
- | 1988 | ||
- | 1989 | jmp TCP_close |
|
- | 1990 | ||
- | 1991 | .no_syn_received: |
|
- | 1992 | ||
- | 1993 | ;;; TODO: update stats |
|
- | 1994 | ||
Line 1979... | Line -... | ||
1979 | mov [eax + TCP_SOCKET.t_state], TCB_CLOSED |
- | |
Line -... | Line 1995... | ||
- | 1995 | ;;; TODO: check if error code is "Connection timed out' and handle accordingly |
|
- | 1996 | ||
- | 1997 | mov [eax + SOCKET.errorcode], ebx |
|
- | 1998 | ||
- | 1999 | jmp TCP_close |
|
- | 2000 | ||
- | 2001 | ||
- | 2002 | ;------------------------- |
|
- | 2003 | ; |
|
- | 2004 | ; TCP_close |
|
- | 2005 | ; |
|
- | 2006 | ; IN: eax = socket ptr |
|
- | 2007 | ; OUT: eax = socket ptr |
|
- | 2008 | ; |
|
- | 2009 | ;------------------------- |
|
- | 2010 | align 4 |
|
Line 1980... | Line 2011... | ||
1980 | 2011 | TCP_close: |