mirror of
https://github.com/bol-van/zapret.git
synced 2024-12-02 14:40:52 +03:00
tcp checksum big endian fix
This commit is contained in:
parent
f28b87331a
commit
873be59496
@ -57,3 +57,7 @@ tpws : added split-pos option. split every message at specified position
|
|||||||
v11
|
v11
|
||||||
|
|
||||||
ipset : scripts optimizations
|
ipset : scripts optimizations
|
||||||
|
|
||||||
|
v12
|
||||||
|
|
||||||
|
nfqws : fix wrong tcp checksum calculation if packet length is odd and platform is big-endian
|
||||||
|
12
nfq/nfqws.c
12
nfq/nfqws.c
@ -125,8 +125,12 @@ uint16_t tcp_checksum(const void *buff, int len, in_addr_t src_addr, in_addr_t d
|
|||||||
len -= 2;
|
len -= 2;
|
||||||
}
|
}
|
||||||
if ( len & 1 )
|
if ( len & 1 )
|
||||||
|
{
|
||||||
// Add the padding if the packet lenght is odd
|
// Add the padding if the packet lenght is odd
|
||||||
sum += *((uint8_t *)buf);
|
uint16_t v=0;
|
||||||
|
*(uint8_t *)&v = *((uint8_t *)buf);
|
||||||
|
sum += v;
|
||||||
|
}
|
||||||
|
|
||||||
// Add the pseudo-header
|
// Add the pseudo-header
|
||||||
sum += *(ip_src++);
|
sum += *(ip_src++);
|
||||||
@ -165,8 +169,12 @@ uint16_t tcp6_checksum(const void *buff, int len, const struct in6_addr *src_add
|
|||||||
len -= 2;
|
len -= 2;
|
||||||
}
|
}
|
||||||
if ( len & 1 )
|
if ( len & 1 )
|
||||||
|
{
|
||||||
// Add the padding if the packet lenght is odd
|
// Add the padding if the packet lenght is odd
|
||||||
sum += *((uint8_t *)buf);
|
uint16_t v=0;
|
||||||
|
*(uint8_t *)&v = *((uint8_t *)buf);
|
||||||
|
sum += v;
|
||||||
|
}
|
||||||
|
|
||||||
// Add the pseudo-header
|
// Add the pseudo-header
|
||||||
sum += *(ip_src++);
|
sum += *(ip_src++);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
zapret v.11
|
zapret v.12
|
||||||
|
|
||||||
Для чего это надо
|
Для чего это надо
|
||||||
-----------------
|
-----------------
|
||||||
|
Loading…
Reference in New Issue
Block a user