[ovs-dev] [PATCH] conntrack: fix sport selection for dnat case

wenxu at ucloud.cn wenxu at ucloud.cn
Fri Aug 27 05:52:35 UTC 2021


From: wenxu <wenxu at ucloud.cn>

For DNAT case the sport should never modified.

Fixes: 61e48c2d1db2 ("conntrack: Handle SNAT with all-zero IP address")
Signed-off-by: wenxu <wenxu at ucloud.cn>
---
 lib/conntrack.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/conntrack.c b/lib/conntrack.c
index 551c206..0b27c67 100644
--- a/lib/conntrack.c
+++ b/lib/conntrack.c
@@ -2258,11 +2258,12 @@ set_sport_range(struct nat_action_info_t *ni, const struct conn_key *k,
                 uint32_t hash, uint16_t *curr, uint16_t *min,
                 uint16_t *max)
 {
-    if (((ni->nat_action & NAT_ACTION_SNAT_ALL) == NAT_ACTION_SRC) ||
-        ((ni->nat_action & NAT_ACTION_DST))) {
+    if ((ni->nat_action & NAT_ACTION_SNAT_ALL) == NAT_ACTION_SRC) {
         *curr = ntohs(k->src.port);
         *min = MIN_NAT_EPHEMERAL_PORT;
-        *max = MAX_NAT_EPHEMERAL_PORT;
+    } else if (ni->nat_action & NAT_ACTION_DST) {
+        *curr = ntohs(k->src.port);
+        *min = *max = *curr;
     } else {
         *min = ni->min_port;
         *max = ni->max_port;
-- 
1.8.3.1



More information about the dev mailing list