aboutgitcodebugslistschat
path: root/util.h
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2021-04-25 13:34:04 +0200
committerStefano Brivio <sbrivio@redhat.com>2021-04-29 17:15:26 +0200
commitdb1fe773a3eacbf2b3ce0b3333f1684291fa5c2d (patch)
tree72c07fb27d823acb1f48ca70284a7298c1060d4d /util.h
parent48afbe321eddfb68966a4436884c022e64c3e166 (diff)
downloadpasst-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.tar
passt-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.tar.gz
passt-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.tar.bz2
passt-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.tar.lz
passt-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.tar.xz
passt-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.tar.zst
passt-db1fe773a3eacbf2b3ce0b3333f1684291fa5c2d.zip
tcp: Avoid SO_ACCEPTCONN getsockopt() by noting listening/data sockets numbers
...the rest is reshuffling existing macros to use the bits we need in TCP code. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'util.h')
-rw-r--r--util.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/util.h b/util.h
index 139638c..34b8266 100644
--- a/util.h
+++ b/util.h
@@ -8,6 +8,25 @@ void debug(const char *format, ...);
#define debug(...) { }
#endif
+#define CHECK_SET_MIN_MAX(basename, fd) \
+ do { \
+ if ((fd) < basename##min) \
+ basename##min = (fd); \
+ if ((fd) > basename##max) \
+ basename##max = (fd); \
+ } while (0)
+
+#define CHECK_SET_MIN_MAX_PROTO_FD(proto, ipproto, proto_ctx, fd) \
+ do { \
+ if ((proto) == (ipproto)) \
+ CHECK_SET_MIN_MAX(c->proto_ctx.fd_, (fd)); \
+ } while (0)
+
+#define IN_INTERVAL(a, b, x) ((x) >= (a) && (x) <= (b))
+
+#define FD_PROTO(x, proto) \
+ (IN_INTERVAL(c->proto.fd_min, c->proto.fd_max, (x)))
+
uint16_t csum_fold(uint32_t sum);
uint16_t csum_ip4(void *buf, size_t len);
void csum_tcp4(struct iphdr *iph);