From b48dcddc6c724a66b1b5e36cbc36e67a7a9884a4 Mon Sep 17 00:00:00 2001 From: babarosaM33 Date: Fri, 17 Jan 2020 13:10:47 +0800 Subject: [PATCH] server: fix setTosFromConnmark typo Server made a connection to remote, remote replied with that connection. nf_conntrack module would not check reply-dst and reply-src by default. more information please refer to https://www.spinics.net/lists/netfilter/msg57842.html As a result, src and dst should be swapped to make nf_conntrack find the connection. --- src/server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server.c b/src/server.c index 49a474c5..62237194 100644 --- a/src/server.c +++ b/src/server.c @@ -654,10 +654,10 @@ setTosFromConnmark(remote_t *remote, server_t *server) socklen_t len; struct sockaddr_storage sin; len = sizeof(sin); - if (getsockname(remote->fd, (struct sockaddr *)&sin, &len) == 0) { + if (getpeername(remote->fd, (struct sockaddr *)&sin, &len) == 0) { struct sockaddr_storage from_addr; len = sizeof from_addr; - if (getpeername(remote->fd, (struct sockaddr *)&from_addr, &len) == 0) { + if (getsockname(remote->fd, (struct sockaddr *)&from_addr, &len) == 0) { if ((server->tracker = (struct dscptracker *)ss_malloc(sizeof(struct dscptracker)))) { if ((server->tracker->ct = nfct_new())) { // Build conntrack query SELECT