Rename parent/child dst/src addrs to divert and return addrs

pull/48/head
Soner Tari 3 years ago
parent 07c3f08584
commit 396db70a87

@ -797,8 +797,8 @@ opts_unset_divert(opts_t *opts)
static int WUNRES
proxyspec_set_divert_addr(proxyspec_t *spec, char *addr, char *port)
{
if (sys_sockaddr_parse(&spec->conn_dst_addr,
&spec->conn_dst_addrlen,
if (sys_sockaddr_parse(&spec->divert_addr,
&spec->divert_addrlen,
addr, port, AF_INET, EVUTIL_AI_PASSIVE) == -1) {
return -1;
}
@ -811,8 +811,8 @@ proxyspec_set_divert_addr(proxyspec_t *spec, char *addr, char *port)
static int WUNRES
proxyspec_set_return_addr(proxyspec_t *spec, char *addr)
{
if (sys_sockaddr_parse(&spec->child_src_addr,
&spec->child_src_addrlen,
if (sys_sockaddr_parse(&spec->return_addr,
&spec->return_addrlen,
addr, "0", AF_INET, EVUTIL_AI_PASSIVE) == -1) {
return -1;
}
@ -892,9 +892,9 @@ set_divert(proxyspec_t *spec, int split)
{
// The global divert option -n has precedence over the proxyspec Divert option
// Use split mode if no divert address is specified, even if the Divert option is used
// The Divert option in structured proxyspecs has precedence over the divert address option (conn_dst_addrlen)
// The Divert option in structured proxyspecs has precedence over the divert address option
// If the Divert option is not used in structured proxyspecs, use the global Divert option
if (split || !spec->conn_dst_addrlen) {
if (split || !spec->divert_addrlen) {
opts_unset_divert(spec->opts);
}
}
@ -1183,27 +1183,27 @@ proxyspec_str(proxyspec_t *spec)
if (rv < 0)
goto out;
}
if (spec->conn_dst_addrlen) {
if (spec->divert_addrlen) {
char *chbuf, *cpbuf;
if (sys_sockaddr_str((struct sockaddr *)&spec->conn_dst_addr,
spec->conn_dst_addrlen,
if (sys_sockaddr_str((struct sockaddr *)&spec->divert_addr,
spec->divert_addrlen,
&chbuf, &cpbuf) != 0) {
goto out;
}
int rv = asprintf(&pdstbuf, "\nparent dst addr= [%s]:%s", chbuf, cpbuf);
int rv = asprintf(&pdstbuf, "\ndivert addr= [%s]:%s", chbuf, cpbuf);
free(chbuf);
free(cpbuf);
if (rv < 0)
goto out;
}
if (spec->child_src_addrlen) {
if (spec->return_addrlen) {
char *chbuf, *cpbuf;
if (sys_sockaddr_str((struct sockaddr *)&spec->child_src_addr,
spec->child_src_addrlen,
if (sys_sockaddr_str((struct sockaddr *)&spec->return_addr,
spec->return_addrlen,
&chbuf, &cpbuf) != 0) {
goto out;
}
int rv = asprintf(&csrcbuf, "\nchild src addr= [%s]:%s", chbuf, cpbuf);
int rv = asprintf(&csrcbuf, "\nreturn addr= [%s]:%s", chbuf, cpbuf);
free(chbuf);
free(cpbuf);
if (rv < 0)
@ -1228,7 +1228,7 @@ proxyspec_str(proxyspec_t *spec)
STRORNONE(pdstbuf),
STRORNONE(csrcbuf),
optsstr,
!spec->opts->divert && spec->conn_dst_addrlen ? "\nWARNING: Divert address specified in split mode" : "") < 0) {
!spec->opts->divert && spec->divert_addrlen ? "\nWARNING: Divert address specified in split mode" : "") < 0) {
s = NULL;
}
out:

@ -168,11 +168,11 @@ typedef struct proxyspec {
nat_socket_cb_t natsocket;
struct proxyspec *next;
struct sockaddr_storage conn_dst_addr;
socklen_t conn_dst_addrlen;
struct sockaddr_storage divert_addr;
socklen_t divert_addrlen;
struct sockaddr_storage child_src_addr;
socklen_t child_src_addrlen;
struct sockaddr_storage return_addr;
socklen_t return_addrlen;
// Each proxyspec has its own opts
opts_t *opts;

@ -1700,8 +1700,8 @@ protossl_bev_eventcb_connected_srvdst(UNUSED struct bufferevent *bev, pxy_conn_c
if (ctx->divert) {
bufferevent_setcb(ctx->dst.bev, pxy_bev_readcb, pxy_bev_writecb, pxy_bev_eventcb, ctx);
if (bufferevent_socket_connect(ctx->dst.bev, (struct sockaddr *)&ctx->spec->conn_dst_addr, ctx->spec->conn_dst_addrlen) == -1) {
log_fine("FAILED bufferevent_socket_connect for dst");
if (bufferevent_socket_connect(ctx->dst.bev, (struct sockaddr *)&ctx->spec->divert_addr, ctx->spec->divert_addrlen) == -1) {
log_fine("FAILED bufferevent_socket_connect for divert addr");
pxy_conn_term(ctx, 1);
return;
}

@ -659,8 +659,8 @@ prototcp_bev_eventcb_connected_srvdst(UNUSED struct bufferevent *bev, pxy_conn_c
if (ctx->divert) {
bufferevent_setcb(ctx->dst.bev, pxy_bev_readcb, pxy_bev_writecb, pxy_bev_eventcb, ctx);
if (bufferevent_socket_connect(ctx->dst.bev, (struct sockaddr *)&ctx->spec->conn_dst_addr, ctx->spec->conn_dst_addrlen) == -1) {
log_fine("FAILED bufferevent_socket_connect for dst");
if (bufferevent_socket_connect(ctx->dst.bev, (struct sockaddr *)&ctx->spec->divert_addr, ctx->spec->divert_addrlen) == -1) {
log_fine("FAILED bufferevent_socket_connect for divert addr");
pxy_conn_term(ctx, 1);
return;
}

@ -1169,7 +1169,7 @@ out:
static int WUNRES NONNULL(1)
pxy_opensock_child(pxy_conn_ctx_t *ctx)
{
evutil_socket_t fd = socket(ctx->spec->child_src_addr.ss_family, SOCK_STREAM, IPPROTO_TCP);
evutil_socket_t fd = socket(ctx->spec->return_addr.ss_family, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1) {
log_err_level_printf(LOG_CRIT, "Error from socket(): %s (%i)\n", strerror(errno), errno);
log_fine_va("Error from socket(): %s (%i)", strerror(errno), errno);
@ -1199,7 +1199,7 @@ pxy_opensock_child(pxy_conn_ctx_t *ctx)
return -1;
}
if (bind(fd, (struct sockaddr *)&ctx->spec->child_src_addr, ctx->spec->child_src_addrlen) == -1) {
if (bind(fd, (struct sockaddr *)&ctx->spec->return_addr, ctx->spec->return_addrlen) == -1) {
log_err_level_printf(LOG_CRIT, "Error from bind(): %s (%i)\n", strerror(errno), errno);
log_fine_va("Error from bind(): %s (%i)", strerror(errno), errno);
evutil_closesocket(fd);

Loading…
Cancel
Save