mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 23:27:04 +02:00
This patch implements analysers for parsing the CLI and extra features for the master's CLI. For each command (sent alone, or separated by ; or \n) the request analyser will determine to which server it should send the request. The 'mode cli' proxy is able to parse a prefix for each command which is used to select the apropriate server. The prefix start by @ and is followed by "master", the PID preceded by ! or the relative PID. (e.g. @master, @1, @!1234). The servers are not round-robined anymore. The command is sent with a SHUTW which force the server to close the connection after sending its response. However the proxy allows a keepalive connection on the client side and does not close. The response analyser does not do much stuff, it only reinits the connection when it received a close from the server, and forward the response. It does not analyze the response data. The only guarantee of the end of the response is the close of the server, we can't rely on the double \n since it's not send by every command. This could be reimplemented later as a filter.
44 lines
1.4 KiB
C
44 lines
1.4 KiB
C
/*
|
|
* include/proto/cli.h
|
|
* This file contains definitions of some primitives to dedicated to
|
|
* statistics output.
|
|
*
|
|
* Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation, version 2.1
|
|
* exclusively.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _PROTO_CLI_H
|
|
#define _PROTO_CLI_H
|
|
|
|
|
|
void cli_register_kw(struct cli_kw_list *kw_list);
|
|
|
|
int cli_has_level(struct appctx *appctx, int level);
|
|
|
|
int mworker_cli_proxy_create();
|
|
int mworker_cli_proxy_new_listener(char *line);
|
|
int mworker_cli_sockpair_new(struct mworker_proc *mworker_proc, int proc);
|
|
|
|
/* proxy mode cli functions */
|
|
|
|
/* analyzers */
|
|
int pcli_wait_for_request(struct stream *s, struct channel *req, int an_bit);
|
|
int pcli_wait_for_response(struct stream *s, struct channel *rep, int an_bit);
|
|
|
|
|
|
#endif /* _PROTO_CLI_H */
|
|
|