MINOR: tcpcheck: Add support of L7OKC on expect rules error-status argument

L7OKC may now be used as an error status for an HTTP/TCP expect rule. Thus
it is for instance possible to write:

    option httpchk GET /isalive
    http-check expect status 200,404
    http-check expect status 200 error-status L7OKC

It is more or less the same than the disable-on-404 option except that if a
DOWN is up again but still replying a 404 will be set to NOLB state. While
it will stay in DOWN state with the disable-on-404 option.
This commit is contained in:
Christopher Faulet 2020-11-20 17:47:47 +01:00
parent 1e527cbf53
commit 83662b5431
2 changed files with 14 additions and 6 deletions

View File

@ -5161,15 +5161,18 @@ http-check expect [min-recv <int>] [comment <msg>]
the last rule in the tcp-check ruleset. "L7OK", "L7OKC", the last rule in the tcp-check ruleset. "L7OK", "L7OKC",
"L6OK" and "L4OK" are supported : "L6OK" and "L4OK" are supported :
- L7OK : check passed on layer 7 - L7OK : check passed on layer 7
- L7OKC : check conditionally passed on layer 7, for - L7OKC : check conditionally passed on layer 7, set
example 404 with disable-on-404 server to NOLB state.
- L6OK : check passed on layer 6 - L6OK : check passed on layer 6
- L4OK : check passed on layer 4 - L4OK : check passed on layer 4
By default "L7OK" is used. By default "L7OK" is used.
error-status <st> is optional and can be used to set the check status if error-status <st> is optional and can be used to set the check status if
an error occurred during the expect rule evaluation. an error occurred during the expect rule evaluation.
"L7RSP", "L7STS", "L6RSP" and "L4CON" are supported : "L7OKC", "L7RSP", "L7STS", "L6RSP" and "L4CON" are
supported :
- L7OKC : check conditionally passed on layer 7, set
server to NOLB state.
- L7RSP : layer 7 invalid response - protocol error - L7RSP : layer 7 invalid response - protocol error
- L7STS : layer 7 response error, for example HTTP 5xx - L7STS : layer 7 response error, for example HTTP 5xx
- L6RSP : layer 6 invalid response - protocol error - L6RSP : layer 6 invalid response - protocol error
@ -11044,15 +11047,18 @@ tcp-check expect [min-recv <int>] [comment <msg>]
the last rule in the tcp-check ruleset. "L7OK", "L7OKC", the last rule in the tcp-check ruleset. "L7OK", "L7OKC",
"L6OK" and "L4OK" are supported : "L6OK" and "L4OK" are supported :
- L7OK : check passed on layer 7 - L7OK : check passed on layer 7
- L7OKC : check conditionally passed on layer 7, for - L7OKC : check conditionally passed on layer 7, set
example 404 with disable-on-404 server to NOLB state.
- L6OK : check passed on layer 6 - L6OK : check passed on layer 6
- L4OK : check passed on layer 4 - L4OK : check passed on layer 4
By default "L7OK" is used. By default "L7OK" is used.
error-status <st> is optional and can be used to set the check status if error-status <st> is optional and can be used to set the check status if
an error occurred during the expect rule evaluation. an error occurred during the expect rule evaluation.
"L7RSP", "L7STS", "L6RSP" and "L4CON" are supported : "L7OKC", "L7RSP", "L7STS", "L6RSP" and "L4CON" are
supported :
- L7OKC : check conditionally passed on layer 7, set
server to NOLB state.
- L7RSP : layer 7 invalid response - protocol error - L7RSP : layer 7 invalid response - protocol error
- L7STS : layer 7 response error, for example HTTP 5xx - L7STS : layer 7 response error, for example HTTP 5xx
- L6RSP : layer 6 invalid response - protocol error - L6RSP : layer 6 invalid response - protocol error

View File

@ -3020,6 +3020,8 @@ struct tcpcheck_rule *parse_tcpcheck_expect(char **args, int cur_arg, struct pro
err_st = HCHK_STATUS_L7RSP; err_st = HCHK_STATUS_L7RSP;
else if (strcasecmp(args[cur_arg+1], "L7STS") == 0) else if (strcasecmp(args[cur_arg+1], "L7STS") == 0)
err_st = HCHK_STATUS_L7STS; err_st = HCHK_STATUS_L7STS;
else if (strcasecmp(args[cur_arg+1], "L7OKC") == 0)
err_st = HCHK_STATUS_L7OKCD;
else if (strcasecmp(args[cur_arg+1], "L6RSP") == 0) else if (strcasecmp(args[cur_arg+1], "L6RSP") == 0)
err_st = HCHK_STATUS_L6RSP; err_st = HCHK_STATUS_L6RSP;
else if (strcasecmp(args[cur_arg+1], "L4CON") == 0) else if (strcasecmp(args[cur_arg+1], "L4CON") == 0)