summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPhil Oester <kernel@linuxace.com>2005-09-19 15:00:33 +0000
committerHarald Welte <laforge@gnumonks.org>2005-09-19 15:00:33 +0000
commit8cf65913bb6353bf0e92eab0669d1c4c53b43623 (patch)
treeb77c8d881be4ec2a0e701e5bbd78ac6c6f0df111 /include
parent3643aca580531eb795832feb8a83cca57f57dc0e (diff)
Kernels higher than 2.6.10 don't support multiple --to arguments in
DNAT and SNAT targets. At present, the error is somewhat vague: # iptables -t nat -A foo -j SNAT --to 1.2.3.4 --to 2.3.4.5 iptables: Invalid argument But if we want current iptables to work with kernels <= 2.6.10, we cannot simply disallow this in all cases. So the below patch adds kernel version checking to iptables, and utilizes it in [DS]NAT. Now, users will see a more informative error: # iptables -t nat -A foo -j SNAT --to 1.2.3.4 --to 2.3.4.5 iptables v1.3.3: Multiple --to-source not supported This generic infrastructure (shamelessly lifted from procps btw) may come in handy in the future for other changes. This fixes bugzilla #367. (Phil Oester)
Diffstat (limited to 'include')
-rw-r--r--include/iptables.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/iptables.h b/include/iptables.h
index f0cad8da..fbcf2eb4 100644
--- a/include/iptables.h
+++ b/include/iptables.h
@@ -175,4 +175,13 @@ extern int flush_entries(const ipt_chainlabel chain, int verbose,
iptc_handle_t *handle);
extern int for_each_chain(int (*fn)(const ipt_chainlabel, int, iptc_handle_t *),
int verbose, int builtinstoo, iptc_handle_t *handle);
+
+/* kernel revision handling */
+extern int kernel_version;
+extern void get_kernel_version(void);
+#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z)
+#define LINUX_VERSION_MAJOR(x) (((x)>>16) & 0xFF)
+#define LINUX_VERSION_MINOR(x) (((x)>> 8) & 0xFF)
+#define LINUX_VERSION_PATCH(x) ( (x) & 0xFF)
+
#endif /*_IPTABLES_USER_H*/