diff options
author | Michael Tuexen <tuexen@fh-muenster.de> | 2020-04-20 14:25:01 +0200 |
---|---|---|
committer | Michael Tuexen <tuexen@fh-muenster.de> | 2020-04-20 14:25:01 +0200 |
commit | 579e6dea765c593acaa8525f6280b85868c866fc (patch) | |
tree | db64f2c43b0ceddd1245c6208f22d389d0278282 | |
parent | 6ce0f8fe7455e566a6833684ec5983547658856d (diff) | |
download | usrsctp-579e6dea765c593acaa8525f6280b85868c866fc.tar.gz |
Honor sysctl variable sctp_no_csum_on_loopback not only for SCTP/IPv4.
-rwxr-xr-x | usrsctplib/user_recv_thread.c | 9 |
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 { |