mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-05-06 09:48:00 +00:00
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.
This commit is contained in:
parent
a22db6567f
commit
65df7e028d
@ -127,7 +127,7 @@ struct protocol {
|
|||||||
/* default I/O handler */
|
/* default I/O handler */
|
||||||
void (*default_iocb)(int fd); /* generic I/O handler (typically accept callback) */
|
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) */
|
uint nb_receivers; /* number of receivers (under proto_lock) */
|
||||||
struct list receivers; /* list of receivers using this protocol (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) */
|
struct list list; /* list of registered protocols (under proto_lock) */
|
||||||
|
@ -38,6 +38,12 @@ void protocol_register(struct protocol *proto);
|
|||||||
*/
|
*/
|
||||||
void protocol_unregister(struct protocol *proto);
|
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
|
/* binds all listeners of all registered protocols. Returns a composition
|
||||||
* of ERR_NONE, ERR_RETRYABLE, ERR_FATAL, ERR_ABORT.
|
* of ERR_NONE, ERR_RETRYABLE, ERR_FATAL, ERR_ABORT.
|
||||||
*/
|
*/
|
||||||
|
@ -61,6 +61,28 @@ void protocol_unregister(struct protocol *proto)
|
|||||||
HA_SPIN_UNLOCK(PROTO_LOCK, &proto_lock);
|
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
|
/* binds all listeners of all registered protocols. Returns a composition
|
||||||
* of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
|
* of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user