From a1174dce4654c6cfa6bd819e6b1019919770cc19 Mon Sep 17 00:00:00 2001 From: hidnplayr Date: Tue, 3 Apr 2012 18:26:53 +0000 Subject: [PATCH] Fixed bug in TCP_input.listen, clarified some of the debug output (net branch) git-svn-id: svn://kolibrios.org@2555 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/branches/net/network/ARP.inc | 17 ++++++++++------- kernel/branches/net/network/IPv4.inc | 16 ++++++++++++---- kernel/branches/net/network/tcp_input.inc | 6 ++---- kernel/branches/net/network/tcp_output.inc | 6 +++--- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/kernel/branches/net/network/ARP.inc b/kernel/branches/net/network/ARP.inc index 30e47bb815..e59dfa4923 100644 --- a/kernel/branches/net/network/ARP.inc +++ b/kernel/branches/net/network/ARP.inc @@ -162,7 +162,7 @@ local .exit align 4 ARP_input: - DEBUGF 1,"ARP_Handler - start\n" + DEBUGF 1,"ARP_input - start\n" cmp ecx, sizeof.ARP_header jb .exit @@ -172,7 +172,7 @@ ARP_input: cmp [edx + ARP_header.Opcode], ARP_REP_OPCODE jne .maybe_request - DEBUGF 1,"ARP_Handler - it's a reply packet from %u.%u.%u.%u\n",\ + DEBUGF 1,"ARP_input - it's a reply packet from %u.%u.%u.%u\n",\ [edx + ARP_header.SenderIP]:1, [edx + ARP_header.SenderIP+1]:1, [edx + ARP_header.SenderIP+2]:1, [edx + ARP_header.SenderIP+3]:1 mov ecx, [NumARP] @@ -192,12 +192,12 @@ ARP_input: jmp .exit .gotit: - DEBUGF 1,"ARP_Handler - found matching entry\n" + DEBUGF 1,"ARP_input - found matching entry\n" cmp [esi + ARP_entry.TTL], ARP_STATIC_ENTRY ; if it is a static entry, dont touch it je .exit - DEBUGF 1,"ARP_Handler - updating entry\n" + DEBUGF 1,"ARP_input - updating entry\n" mov [esi + ARP_entry.Status], ARP_VALID_MAPPING mov [esi + ARP_entry.TTL], ARP_ENTRY_TTL @@ -262,7 +262,7 @@ ARP_input: ; mov ax , ETHER_ARP ; stosw - DEBUGF 1,"ARP_Handler - Sending reply \n" + DEBUGF 1,"ARP_input - Sending reply \n" call [ebx + NET_DEVICE.transmit] ret @@ -271,7 +271,7 @@ ARP_input: call kernel_free add esp, 4 ; pop (balance stack) - DEBUGF 1,"ARP_Handler - exiting\n" + DEBUGF 1,"ARP_input - exiting\n" ret @@ -447,7 +447,10 @@ ARP_del_entry: align 4 ARP_IP_to_MAC: - DEBUGF 1,"ARP_IP_to_MAC\n" + DEBUGF 1,"ARP_IP_to_MAC: %u.%u", al, ah + rol eax, 16 + DEBUGF 1,".%u.%u\n", al, ah + rol eax, 16 cmp eax, 0xffffffff je .broadcast diff --git a/kernel/branches/net/network/IPv4.inc b/kernel/branches/net/network/IPv4.inc index 01f7fbfdf0..3c18784cfd 100644 --- a/kernel/branches/net/network/IPv4.inc +++ b/kernel/branches/net/network/IPv4.inc @@ -621,7 +621,7 @@ IPv4_output: add ecx, sizeof.IPv4_header mov di , ETHER_IPv4 call ETH_output - jz .error + jz .eth_error add esp, 6 ; pop the mac @@ -644,12 +644,20 @@ IPv4_output: DEBUGF 1,"IPv4 Packet for device %x created successfully\n", ebx ret - .error: - add esp, 6 + .eth_error: + DEBUGF 1,"IPv4_output: ethernet error\n" + add esp, 6+2+4 + sub edi, edi + ret + .arp_error: + DEBUGF 1,"IPv4_output: ARP error (0x%x)\n", eax add esp, 4+4+4+2+2 + sub edi, edi + ret + .too_large: - DEBUGF 1,"IPv4_output: Failed\n" + DEBUGF 1,"IPv4_output: error: Packet too large!\n" sub edi, edi ret diff --git a/kernel/branches/net/network/tcp_input.inc b/kernel/branches/net/network/tcp_input.inc index 4ddcc025d1..be70c7c0db 100644 --- a/kernel/branches/net/network/tcp_input.inc +++ b/kernel/branches/net/network/tcp_input.inc @@ -187,8 +187,6 @@ TCP_input: pop [eax + TCP_SOCKET.LocalPort] mov [eax + TCP_SOCKET.t_state], TCPS_LISTEN - -; mov [ebx + SOCKET.lock], 0 mov ebx, eax jmp .LISTEN @@ -462,7 +460,7 @@ TCP_input: ; Passive Open align 4 -.LISTEN: + .LISTEN: DEBUGF 1,"TCP state: listen\n" @@ -477,7 +475,7 @@ align 4 ;;; TODO: check if it's a broadcast or multicast, and drop if so - push dword [edi + 4] ; Ipv4 destination addres + push dword [edi] ; Ipv4 source addres pop [ebx + IP_SOCKET.RemoteIP] push [edx + TCP_header.SourcePort] diff --git a/kernel/branches/net/network/tcp_output.inc b/kernel/branches/net/network/tcp_output.inc index ff78c8aa4f..71f8fb49e5 100644 --- a/kernel/branches/net/network/tcp_output.inc +++ b/kernel/branches/net/network/tcp_output.inc @@ -424,7 +424,7 @@ TCP_output: mov eax, [eax + IP_SOCKET.RemoteIP] ; dest ip mov di, IP_PROTO_TCP shl 8 + 128 call IPv4_output - jz .fail + jz .ip_error ;----------------------------------------- ; Move TCP header from stack to TCP packet @@ -527,7 +527,7 @@ TCP_output: ret - .fail: + .ip_error: pop ecx add esp, ecx pop eax @@ -538,7 +538,7 @@ TCP_output: call mutex_unlock popa - DEBUGF 1,"TCP_output: failed\n" + DEBUGF 1,"TCP_output: IP error\n" ret