Fix issue that TCP server will not response to SYN packet from TCP client in TCP6 module.

Signed-off-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Ouyang Qian <qian.ouyang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13606 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
tye1 2012-08-10 06:32:15 +00:00
parent f4184cbd9b
commit 9119637cb3
3 changed files with 13 additions and 4 deletions

View File

@ -1,7 +1,7 @@
/** @file /** @file
The implementation of a dispatch routine for processing TCP requests. The implementation of a dispatch routine for processing TCP requests.
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR> Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -334,6 +334,7 @@ TcpFlushPcb (
NetbufFreeList (&Tcb->SndQue); NetbufFreeList (&Tcb->SndQue);
NetbufFreeList (&Tcb->RcvQue); NetbufFreeList (&Tcb->RcvQue);
Tcb->State = TCP_CLOSED; Tcb->State = TCP_CLOSED;
Tcb->RemoteIpZero = FALSE;
} }
/** /**
@ -711,6 +712,10 @@ TcpConfigurePcb (
if (Sk->IpVersion == IP_VERSION_6) { if (Sk->IpVersion == IP_VERSION_6) {
Tcb->Tick = TCP6_REFRESH_NEIGHBOR_TICK; Tcb->Tick = TCP6_REFRESH_NEIGHBOR_TICK;
if (NetIp6IsUnspecifiedAddr (&Tcb->RemoteEnd.Ip.v6)) {
Tcb->RemoteIpZero = TRUE;
}
} }
TcpInsertTcb (Tcb); TcpInsertTcb (Tcb);

View File

@ -1,7 +1,7 @@
/** @file /** @file
Implementation of I/O interfaces between TCP and IpIoLib. Implementation of I/O interfaces between TCP and IpIoLib.
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR> Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -112,7 +112,9 @@ TcpSendIpPacket (
// It's IPv6 and this TCP segment belongs to a solid TCB, in such case // It's IPv6 and this TCP segment belongs to a solid TCB, in such case
// the destination address can't be overridden, so reset the Dest to NULL. // the destination address can't be overridden, so reset the Dest to NULL.
// //
Dest = NULL; if (!Tcb->RemoteIpZero) {
Dest = NULL;
}
} }
} }

View File

@ -1,7 +1,7 @@
/** @file /** @file
TCP protocol header file. TCP protocol header file.
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR> Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -335,6 +335,8 @@ struct _TCP_CONTROL_BLOCK {
UINT8 Ttl; UINT8 Ttl;
EFI_IPv4_ADDRESS SubnetMask; EFI_IPv4_ADDRESS SubnetMask;
BOOLEAN RemoteIpZero; ///< RemoteEnd.Ip is ZERO when configured.
IP_IO_IP_INFO *IpInfo; ///< Pointer reference to Ip used to send pkt IP_IO_IP_INFO *IpInfo; ///< Pointer reference to Ip used to send pkt
UINT32 Tick; ///< 1 tick = 200ms UINT32 Tick; ///< 1 tick = 200ms
}; };