MINOR: protocol: add the control layer type in the protocol struct

This one will be needed to more accurately select a protocol. It may
differ from the socket type for QUIC, which uses dgram at the socket
layer and provides stream at the control layer. The upper level requests
a control layer only so we need this field.
diff --git a/include/haproxy/protocol-t.h b/include/haproxy/protocol-t.h
index cacd3fc..f74a2e1 100644
--- a/include/haproxy/protocol-t.h
+++ b/include/haproxy/protocol-t.h
@@ -82,6 +82,7 @@
 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 6b1d69c..fc26a80 100644
--- a/src/proto_sockpair.c
+++ b/src/proto_sockpair.c
@@ -61,6 +61,7 @@
 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 33d39b3..09d3e86 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -52,6 +52,7 @@
 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 @@
 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 d408d7c..74408b4 100644
--- a/src/proto_udp.c
+++ b/src/proto_udp.c
@@ -48,6 +48,7 @@
 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 @@
 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 0dd03f8..6cf35b7 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -49,6 +49,7 @@
 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,