diff mbox series

[ovs-dev,1/2] conntrack: restore the origin port for each round with new address

Message ID 1630470310-16283-1-git-send-email-wenxu@ucloud.cn
State Superseded
Headers show
Series [ovs-dev,1/2] conntrack: restore the origin port for each round with new address | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/apply-robot fail apply and check: fail

Commit Message

wenxu Sept. 1, 2021, 4:25 a.m. UTC
From: wenxu <wenxu@ucloud.cn>

It is better to choose the origin select port as current port
for each port search round with new address.

Signed-off-by: wenxu <wenxu@ucloud.cn>
---
 lib/conntrack.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

Comments

0-day Robot Sept. 27, 2021, 3:05 p.m. UTC | #1
Bleep bloop.  Greetings wenxu, I am a robot and I have tried out your patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


git-am:
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0001 conntrack: restore the origin port for each round with new address
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".


Patch skipped due to previous failure.

Please check this out.  If you feel there has been an error, please email aconole@redhat.com

Thanks,
0-day Robot
diff mbox series

Patch

diff --git a/lib/conntrack.c b/lib/conntrack.c
index 551c206..2d14205 100644
--- a/lib/conntrack.c
+++ b/lib/conntrack.c
@@ -2412,8 +2412,8 @@  nat_get_unique_tuple(struct conntrack *ct, const struct conn *conn,
     uint32_t hash = nat_range_hash(conn, ct->hash_basis);
     bool pat_proto = conn->key.nw_proto == IPPROTO_TCP ||
                      conn->key.nw_proto == IPPROTO_UDP;
-    uint16_t min_dport, max_dport, curr_dport;
-    uint16_t min_sport, max_sport, curr_sport;
+    uint16_t min_dport, max_dport, curr_dport, orig_dport;
+    uint16_t min_sport, max_sport, curr_sport, orig_sport;
 
     min_addr = conn->nat_info->min_addr;
     max_addr = conn->nat_info->max_addr;
@@ -2425,9 +2425,9 @@  nat_get_unique_tuple(struct conntrack *ct, const struct conn *conn,
      * we can stop once we reach it. */
     guard_addr = curr_addr;
 
-    set_sport_range(conn->nat_info, &conn->key, hash, &curr_sport,
+    set_sport_range(conn->nat_info, &conn->key, hash, &orig_sport,
                     &min_sport, &max_sport);
-    set_dport_range(conn->nat_info, &conn->key, hash, &curr_dport,
+    set_dport_range(conn->nat_info, &conn->key, hash, &orig_dport,
                     &min_dport, &max_dport);
 
 another_round:
@@ -2443,6 +2443,9 @@  another_round:
         goto next_addr;
     }
 
+    curr_sport = orig_sport;
+    curr_dport = orig_dport;
+
     FOR_EACH_PORT_IN_RANGE(curr_dport, min_dport, max_dport) {
         nat_conn->rev_key.src.port = htons(curr_dport);
         FOR_EACH_PORT_IN_RANGE(curr_sport, min_sport, max_sport) {