MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / CalcTcpCheckSum

Function CalcTcpCheckSum

src/dolphin/src/eth/ethsec.c:67–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65}
66
67static u16 CalcTcpCheckSum(IPHeader *ip, s32 len) {
68 s32 hlen;
69 u16 *p;
70 u32 sum = 0;
71
72#line 212
73 ASSERT(IP_MIN_HLEN + TCP_MIN_HLEN <= len);
74#line 215
75 ASSERT(ip->proto == IP_PROTO_TCP);
76
77 hlen = (ip->verlen & 0xf) << 2;
78 sum += ((u16*)ip->src)[0];
79 sum += ((u16*)ip->src)[1];
80 sum += ((u16*)ip->dst)[0];
81 sum += ((u16*)ip->dst)[1];
82 sum += 6;
83 sum += (u32)len - (u32)hlen;
84
85 p = (u16*)((u32)ip+hlen);
86 len = len - hlen;
87 while (len > 1) {
88 sum += *p++;
89 len -= 2;
90 }
91
92 if (len == 1) {
93 sum += *((u8*)p) * 0x100;
94 }
95
96 sum = (sum & 0xffff) + (sum >> 16);
97 sum = (sum & 0xffff) + (sum >> 16);
98 return sum ^ 0xffff;
99}
100
101static s32 GetTcpSegLen(IPHeader *ip, TCPHeader *tcp) {
102 s32 len = ip->len - ((ip->verlen & 0xf) << 2) - (s32)(((tcp->flag & 0xf000) >> 10));

Callers 2

VerifyPacketFunction · 0.85
__ETHPostSendFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected