diff --git a/include/haproxy/connection.h b/include/haproxy/connection.h index 05e85e1cb..876f55761 100644 --- a/include/haproxy/connection.h +++ b/include/haproxy/connection.h @@ -534,13 +534,13 @@ static inline int conn_get_src(struct connection *conn) if (conn->flags & CO_FL_ADDR_FROM_SET) return 1; - if (!conn_ctrl_ready(conn) || !conn->ctrl->get_src) + if (!conn_ctrl_ready(conn) || !conn->ctrl->fam->get_src) return 0; if (!sockaddr_alloc(&conn->src)) return 0; - if (conn->ctrl->get_src(conn->handle.fd, (struct sockaddr *)conn->src, + if (conn->ctrl->fam->get_src(conn->handle.fd, (struct sockaddr *)conn->src, sizeof(*conn->src), obj_type(conn->target) != OBJ_TYPE_LISTENER) == -1) return 0; @@ -557,13 +557,13 @@ static inline int conn_get_dst(struct connection *conn) if (conn->flags & CO_FL_ADDR_TO_SET) return 1; - if (!conn_ctrl_ready(conn) || !conn->ctrl->get_dst) + if (!conn_ctrl_ready(conn) || !conn->ctrl->fam->get_dst) return 0; if (!sockaddr_alloc(&conn->dst)) return 0; - if (conn->ctrl->get_dst(conn->handle.fd, (struct sockaddr *)conn->dst, + if (conn->ctrl->fam->get_dst(conn->handle.fd, (struct sockaddr *)conn->dst, sizeof(*conn->dst), obj_type(conn->target) != OBJ_TYPE_LISTENER) == -1) return 0; diff --git a/src/protocol.c b/src/protocol.c index a4e93e2de..748587025 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -82,7 +82,7 @@ int protocol_bind_all(int verbose) handler = syslog_fd_handler; } - lerr = proto->bind(receiver, handler, &errmsg); + lerr = proto->fam->bind(receiver, handler, &errmsg); err |= lerr; /* errors are reported if is set or if they are fatal */ diff --git a/src/sock.c b/src/sock.c index 9431e7582..3e414a8b9 100644 --- a/src/sock.c +++ b/src/sock.c @@ -363,7 +363,7 @@ int sock_find_compatible_fd(const struct receiver *rx) int ns_namelen = 0; int ret = -1; - if (!rx->proto->addrcmp) + if (!rx->proto->fam->addrcmp) return -1; if (rx->proto->sock_type == SOCK_DGRAM) @@ -397,7 +397,7 @@ int sock_find_compatible_fd(const struct receiver *rx) #ifdef USE_NS (!ns_namelen || strcmp(rx->settings->netns->node.key, xfer_sock->namespace) == 0) && #endif - rx->proto->addrcmp(&xfer_sock->addr, &rx->addr) == 0) + rx->proto->fam->addrcmp(&xfer_sock->addr, &rx->addr) == 0) break; xfer_sock = xfer_sock->next; } diff --git a/src/sock_inet.c b/src/sock_inet.c index 09ff71e5e..7c814d055 100644 --- a/src/sock_inet.c +++ b/src/sock_inet.c @@ -263,7 +263,7 @@ int sock_inet_bind_receiver(struct receiver *rx, void (*handler)(int fd), char * struct sockaddr_storage addr_inet = rx->addr; /* force to classic sock family, not AF_CUST_* */ - addr_inet.ss_family = rx->proto->sock_family; + addr_inet.ss_family = rx->proto->fam->sock_family; /* ensure we never return garbage */ if (errmsg) @@ -289,7 +289,7 @@ int sock_inet_bind_receiver(struct receiver *rx, void (*handler)(int fd), char * ext = (fd >= 0); if (!ext) { - fd = my_socketat(rx->settings->netns, rx->proto->sock_family, + fd = my_socketat(rx->settings->netns, rx->proto->fam->sock_domain, rx->proto->sock_type, rx->proto->sock_prot); if (fd == -1) { err |= ERR_RETRYABLE | ERR_ALERT; @@ -367,7 +367,7 @@ int sock_inet_bind_receiver(struct receiver *rx, void (*handler)(int fd), char * } #endif - if (!ext && bind(fd, (struct sockaddr *)&addr_inet, rx->proto->sock_addrlen) == -1) { + if (!ext && bind(fd, (struct sockaddr *)&addr_inet, rx->proto->fam->sock_addrlen) == -1) { err |= ERR_RETRYABLE | ERR_ALERT; memprintf(errmsg, "cannot bind socket"); goto bind_close_return; diff --git a/src/sock_unix.c b/src/sock_unix.c index 4620b7440..8bdfed9be 100644 --- a/src/sock_unix.c +++ b/src/sock_unix.c @@ -218,7 +218,7 @@ int sock_unix_bind_receiver(struct receiver *rx, void (*handler)(int fd), char * addr.sun_family = AF_UNIX; /* WT: shouldn't we use my_socketat(rx->netns) here instead ? */ - fd = socket(PF_UNIX, SOCK_STREAM, 0); + fd = socket(rx->proto->fam->sock_domain, rx->proto->sock_type, rx->proto->sock_prot); if (fd < 0) { err |= ERR_FATAL | ERR_ALERT; memprintf(errmsg, "cannot create receiving socket");