BUG/MINOR: stktable: allow sc-set-gpt(0) from tcp-request connection
Both the documentation and original developer intents seem to suggest
that sc-set-gpt/sc-set-gpt0 actions should be available from
tcp-request connection.
Yet because it was probably forgotten when expr support was added to
sc-set-gpt0 in 0d7712dff0 ("MINOR: stick-table: allow sc-set-gpt0 to
set value from an expression") it doesn't work and will report this
kind of errors:
"internal error, unexpected rule->from=0, please report this bug!"
Fixing the code to comply with the documentation and the expected
behavior.
This must be backported to every stable versions.
[for < 2.5, as only sc-set-gpt0 existed back then, the patch must be
manually applied to skip irrelevant parts]
(cherry picked from commit 6c79309fda89d7543cd8686ef6206c5cac4e36d9)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit e18fe56314e60c07e7439d8369c5bee0c2f21800)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit d04bdaf3570b981050dffa307e8f1db53e353ad3)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit aa3326b2fa648da457837f5ca91cb507957a0d36)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/stick_table.c b/src/stick_table.c
index 851ae10..cfbb7d8 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -2203,6 +2203,7 @@
value = (unsigned int)(rule->arg.gpt.value);
else {
switch (rule->from) {
+ case ACT_F_TCP_REQ_CON: smp_opt_dir = SMP_OPT_DIR_REQ; break;
case ACT_F_TCP_REQ_SES: smp_opt_dir = SMP_OPT_DIR_REQ; break;
case ACT_F_TCP_REQ_CNT: smp_opt_dir = SMP_OPT_DIR_REQ; break;
case ACT_F_TCP_RES_CNT: smp_opt_dir = SMP_OPT_DIR_RES; break;
@@ -2293,6 +2294,7 @@
return ACT_RET_PRS_ERR;
switch (rule->from) {
+ case ACT_F_TCP_REQ_CON: smp_val = SMP_VAL_FE_CON_ACC; break;
case ACT_F_TCP_REQ_SES: smp_val = SMP_VAL_FE_SES_ACC; break;
case ACT_F_TCP_REQ_CNT: smp_val = SMP_VAL_FE_REQ_CNT; break;
case ACT_F_TCP_RES_CNT: smp_val = SMP_VAL_BE_RES_CNT; break;