forked from KolibriOS/kolibrios
Looks like I uploaded wrong udp.inc in previous revision...
git-svn-id: svn://kolibrios.org@1484 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e4b0f6f30d
commit
9cbcb28cd1
@ -68,6 +68,10 @@ UDP_init:
|
||||
; pointer to device struct in ebx
|
||||
; UDP Packet size in ecx
|
||||
; pointer to UDP Packet in edx
|
||||
;
|
||||
; esi = ipv4 source address
|
||||
; edi = ipv4 dest address
|
||||
;
|
||||
; OUT: /
|
||||
;
|
||||
;-----------------------------------------------------------------
|
||||
@ -77,20 +81,22 @@ UDP_handler:
|
||||
DEBUGF 1,"UDP_Handler, checksum:%x, size:%u\n", [edx+UDP_Packet.Checksum]:4, ecx
|
||||
|
||||
; First validate, checksum:
|
||||
cmp [edx + UDP_Packet.Checksum], 0
|
||||
jz .no_checksum
|
||||
cmp [edx + UDP_Packet.Checksum], 0
|
||||
jz .no_checksum
|
||||
|
||||
xchg edi, esi ; save ipv4 source address so we can look it up later
|
||||
|
||||
push edx
|
||||
|
||||
push esi
|
||||
push edi
|
||||
mov esi, edx
|
||||
call UDP_checksum
|
||||
call UDP_checksum ; this destroys edx, ecx and esi (but not edi! :)
|
||||
|
||||
pop edx
|
||||
|
||||
cmp [edx + UDP_Packet.Checksum], 0
|
||||
jnz .checksum_mismatch
|
||||
cmp [edx + UDP_Packet.Checksum], 0
|
||||
jnz .checksum_mismatch
|
||||
|
||||
.no_checksum:
|
||||
DEBUGF 1,"UDP Checksum is correct\n"
|
||||
@ -122,9 +128,7 @@ UDP_handler:
|
||||
cmp [eax + SOCKET_head.end + IPv4_SOCKET.RemoteIP], 0xffffffff
|
||||
je .ok1
|
||||
|
||||
; mov esi, [esp] ; start of data (ethernet header)
|
||||
; mov esi, [esi + ETH_FRAME.Data + IPv4_Packet.SourceAddress] ; get the Source address from the IP Packet FIXME
|
||||
cmp [eax + SOCKET_head.end + IPv4_SOCKET.RemoteIP], edi ;esi
|
||||
cmp [eax + SOCKET_head.end + IPv4_SOCKET.RemoteIP], edi ; edi is IPv4 destination address
|
||||
jne .try_more ; Quit if the source IP is not valid, check for more sockets with this IP/PORT combination
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user