]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: protocol: add a new pair of rx_enable/rx_disable methods
authorWilly Tarreau <w@1wt.eu>
Fri, 25 Sep 2020 17:09:53 +0000 (19:09 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 9 Oct 2020 09:27:30 +0000 (11:27 +0200)
These methods will be used to enable/disable rx at the receiver level so
that callers don't play with FDs directly anymore. All our protocols use
the generic ones from sock.c at the moment. For now they're not used.

include/haproxy/protocol-t.h
src/proto_sockpair.c
src/proto_tcp.c
src/proto_udp.c
src/proto_uxst.c

index 3d5ce82cdc4ac88fa57f5d32d193d194c4d75a6b..fbd84193db67df4a38b1e98cf3a8e01abc20279a 100644 (file)
@@ -91,6 +91,8 @@ struct protocol {
        int (*listen)(struct listener *l, char *errmsg, int errlen); /* start a listener */
 
        /* functions acting on the receiver */
+       void (*rx_enable)(struct receiver *rx);         /* enable receiving on the receiver */
+       void (*rx_disable)(struct receiver *rx);        /* disable receiving on the receiver */
        int (*rx_suspend)(struct receiver *rx);         /* temporarily suspend this receiver for a soft restart */
        int (*rx_resume)(struct receiver *rx);          /* try to resume a temporarily suspended receiver */
 
index b787f95fe88c91abbc40e3e9b33e58c1e1553042..4a5701c8cf8e3e656d12e95c934df32e5cfde6d7 100644 (file)
@@ -36,6 +36,7 @@
 #include <haproxy/listener.h>
 #include <haproxy/protocol.h>
 #include <haproxy/proto_sockpair.h>
+#include <haproxy/sock.h>
 #include <haproxy/time.h>
 #include <haproxy/tools.h>
 #include <haproxy/version.h>
@@ -67,6 +68,8 @@ static struct protocol proto_sockpair = {
        .sock_prot = 0,
        .add = sockpair_add_listener,
        .listen = sockpair_bind_listener,
+       .rx_enable = sock_enable,
+       .rx_disable = sock_disable,
        .accept = &listener_accept,
        .connect = &sockpair_connect_server,
        .receivers = LIST_HEAD_INIT(proto_sockpair.receivers),
index 5aa7bfd60f712f609a69d0228aa602bfe5548164..9574c184e5da94e066a27d39b0cf778f722a2246 100644 (file)
@@ -60,6 +60,8 @@ static struct protocol proto_tcpv4 = {
        .sock_prot = IPPROTO_TCP,
        .add = tcpv4_add_listener,
        .listen = tcp_bind_listener,
+       .rx_enable = sock_enable,
+       .rx_disable = sock_disable,
        .rx_suspend = tcp_suspend_receiver,
        .rx_resume = tcp_resume_receiver,
        .accept = &listener_accept,
@@ -80,6 +82,8 @@ static struct protocol proto_tcpv6 = {
        .sock_prot = IPPROTO_TCP,
        .add = tcpv6_add_listener,
        .listen = tcp_bind_listener,
+       .rx_enable = sock_enable,
+       .rx_disable = sock_disable,
        .rx_suspend = tcp_suspend_receiver,
        .rx_resume = tcp_resume_receiver,
        .accept = &listener_accept,
index 1181d1adc40e0651aed0e2091c234b8bcabbe42e..31db442986eb82ee7d913f431eb2c5a87bc0f08c 100644 (file)
@@ -55,6 +55,8 @@ static struct protocol proto_udp4 = {
        .sock_prot = IPPROTO_UDP,
        .add = udp4_add_listener,
        .listen = udp_bind_listener,
+       .rx_enable = sock_enable,
+       .rx_disable = sock_disable,
        .rx_suspend = udp_suspend_receiver,
        .receivers = LIST_HEAD_INIT(proto_udp4.receivers),
        .nb_receivers = 0,
@@ -72,6 +74,8 @@ static struct protocol proto_udp6 = {
        .sock_prot = IPPROTO_UDP,
        .add = udp6_add_listener,
        .listen = udp_bind_listener,
+       .rx_enable = sock_enable,
+       .rx_disable = sock_disable,
        .rx_suspend = udp_suspend_receiver,
        .receivers = LIST_HEAD_INIT(proto_udp6.receivers),
        .nb_receivers = 0,
index 7278d51b3ec03061c2b6a40abd478e78a12599c1..1febe3e5ef6e7f31fb7e44c3845cec8f76d0c8f3 100644 (file)
@@ -55,6 +55,8 @@ static struct protocol proto_unix = {
        .sock_prot = 0,
        .add = uxst_add_listener,
        .listen = uxst_bind_listener,
+       .rx_enable = sock_enable,
+       .rx_disable = sock_disable,
        .rx_suspend = uxst_suspend_receiver,
        .accept = &listener_accept,
        .connect = &uxst_connect_server,