Rev 3589 | Rev 3725 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3589 | Rev 3626 | ||
---|---|---|---|
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 | - | ||
19 | 18 | ||
Line 20... | Line 19... | ||
20 | $Revision: 3589 $ |
19 | $Revision: 3626 $ |
Line 21... | Line 20... | ||
21 | 20 | ||
Line 98... | Line 97... | ||
98 | ends |
97 | ends |
Line 99... | Line 98... | ||
99 | 98 | ||
100 | 99 | ||
101 | align 4 |
100 | align 4 |
102 | uglobal |
101 | uglobal |
103 | ICMP_PACKETS_TX rd MAX_NET_DEVICES |
102 | ICMP_PACKETS_TX rd NET_DEVICES_MAX |
Line 104... | Line 103... | ||
104 | ICMP_PACKETS_RX rd MAX_NET_DEVICES |
103 | ICMP_PACKETS_RX rd NET_DEVICES_MAX |
Line 114... | Line 113... | ||
114 | 113 | ||
Line 115... | Line 114... | ||
115 | macro ICMP_init { |
114 | macro ICMP_init { |
116 | 115 | ||
117 | xor eax, eax |
116 | xor eax, eax |
118 | mov edi, ICMP_PACKETS_TX |
117 | mov edi, ICMP_PACKETS_TX |
Line 119... | Line 118... | ||
119 | mov ecx, 2*MAX_NET_DEVICES |
118 | mov ecx, 2*NET_DEVICES_MAX |
Line 166... | Line 165... | ||
166 | DEBUGF DEBUG_NETWORK_VERBOSE, "got echo request\n" |
165 | DEBUGF DEBUG_NETWORK_VERBOSE, "got echo request\n" |
167 | mov [edx + ICMP_header.Type], ICMP_ECHOREPLY ; Change Packet type to reply |
166 | mov [edx + ICMP_header.Type], ICMP_ECHOREPLY ; Change Packet type to reply |
Line 168... | Line 167... | ||
168 | 167 | ||
Line 169... | Line -... | ||
169 | mov esi, [esp] ; Start of buffer |
- | |
170 | - | ||
171 | cmp dword[edi + 4], 1 shl 24 + 127 |
- | |
172 | je .loopback |
168 | mov esi, [esp] ; Start of buffer |
173 | 169 | ||
174 | ; Update stats (and validate device ptr) |
170 | ; Update stats (and validate device ptr) |
175 | call NET_ptr_to_num |
171 | call NET_ptr_to_num |
176 | cmp edi,-1 |
172 | cmp edi, -1 |
177 | je .dump |
173 | je .dump |
Line -... | Line 174... | ||
- | 174 | inc [ICMP_PACKETS_RX + 4*edi] |
|
- | 175 | inc [ICMP_PACKETS_TX + 4*edi] |
|
- | 176 | ||
- | 177 | cmp ebx, LOOPBACK_DEVICE |
|
- | 178 | je .loopback |
|
178 | inc [ICMP_PACKETS_RX + 4*edi] |
179 | |
179 | inc [ICMP_PACKETS_TX + 4*edi] |
180 | ; FIXME: dont assume device is an ethernet device! |
180 | 181 | ||
181 | ; exchange dest and source address in IP header |
182 | ; exchange dest and source address in IP header |
182 | ; exchange dest and source MAC in ETH header |
183 | ; exchange dest and source MAC in ETH header |
183 | push dword [esi + ETH_header.DstMAC] |
184 | push dword [esi + ETH_header.DstMAC] |
184 | push dword [esi + ETH_header.SrcMAC] |
185 | push dword [esi + ETH_header.SrcMAC] |
185 | pop dword [esi + ETH_header.DstMAC] |
186 | pop dword [esi + ETH_header.DstMAC] |
186 | pop dword [esi + ETH_header.SrcMAC] |
187 | pop dword [esi + ETH_header.SrcMAC] |
187 | push word [esi + ETH_header.DstMAC + 4] |
188 | push word [esi + ETH_header.DstMAC + 4] |
188 | push word [esi + ETH_header.SrcMAC + 4] |
189 | push word [esi + ETH_header.SrcMAC + 4] |
Line 189... | Line 190... | ||
189 | pop word [esi + ETH_header.DstMAC + 4] |
190 | pop word [esi + ETH_header.DstMAC + 4] |
190 | pop word [esi + ETH_header.SrcMAC + 4] |
191 | pop word [esi + ETH_header.SrcMAC + 4] |
191 | add esi, sizeof.ETH_header-2 |
192 | add esi, sizeof.ETH_header-4 |
192 | 193 | ||
193 | .loopback: |
194 | .loopback: |
194 | add esi, 2 |
195 | add esi, 4 |