16,7 → 16,6 |
;; ;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
|
$Revision: 2924 $ |
|
; ICMP types & codes |
168,9 → 167,6 |
|
mov esi, [esp] ; Start of buffer |
|
cmp dword[edi + 4], 1 shl 24 + 127 |
je .loopback |
|
; Update stats (and validate device ptr) |
call NET_ptr_to_num |
cmp edi,-1 |
178,6 → 174,11 |
inc [ICMP_PACKETS_RX + 4*edi] |
inc [ICMP_PACKETS_TX + 4*edi] |
|
cmp ebx, LOOPBACK_DEVICE |
je .loopback |
|
; FIXME: dont assume device is an ethernet device! |
|
; exchange dest and source address in IP header |
; exchange dest and source MAC in ETH header |
push dword [esi + ETH_header.DstMAC] |
188,10 → 189,10 |
push word [esi + ETH_header.SrcMAC + 4] |
pop word [esi + ETH_header.DstMAC + 4] |
pop word [esi + ETH_header.SrcMAC + 4] |
add esi, sizeof.ETH_header-2 |
add esi, sizeof.ETH_header-4 |
|
.loopback: |
add esi, 2 |
add esi, 4 |
push [esi + IPv4_header.SourceAddress] |
push [esi + IPv4_header.DestinationAddress] |
pop [esi + IPv4_header.SourceAddress] |