If timestamp is not enabled in the synproxy object, an additional space will be print before the sack-perm flag. Before this patch: table inet t { synproxy s { mss 1460 wscale 8 sack-perm } } After this patch: table inet t { synproxy s { mss 1460 wscale 8 sack-perm } } Signed-off-by: Zhongqiu Duan <dzq.aishenghu0@xxxxxxxxx> --- src/rule.c | 4 +++- tests/shell/testcases/json/single_flag | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rule.c b/src/rule.c index c0f7570e233c..af3dd39c69d0 100644 --- a/src/rule.c +++ b/src/rule.c @@ -1951,7 +1951,9 @@ static void obj_print_data(const struct obj *obj, } if (flags & (NF_SYNPROXY_OPT_TIMESTAMP | NF_SYNPROXY_OPT_SACK_PERM)) { nft_print(octx, "%s%s%s", opts->nl, opts->tab, opts->tab); - nft_print(octx, "%s %s", ts_str, sack_str); + nft_print(octx, "%s%s%s", ts_str, + flags & NF_SYNPROXY_OPT_TIMESTAMP ? " " : "", + sack_str); } nft_print(octx, "%s", opts->stmt_separator); } diff --git a/tests/shell/testcases/json/single_flag b/tests/shell/testcases/json/single_flag index f0a608ad8412..b8fd96170a33 100755 --- a/tests/shell/testcases/json/single_flag +++ b/tests/shell/testcases/json/single_flag @@ -157,13 +157,13 @@ STD_SYNPROXY_OBJ_1="table ip t { synproxy s { mss 1280 wscale 64 - sack-perm + sack-perm } }" JSON_SYNPROXY_OBJ_1='{"nftables": [{"table": {"family": "ip", "name": "t", "handle": 0}}, {"synproxy": {"family": "ip", "name": "s", "table": "t", "handle": 0, "mss": 1280, "wscale": 64, "flags": "sack-perm"}}]}' JSON_SYNPROXY_OBJ_1_EQUIV=$(sed 's/\("flags":\) \([^}]*\)/\1 [\2]/' <<< "$JSON_SYNPROXY_OBJ_1") -STD_SYNPROXY_OBJ_2=$(sed 's/ \(sack-perm\)/timestamp \1/' <<< "$STD_SYNPROXY_OBJ_1") +STD_SYNPROXY_OBJ_2=$(sed 's/\(sack-perm\)/timestamp \1/' <<< "$STD_SYNPROXY_OBJ_1") JSON_SYNPROXY_OBJ_2=$(sed 's/\("flags":\) \("sack-perm"\)/\1 ["timestamp", \2]/' <<< "$JSON_SYNPROXY_OBJ_1") back_n_forth "$STD_SYNPROXY_OBJ_1" "$JSON_SYNPROXY_OBJ_1" -- 2.43.0