aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@fh-muenster.de>2020-04-20 14:25:01 +0200
committerMichael Tuexen <tuexen@fh-muenster.de>2020-04-20 14:25:01 +0200
commit579e6dea765c593acaa8525f6280b85868c866fc (patch)
treedb64f2c43b0ceddd1245c6208f22d389d0278282
parent6ce0f8fe7455e566a6833684ec5983547658856d (diff)
downloadusrsctp-579e6dea765c593acaa8525f6280b85868c866fc.tar.gz
Honor sysctl variable sctp_no_csum_on_loopback not only for SCTP/IPv4.
-rwxr-xr-xusrsctplib/user_recv_thread.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/usrsctplib/user_recv_thread.c b/usrsctplib/user_recv_thread.c
index ae5e517d..d9e4ac8c 100755
--- a/usrsctplib/user_recv_thread.c
+++ b/usrsctplib/user_recv_thread.c
@@ -591,7 +591,8 @@ recv_function_raw6(void *arg)
src.sin6_len = sizeof(struct sockaddr_in6);
#endif
src.sin6_port = sh->src_port;
- if (memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0) {
+ if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) &&
+ (memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0)) {
compute_crc = 0;
SCTP_STAT_INCR(sctps_recvhwcrc);
} else {
@@ -796,7 +797,8 @@ recv_function_udp(void *arg)
port = src.sin_port;
src.sin_port = sh->src_port;
dst.sin_port = sh->dest_port;
- if (src.sin_addr.s_addr == dst.sin_addr.s_addr) {
+ if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) &&
+ (src.sin_addr.s_addr == dst.sin_addr.s_addr)) {
compute_crc = 0;
SCTP_STAT_INCR(sctps_recvhwcrc);
} else {
@@ -983,7 +985,8 @@ recv_function_udp6(void *arg)
port = src.sin6_port;
src.sin6_port = sh->src_port;
dst.sin6_port = sh->dest_port;
- if ((memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0)) {
+ if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) &&
+ (memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0)) {
compute_crc = 0;
SCTP_STAT_INCR(sctps_recvhwcrc);
} else {