Commit cf7304c6 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Merge HAproxy support from vtest

parent 4b895d76
...@@ -45,10 +45,10 @@ ...@@ -45,10 +45,10 @@
#include "vpf.h" #include "vpf.h"
#include "vre.h" #include "vre.h"
#include "vtcp.h" #include "vtcp.h"
#include "vsa.h"
#include "vtim.h" #include "vtim.h"
#define HAPROXY_PROGRAM_ENV_VAR "HAPROXY_PROGRAM" #define HAPROXY_PROGRAM_ENV_VAR "HAPROXY_PROGRAM"
#define HAPROXY_ARGS_ENV_VAR "HAPROXY_ARGS"
#define HAPROXY_OPT_WORKER "-W" #define HAPROXY_OPT_WORKER "-W"
#define HAPROXY_OPT_MCLI "-S" #define HAPROXY_OPT_MCLI "-S"
#define HAPROXY_OPT_DAEMON "-D" #define HAPROXY_OPT_DAEMON "-D"
...@@ -174,7 +174,7 @@ haproxy_cli_tcp_connect(struct vtclog *vl, const char *addr, double tmo, ...@@ -174,7 +174,7 @@ haproxy_cli_tcp_connect(struct vtclog *vl, const char *addr, double tmo,
const char **errp) const char **errp)
{ {
int fd; int fd;
char mabuf[VTCP_ADDRBUFSIZE], mpbuf[VTCP_PORTBUFSIZE]; char mabuf[32], mpbuf[32];
AN(addr); AN(addr);
AN(errp); AN(errp);
...@@ -520,23 +520,16 @@ haproxy_create_mcli(struct haproxy *h) ...@@ -520,23 +520,16 @@ haproxy_create_mcli(struct haproxy *h)
int sock; int sock;
const char *err; const char *err;
char buf[128], addr[128], port[128]; char buf[128], addr[128], port[128];
char vsabuf[vsa_suckaddr_len];
struct suckaddr *sua;
sock = VTCP_listen_on(default_listen_addr, NULL, 100, &err); sock = VTCP_listen_on("127.0.0.1:0", NULL, 100, &err);
if (err != NULL) if (err != NULL)
vtc_fatal(h->vl, vtc_fatal(h->vl,
"Create listen socket failed: %s", err); "Create listen socket failed: %s", err);
assert(sock > 0); assert(sock > 0);
sua = VSA_getsockname(sock, vsabuf, sizeof vsabuf);
AN(sua);
VTCP_name(sua, addr, sizeof addr, port, sizeof port); VTCP_myname(sock, addr, sizeof addr, port, sizeof port);
bprintf(buf, "%s_mcli", h->name); bprintf(buf, "%s_mcli", h->name);
if (VSA_Get_Proto(sua) == AF_INET) macro_def(h->vl, buf, "sock", "%s %s", addr, port);
macro_def(h->vl, buf, "sock", "%s:%s", addr, port);
else
macro_def(h->vl, buf, "sock", "[%s]:%s", addr, port);
macro_def(h->vl, buf, "addr", "%s", addr); macro_def(h->vl, buf, "addr", "%s", addr);
macro_def(h->vl, buf, "port", "%s", port); macro_def(h->vl, buf, "port", "%s", port);
...@@ -566,14 +559,18 @@ haproxy_new(const char *name) ...@@ -566,14 +559,18 @@ haproxy_new(const char *name)
int closed_sock; int closed_sock;
char addr[128], port[128]; char addr[128], port[128];
const char *err; const char *err;
char vsabuf[vsa_suckaddr_len]; const char *env_args;
struct suckaddr *sua;
ALLOC_OBJ(h, HAPROXY_MAGIC); ALLOC_OBJ(h, HAPROXY_MAGIC);
AN(h); AN(h);
REPLACE(h->name, name); REPLACE(h->name, name);
h->args = VSB_new_auto(); h->args = VSB_new_auto();
env_args = getenv(HAPROXY_ARGS_ENV_VAR);
if (env_args) {
VSB_cat(h->args, env_args);
VSB_cat(h->args, " ");
}
h->vl = vtc_logopen("%s", name); h->vl = vtc_logopen("%s", name);
vtc_log_set_cmd(h->vl, haproxy_cli_cmds); vtc_log_set_cmd(h->vl, haproxy_cli_cmds);
...@@ -607,13 +604,8 @@ haproxy_new(const char *name) ...@@ -607,13 +604,8 @@ haproxy_new(const char *name)
vtc_fatal(h->vl, vtc_fatal(h->vl,
"Create listen socket failed: %s", err); "Create listen socket failed: %s", err);
assert(closed_sock > 0); assert(closed_sock > 0);
sua = VSA_getsockname(closed_sock, vsabuf, sizeof vsabuf); VTCP_myname(closed_sock, addr, sizeof addr, port, sizeof port);
AN(sua); macro_def(h->vl, h->closed_sock, "sock", "%s %s", addr, port);
VTCP_name(sua, addr, sizeof addr, port, sizeof port);
if (VSA_Get_Proto(sua) == AF_INET)
macro_def(h->vl, h->closed_sock, "sock", "%s:%s", addr, port);
else
macro_def(h->vl, h->closed_sock, "sock", "[%s]:%s", addr, port);
macro_def(h->vl, h->closed_sock, "addr", "%s", addr); macro_def(h->vl, h->closed_sock, "addr", "%s", addr);
macro_def(h->vl, h->closed_sock, "port", "%s", port); macro_def(h->vl, h->closed_sock, "port", "%s", port);
VTCP_close(&closed_sock); VTCP_close(&closed_sock);
...@@ -851,8 +843,6 @@ haproxy_build_backends(struct haproxy *h, const char *vsb_data) ...@@ -851,8 +843,6 @@ haproxy_build_backends(struct haproxy *h, const char *vsb_data)
int sock; int sock;
char buf[128], addr[128], port[128]; char buf[128], addr[128], port[128];
const char *err; const char *err;
char vsabuf[vsa_suckaddr_len];
struct suckaddr *sua;
p = strstr(p, HAPROXY_BE_FD_STR); p = strstr(p, HAPROXY_BE_FD_STR);
if (!p) if (!p)
...@@ -870,15 +860,10 @@ haproxy_build_backends(struct haproxy *h, const char *vsb_data) ...@@ -870,15 +860,10 @@ haproxy_build_backends(struct haproxy *h, const char *vsb_data)
vtc_fatal(h->vl, vtc_fatal(h->vl,
"Create listen socket failed: %s", err); "Create listen socket failed: %s", err);
assert(sock > 0); assert(sock > 0);
sua = VSA_getsockname(sock, vsabuf, sizeof vsabuf);
AN(sua);
VTCP_name(sua, addr, sizeof addr, port, sizeof port); VTCP_myname(sock, addr, sizeof addr, port, sizeof port);
bprintf(buf, "%s_%s", h->name, p); bprintf(buf, "%s_%s", h->name, p);
if (VSA_Get_Proto(sua) == AF_INET) macro_def(h->vl, buf, "sock", "%s %s", addr, port);
macro_def(h->vl, buf, "sock", "%s:%s", addr, port);
else
macro_def(h->vl, buf, "sock", "[%s]:%s", addr, port);
macro_def(h->vl, buf, "addr", "%s", addr); macro_def(h->vl, buf, "addr", "%s", addr);
macro_def(h->vl, buf, "port", "%s", port); macro_def(h->vl, buf, "port", "%s", port);
......
...@@ -384,7 +384,7 @@ ipvx_works(const char *target) ...@@ -384,7 +384,7 @@ ipvx_works(const char *target)
VTCP_close(&fd); VTCP_close(&fd);
return (1); return (1);
} }
return(0); return(0);
} }
/* SECTION: feature feature /* SECTION: feature feature
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment