Signed-off-by: Marcelo Ricardo Leitner <mleit...@redhat.com> --- include/uapi/linux/tc_act/tc_ct.h | 1 + tc/m_ct.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/tc_act/tc_ct.h b/include/uapi/linux/tc_act/tc_ct.h index 37b95cda1dedd283b0244a03a20860ba22966dfa..009e53ee83fb3125bc5c4ca86954af3bf6a0287a 100644 --- a/include/uapi/linux/tc_act/tc_ct.h +++ b/include/uapi/linux/tc_act/tc_ct.h @@ -25,6 +25,7 @@ enum { enum { TC_CT_COMMIT, + TC_CT_FORCE, __TC_CT_MAX }; #define TC_CT_MAX (__TC_CT_MAX - 1) diff --git a/tc/m_ct.c b/tc/m_ct.c index 0e9b20edab8c870f93657d43bb5e72c13e9b6bd4..c3c1a66848ae52c4522ac7e07822febf2b52e5f1 100644 --- a/tc/m_ct.c +++ b/tc/m_ct.c @@ -27,7 +27,7 @@ static void explain(void) { fprintf(stderr, - "Usage: ct [mark <mark>] [zone <zone>] [label <label>] [chain <chain>] [commit]\n" + "Usage: ct [mark <mark>] [zone <zone>] [label <label>] [chain <chain>] [commit [force]]\n" "where:\n"); } @@ -232,6 +232,13 @@ out: flags |= BIT(TC_CT_COMMIT); goto again; } + if (!matches(*argv, "force")) { + if (!(flags & BIT(TC_CT_COMMIT))) + goto help; + NEXT_ARG_FWD(); + flags |= BIT(TC_CT_FORCE); + goto again; + } /* if (!matches(*argv, "state")) { NEXT_ARG(); ct_parse_u8(*argv, @@ -253,6 +260,7 @@ out: if (!matches(*argv, "action")) goto out; if (!matches(*argv, "help")) { +help: usage(); } else { fprintf(stderr, "ct option not supported %s\n", *argv); -- 2.20.1