diff --git a/include/haproxy/protocol-t.h b/include/haproxy/protocol-t.h index cacd3fc31..f74a2e1a6 100644 --- a/include/haproxy/protocol-t.h +++ b/include/haproxy/protocol-t.h @@ -82,6 +82,7 @@ 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) */ int sock_domain; /* socket domain, as passed to socket() */ int sock_type; /* socket type, as passed to socket() */ int sock_prot; /* socket protocol, as passed to socket() */ diff --git a/src/proto_sockpair.c b/src/proto_sockpair.c index 6b1d69c7f..fc26a80d5 100644 --- a/src/proto_sockpair.c +++ b/src/proto_sockpair.c @@ -61,6 +61,7 @@ struct proto_fam proto_fam_sockpair = { static struct protocol proto_sockpair = { .name = "sockpair", .fam = &proto_fam_sockpair, + .ctrl_type = SOCK_STREAM, .sock_domain = AF_CUST_SOCKPAIR, .sock_type = SOCK_STREAM, .sock_prot = 0, diff --git a/src/proto_tcp.c b/src/proto_tcp.c index 33d39b3d5..09d3e8619 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -52,6 +52,7 @@ static void tcpv6_add_listener(struct listener *listener, int port); static struct protocol proto_tcpv4 = { .name = "tcpv4", .fam = &proto_fam_inet4, + .ctrl_type = SOCK_STREAM, .sock_domain = AF_INET, .sock_type = SOCK_STREAM, .sock_prot = IPPROTO_TCP, @@ -71,6 +72,7 @@ INITCALL1(STG_REGISTER, protocol_register, &proto_tcpv4); static struct protocol proto_tcpv6 = { .name = "tcpv6", .fam = &proto_fam_inet6, + .ctrl_type = SOCK_STREAM, .sock_domain = AF_INET6, .sock_type = SOCK_STREAM, .sock_prot = IPPROTO_TCP, diff --git a/src/proto_udp.c b/src/proto_udp.c index d408d7c26..74408b4ec 100644 --- a/src/proto_udp.c +++ b/src/proto_udp.c @@ -48,6 +48,7 @@ static void udp6_add_listener(struct listener *listener, int port); static struct protocol proto_udp4 = { .name = "udp4", .fam = &proto_fam_inet4, + .ctrl_type = SOCK_DGRAM, .sock_domain = AF_CUST_UDP4, .sock_type = SOCK_DGRAM, .sock_prot = IPPROTO_UDP, @@ -67,6 +68,7 @@ INITCALL1(STG_REGISTER, protocol_register, &proto_udp4); static struct protocol proto_udp6 = { .name = "udp6", .fam = &proto_fam_inet6, + .ctrl_type = SOCK_DGRAM, .sock_domain = AF_CUST_UDP6, .sock_type = SOCK_DGRAM, .sock_prot = IPPROTO_UDP, diff --git a/src/proto_uxst.c b/src/proto_uxst.c index 0dd03f85b..6cf35b754 100644 --- a/src/proto_uxst.c +++ b/src/proto_uxst.c @@ -49,6 +49,7 @@ static int uxst_pause_listener(struct listener *l); static struct protocol proto_unix = { .name = "unix_stream", .fam = &proto_fam_unix, + .ctrl_type = SOCK_STREAM, .sock_domain = PF_UNIX, .sock_type = SOCK_STREAM, .sock_prot = 0,