MEDIUM: counters: use sc0/sc1/sc2 instead of sc1/sc2/sc3
It was a bit inconsistent to have gpc start at 0 and sc start at 1, so make sc start at zero like gpc. No previous release was issued with sc3 anyway, so no existing setup should be affected.
This commit is contained in:
parent
5f0eee7faa
commit
be4a3eff34
@ -6421,8 +6421,8 @@ tcp-request connection <action> [{if | unless} <condition>]
|
|||||||
no | yes | yes | no
|
no | yes | yes | no
|
||||||
Arguments :
|
Arguments :
|
||||||
<action> defines the action to perform if the condition applies. Valid
|
<action> defines the action to perform if the condition applies. Valid
|
||||||
actions include : "accept", "reject", "track-sc1", "track-sc2",
|
actions include : "accept", "reject", "track-sc0", "track-sc1",
|
||||||
"track-sc3", and "expect-proxy". See below for more details.
|
"track-sc2", and "expect-proxy". See below for more details.
|
||||||
|
|
||||||
<condition> is a standard layer4-only ACL-based condition (see section 7).
|
<condition> is a standard layer4-only ACL-based condition (see section 7).
|
||||||
|
|
||||||
@ -6469,16 +6469,18 @@ tcp-request connection <action> [{if | unless} <condition>]
|
|||||||
of load balancers are passed through by traffic coming from public
|
of load balancers are passed through by traffic coming from public
|
||||||
hosts.
|
hosts.
|
||||||
|
|
||||||
- { track-sc1 | track-sc2 | track-sc3 } <key> [table <table>] :
|
- { track-sc0 | track-sc1 | track-sc2 } <key> [table <table>] :
|
||||||
enables tracking of sticky counters from current connection. These
|
enables tracking of sticky counters from current connection. These
|
||||||
rules do not stop evaluation and do not change default action. Two sets
|
rules do not stop evaluation and do not change default action. Two sets
|
||||||
of counters may be simultaneously tracked by the same connection. The
|
of counters may be simultaneously tracked by the same connection. The
|
||||||
first "track-sc1" rule executed enables tracking of the counters of the
|
first "track-sc0" rule executed enables tracking of the counters of the
|
||||||
specified table as the first set. The first "track-sc2" rule executed
|
specified table as the first set. The first "track-sc1" rule executed
|
||||||
enables tracking of the counters of the specified table as the second
|
enables tracking of the counters of the specified table as the second
|
||||||
set. It is a recommended practice to use the first set of counters for
|
set. The first "track-sc2" rule executed enables tracking of the
|
||||||
the per-frontend counters and the second set for the per-backend ones.
|
counters of the specified table as the third set. It is a recommended
|
||||||
But this is just a guideline, all may be used everywhere.
|
practice to use the first set of counters for the per-frontend counters
|
||||||
|
and the second set for the per-backend ones. But this is just a
|
||||||
|
guideline, all may be used everywhere.
|
||||||
|
|
||||||
These actions take one or two arguments :
|
These actions take one or two arguments :
|
||||||
<key> is mandatory, and is a pattern extraction rule as described
|
<key> is mandatory, and is a pattern extraction rule as described
|
||||||
@ -6519,15 +6521,15 @@ tcp-request connection <action> [{if | unless} <condition>]
|
|||||||
|
|
||||||
tcp-request connection accept if { src -f /etc/haproxy/whitelist.lst }
|
tcp-request connection accept if { src -f /etc/haproxy/whitelist.lst }
|
||||||
tcp-request connection reject if { src_conn_rate gt 10 }
|
tcp-request connection reject if { src_conn_rate gt 10 }
|
||||||
tcp-request connection track-sc1 src
|
tcp-request connection track-sc0 src
|
||||||
|
|
||||||
Example: accept all connections from white-listed hosts, count all other
|
Example: accept all connections from white-listed hosts, count all other
|
||||||
connections and reject too fast ones. This results in abusive ones
|
connections and reject too fast ones. This results in abusive ones
|
||||||
being blocked as long as they don't slow down.
|
being blocked as long as they don't slow down.
|
||||||
|
|
||||||
tcp-request connection accept if { src -f /etc/haproxy/whitelist.lst }
|
tcp-request connection accept if { src -f /etc/haproxy/whitelist.lst }
|
||||||
tcp-request connection track-sc1 src
|
tcp-request connection track-sc0 src
|
||||||
tcp-request connection reject if { sc1_conn_rate gt 10 }
|
tcp-request connection reject if { sc0_conn_rate gt 10 }
|
||||||
|
|
||||||
Example: enable the PROXY protocol for traffic coming from all known proxies.
|
Example: enable the PROXY protocol for traffic coming from all known proxies.
|
||||||
|
|
||||||
@ -6544,8 +6546,8 @@ tcp-request content <action> [{if | unless} <condition>]
|
|||||||
no | yes | yes | yes
|
no | yes | yes | yes
|
||||||
Arguments :
|
Arguments :
|
||||||
<action> defines the action to perform if the condition applies. Valid
|
<action> defines the action to perform if the condition applies. Valid
|
||||||
actions include : "accept", "reject", "track-sc1", "track-sc2",
|
actions include : "accept", "reject", "track-sc0", "track-sc1",
|
||||||
and "track-sc3". See "tcp-request connection" above for their
|
and "track-sc2". See "tcp-request connection" above for their
|
||||||
signification.
|
signification.
|
||||||
|
|
||||||
<condition> is a standard layer 4-7 ACL-based condition (see section 7).
|
<condition> is a standard layer 4-7 ACL-based condition (see section 7).
|
||||||
@ -6574,7 +6576,7 @@ tcp-request content <action> [{if | unless} <condition>]
|
|||||||
Three types of actions are supported :
|
Three types of actions are supported :
|
||||||
- accept :
|
- accept :
|
||||||
- reject :
|
- reject :
|
||||||
- { track-sc1 | track-sc2 | track-sc3 } <key> [table <table>]
|
- { track-sc0 | track-sc1 | track-sc2 } <key> [table <table>]
|
||||||
|
|
||||||
They have the same meaning as their counter-parts in "tcp-request connection"
|
They have the same meaning as their counter-parts in "tcp-request connection"
|
||||||
so please refer to that section for a complete description.
|
so please refer to that section for a complete description.
|
||||||
@ -6586,8 +6588,8 @@ tcp-request content <action> [{if | unless} <condition>]
|
|||||||
difference because tracking rules in "frontend" and "listen" section last for
|
difference because tracking rules in "frontend" and "listen" section last for
|
||||||
all the session, as opposed to the backend rules. The difference appears when
|
all the session, as opposed to the backend rules. The difference appears when
|
||||||
some layer 7 information is tracked. While there is nothing mandatory about
|
some layer 7 information is tracked. While there is nothing mandatory about
|
||||||
it, it is recommended to use the track-sc1 pointer to track per-frontend
|
it, it is recommended to use the track-sc0 pointer to track per-frontend
|
||||||
counters and track-sc2 to track per-backend counters, but this is just a
|
counters and track-sc1 to track per-backend counters, but this is just a
|
||||||
guideline and all counters may be used everywhere.
|
guideline and all counters may be used everywhere.
|
||||||
|
|
||||||
Note that the "if/unless" condition is optional. If no condition is set on
|
Note that the "if/unless" condition is optional. If no condition is set on
|
||||||
@ -6629,32 +6631,32 @@ tcp-request content <action> [{if | unless} <condition>]
|
|||||||
Example:
|
Example:
|
||||||
# Track the last IP from X-Forwarded-For
|
# Track the last IP from X-Forwarded-For
|
||||||
tcp-request inspect-delay 10s
|
tcp-request inspect-delay 10s
|
||||||
tcp-request content track-sc1 hdr(x-forwarded-for,-1) if HTTP
|
tcp-request content track-sc0 hdr(x-forwarded-for,-1) if HTTP
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
# track request counts per "base" (concatenation of Host+URL)
|
# track request counts per "base" (concatenation of Host+URL)
|
||||||
tcp-request inspect-delay 10s
|
tcp-request inspect-delay 10s
|
||||||
tcp-request content track-sc1 base table req-rate if HTTP
|
tcp-request content track-sc0 base table req-rate if HTTP
|
||||||
|
|
||||||
Example: track per-frontend and per-backend counters, block abusers at the
|
Example: track per-frontend and per-backend counters, block abusers at the
|
||||||
frontend when the backend detects abuse.
|
frontend when the backend detects abuse.
|
||||||
|
|
||||||
frontend http
|
frontend http
|
||||||
# Use General Purpose Couter 0 in SC1 as a global abuse counter
|
# Use General Purpose Couter 0 in SC0 as a global abuse counter
|
||||||
# protecting all our sites
|
# protecting all our sites
|
||||||
stick-table type ip size 1m expire 5m store gpc0
|
stick-table type ip size 1m expire 5m store gpc0
|
||||||
tcp-request connection track-sc1 src
|
tcp-request connection track-sc0 src
|
||||||
tcp-request connection reject if { sc1_get_gpc0 gt 0 }
|
tcp-request connection reject if { sc0_get_gpc0 gt 0 }
|
||||||
...
|
...
|
||||||
use_backend http_dynamic if { path_end .php }
|
use_backend http_dynamic if { path_end .php }
|
||||||
|
|
||||||
backend http_dynamic
|
backend http_dynamic
|
||||||
# if a source makes too fast requests to this dynamic site (tracked
|
# if a source makes too fast requests to this dynamic site (tracked
|
||||||
# by SC2), block it globally in the frontend.
|
# by SC1), block it globally in the frontend.
|
||||||
stick-table type ip size 1m expire 5m store http_req_rate(10s)
|
stick-table type ip size 1m expire 5m store http_req_rate(10s)
|
||||||
acl click_too_fast sc2_http_req_rate gt 10
|
acl click_too_fast sc1_http_req_rate gt 10
|
||||||
acl mark_as_abuser sc1_inc_gpc0 gt 0
|
acl mark_as_abuser sc0_inc_gpc0 gt 0
|
||||||
tcp-request content track-sc2 src
|
tcp-request content track-sc1 src
|
||||||
tcp-request content reject if click_too_fast mark_as_abuser
|
tcp-request content reject if click_too_fast mark_as_abuser
|
||||||
|
|
||||||
See section 7 about ACL usage.
|
See section 7 about ACL usage.
|
||||||
@ -8948,23 +8950,23 @@ fe_id : integer
|
|||||||
backends to check from which backend it was called, or to stick all users
|
backends to check from which backend it was called, or to stick all users
|
||||||
coming via a same frontend to the same server.
|
coming via a same frontend to the same server.
|
||||||
|
|
||||||
|
sc0_bytes_in_rate : integer
|
||||||
sc1_bytes_in_rate : integer
|
sc1_bytes_in_rate : integer
|
||||||
sc2_bytes_in_rate : integer
|
sc2_bytes_in_rate : integer
|
||||||
sc3_bytes_in_rate : integer
|
|
||||||
Returns the average client-to-server bytes rate from the currently tracked
|
Returns the average client-to-server bytes rate from the currently tracked
|
||||||
counters, measured in amount of bytes over the period configured in the
|
counters, measured in amount of bytes over the period configured in the
|
||||||
table. See also src_bytes_in_rate.
|
table. See also src_bytes_in_rate.
|
||||||
|
|
||||||
|
sc0_bytes_out_rate : integer
|
||||||
sc1_bytes_out_rate : integer
|
sc1_bytes_out_rate : integer
|
||||||
sc2_bytes_out_rate : integer
|
sc2_bytes_out_rate : integer
|
||||||
sc3_bytes_out_rate : integer
|
|
||||||
Returns the average server-to-client bytes rate from the currently tracked
|
Returns the average server-to-client bytes rate from the currently tracked
|
||||||
counters, measured in amount of bytes over the period configured in the
|
counters, measured in amount of bytes over the period configured in the
|
||||||
table. See also src_bytes_out_rate.
|
table. See also src_bytes_out_rate.
|
||||||
|
|
||||||
|
sc0_clr_gpc0 : integer
|
||||||
sc1_clr_gpc0 : integer
|
sc1_clr_gpc0 : integer
|
||||||
sc2_clr_gpc0 : integer
|
sc2_clr_gpc0 : integer
|
||||||
sc3_clr_gpc0 : integer
|
|
||||||
Clears the first General Purpose Counter associated to the currently tracked
|
Clears the first General Purpose Counter associated to the currently tracked
|
||||||
counters, and returns its previous value. Before the first invocation, the
|
counters, and returns its previous value. Before the first invocation, the
|
||||||
stored value is zero, so first invocation will always return zero. This is
|
stored value is zero, so first invocation will always return zero. This is
|
||||||
@ -8973,110 +8975,110 @@ sc3_clr_gpc0 : integer
|
|||||||
|
|
||||||
# block if 5 consecutive requests continue to come faster than 10 sess
|
# block if 5 consecutive requests continue to come faster than 10 sess
|
||||||
# per second, and reset the counter as soon as the traffic slows down.
|
# per second, and reset the counter as soon as the traffic slows down.
|
||||||
acl abuse sc1_http_req_rate gt 10
|
acl abuse sc0_http_req_rate gt 10
|
||||||
acl kill sc1_inc_gpc0 gt 5
|
acl kill sc0_inc_gpc0 gt 5
|
||||||
acl save sc1_clr_gpc0 ge 0
|
acl save sc0_clr_gpc0 ge 0
|
||||||
tcp-request connection accept if !abuse save
|
tcp-request connection accept if !abuse save
|
||||||
tcp-request connection reject if abuse kill
|
tcp-request connection reject if abuse kill
|
||||||
|
|
||||||
|
sc0_conn_cnt : integer
|
||||||
sc1_conn_cnt : integer
|
sc1_conn_cnt : integer
|
||||||
sc2_conn_cnt : integer
|
sc2_conn_cnt : integer
|
||||||
sc3_conn_cnt : integer
|
|
||||||
Returns the cumulated number of incoming connections from currently tracked
|
Returns the cumulated number of incoming connections from currently tracked
|
||||||
counters. See also src_conn_cnt.
|
counters. See also src_conn_cnt.
|
||||||
|
|
||||||
|
sc0_conn_cur : integer
|
||||||
sc1_conn_cur : integer
|
sc1_conn_cur : integer
|
||||||
sc2_conn_cur : integer
|
sc2_conn_cur : integer
|
||||||
sc3_conn_cur : integer
|
|
||||||
Returns the current amount of concurrent connections tracking the same
|
Returns the current amount of concurrent connections tracking the same
|
||||||
tracked counters. This number is automatically incremented when tracking
|
tracked counters. This number is automatically incremented when tracking
|
||||||
begins and decremented when tracking stops. See also src_conn_cur.
|
begins and decremented when tracking stops. See also src_conn_cur.
|
||||||
|
|
||||||
|
sc0_conn_rate : integer
|
||||||
sc1_conn_rate : integer
|
sc1_conn_rate : integer
|
||||||
sc2_conn_rate : integer
|
sc2_conn_rate : integer
|
||||||
sc3_conn_rate : integer
|
|
||||||
Returns the average connection rate from the currently tracked counters,
|
Returns the average connection rate from the currently tracked counters,
|
||||||
measured in amount of connections over the period configured in the table.
|
measured in amount of connections over the period configured in the table.
|
||||||
See also src_conn_rate.
|
See also src_conn_rate.
|
||||||
|
|
||||||
|
sc0_get_gpc0 : integer
|
||||||
sc1_get_gpc0 : integer
|
sc1_get_gpc0 : integer
|
||||||
sc2_get_gpc0 : integer
|
sc2_get_gpc0 : integer
|
||||||
sc3_get_gpc0 : integer
|
|
||||||
Returns the value of the first General Purpose Counter associated to the
|
Returns the value of the first General Purpose Counter associated to the
|
||||||
currently tracked counters. See also src_get_gpc0 and sc1/sc2/sc3_get_gpc0.
|
currently tracked counters. See also src_get_gpc0 and sc0/sc1/sc2_get_gpc0.
|
||||||
|
|
||||||
|
sc0_gpc0_rate : integer
|
||||||
sc1_gpc0_rate : integer
|
sc1_gpc0_rate : integer
|
||||||
sc2_gpc0_rate : integer
|
sc2_gpc0_rate : integer
|
||||||
sc3_gpc0_rate : integer
|
|
||||||
Returns the average increment rate of the first General Purpose Counter
|
Returns the average increment rate of the first General Purpose Counter
|
||||||
associated to the currently tracked counters. It reports the frequency
|
associated to the currently tracked counters. It reports the frequency
|
||||||
which the gpc0 counter was incremented over the configured period. See also
|
which the gpc0 counter was incremented over the configured period. See also
|
||||||
src_gpc0_rate, sc1/sc2/sc3_get_gpc0, and sc1/sc2/sc3_inc_gpc0. Note that the
|
src_gpc0_rate, sc0/sc1/sc2_get_gpc0, and sc0/sc1/sc2_inc_gpc0. Note that the
|
||||||
"gpc0_rate" counter must be stored in the stick-table for a value to be
|
"gpc0_rate" counter must be stored in the stick-table for a value to be
|
||||||
returned, as "gpc0" only holds the event count.
|
returned, as "gpc0" only holds the event count.
|
||||||
|
|
||||||
|
sc0_http_err_cnt : integer
|
||||||
sc1_http_err_cnt : integer
|
sc1_http_err_cnt : integer
|
||||||
sc2_http_err_cnt : integer
|
sc2_http_err_cnt : integer
|
||||||
sc3_http_err_cnt : integer
|
|
||||||
Returns the cumulated number of HTTP errors from the currently tracked
|
Returns the cumulated number of HTTP errors from the currently tracked
|
||||||
counters. This includes the both request errors and 4xx error responses.
|
counters. This includes the both request errors and 4xx error responses.
|
||||||
See also src_http_err_cnt.
|
See also src_http_err_cnt.
|
||||||
|
|
||||||
|
sc0_http_err_rate : integer
|
||||||
sc1_http_err_rate : integer
|
sc1_http_err_rate : integer
|
||||||
sc2_http_err_rate : integer
|
sc2_http_err_rate : integer
|
||||||
sc3_http_err_rate : integer
|
|
||||||
Returns the average rate of HTTP errors from the currently tracked counters,
|
Returns the average rate of HTTP errors from the currently tracked counters,
|
||||||
measured in amount of errors over the period configured in the table. This
|
measured in amount of errors over the period configured in the table. This
|
||||||
includes the both request errors and 4xx error responses. See also
|
includes the both request errors and 4xx error responses. See also
|
||||||
src_http_err_rate.
|
src_http_err_rate.
|
||||||
|
|
||||||
|
sc0_http_req_cnt : integer
|
||||||
sc1_http_req_cnt : integer
|
sc1_http_req_cnt : integer
|
||||||
sc2_http_req_cnt : integer
|
sc2_http_req_cnt : integer
|
||||||
sc3_http_req_cnt : integer
|
|
||||||
Returns the cumulated number of HTTP requests from the currently tracked
|
Returns the cumulated number of HTTP requests from the currently tracked
|
||||||
counters. This includes every started request, valid or not. See also
|
counters. This includes every started request, valid or not. See also
|
||||||
src_http_req_cnt.
|
src_http_req_cnt.
|
||||||
|
|
||||||
|
sc0_http_req_rate : integer
|
||||||
sc1_http_req_rate : integer
|
sc1_http_req_rate : integer
|
||||||
sc2_http_req_rate : integer
|
sc2_http_req_rate : integer
|
||||||
sc3_http_req_rate : integer
|
|
||||||
Returns the average rate of HTTP requests from the currently tracked
|
Returns the average rate of HTTP requests from the currently tracked
|
||||||
counters, measured in amount of requests over the period configured in
|
counters, measured in amount of requests over the period configured in
|
||||||
the table. This includes every started request, valid or not. See also
|
the table. This includes every started request, valid or not. See also
|
||||||
src_http_req_rate.
|
src_http_req_rate.
|
||||||
|
|
||||||
|
sc0_inc_gpc0 : integer
|
||||||
sc1_inc_gpc0 : integer
|
sc1_inc_gpc0 : integer
|
||||||
sc2_inc_gpc0 : integer
|
sc2_inc_gpc0 : integer
|
||||||
sc3_inc_gpc0 : integer
|
|
||||||
Increments the first General Purpose Counter associated to the currently
|
Increments the first General Purpose Counter associated to the currently
|
||||||
tracked counters, and returns its new value. Before the first invocation,
|
tracked counters, and returns its new value. Before the first invocation,
|
||||||
the stored value is zero, so first invocation will increase it to 1 and will
|
the stored value is zero, so first invocation will increase it to 1 and will
|
||||||
return 1. This is typically used as a second ACL in an expression in order
|
return 1. This is typically used as a second ACL in an expression in order
|
||||||
to mark a connection when a first ACL was verified :
|
to mark a connection when a first ACL was verified :
|
||||||
|
|
||||||
acl abuse sc1_http_req_rate gt 10
|
acl abuse sc0_http_req_rate gt 10
|
||||||
acl kill sc1_inc_gpc0 gt 0
|
acl kill sc0_inc_gpc0 gt 0
|
||||||
tcp-request connection reject if abuse kill
|
tcp-request connection reject if abuse kill
|
||||||
|
|
||||||
|
sc0_kbytes_in : integer
|
||||||
sc1_kbytes_in : integer
|
sc1_kbytes_in : integer
|
||||||
sc2_kbytes_in : integer
|
sc2_kbytes_in : integer
|
||||||
sc3_kbytes_in : integer
|
|
||||||
Returns the amount of client-to-server data from the currently tracked
|
Returns the amount of client-to-server data from the currently tracked
|
||||||
counters, measured in kilobytes over the period configured in the table. The
|
counters, measured in kilobytes over the period configured in the table. The
|
||||||
test is currently performed on 32-bit integers, which limits values to 4
|
test is currently performed on 32-bit integers, which limits values to 4
|
||||||
terabytes. See also src_kbytes_in.
|
terabytes. See also src_kbytes_in.
|
||||||
|
|
||||||
|
sc0_kbytes_out : integer
|
||||||
sc1_kbytes_out : integer
|
sc1_kbytes_out : integer
|
||||||
sc2_kbytes_out : integer
|
sc2_kbytes_out : integer
|
||||||
sc3_kbytes_out : integer
|
|
||||||
Returns the amount of server-to-client data from the currently tracked
|
Returns the amount of server-to-client data from the currently tracked
|
||||||
counters, measured in kilobytes over the period configured in the table. The
|
counters, measured in kilobytes over the period configured in the table. The
|
||||||
test is currently performed on 32-bit integers, which limits values to 4
|
test is currently performed on 32-bit integers, which limits values to 4
|
||||||
terabytes. See also src_kbytes_out.
|
terabytes. See also src_kbytes_out.
|
||||||
|
|
||||||
|
sc0_sess_cnt : integer
|
||||||
sc1_sess_cnt : integer
|
sc1_sess_cnt : integer
|
||||||
sc2_sess_cnt : integer
|
sc2_sess_cnt : integer
|
||||||
sc3_sess_cnt : integer
|
|
||||||
Returns the cumulated number of incoming connections that were transformed
|
Returns the cumulated number of incoming connections that were transformed
|
||||||
into sessions, which means that they were accepted by a "tcp-request
|
into sessions, which means that they were accepted by a "tcp-request
|
||||||
connection" rule, from the currently tracked counters. A backend may count
|
connection" rule, from the currently tracked counters. A backend may count
|
||||||
@ -9084,9 +9086,9 @@ sc3_sess_cnt : integer
|
|||||||
backend sessions if some HTTP keep-alive is performed over the connection
|
backend sessions if some HTTP keep-alive is performed over the connection
|
||||||
with the client. See also src_sess_cnt.
|
with the client. See also src_sess_cnt.
|
||||||
|
|
||||||
|
sc0_sess_rate : integer
|
||||||
sc1_sess_rate : integer
|
sc1_sess_rate : integer
|
||||||
sc2_sess_rate : integer
|
sc2_sess_rate : integer
|
||||||
sc3_sess_rate : integer
|
|
||||||
Returns the average session rate from the currently tracked counters,
|
Returns the average session rate from the currently tracked counters,
|
||||||
measured in amount of sessions over the period configured in the table. A
|
measured in amount of sessions over the period configured in the table. A
|
||||||
session is a connection that got past the early "tcp-request connection"
|
session is a connection that got past the early "tcp-request connection"
|
||||||
@ -9094,19 +9096,19 @@ sc3_sess_rate : integer
|
|||||||
connection could result in many backend sessions if some HTTP keep-alive is
|
connection could result in many backend sessions if some HTTP keep-alive is
|
||||||
performed over the connection with the client. See also src_sess_rate.
|
performed over the connection with the client. See also src_sess_rate.
|
||||||
|
|
||||||
|
sc0_tracked : boolean
|
||||||
sc1_tracked : boolean
|
sc1_tracked : boolean
|
||||||
sc2_tracked : boolean
|
sc2_tracked : boolean
|
||||||
sc3_tracked : boolean
|
|
||||||
Returns true if the designated session counter is currently being tracked by
|
Returns true if the designated session counter is currently being tracked by
|
||||||
the current session. This can be useful when deciding whether or not we want
|
the current session. This can be useful when deciding whether or not we want
|
||||||
to set some values in a header passed to the server.
|
to set some values in a header passed to the server.
|
||||||
|
|
||||||
|
sc0_trackers : integer
|
||||||
sc1_trackers : integer
|
sc1_trackers : integer
|
||||||
sc2_trackers : integer
|
sc2_trackers : integer
|
||||||
sc3_trackers : integer
|
|
||||||
Returns the current amount of concurrent connections tracking the same
|
Returns the current amount of concurrent connections tracking the same
|
||||||
tracked counters. This number is automatically incremented when tracking
|
tracked counters. This number is automatically incremented when tracking
|
||||||
begins and decremented when tracking stops. It differs from sc1_conn_cur in
|
begins and decremented when tracking stops. It differs from sc0_conn_cur in
|
||||||
that it does not rely on any stored information but on the table's reference
|
that it does not rely on any stored information but on the table's reference
|
||||||
count (the "use" value which is returned by "show table" on the CLI). This
|
count (the "use" value which is returned by "show table" on the CLI). This
|
||||||
may sometimes be more suited for layer7 tracking. It can be used to tell a
|
may sometimes be more suited for layer7 tracking. It can be used to tell a
|
||||||
@ -9131,13 +9133,13 @@ src_bytes_in_rate([<table>]) : integer
|
|||||||
Returns the average bytes rate from the incoming connection's source address
|
Returns the average bytes rate from the incoming connection's source address
|
||||||
in the current proxy's stick-table or in the designated stick-table, measured
|
in the current proxy's stick-table or in the designated stick-table, measured
|
||||||
in amount of bytes over the period configured in the table. If the address is
|
in amount of bytes over the period configured in the table. If the address is
|
||||||
not found, zero is returned. See also sc1/sc2/sc3_bytes_in_rate.
|
not found, zero is returned. See also sc0/sc1/sc2_bytes_in_rate.
|
||||||
|
|
||||||
src_bytes_out_rate([<table>]) : integer
|
src_bytes_out_rate([<table>]) : integer
|
||||||
Returns the average bytes rate to the incoming connection's source address in
|
Returns the average bytes rate to the incoming connection's source address in
|
||||||
the current proxy's stick-table or in the designated stick-table, measured in
|
the current proxy's stick-table or in the designated stick-table, measured in
|
||||||
amount of bytes over the period configured in the table. If the address is
|
amount of bytes over the period configured in the table. If the address is
|
||||||
not found, zero is returned. See also sc1/sc2/sc3_bytes_out_rate.
|
not found, zero is returned. See also sc0/sc1/sc2_bytes_out_rate.
|
||||||
|
|
||||||
src_clr_gpc0([<table>]) : integer
|
src_clr_gpc0([<table>]) : integer
|
||||||
Clears the first General Purpose Counter associated to the incoming
|
Clears the first General Purpose Counter associated to the incoming
|
||||||
@ -9159,32 +9161,32 @@ src_conn_cnt([<table>]) : integer
|
|||||||
Returns the cumulated number of connections initiated from the current
|
Returns the cumulated number of connections initiated from the current
|
||||||
incoming connection's source address in the current proxy's stick-table or in
|
incoming connection's source address in the current proxy's stick-table or in
|
||||||
the designated stick-table. If the address is not found, zero is returned.
|
the designated stick-table. If the address is not found, zero is returned.
|
||||||
See also sc1/sc2/sc3_conn_cnt.
|
See also sc0/sc1/sc2_conn_cnt.
|
||||||
|
|
||||||
src_conn_cur([<table>]) : integer
|
src_conn_cur([<table>]) : integer
|
||||||
Returns the current amount of concurrent connections initiated from the
|
Returns the current amount of concurrent connections initiated from the
|
||||||
current incoming connection's source address in the current proxy's
|
current incoming connection's source address in the current proxy's
|
||||||
stick-table or in the designated stick-table. If the address is not found,
|
stick-table or in the designated stick-table. If the address is not found,
|
||||||
zero is returned. See also sc1/sc2/sc3_conn_cur.
|
zero is returned. See also sc0/sc1/sc2_conn_cur.
|
||||||
|
|
||||||
src_conn_rate([<table>]) : integer
|
src_conn_rate([<table>]) : integer
|
||||||
Returns the average connection rate from the incoming connection's source
|
Returns the average connection rate from the incoming connection's source
|
||||||
address in the current proxy's stick-table or in the designated stick-table,
|
address in the current proxy's stick-table or in the designated stick-table,
|
||||||
measured in amount of connections over the period configured in the table. If
|
measured in amount of connections over the period configured in the table. If
|
||||||
the address is not found, zero is returned. See also sc1/sc2/sc3_conn_rate.
|
the address is not found, zero is returned. See also sc0/sc1/sc2_conn_rate.
|
||||||
|
|
||||||
src_get_gpc0([<table>]) : integer
|
src_get_gpc0([<table>]) : integer
|
||||||
Returns the value of the first General Purpose Counter associated to the
|
Returns the value of the first General Purpose Counter associated to the
|
||||||
incoming connection's source address in the current proxy's stick-table or in
|
incoming connection's source address in the current proxy's stick-table or in
|
||||||
the designated stick-table. If the address is not found, zero is returned.
|
the designated stick-table. If the address is not found, zero is returned.
|
||||||
See also sc1/sc2/sc3_get_gpc0 and src_inc_gpc0.
|
See also sc0/sc1/sc2_get_gpc0 and src_inc_gpc0.
|
||||||
|
|
||||||
src_gpc0_rate([<table>]) : integer
|
src_gpc0_rate([<table>]) : integer
|
||||||
Returns the average increment rate of the first General Purpose Counter
|
Returns the average increment rate of the first General Purpose Counter
|
||||||
associated to the incoming connection's source address in the current proxy's
|
associated to the incoming connection's source address in the current proxy's
|
||||||
stick-table or in the designated stick-table. It reports the frequency
|
stick-table or in the designated stick-table. It reports the frequency
|
||||||
which the gpc0 counter was incremented over the configured period. See also
|
which the gpc0 counter was incremented over the configured period. See also
|
||||||
sc1/sc2/sc3_gpc0_rate, src_get_gpc0, and sc1/sc2/sc3_inc_gpc0. Note that the
|
sc0/sc1/sc2_gpc0_rate, src_get_gpc0, and sc0/sc1/sc2_inc_gpc0. Note that the
|
||||||
"gpc0_rate" counter must be stored in the stick-table for a value to be
|
"gpc0_rate" counter must be stored in the stick-table for a value to be
|
||||||
returned, as "gpc0" only holds the event count.
|
returned, as "gpc0" only holds the event count.
|
||||||
|
|
||||||
@ -9192,7 +9194,7 @@ src_http_err_cnt([<table>]) : integer
|
|||||||
Returns the cumulated number of HTTP errors from the incoming connection's
|
Returns the cumulated number of HTTP errors from the incoming connection's
|
||||||
source address in the current proxy's stick-table or in the designated
|
source address in the current proxy's stick-table or in the designated
|
||||||
stick-table. This includes the both request errors and 4xx error responses.
|
stick-table. This includes the both request errors and 4xx error responses.
|
||||||
See also sc1/sc2/sc3_http_err_cnt. If the address is not found, zero is
|
See also sc0/sc1/sc2_http_err_cnt. If the address is not found, zero is
|
||||||
returned.
|
returned.
|
||||||
|
|
||||||
src_http_err_rate([<table>]) : integer
|
src_http_err_rate([<table>]) : integer
|
||||||
@ -9200,26 +9202,26 @@ src_http_err_rate([<table>]) : integer
|
|||||||
address in the current proxy's stick-table or in the designated stick-table,
|
address in the current proxy's stick-table or in the designated stick-table,
|
||||||
measured in amount of errors over the period configured in the table. This
|
measured in amount of errors over the period configured in the table. This
|
||||||
includes the both request errors and 4xx error responses. If the address is
|
includes the both request errors and 4xx error responses. If the address is
|
||||||
not found, zero is returned. See also sc1/sc2/sc3_http_err_rate.
|
not found, zero is returned. See also sc0/sc1/sc2_http_err_rate.
|
||||||
|
|
||||||
src_http_req_cnt([<table>]) : integer
|
src_http_req_cnt([<table>]) : integer
|
||||||
Returns the cumulated number of HTTP requests from the incoming connection's
|
Returns the cumulated number of HTTP requests from the incoming connection's
|
||||||
source address in the current proxy's stick-table or in the designated stick-
|
source address in the current proxy's stick-table or in the designated stick-
|
||||||
table. This includes every started request, valid or not. If the address is
|
table. This includes every started request, valid or not. If the address is
|
||||||
not found, zero is returned. See also sc1/sc2/sc3_http_req_cnt.
|
not found, zero is returned. See also sc0/sc1/sc2_http_req_cnt.
|
||||||
|
|
||||||
src_http_req_rate([<table>]) : integer
|
src_http_req_rate([<table>]) : integer
|
||||||
Returns the average rate of HTTP requests from the incoming connection's
|
Returns the average rate of HTTP requests from the incoming connection's
|
||||||
source address in the current proxy's stick-table or in the designated stick-
|
source address in the current proxy's stick-table or in the designated stick-
|
||||||
table, measured in amount of requests over the period configured in the
|
table, measured in amount of requests over the period configured in the
|
||||||
table. This includes every started request, valid or not. If the address is
|
table. This includes every started request, valid or not. If the address is
|
||||||
not found, zero is returned. See also sc1/sc2/sc3_http_req_rate.
|
not found, zero is returned. See also sc0/sc1/sc2_http_req_rate.
|
||||||
|
|
||||||
src_inc_gpc0([<table>]) : integer
|
src_inc_gpc0([<table>]) : integer
|
||||||
Increments the first General Purpose Counter associated to the incoming
|
Increments the first General Purpose Counter associated to the incoming
|
||||||
connection's source address in the current proxy's stick-table or in the
|
connection's source address in the current proxy's stick-table or in the
|
||||||
designated stick-table, and returns its new value. If the address is not
|
designated stick-table, and returns its new value. If the address is not
|
||||||
found, an entry is created and 1 is returned. See also sc1/sc3/sc3_inc_gpc0.
|
found, an entry is created and 1 is returned. See also sc0/sc2/sc2_inc_gpc0.
|
||||||
This is typically used as a second ACL in an expression in order to mark a
|
This is typically used as a second ACL in an expression in order to mark a
|
||||||
connection when a first ACL was verified :
|
connection when a first ACL was verified :
|
||||||
|
|
||||||
@ -9232,14 +9234,14 @@ src_kbytes_in([<table>]) : integer
|
|||||||
address in the current proxy's stick-table or in the designated stick-table,
|
address in the current proxy's stick-table or in the designated stick-table,
|
||||||
measured in kilobytes over the period configured in the table. If the address
|
measured in kilobytes over the period configured in the table. If the address
|
||||||
is not found, zero is returned. The test is currently performed on 32-bit
|
is not found, zero is returned. The test is currently performed on 32-bit
|
||||||
integers, which limits values to 4 terabytes. See also sc1/sc2/sc3_kbytes_in.
|
integers, which limits values to 4 terabytes. See also sc0/sc1/sc2_kbytes_in.
|
||||||
|
|
||||||
src_kbytes_out([<table>]) : integer
|
src_kbytes_out([<table>]) : integer
|
||||||
Returns the amount of data sent to the incoming connection's source address
|
Returns the amount of data sent to the incoming connection's source address
|
||||||
in the current proxy's stick-table or in the designated stick-table, measured
|
in the current proxy's stick-table or in the designated stick-table, measured
|
||||||
in kilobytes over the period configured in the table. If the address is not
|
in kilobytes over the period configured in the table. If the address is not
|
||||||
found, zero is returned. The test is currently performed on 32-bit integers,
|
found, zero is returned. The test is currently performed on 32-bit integers,
|
||||||
which limits values to 4 terabytes. See also sc1/sc2/sc3_kbytes_out.
|
which limits values to 4 terabytes. See also sc0/sc1/sc2_kbytes_out.
|
||||||
|
|
||||||
src_port : integer
|
src_port : integer
|
||||||
Returns an integer value corresponding to the TCP source port of the
|
Returns an integer value corresponding to the TCP source port of the
|
||||||
@ -9252,14 +9254,14 @@ src_sess_cnt([<table>]) : integer
|
|||||||
connection's source IPv4 address in the current proxy's stick-table or in the
|
connection's source IPv4 address in the current proxy's stick-table or in the
|
||||||
designated stick-table, that were transformed into sessions, which means that
|
designated stick-table, that were transformed into sessions, which means that
|
||||||
they were accepted by "tcp-request" rules. If the address is not found, zero
|
they were accepted by "tcp-request" rules. If the address is not found, zero
|
||||||
is returned. See also sc1/sc2/sc3_sess_cnt.
|
is returned. See also sc0/sc1/sc2_sess_cnt.
|
||||||
|
|
||||||
src_sess_rate([<table>]) : integer
|
src_sess_rate([<table>]) : integer
|
||||||
Returns the average session rate from the incoming connection's source
|
Returns the average session rate from the incoming connection's source
|
||||||
address in the current proxy's stick-table or in the designated stick-table,
|
address in the current proxy's stick-table or in the designated stick-table,
|
||||||
measured in amount of sessions over the period configured in the table. A
|
measured in amount of sessions over the period configured in the table. A
|
||||||
session is a connection that went past the early "tcp-request" rules. If the
|
session is a connection that went past the early "tcp-request" rules. If the
|
||||||
address is not found, zero is returned. See also sc1/sc2/sc3_sess_rate.
|
address is not found, zero is returned. See also sc0/sc1/sc2_sess_rate.
|
||||||
|
|
||||||
src_updt_conn_cnt([<table>]) : integer
|
src_updt_conn_cnt([<table>]) : integer
|
||||||
Creates or updates the entry associated to the incoming connection's source
|
Creates or updates the entry associated to the incoming connection's source
|
||||||
@ -9640,7 +9642,7 @@ req_proto_http : boolean (deprecated)
|
|||||||
# track request counts per "base" (concatenation of Host+URL)
|
# track request counts per "base" (concatenation of Host+URL)
|
||||||
tcp-request inspect-delay 10s
|
tcp-request inspect-delay 10s
|
||||||
tcp-request content reject if !HTTP
|
tcp-request content reject if !HTTP
|
||||||
tcp-request content track-sc1 base table req-rate
|
tcp-request content track-sc0 base table req-rate
|
||||||
|
|
||||||
req.rdp_cookie([<name>]) : string
|
req.rdp_cookie([<name>]) : string
|
||||||
rdp_cookie([<name>]) : string (deprecated)
|
rdp_cookie([<name>]) : string (deprecated)
|
||||||
|
@ -64,7 +64,7 @@ static inline struct stktable_key *addr_to_stktable_key(struct sockaddr_storage
|
|||||||
*/
|
*/
|
||||||
static inline int tcp_trk_idx(int trk_action)
|
static inline int tcp_trk_idx(int trk_action)
|
||||||
{
|
{
|
||||||
return trk_action - TCP_ACT_TRK_SC1;
|
return trk_action - TCP_ACT_TRK_SC0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _PROTO_PROTO_TCP_H */
|
#endif /* _PROTO_PROTO_TCP_H */
|
||||||
|
@ -87,7 +87,7 @@ static inline void session_stop_backend_counters(struct session *s)
|
|||||||
if (!s->stkctr[i].entry)
|
if (!s->stkctr[i].entry)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(s->flags & (SN_BE_TRACK_SC1 << i)))
|
if (!(s->flags & (SN_BE_TRACK_SC0 << i)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ptr = stktable_data_ptr(s->stkctr[i].table, s->stkctr[i].entry, STKTABLE_DT_CONN_CUR);
|
ptr = stktable_data_ptr(s->stkctr[i].table, s->stkctr[i].entry, STKTABLE_DT_CONN_CUR);
|
||||||
@ -173,7 +173,7 @@ static void inline session_inc_be_http_req_ctr(struct session *s)
|
|||||||
if (!s->stkctr[i].entry)
|
if (!s->stkctr[i].entry)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(s->flags & (SN_BE_TRACK_SC1 << i)))
|
if (!(s->flags & (SN_BE_TRACK_SC0 << i)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ptr = stktable_data_ptr(s->stkctr[i].table, s->stkctr[i].entry, STKTABLE_DT_HTTP_REQ_CNT);
|
ptr = stktable_data_ptr(s->stkctr[i].table, s->stkctr[i].entry, STKTABLE_DT_HTTP_REQ_CNT);
|
||||||
|
@ -33,9 +33,9 @@ enum {
|
|||||||
TCP_ACT_ACCEPT = 1,
|
TCP_ACT_ACCEPT = 1,
|
||||||
TCP_ACT_REJECT = 2,
|
TCP_ACT_REJECT = 2,
|
||||||
TCP_ACT_EXPECT_PX = 3,
|
TCP_ACT_EXPECT_PX = 3,
|
||||||
TCP_ACT_TRK_SC1 = 4, /* TCP request tracking : must be contiguous */
|
TCP_ACT_TRK_SC0 = 4, /* TCP request tracking : must be contiguous */
|
||||||
TCP_ACT_TRK_SC2 = 5,
|
TCP_ACT_TRK_SC1 = 5,
|
||||||
TCP_ACT_TRK_SC3 = 6,
|
TCP_ACT_TRK_SC2 = 6,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct tcp_rule {
|
struct tcp_rule {
|
||||||
|
@ -91,9 +91,9 @@
|
|||||||
#define SN_COMP_READY 0x00100000 /* the compression is initialized */
|
#define SN_COMP_READY 0x00100000 /* the compression is initialized */
|
||||||
|
|
||||||
/* session tracking flags: these ones must absolutely be contiguous. See also s->stkctr */
|
/* session tracking flags: these ones must absolutely be contiguous. See also s->stkctr */
|
||||||
#define SN_BE_TRACK_SC1 0x00200000 /* backend tracks stick-counter 1 */
|
#define SN_BE_TRACK_SC0 0x00200000 /* backend tracks stick-counter 0 */
|
||||||
#define SN_BE_TRACK_SC2 0x00400000 /* backend tracks stick-counter 2 */
|
#define SN_BE_TRACK_SC1 0x00400000 /* backend tracks stick-counter 1 */
|
||||||
#define SN_BE_TRACK_SC3 0x00800000 /* backend tracks stick-counter 3 */
|
#define SN_BE_TRACK_SC2 0x00800000 /* backend tracks stick-counter 2 */
|
||||||
#define SN_BE_TRACK_ANY 0x00E00000 /* union of all SN_BE_TRACK_* above */
|
#define SN_BE_TRACK_ANY 0x00E00000 /* union of all SN_BE_TRACK_* above */
|
||||||
|
|
||||||
|
|
||||||
|
@ -6367,7 +6367,7 @@ int check_config_validity()
|
|||||||
list_for_each_entry(trule, &curproxy->tcp_req.l4_rules, list) {
|
list_for_each_entry(trule, &curproxy->tcp_req.l4_rules, list) {
|
||||||
struct proxy *target;
|
struct proxy *target;
|
||||||
|
|
||||||
if (trule->action < TCP_ACT_TRK_SC1 || trule->action > TCP_ACT_TRK_SC3)
|
if (trule->action < TCP_ACT_TRK_SC0 || trule->action > TCP_ACT_TRK_SC2)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (trule->act_prm.trk_ctr.table.n)
|
if (trule->act_prm.trk_ctr.table.n)
|
||||||
@ -6406,7 +6406,7 @@ int check_config_validity()
|
|||||||
list_for_each_entry(trule, &curproxy->tcp_req.inspect_rules, list) {
|
list_for_each_entry(trule, &curproxy->tcp_req.inspect_rules, list) {
|
||||||
struct proxy *target;
|
struct proxy *target;
|
||||||
|
|
||||||
if (trule->action < TCP_ACT_TRK_SC1 || trule->action > TCP_ACT_TRK_SC3)
|
if (trule->action < TCP_ACT_TRK_SC0 || trule->action > TCP_ACT_TRK_SC2)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (trule->act_prm.trk_ctr.table.n)
|
if (trule->act_prm.trk_ctr.table.n)
|
||||||
|
@ -938,7 +938,7 @@ int tcp_inspect_request(struct session *s, struct channel *req, int an_bit)
|
|||||||
s->flags |= SN_FINST_R;
|
s->flags |= SN_FINST_R;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if ((rule->action >= TCP_ACT_TRK_SC1 && rule->action <= TCP_ACT_TRK_SC3) &&
|
else if ((rule->action >= TCP_ACT_TRK_SC0 && rule->action <= TCP_ACT_TRK_SC2) &&
|
||||||
!s->stkctr[tcp_trk_idx(rule->action)].entry) {
|
!s->stkctr[tcp_trk_idx(rule->action)].entry) {
|
||||||
/* Note: only the first valid tracking parameter of each
|
/* Note: only the first valid tracking parameter of each
|
||||||
* applies.
|
* applies.
|
||||||
@ -951,7 +951,7 @@ int tcp_inspect_request(struct session *s, struct channel *req, int an_bit)
|
|||||||
if (key && (ts = stktable_get_entry(t, key))) {
|
if (key && (ts = stktable_get_entry(t, key))) {
|
||||||
session_track_stkctr(&s->stkctr[tcp_trk_idx(rule->action)], t, ts);
|
session_track_stkctr(&s->stkctr[tcp_trk_idx(rule->action)], t, ts);
|
||||||
if (s->fe != s->be)
|
if (s->fe != s->be)
|
||||||
s->flags |= SN_BE_TRACK_SC1 << tcp_trk_idx(rule->action);
|
s->flags |= SN_BE_TRACK_SC0 << tcp_trk_idx(rule->action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -1092,7 +1092,7 @@ int tcp_exec_req_rules(struct session *s)
|
|||||||
result = 0;
|
result = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if ((rule->action >= TCP_ACT_TRK_SC1 && rule->action <= TCP_ACT_TRK_SC3) &&
|
else if ((rule->action >= TCP_ACT_TRK_SC0 && rule->action <= TCP_ACT_TRK_SC2) &&
|
||||||
!s->stkctr[tcp_trk_idx(rule->action)].entry) {
|
!s->stkctr[tcp_trk_idx(rule->action)].entry) {
|
||||||
/* Note: only the first valid tracking parameter of each
|
/* Note: only the first valid tracking parameter of each
|
||||||
* applies.
|
* applies.
|
||||||
@ -1184,7 +1184,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
|
|||||||
arg++;
|
arg++;
|
||||||
rule->action = TCP_ACT_REJECT;
|
rule->action = TCP_ACT_REJECT;
|
||||||
}
|
}
|
||||||
else if (strcmp(args[arg], "track-sc1") == 0 || strcmp(args[arg], "track-sc2") == 0 || strcmp(args[arg], "track-sc3") == 0) {
|
else if (strcmp(args[arg], "track-sc0") == 0 || strcmp(args[arg], "track-sc1") == 0 || strcmp(args[arg], "track-sc2") == 0) {
|
||||||
struct sample_expr *expr;
|
struct sample_expr *expr;
|
||||||
int kw = arg;
|
int kw = arg;
|
||||||
|
|
||||||
@ -1224,7 +1224,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
|
|||||||
arg++;
|
arg++;
|
||||||
}
|
}
|
||||||
rule->act_prm.trk_ctr.expr = expr;
|
rule->act_prm.trk_ctr.expr = expr;
|
||||||
rule->action = TCP_ACT_TRK_SC1 + args[kw][8] - '1';
|
rule->action = TCP_ACT_TRK_SC0 + args[kw][8] - '0';
|
||||||
}
|
}
|
||||||
else if (strcmp(args[arg], "expect-proxy") == 0) {
|
else if (strcmp(args[arg], "expect-proxy") == 0) {
|
||||||
if (strcmp(args[arg+1], "layer4") != 0) {
|
if (strcmp(args[arg+1], "layer4") != 0) {
|
||||||
@ -1246,8 +1246,8 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
memprintf(err,
|
memprintf(err,
|
||||||
"'%s %s' expects 'accept', 'reject', 'track-sc1', 'track-sc2' "
|
"'%s %s' expects 'accept', 'reject', 'track-sc0', 'track-sc1' "
|
||||||
" or 'track-sc3' in %s '%s' (got '%s')",
|
" or 'track-sc2' in %s '%s' (got '%s')",
|
||||||
args[0], args[1], proxy_type_str(curpx), curpx->id, args[arg]);
|
args[0], args[1], proxy_type_str(curpx), curpx->id, args[arg]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
164
src/session.c
164
src/session.c
@ -2577,9 +2577,9 @@ void session_shutdown(struct session *session, int why)
|
|||||||
/* All supported ACL keywords must be declared here. */
|
/* All supported ACL keywords must be declared here. */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
/* set return a boolean indicating if sc1 is currently being tracked or not */
|
/* set return a boolean indicating if sc0 is currently being tracked or not */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_tracked(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_tracked(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
smp->flags = SMP_F_VOL_TEST;
|
smp->flags = SMP_F_VOL_TEST;
|
||||||
@ -2588,9 +2588,9 @@ smp_fetch_sc1_tracked(struct proxy *px, struct session *l4, void *l7, unsigned i
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set return a boolean indicating if sc2 is currently being tracked or not */
|
/* set return a boolean indicating if sc1 is currently being tracked or not */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_tracked(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_tracked(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
smp->flags = SMP_F_VOL_TEST;
|
smp->flags = SMP_F_VOL_TEST;
|
||||||
@ -2599,9 +2599,9 @@ smp_fetch_sc2_tracked(struct proxy *px, struct session *l4, void *l7, unsigned i
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set return a boolean indicating if sc3 is currently being tracked or not */
|
/* set return a boolean indicating if sc2 is currently being tracked or not */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_tracked(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_tracked(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
smp->flags = SMP_F_VOL_TEST;
|
smp->flags = SMP_F_VOL_TEST;
|
||||||
@ -2630,7 +2630,7 @@ smp_fetch_get_gpc0(struct stktable *table, struct sample *smp, struct stksess *t
|
|||||||
* frontend counters.
|
* frontend counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -2642,7 +2642,7 @@ smp_fetch_sc1_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* backend counters.
|
* backend counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -2654,7 +2654,7 @@ smp_fetch_sc2_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* backend counters.
|
* backend counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_get_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -2701,7 +2701,7 @@ smp_fetch_gpc0_rate(struct stktable *table, struct sample *smp, struct stksess *
|
|||||||
* session's tracked frontend counters.
|
* session's tracked frontend counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -2713,7 +2713,7 @@ smp_fetch_sc1_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* session's tracked backend counters.
|
* session's tracked backend counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -2725,7 +2725,7 @@ smp_fetch_sc2_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* session's tracked backend counters.
|
* session's tracked backend counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_gpc0_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -2785,7 +2785,7 @@ smp_fetch_inc_gpc0(struct stktable *table, struct sample *smp, struct stksess *t
|
|||||||
* frontend counters and return it into temp integer.
|
* frontend counters and return it into temp integer.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -2797,7 +2797,7 @@ smp_fetch_sc1_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* backend counters and return it into temp integer.
|
* backend counters and return it into temp integer.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -2809,7 +2809,7 @@ smp_fetch_sc2_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* backend counters and return it into temp integer.
|
* backend counters and return it into temp integer.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -2858,7 +2858,7 @@ smp_fetch_clr_gpc0(struct stktable *table, struct sample *smp, struct stksess *t
|
|||||||
* frontend counters and return its previous value into temp integer.
|
* frontend counters and return its previous value into temp integer.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -2870,7 +2870,7 @@ smp_fetch_sc1_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* backend counters and return its previous value into temp integer.
|
* backend counters and return its previous value into temp integer.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -2882,7 +2882,7 @@ smp_fetch_sc2_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* backend counters and return its previous value into temp integer.
|
* backend counters and return its previous value into temp integer.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -2926,7 +2926,7 @@ smp_fetch_conn_cnt(struct stktable *table, struct sample *smp, struct stksess *t
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of connections from the session's tracked FE counters */
|
/* set temp integer to the cumulated number of connections from the session's tracked FE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -2937,7 +2937,7 @@ smp_fetch_sc1_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of connections from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of connections from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -2948,7 +2948,7 @@ smp_fetch_sc2_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of connections from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of connections from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_conn_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -2996,7 +2996,7 @@ smp_fetch_conn_rate(struct stktable *table, struct sample *smp, struct stksess *
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3009,7 +3009,7 @@ smp_fetch_sc1_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3022,7 +3022,7 @@ smp_fetch_sc2_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_conn_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3100,7 +3100,7 @@ smp_fetch_conn_cur(struct stktable *table, struct sample *smp, struct stksess *t
|
|||||||
|
|
||||||
/* set temp integer to the number of concurrent connections from the session's tracked FE counters */
|
/* set temp integer to the number of concurrent connections from the session's tracked FE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3111,7 +3111,7 @@ smp_fetch_sc1_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
|
|
||||||
/* set temp integer to the number of concurrent connections from the session's tracked BE counters */
|
/* set temp integer to the number of concurrent connections from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3122,7 +3122,7 @@ smp_fetch_sc2_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
|
|
||||||
/* set temp integer to the number of concurrent connections from the session's tracked BE counters */
|
/* set temp integer to the number of concurrent connections from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_conn_cur(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3167,7 +3167,7 @@ smp_fetch_sess_cnt(struct stktable *table, struct sample *smp, struct stksess *t
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked FE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked FE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3178,7 +3178,7 @@ smp_fetch_sc1_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3189,7 +3189,7 @@ smp_fetch_sc2_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_sess_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3237,7 +3237,7 @@ smp_fetch_sess_rate(struct stktable *table, struct sample *smp, struct stksess *
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3250,7 +3250,7 @@ smp_fetch_sc1_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3263,7 +3263,7 @@ smp_fetch_sc2_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_sess_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3308,7 +3308,7 @@ smp_fetch_http_req_cnt(struct stktable *table, struct sample *smp, struct stkses
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked FE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked FE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3319,7 +3319,7 @@ smp_fetch_sc1_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsig
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3330,7 +3330,7 @@ smp_fetch_sc2_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsig
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_http_req_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3378,7 +3378,7 @@ smp_fetch_http_req_rate(struct stktable *table, struct sample *smp, struct stkse
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3391,7 +3391,7 @@ smp_fetch_sc1_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsi
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3404,7 +3404,7 @@ smp_fetch_sc2_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsi
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_http_req_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3449,7 +3449,7 @@ smp_fetch_http_err_cnt(struct stktable *table, struct sample *smp, struct stkses
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked FE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked FE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3460,7 +3460,7 @@ smp_fetch_sc1_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsig
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3471,7 +3471,7 @@ smp_fetch_sc2_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsig
|
|||||||
|
|
||||||
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
/* set temp integer to the cumulated number of sessions from the session's tracked BE counters */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_http_err_cnt(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3519,7 +3519,7 @@ smp_fetch_http_err_rate(struct stktable *table, struct sample *smp, struct stkse
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3532,7 +3532,7 @@ smp_fetch_sc1_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsi
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3545,7 +3545,7 @@ smp_fetch_sc2_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsi
|
|||||||
* the configured period.
|
* the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_http_err_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3593,7 +3593,7 @@ smp_fetch_kbytes_in(struct stktable *table, struct sample *smp, struct stksess *
|
|||||||
* session's tracked FE counters.
|
* session's tracked FE counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3606,7 +3606,7 @@ smp_fetch_sc1_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* session's tracked BE counters.
|
* session's tracked BE counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3619,7 +3619,7 @@ smp_fetch_sc2_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
* session's tracked BE counters.
|
* session's tracked BE counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_kbytes_in(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3669,7 +3669,7 @@ smp_fetch_bytes_in_rate(struct stktable *table, struct sample *smp, struct stkse
|
|||||||
* counters over the configured period.
|
* counters over the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3682,7 +3682,7 @@ smp_fetch_sc1_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsi
|
|||||||
* counters over the configured period.
|
* counters over the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3695,7 +3695,7 @@ smp_fetch_sc2_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsi
|
|||||||
* counters over the configured period.
|
* counters over the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_bytes_in_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3743,7 +3743,7 @@ smp_fetch_kbytes_out(struct stktable *table, struct sample *smp, struct stksess
|
|||||||
* tracked FE counters.
|
* tracked FE counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3756,7 +3756,7 @@ smp_fetch_sc1_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigne
|
|||||||
* tracked BE counters.
|
* tracked BE counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3769,7 +3769,7 @@ smp_fetch_sc2_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigne
|
|||||||
* tracked BE counters.
|
* tracked BE counters.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_kbytes_out(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3819,7 +3819,7 @@ smp_fetch_bytes_out_rate(struct stktable *table, struct sample *smp, struct stks
|
|||||||
* over the configured period.
|
* over the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3832,7 +3832,7 @@ smp_fetch_sc1_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, uns
|
|||||||
* over the configured period.
|
* over the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3845,7 +3845,7 @@ smp_fetch_sc2_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, uns
|
|||||||
* over the configured period.
|
* over the configured period.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3872,9 +3872,9 @@ smp_fetch_src_bytes_out_rate(struct proxy *px, struct session *l4, void *l7, uns
|
|||||||
return smp_fetch_bytes_out_rate(&px->table, smp, stktable_lookup_key(&px->table, key));
|
return smp_fetch_bytes_out_rate(&px->table, smp, stktable_lookup_key(&px->table, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set temp integer to the number of active trackers on the SC1 entry */
|
/* set temp integer to the number of active trackers on the SC0 entry */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc1_trackers(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc0_trackers(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[0].entry)
|
if (!l4->stkctr[0].entry)
|
||||||
@ -3883,9 +3883,9 @@ smp_fetch_sc1_trackers(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
return l4->stkctr[0].entry->ref_cnt;
|
return l4->stkctr[0].entry->ref_cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set temp integer to the number of active trackers on the SC1 entry */
|
/* set temp integer to the number of active trackers on the SC0 entry */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc2_trackers(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc1_trackers(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[1].entry)
|
if (!l4->stkctr[1].entry)
|
||||||
@ -3894,9 +3894,9 @@ smp_fetch_sc2_trackers(struct proxy *px, struct session *l4, void *l7, unsigned
|
|||||||
return l4->stkctr[1].entry->ref_cnt;
|
return l4->stkctr[1].entry->ref_cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set temp integer to the number of active trackers on the SC1 entry */
|
/* set temp integer to the number of active trackers on the SC0 entry */
|
||||||
static int
|
static int
|
||||||
smp_fetch_sc3_trackers(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
smp_fetch_sc2_trackers(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||||
const struct arg *args, struct sample *smp)
|
const struct arg *args, struct sample *smp)
|
||||||
{
|
{
|
||||||
if (!l4->stkctr[2].entry)
|
if (!l4->stkctr[2].entry)
|
||||||
@ -3943,6 +3943,25 @@ static struct acl_kw_list acl_kws = {{ },{
|
|||||||
* Please take care of keeping this list alphabetically sorted.
|
* Please take care of keeping this list alphabetically sorted.
|
||||||
*/
|
*/
|
||||||
static struct sample_fetch_kw_list smp_fetch_keywords = {{ },{
|
static struct sample_fetch_kw_list smp_fetch_keywords = {{ },{
|
||||||
|
{ "sc0_bytes_in_rate", smp_fetch_sc0_bytes_in_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_bytes_out_rate", smp_fetch_sc0_bytes_out_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_clr_gpc0", smp_fetch_sc0_clr_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_conn_cnt", smp_fetch_sc0_conn_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_conn_cur", smp_fetch_sc0_conn_cur, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_conn_rate", smp_fetch_sc0_conn_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_get_gpc0", smp_fetch_sc0_get_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_gpc0_rate", smp_fetch_sc0_gpc0_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_http_err_cnt", smp_fetch_sc0_http_err_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_http_err_rate", smp_fetch_sc0_http_err_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_http_req_cnt", smp_fetch_sc0_http_req_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_http_req_rate", smp_fetch_sc0_http_req_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_inc_gpc0", smp_fetch_sc0_inc_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_kbytes_in", smp_fetch_sc0_kbytes_in, 0, NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
||||||
|
{ "sc0_kbytes_out", smp_fetch_sc0_kbytes_out, 0, NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
||||||
|
{ "sc0_sess_cnt", smp_fetch_sc0_sess_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_sess_rate", smp_fetch_sc0_sess_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_tracked", smp_fetch_sc0_tracked, 0, NULL, SMP_T_BOOL, SMP_USE_INTRN, },
|
||||||
|
{ "sc0_trackers", smp_fetch_sc0_trackers, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
{ "sc1_bytes_in_rate", smp_fetch_sc1_bytes_in_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
{ "sc1_bytes_in_rate", smp_fetch_sc1_bytes_in_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
{ "sc1_bytes_out_rate", smp_fetch_sc1_bytes_out_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
{ "sc1_bytes_out_rate", smp_fetch_sc1_bytes_out_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
{ "sc1_clr_gpc0", smp_fetch_sc1_clr_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
{ "sc1_clr_gpc0", smp_fetch_sc1_clr_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
@ -3981,25 +4000,6 @@ static struct sample_fetch_kw_list smp_fetch_keywords = {{ },{
|
|||||||
{ "sc2_sess_rate", smp_fetch_sc2_sess_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
{ "sc2_sess_rate", smp_fetch_sc2_sess_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
{ "sc2_tracked", smp_fetch_sc2_tracked, 0, NULL, SMP_T_BOOL, SMP_USE_INTRN, },
|
{ "sc2_tracked", smp_fetch_sc2_tracked, 0, NULL, SMP_T_BOOL, SMP_USE_INTRN, },
|
||||||
{ "sc2_trackers", smp_fetch_sc2_trackers, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
{ "sc2_trackers", smp_fetch_sc2_trackers, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
||||||
{ "sc3_bytes_in_rate", smp_fetch_sc3_bytes_in_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_bytes_out_rate", smp_fetch_sc3_bytes_out_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_clr_gpc0", smp_fetch_sc3_clr_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_conn_cnt", smp_fetch_sc3_conn_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_conn_cur", smp_fetch_sc3_conn_cur, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_conn_rate", smp_fetch_sc3_conn_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_get_gpc0", smp_fetch_sc3_get_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_gpc0_rate", smp_fetch_sc3_gpc0_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_http_err_cnt", smp_fetch_sc3_http_err_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_http_err_rate", smp_fetch_sc3_http_err_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_http_req_cnt", smp_fetch_sc3_http_req_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_http_req_rate", smp_fetch_sc3_http_req_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_inc_gpc0", smp_fetch_sc3_inc_gpc0, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_kbytes_in", smp_fetch_sc3_kbytes_in, 0, NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
|
||||||
{ "sc3_kbytes_out", smp_fetch_sc3_kbytes_out, 0, NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
|
||||||
{ "sc3_sess_cnt", smp_fetch_sc3_sess_cnt, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_sess_rate", smp_fetch_sc3_sess_rate, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_tracked", smp_fetch_sc3_tracked, 0, NULL, SMP_T_BOOL, SMP_USE_INTRN, },
|
|
||||||
{ "sc3_trackers", smp_fetch_sc3_trackers, 0, NULL, SMP_T_UINT, SMP_USE_INTRN, },
|
|
||||||
{ "src_bytes_in_rate", smp_fetch_src_bytes_in_rate, ARG1(1,TAB), NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
{ "src_bytes_in_rate", smp_fetch_src_bytes_in_rate, ARG1(1,TAB), NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
||||||
{ "src_bytes_out_rate", smp_fetch_src_bytes_out_rate, ARG1(1,TAB), NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
{ "src_bytes_out_rate", smp_fetch_src_bytes_out_rate, ARG1(1,TAB), NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
||||||
{ "src_clr_gpc0", smp_fetch_src_clr_gpc0, ARG1(1,TAB), NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
{ "src_clr_gpc0", smp_fetch_src_clr_gpc0, ARG1(1,TAB), NULL, SMP_T_UINT, SMP_USE_L4CLI, },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user