MINOR: protocol: add a flags field to store info about protocols

We'll use these flags to know if some protocols are supported, and if
so, with what options/extensions. Reuseport will move there for example.
Two functions were added to globally set/clear a flag.
diff --git a/include/haproxy/protocol-t.h b/include/haproxy/protocol-t.h
index 0419191..aa8aa66 100644
--- a/include/haproxy/protocol-t.h
+++ b/include/haproxy/protocol-t.h
@@ -127,7 +127,7 @@
 	/* default I/O handler */
 	void (*default_iocb)(int fd);                   /* generic I/O handler (typically accept callback) */
 
-	/* 4-byte hole here on 64-bit machines */
+	uint flags;                                     /* flags describing protocol support (PROTO_F_*) */
 	uint nb_receivers;                              /* number of receivers (under proto_lock) */
 	struct list receivers;				/* list of receivers using this protocol (under proto_lock) */
 	struct list list;				/* list of registered protocols (under proto_lock) */
diff --git a/include/haproxy/protocol.h b/include/haproxy/protocol.h
index 05bba78..5c0871a 100644
--- a/include/haproxy/protocol.h
+++ b/include/haproxy/protocol.h
@@ -38,6 +38,12 @@
  */
 void protocol_unregister(struct protocol *proto);
 
+/* clears flag <flag> on all protocols. */
+void protocol_clrf_all(uint flag);
+
+/* sets flag <flag> on all protocols. */
+void protocol_setf_all(uint flag);
+
 /* binds all listeners of all registered protocols. Returns a composition
  * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL, ERR_ABORT.
  */
diff --git a/src/protocol.c b/src/protocol.c
index c627d5c..7cc9674 100644
--- a/src/protocol.c
+++ b/src/protocol.c
@@ -61,6 +61,28 @@
 	HA_SPIN_UNLOCK(PROTO_LOCK, &proto_lock);
 }
 
+/* clears flag <flag> on all protocols. */
+void protocol_clrf_all(uint flag)
+{
+	struct protocol *proto;
+
+	HA_SPIN_LOCK(PROTO_LOCK, &proto_lock);
+	list_for_each_entry(proto, &protocols, list)
+		proto->flags &= ~flag;
+	HA_SPIN_UNLOCK(PROTO_LOCK, &proto_lock);
+}
+
+/* sets flag <flag> on all protocols. */
+void protocol_setf_all(uint flag)
+{
+	struct protocol *proto;
+
+	HA_SPIN_LOCK(PROTO_LOCK, &proto_lock);
+	list_for_each_entry(proto, &protocols, list)
+		proto->flags |= flag;
+	HA_SPIN_UNLOCK(PROTO_LOCK, &proto_lock);
+}
+
 /* binds all listeners of all registered protocols. Returns a composition
  * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
  */