diff --git a/Makefile b/Makefile index 905481281..ff1810a87 100644 --- a/Makefile +++ b/Makefile @@ -651,7 +651,7 @@ OPTIONS_OBJS += src/quic_rx.o src/mux_quic.o src/h3.o src/quic_tx.o \ src/quic_cc_nocc.o src/qpack-dec.o src/quic_cc.o \ src/cfgparse-quic.o src/qmux_trace.o src/qpack-enc.o \ src/qpack-tbl.o src/h3_stats.o src/quic_stats.o \ - src/quic_fctl.o src/cbuf.o + src/quic_fctl.o src/cbuf.o src/quic_rules.o endif ifneq ($(USE_QUIC_OPENSSL_COMPAT:0=),) diff --git a/doc/configuration.txt b/doc/configuration.txt index 43b6c956b..a64320a69 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -5405,6 +5405,7 @@ option idle-close-on-response (*) X X X - external-check command X - X X external-check path X - X X persist rdp-cookie X - X X +quic-initial X (!) X X - rate-limit sessions X X X - redirect - X X X -- keyword -------------------------- defaults - frontend - listen -- backend - @@ -10980,6 +10981,27 @@ persist rdp-cookie() See also : "balance rdp-cookie", "tcp-request" and the "req.rdp_cookie" ACL. +quic-initial + Perform an action on an incoming QUIC Initial packet. Contrary to + "tcp-request connection", this is executed prior to any connection element + instantiation and starting and completion of the SSL handshake, which is more + efficient when wanting to reject connections attempts. + + May be used in the following contexts: http + + May be used in sections : defaults | frontend | listen | backend + yes(!) | yes | yes | no + + Arguments : + defines the action to perform if the condition applies. See + below. + + This action is executed early during QUIC packet parsing. As such, only a + minimal list of actions is supported : + - accept + - dgram-drop + + rate-limit sessions Set a limit on the number of new sessions accepted per second on a frontend @@ -14308,6 +14330,7 @@ many actions are usable with many rule sets. The listing in this section will indicate for which supported action where it may be used, by ticking the corresponding abbreviated entry names among the following rule sets: + - QUIC Ini: the action is valid for "quic-initial" rules - TCP RqCon: the action is valid for "tcp-request connection" rules - TCP RqSes: the action is valid for "tcp-request session" rules - TCP RqCnt: the action is valid for "tcp-request content" rules @@ -14318,83 +14341,83 @@ corresponding abbreviated entry names among the following rule sets: The same abbreviations are used in the reference section 4.4 below. - - keyword TCP: RqCon RqSes RqCnt RsCnt HTTP: Req Res Aft -----------------------+-----------+-----+-----+------+----------+---+---- -accept X X X X - - - -add-acl - - - - X X - -add-header - - - - X X X -allow - - - - X X X -attach-srv - X - - - - - -auth - - - - X - - -cache-store - - - - - X - -cache-use - - - - X - - -capture - - X - X X X -close - - - X - - - -del-acl - - - - X X - -del-header - - - - X X X -del-map - - - - X X X -deny - - - - X X - -disable-l7-retry - - - - X - - -do-resolve - - X - X - - -early-hint - - - - X - - -expect-netscaler-cip X - - - - - - -expect-proxy layer4 X - - - - - - -normalize-uri - - - - X - - -redirect - - - - X X - -reject X X X X X - - -replace-header - - - - X X X -replace-path - - - - X - - -replace-pathq - - - - X - - -replace-uri - - - - X - - -replace-value - - - - X X X -return - - - - X X - -sc-add-gpc X X X X X X X ---keyword---------------TCP--RqCon-RqSes-RqCnt-RsCnt---HTTP--Req-Res-Aft- -sc-inc-gpc X X X X X X X -sc-inc-gpc0 X X X X X X X -sc-inc-gpc1 X X X X X X X -sc-set-gpt X X X X X X X -sc-set-gpt0 X X X X X X X -send-spoe-group - - X X X X - -set-bandwidth-limit - - X X X X - -set-bc-mark - - X - X - - -set-bc-tos - - X - X - - -set-dst X X X - X - - -set-dst-port X X X - X - - -set-fc-mark X X X X X X - -set-fc-tos X X X X X X - -set-header - - - - X X X -set-log-level - - X X X X X -set-map - - - - X X X -set-mark (deprecated) X X X X X X - -set-method - - - - X - - -set-nice - - X X X X - -set-path - - - - X - - -set-pathq - - - - X - - -set-priority-class - - X - X - - -set-priority-offset - - X - X - - ---keyword---------------TCP--RqCon-RqSes-RqCnt-RsCnt---HTTP--Req-Res-Aft- -set-query - - - - X - - -set-src X X X - X - - -set-src-port X X X - X - - -set-status - - - - - X X -set-timeout - - - - X X - -set-tos (deprecated) X X X X X X - -set-uri - - - - X - - -set-var X X X X X X X -set-var-fmt X X X X X X X -silent-drop X X X X X X - -strict-mode - - - - X X X -switch-mode - - X - - - - -tarpit - - - - X - - -track-sc1 X X X - X X - -track-sc2 X X X - X X - -unset-var X X X X X X X -use-service - - X - X - - -wait-for-body - - - - X X - -wait-for-handshake - - - - X - - ---keyword---------------TCP--RqCon-RqSes-RqCnt-RsCnt---HTTP--Req-Res-Aft- + keyword QUIC: Ini TCP: RqCon RqSes RqCnt RsCnt HTTP: Req Res Aft +----------------------+-----------+-----------+-----+-----+------+----------+---+---- +accept X X X X X - - - +add-acl - - - - - X X - +add-header - - - - - X X X +allow - - - - - X X X +attach-srv - - X - - - - - +auth - - - - - X - - +cache-store - - - - - - X - +cache-use - - - - - X - - +capture - - - X - X X X +close - - - - X - - - +del-acl - - - - - X X - +del-header - - - - - X X X +del-map - - - - - X X X +deny - - - - - X X - +dgram-drop X - - - - - - - +disable-l7-retry - - - - - X - - +do-resolve - - - X - X - - +early-hint - - - - - X - - +expect-netscaler-cip - X - - - - - - +expect-proxy layer4 - X - - - - - - +normalize-uri - - - - - X - - +redirect - - - - - X X - +reject - X X X X X - - +replace-header - - - - - X X X +replace-path - - - - - X - - +replace-pathq - - - - - X - - +replace-uri - - - - - X - - +replace-value - - - - - X X X +return - - - - - X X - +sc-add-gpc - X X X X X X X +--keyword---------------QUIC--Ini---TCP--RqCon-RqSes-RqCnt-RsCnt---HTTP--Req-Res-Aft- +sc-inc-gpc - X X X X X X X +sc-inc-gpc0 - X X X X X X X +sc-inc-gpc1 - X X X X X X X +sc-set-gpt - X X X X X X X +sc-set-gpt0 - X X X X X X X +send-spoe-group - - - X X X X - +set-bandwidth-limit - - - X X X X - +set-bc-mark - - - X - X - - +set-bc-tos - - - X - X - - +set-dst - X X X - X - - +set-dst-port - X X X - X - - +set-fc-mark - X X X X X X - +set-fc-tos - X X X X X X - +set-header - - - - - X X X +set-log-level - - - X X X X X +set-map - - - - - X X X +set-mark (deprecated) - X X X X X X - +set-method - - - - - X - - +set-nice - - - X X X X - +set-path - - - - - X - - +set-pathq - - - - - X - - +set-priority-class - - - X - X - - +set-priority-offset - - - X - X - - +--keyword---------------QUIC--Ini---TCP--RqCon-RqSes-RqCnt-RsCnt---HTTP--Req-Res-Aft- +set-query - - - - - X - - +set-src - X X X - X - - +set-src-port - X X X - X - - +set-status - - - - - - X X +set-timeout - - - - - X X - +set-tos (deprecated) - X X X X X X - +set-uri - - - - - X - - +set-var - X X X X X X X +set-var-fmt - X X X X X X X +silent-drop - X X X X X X - +strict-mode - - - - - X X X +switch-mode - - - X - - - - +tarpit - - - - - X - - +track-sc1 - X X X - X X - +track-sc2 - X X X - X X - +unset-var - X X X X X X X +use-service - - - X - X - - +wait-for-body - - - - - X X - +wait-for-handshake - - - - - X - - +--keyword---------------QUIC--Ini---TCP--RqCon-RqSes-RqCnt-RsCnt---HTTP--Req-Res-Aft- 4.4. Alphabetically sorted actions reference @@ -14405,20 +14428,20 @@ using the same ruleset terminology marking as described in section 4.3 above. accept - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt | HTTP Req| Res| Aft - X | X | X | X | - | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + X | X | X | X | X | - | - | - This stops the evaluation of the rules and lets the request or response pass the check. This action is final, i.e. no further rules from the same rule set are evaluated for the current section. There is no difference between this and the "allow" action except that for historical compatibility, "accept" is - used for TCP rules and "allow" for HTTP rules. See also the "allow" action - below. + used for TCP and QUIC rules and "allow" for HTTP rules. See also the "allow" + action below. add-acl() - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | - This is used to add a new entry into an ACL. The ACL must be loaded from a file (even a dummy empty file). The file name of the ACL to be updated is @@ -14430,8 +14453,8 @@ add-acl() add-header - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | X This appends an HTTP header field whose name is specified in and whose value is defined by which follows the Custom log format rules @@ -14444,8 +14467,8 @@ add-header allow - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | X This stops the evaluation of the rules and lets the request pass the check. This action is final, i.e. no further rules from the same rule set are @@ -14456,8 +14479,8 @@ allow attach-srv [name ] [ EXPERIMENTAL ] - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | X | - | - | - | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | X | - | - | - | - | - This is used to intercept the connection after proper HTTP/2 establishment. The connection is reversed to the backend side and inserted into the idle @@ -14478,8 +14501,8 @@ attach-srv [name ] [ EXPERIMENTAL ] https://www.ietf.org/archive/id/draft-bt-httpbis-reverse-http-00.html. auth [realm ] - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - This stops the evaluation of the rules and immediately responds with an HTTP 401 or 407 error code to invite the user to present a valid user name @@ -14501,8 +14524,8 @@ auth [realm ] cache-store - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | - | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | - | X | - Store an http-response within the cache. The storage of the response headers is done at this step, which means you can use others http-response actions @@ -14513,8 +14536,8 @@ cache-store cache-use - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - Try to deliver a cached object from the cache . This directive is also mandatory to store the cache as it calculates the cache hash. If you want to @@ -14525,8 +14548,8 @@ cache-use capture [ len | id ] - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | X | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | X | - | X | X | X This captures sample expression from the request or response buffer, and converts it to a string of at most characters. The resulting string @@ -14551,8 +14574,8 @@ capture [ len | id ] close - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | X | - | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | X | - | - | - This is used to immediately close the connection with the server. No further "tcp-response content" rules are evaluated. The main purpose of this action @@ -14563,8 +14586,8 @@ close del-acl() - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | - This is used to delete an entry from an ACL. The ACL must be loaded from a file (even a dummy empty file). The file name of the ACL to be updated is @@ -14575,8 +14598,8 @@ del-acl() del-header [ -m ] - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | X This removes all HTTP header fields whose name is specified in . is the matching method, applied on the header name. Supported matching methods @@ -14586,8 +14609,8 @@ del-header [ -m ] del-map() - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | X This is used to delete an entry from a MAP. must follow the format described in 2.7. about name format for maps and ACLs. The name of the MAP to @@ -14602,8 +14625,8 @@ deny [ { status | deny_status } ] [ content-type ] [ { default-errorfiles | errorfile | errorfiles | file | lf-file | string | lf-string } ] [ hdr ]* - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | - This stops the evaluation of the rules and immediately rejects the request or response. By default an HTTP 403 error is returned for requests, and 502 for @@ -14617,9 +14640,18 @@ deny [ { status | deny_status } ] [ content-type ] syntax. +dgram-drop + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + X | - | - | - | - | - | - | - + + This silently ignores the reception of a QUIC initial packet which otherwise + whould have resulted in a new QUIC connection instantiation and its SSL + handshake execution. + + disable-l7-retry - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - This disables any attempt to retry the request if it fails for any other reason than a connection failure. This can be useful for example to make @@ -14627,8 +14659,8 @@ disable-l7-retry do-resolve(,,[ipv4,ipv6]) - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | X | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | X | - | X | - | - This action performs a DNS resolution of the output of and stores the result in the variable . It uses the DNS resolvers section @@ -14685,8 +14717,8 @@ do-resolve(,,[ipv4,ipv6]) early-hint - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - This is used to build an HTTP 103 Early Hints response prior to any other one. This appends an HTTP header field to this response whose name is specified in @@ -14699,8 +14731,8 @@ early-hint expect-netscaler-cip layer4 - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | - | - | - | - | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | - | - | - | - | - | - This configures the client-facing connection to receive a NetScaler Client IP insertion protocol header before any byte is read from the socket. This is @@ -14712,8 +14744,8 @@ expect-netscaler-cip layer4 expect-proxy layer4 - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | - | - | - | - | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | - | - | - | - | - | - This configures the client-facing connection to receive a PROXY protocol header before any byte is read from the socket. This is equivalent to having @@ -14732,8 +14764,8 @@ normalize-uri path-strip-dotdot [ full ] normalize-uri percent-decode-unreserved [ strict ] normalize-uri percent-to-uppercase [ strict ] normalize-uri query-sort-by-name - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - Performs normalization of the request's URI. @@ -14874,8 +14906,8 @@ normalize-uri query-sort-by-name redirect - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | - This performs an HTTP redirection based on a redirect rule. This is exactly the same as the "redirect" statement except that it inserts a redirect rule @@ -14890,8 +14922,8 @@ redirect reject - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | X | X | X | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | X | X | X | X | - | - This stops the evaluation of the rules and immediately closes the connection without sending any response. For HTTP rules, it acts similarly to the @@ -14916,8 +14948,8 @@ reject replace-header - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | X This matches the value of all occurrences of header field against . Matching is performed case-sensitively. Matching values are @@ -14965,8 +14997,8 @@ replace-header replace-path - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - This works like "replace-header" except that it works on the request's path component instead of a header. The path component starts at the first '/' @@ -14989,8 +15021,8 @@ replace-path replace-pathq - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - This does the same as "http-request replace-path" except that the path contains the query-string if any is present. Thus, the path and the @@ -15002,8 +15034,8 @@ replace-pathq replace-uri - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | - | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | - | - This works like "replace-header" except that it works on the request's URI part instead of a header. The URI part may contain an optional scheme, authority or @@ -15035,8 +15067,8 @@ replace-uri replace-value - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | X This works like "replace-header" except that it matches the regex against every comma-delimited value of the header field instead of the @@ -15067,8 +15099,8 @@ return [ status ] [ content-type ] [ { default-errorfiles | errorfile | errorfiles | file | lf-file | string | lf-string } ] [ hdr ]* - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | - | - | X | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | - | - | X | X | - This stops the evaluation of the rules and immediately returns a response. The default status code used for the response is 200. It can be optionally @@ -15141,8 +15173,8 @@ return [ status ] [ content-type ] sc-add-gpc(,) { | } - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | X | X | X | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | X | X | X | X | X | X This action increments the General Purpose Counter at the index of the array associated to the sticky counter designated by by the value of @@ -15167,8 +15199,8 @@ sc-add-gpc(,) { | } sc-inc-gpc(,) - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | X | X | X | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | X | X | X | X | X | X This actions increments the General Purpose Counter at the index of the array associated to the sticky counter designated by . If an error @@ -15181,8 +15213,8 @@ sc-inc-gpc(,) sc-inc-gpc0() sc-inc-gpc1() - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | X | X | X | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | X | X | X | X | X | X This actions increments the GPC0 or GPC1 counter according with the sticky counter designated by . If an error occurs, this action silently fails @@ -15190,8 +15222,8 @@ sc-inc-gpc1() sc-set-gpt(,) { | } - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | X | X | X | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | X | X | X | X | X | X This action sets the 32-bit unsigned GPT at the index of the array associated to the sticky counter designated by at the value of @@ -15207,8 +15239,8 @@ sc-set-gpt(,) { | } sc-set-gpt0() { | } - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - X | X | X | X | X | X | X + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | X | X | X | X | X | X | X This action sets the 32-bit unsigned GPT0 tag according to the sticky counter designated by and the value of /. The expected result is a @@ -15218,8 +15250,8 @@ sc-set-gpt0() { | } send-spoe-group - Usable in: TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft - - | - | X | X | X | X | - + Usable in: QUIC Ini| TCP RqCon| RqSes| RqCnt| RsCnt| HTTP Req| Res| Aft + - | - | - | X | X | X | X | - This action is used to trigger sending of a group of SPOE messages. To do so, the SPOE engine used to send messages must be defined, as well as the SPOE @@ -15235,8 +15267,8 @@ send-spoe-group set-bandwidth-limit [limit { | }] [period { |