MINOR: protocol: replace ctrl_type with xprt_type and clarify it

There's been some great confusion between proto_type, ctrl_type and
sock_type. It turns out that ctrl_type was improperly chosen because
it's not the control layer that is of this or that type, but the
transport layer, and it turns out that the transport layer doesn't
(normally) denaturate the underlying control layer, except for QUIC
which turns dgrams to streams. The fact that the SOCK_{DGRAM|STREAM}
set of values was used added to the confusion.

Let's replace it with xprt_type which reuses the later introduced
PROTO_TYPE_* values, and update the comments to explain which one
works at what level.
This commit is contained in:
Willy Tarreau 2022-05-20 16:36:46 +02:00
parent 3d7b4684fe
commit 91b47263f7
11 changed files with 15 additions and 15 deletions

View File

@ -89,8 +89,8 @@ struct proto_fam {
struct protocol {
char name[PROTO_NAME_LEN]; /* protocol name, zero-terminated */
struct proto_fam *fam; /* protocol family */
int ctrl_type; /* control layer type (SOCK_STREAM/SOCK_DGRAM) */
enum proto_type proto_type; /* protocol type (PROTO_TYPE_*) */
int xprt_type; /* transport layer type (PROTO_TYPE_STREAM/PROTO_TYPE_DGRAM) */
enum proto_type proto_type; /* protocol type at the socket layer (PROTO_TYPE_*) */
int sock_type; /* socket type, as passed to socket() */
int sock_prot; /* socket protocol, as passed to socket() */

View File

@ -161,7 +161,7 @@ int str2listener(char *str, struct proxy *curproxy, struct bind_conf *bind_conf,
* is selected, regardless of bind_conf settings. We then need
* to initialize QUIC params.
*/
if (proto->proto_type == PROTO_TYPE_DGRAM && proto->ctrl_type == SOCK_STREAM) {
if (proto->proto_type == PROTO_TYPE_DGRAM && proto->xprt_type == PROTO_TYPE_STREAM) {
bind_conf->xprt = xprt_get(XPRT_QUIC);
quic_transport_params_init(&bind_conf->quic_params, 1);
}

View File

@ -1005,7 +1005,7 @@ int parse_logsrv(char **args, struct list *logsrvs, int do_del, const char *file
set_host_port(&logsrv->addr, SYSLOG_PORT);
}
if (proto && proto->ctrl_type == SOCK_STREAM) {
if (proto && proto->xprt_type == PROTO_TYPE_STREAM) {
static unsigned long ring_ids;
/* Implicit sink buffer will be

View File

@ -65,7 +65,7 @@ struct protocol proto_quic4 = {
.name = "quic4",
/* connection layer */
.ctrl_type = SOCK_STREAM,
.xprt_type = PROTO_TYPE_STREAM,
.listen = quic_bind_listener,
.enable = quic_enable_listener,
.disable = quic_disable_listener,
@ -105,7 +105,7 @@ struct protocol proto_quic6 = {
.name = "quic6",
/* connection layer */
.ctrl_type = SOCK_STREAM,
.xprt_type = PROTO_TYPE_STREAM,
.listen = quic_bind_listener,
.enable = quic_enable_listener,
.disable = quic_disable_listener,

View File

@ -65,7 +65,7 @@ struct protocol proto_sockpair = {
.name = "sockpair",
/* connection layer */
.ctrl_type = SOCK_STREAM,
.xprt_type = PROTO_TYPE_STREAM,
.listen = sockpair_bind_listener,
.enable = sockpair_enable_listener,
.disable = sockpair_disable_listener,

View File

@ -54,7 +54,7 @@ struct protocol proto_tcpv4 = {
.name = "tcpv4",
/* connection layer */
.ctrl_type = SOCK_STREAM,
.xprt_type = PROTO_TYPE_STREAM,
.listen = tcp_bind_listener,
.enable = tcp_enable_listener,
.disable = tcp_disable_listener,
@ -97,7 +97,7 @@ struct protocol proto_tcpv6 = {
.name = "tcpv6",
/* connection layer */
.ctrl_type = SOCK_STREAM,
.xprt_type = PROTO_TYPE_STREAM,
.listen = tcp_bind_listener,
.enable = tcp_enable_listener,
.disable = tcp_disable_listener,

View File

@ -49,7 +49,7 @@ struct protocol proto_udp4 = {
.name = "udp4",
/* connection layer */
.ctrl_type = SOCK_DGRAM,
.xprt_type = PROTO_TYPE_DGRAM,
.listen = udp_bind_listener,
.enable = udp_enable_listener,
.disable = udp_disable_listener,
@ -83,7 +83,7 @@ struct protocol proto_udp6 = {
.name = "udp6",
/* connection layer */
.ctrl_type = SOCK_DGRAM,
.xprt_type = PROTO_TYPE_DGRAM,
.listen = udp_bind_listener,
.enable = udp_enable_listener,
.disable = udp_disable_listener,

View File

@ -40,7 +40,7 @@ struct protocol proto_uxdg = {
.name = "uxdg",
/* connection layer */
.ctrl_type = SOCK_DGRAM,
.xprt_type = PROTO_TYPE_DGRAM,
.listen = uxdg_bind_listener,
.enable = uxdg_enable_listener,
.disable = uxdg_disable_listener,

View File

@ -50,7 +50,7 @@ struct protocol proto_uxst = {
.name = "unix_stream",
/* connection layer */
.ctrl_type = SOCK_STREAM,
.xprt_type = PROTO_TYPE_STREAM,
.listen = uxst_bind_listener,
.enable = uxst_enable_listener,
.disable = uxst_disable_listener,

View File

@ -44,7 +44,7 @@ void protocol_register(struct protocol *proto)
LIST_APPEND(&protocols, &proto->list);
__protocol_by_family[sock_domain]
[proto->proto_type]
[proto->ctrl_type == SOCK_DGRAM] = proto;
[proto->xprt_type == PROTO_TYPE_DGRAM] = proto;
HA_SPIN_UNLOCK(PROTO_LOCK, &proto_lock);
}

View File

@ -3455,7 +3455,7 @@ int cfg_parse_resolvers(const char *file, int linenum, char **args, int kwm)
goto out;
}
if (proto && proto->ctrl_type == SOCK_STREAM) {
if (proto && proto->xprt_type == PROTO_TYPE_STREAM) {
err_code |= parse_server(file, linenum, args, curr_resolvers->px, NULL,
SRV_PARSE_PARSE_ADDR|SRV_PARSE_INITIAL_RESOLVE);
if (err_code & (ERR_FATAL|ERR_ABORT)) {