From 346f76ddbdc9d98ef87b700496ea325cce6f4040 Mon Sep 17 00:00:00 2001 From: Krzysztof Piotr Oledzki Date: Tue, 12 Jan 2010 21:59:30 +0100 Subject: [PATCH] [MINOR] acl: add fe_id/so_id to match frontend's and socket's id --- doc/configuration.txt | 7 +++++++ src/client.c | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/doc/configuration.txt b/doc/configuration.txt index 6ca20b9a6..9d9807485 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -5604,6 +5604,13 @@ fe_conn(frontend) considered saturated. See also the "dst_conn", "be_conn" and "fe_sess_rate" criteria. +fe_id + Applies to the fronted's id. Can be used in backends to check from which + frontend it was called. + +so_id + Applies to the socket's id. Useful in frontends with many bind keywords. + be_conn be_conn(frontend) Applies to the number of currently established connections on the backend, diff --git a/src/client.c b/src/client.c index 16ee2d09f..458bb1c2c 100644 --- a/src/client.c +++ b/src/client.c @@ -610,6 +610,30 @@ acl_fetch_dconn(struct proxy *px, struct session *l4, void *l7, int dir, return 1; } +/* set test->i to the id of the frontend */ +static int +acl_fetch_fe_id(struct proxy *px, struct session *l4, void *l7, int dir, + struct acl_expr *expr, struct acl_test *test) { + + test->flags = ACL_TEST_F_READ_ONLY; + + test->i = l4->fe->uuid; + + return 1; +} + +/* set test->i to the id of the socket (listener) */ +static int +acl_fetch_so_id(struct proxy *px, struct session *l4, void *l7, int dir, + struct acl_expr *expr, struct acl_test *test) { + + test->flags = ACL_TEST_F_READ_ONLY; + + test->i = l4->listener->luid; + + return 1; +} + /* Note: must not be declared as its list will be overwritten */ static struct acl_kw_list acl_kws = {{ },{ @@ -621,6 +645,8 @@ static struct acl_kw_list acl_kws = {{ },{ { "src_limit", acl_parse_int, acl_fetch_sconn, acl_match_int }, #endif { "dst_conn", acl_parse_int, acl_fetch_dconn, acl_match_int, ACL_USE_NOTHING }, + { "fe_id", acl_parse_int, acl_fetch_fe_id, acl_match_int, ACL_USE_NOTHING }, + { "so_id", acl_parse_int, acl_fetch_so_id, acl_match_int, ACL_USE_NOTHING }, { NULL, NULL, NULL, NULL }, }};