aboutgitcodebugslistschat
path: root/doc/platform-requirements/Makefile
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-07-05 20:44:08 +1000
committerStefano Brivio <sbrivio@redhat.com>2024-07-05 15:26:43 +0200
commit299c407501378134f31b6931645531ad0f700066 (patch)
treed5b8c3011174efd3169cbfda2841ec25cc3a4375 /doc/platform-requirements/Makefile
parentbe0214cca66374967eb4ce37240388c3cc39a2ae (diff)
downloadpasst-299c407501378134f31b6931645531ad0f700066.tar
passt-299c407501378134f31b6931645531ad0f700066.tar.gz
passt-299c407501378134f31b6931645531ad0f700066.tar.bz2
passt-299c407501378134f31b6931645531ad0f700066.tar.lz
passt-299c407501378134f31b6931645531ad0f700066.tar.xz
passt-299c407501378134f31b6931645531ad0f700066.tar.zst
passt-299c407501378134f31b6931645531ad0f700066.zip
doc: Add program to document and test assumptions about SO_REUSEADDR
For the approach we intend to use for handling UDP flows, we have some pretty specific requirements about how SO_REUSEADDR works with UDP sockets. Specifically SO_REUSEADDR allows multiple sockets with overlapping bind()s, and therefore there can be multiple sockets which are eligible to receive the same datagram. Which one will actually receive it is important to us. Add a test program which verifies things work the way we expect, which documents what those expectations are in the process. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'doc/platform-requirements/Makefile')
-rw-r--r--doc/platform-requirements/Makefile45
1 files changed, 45 insertions, 0 deletions
diff --git a/doc/platform-requirements/Makefile b/doc/platform-requirements/Makefile
new file mode 100644
index 0000000..6e1d966
--- /dev/null
+++ b/doc/platform-requirements/Makefile
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright Red Hat
+# Author: David Gibson <david@gibson.dropbear.id.au>
+
+TARGETS = reuseaddr-priority
+SRCS = reuseaddr-priority.c
+CFLAGS = -Wall
+
+all: cppcheck clang-tidy $(TARGETS:%=check-%)
+
+$(TARGETS): %: %.c common.c common.h
+
+check-%: %
+ ./$<
+
+cppcheck:
+ cppcheck --std=c11 --error-exitcode=1 --enable=all --force \
+ --check-level=exhaustive \
+ --inconclusive --library=posix --quiet \
+ --suppress=missingIncludeSystem \
+ $(SRCS)
+
+clang-tidy:
+ clang-tidy --checks=*,\
+ -altera-id-dependent-backward-branch,\
+ -altera-unroll-loops,\
+ -bugprone-easily-swappable-parameters,\
+ -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,\
+ -concurrency-mt-unsafe,\
+ -cppcoreguidelines-avoid-non-const-global-variables,\
+ -cppcoreguidelines-init-variables,\
+ -cppcoreguidelines-macro-to-enum,\
+ -google-readability-braces-around-statements,\
+ -hicpp-braces-around-statements,\
+ -llvmlibc-restrict-system-libc-headers,\
+ -misc-include-cleaner,\
+ -modernize-macro-to-enum,\
+ -readability-braces-around-statements,\
+ -readability-identifier-length,\
+ -readability-isolate-declaration \
+ $(SRCS)
+
+clean:
+ rm -f $(TARGETS) *.o *~