311,7 → 311,9 |
;------------------------- |
; TCP_respond.segment: |
; |
; IN: edx = segment ptr (a previously received segment) |
; IN: ebx = ptr to driver |
; edx = segment ptr (a previously received segment) |
; edi = ptr to dest and src IPv4 addresses |
; cl = flags |
|
align 4 |
322,14 → 324,14 |
;--------------------- |
; Create the IP packet |
|
push cx edx |
mov ebx, [edx - sizeof.IPv4_header + IPv4_header.SourceAddress] ;;;; FIXME: and what if ip packet had options?! |
mov eax, [edx - sizeof.IPv4_header + IPv4_header.DestinationAddress] ;;; |
push cx edx ebx |
mov ebx, [edi + 4] |
mov eax, [edi] |
mov ecx, sizeof.TCP_header |
mov di , IP_PROTO_TCP shl 8 + 128 |
call IPv4_output |
jz .error |
pop esi cx |
pop ebx esi cx |
|
push edx eax |
|