MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / TcpInput

Function TcpInput

NetworkPkg/TcpDxe/TcpInput.c:744–1628  ·  view source on GitHub ↗

Process the received TCP segments. @param[in] Nbuf Buffer that contains received a TCP segment without an IP header. @param[in] Src Source address of the segment, or the peer's IP address. @param[in] Dst Destination address of the segment, or the local end's IP address. @param[in] Version IP_VERSION_4 indicates IP4 stack. IP_VERSION_6 indica

Source from the content-addressed store, hash-verified

742
743**/
744INTN
745TcpInput (
746 IN NET_BUF *Nbuf,
747 IN EFI_IP_ADDRESS *Src,
748 IN EFI_IP_ADDRESS *Dst,
749 IN UINT8 Version
750 )
751{
752 TCP_CB *Tcb;
753 TCP_CB *Parent;
754 TCP_OPTION Option;
755 TCP_HEAD *Head;
756 INT32 Len;
757 TCP_SEG *Seg;
758 TCP_SEQNO Right;
759 TCP_SEQNO Urg;
760 UINT16 Checksum;
761 INT32 Usable;
762
763 ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6));
764
765 NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE);
766
767 Parent = NULL;
768 Tcb = NULL;
769
770 Head = (TCP_HEAD *) NetbufGetByte (Nbuf, 0, NULL);
771 ASSERT (Head != NULL);
772
773 if (Nbuf->TotalSize < sizeof (TCP_HEAD)) {
774 DEBUG ((EFI_D_NET, "TcpInput: received a malformed packet\n"));
775 goto DISCARD;
776 }
777
778 Len = Nbuf->TotalSize - (Head->HeadLen << 2);
779
780 if ((Head->HeadLen < 5) || (Len < 0)) {
781
782 DEBUG ((EFI_D_NET, "TcpInput: received a malformed packet\n"));
783
784 goto DISCARD;
785 }
786
787 if (Version == IP_VERSION_4) {
788 Checksum = NetPseudoHeadChecksum (Src->Addr[0], Dst->Addr[0], 6, 0);
789 } else {
790 Checksum = NetIp6PseudoHeadChecksum (&Src->v6, &Dst->v6, 6, 0);
791 }
792
793 Checksum = TcpChecksum (Nbuf, Checksum);
794
795 if (Checksum != 0) {
796 DEBUG ((EFI_D_ERROR, "TcpInput: received a checksum error packet\n"));
797 goto DISCARD;
798 }
799
800 if (TCP_FLG_ON (Head->Flag, TCP_FLG_SYN)) {
801 Len++;

Callers 1

TcpRxCallbackFunction · 0.85

Calls 15

TcpChecksumFunction · 0.85
TcpLocateTcbFunction · 0.85
TcpFormatNetbufFunction · 0.85
TcpParseOptionFunction · 0.85
TcpCloneTcbFunction · 0.85
TcpInitTcbLocalFunction · 0.85
TcpInitTcbPeerFunction · 0.85
TcpSetStateFunction · 0.85
TcpSetTimerFunction · 0.85
TcpTrimInWndFunction · 0.85
TcpClearTimerFunction · 0.85
TcpDeliverDataFunction · 0.85

Tested by

no test coverage detected