summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozsef Kadlecsik <kadlec@netfilter.org>2021-02-09 19:41:23 +0100
committerJozsef Kadlecsik <kadlec@netfilter.org>2021-02-09 19:41:23 +0100
commitb031a4db2237503d370624cfc9573ead7438fddf (patch)
tree80dff38a9024c8c0b511fab39883591e0700b858
parent423a309ca8df5747e41a28ddce33d61fe64a2844 (diff)
Handle -Werror=implicit-fallthrough= in debug mode compiling
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
-rw-r--r--Makefile.am3
-rw-r--r--include/libipset/ip_set_compiler.h15
-rw-r--r--lib/ipset.c2
3 files changed, 20 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index eab32ee..cc821e6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -93,6 +93,9 @@ update_includes:
kernel/include/uapi/linux/netfilter/ipset/$$x \
> include/libipset/linux_$$x; \
done
+ for x in ip_set_compiler.h; do \
+ cp kernel/include/linux/netfilter/ipset/$$x include/libipset/$x; \
+ done
update_utils:
wget -4 -O /tmp/ipset-bash-completion.tar.gz http://sourceforge.net/projects/ipset-bashcompl/files/latest/download
diff --git a/include/libipset/ip_set_compiler.h b/include/libipset/ip_set_compiler.h
new file mode 100644
index 0000000..1b392f8
--- /dev/null
+++ b/include/libipset/ip_set_compiler.h
@@ -0,0 +1,15 @@
+#ifndef __IP_SET_COMPILER_H
+#define __IP_SET_COMPILER_H
+
+/* Compiler attributes */
+#ifndef __has_attribute
+# define __has_attribute(x) __GCC4_has_attribute_##x
+# define __GCC4_has_attribute___fallthrough__ 0
+#endif
+
+#if __has_attribute(__fallthrough__)
+# define fallthrough __attribute__((__fallthrough__))
+#else
+# define fallthrough do {} while (0) /* fallthrough */
+#endif
+#endif /* __IP_SET_COMPILER_H */
diff --git a/lib/ipset.c b/lib/ipset.c
index 8ae2b6f..6729919 100644
--- a/lib/ipset.c
+++ b/lib/ipset.c
@@ -27,6 +27,7 @@
#include <libipset/print.h> /* ipset_print_family */
#include <libipset/utils.h> /* STREQ */
#include <libipset/ipset.h> /* prototypes */
+#include <libipset/ip_set_compiler.h> /* compiler attributes */
static char program_name[] = PACKAGE;
static char program_version[] = PACKAGE_VERSION;
@@ -1213,6 +1214,7 @@ ipset_parse_argv(struct ipset *ipset, int oargc, char *oargv[])
return ret;
}
/* Fall through to parse optional setname */
+ fallthrough;
case IPSET_CMD_DESTROY:
case IPSET_CMD_FLUSH:
/* Args: [setname] */