summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extensions/libipt_SAME.c3
-rw-r--r--extensions/libipt_ULOG.c30
-rw-r--r--include/linux/netfilter_ipv4/ipt_SAME.h11
-rw-r--r--include/linux/netfilter_ipv4/ipt_ULOG.h10
4 files changed, 43 insertions, 11 deletions
diff --git a/extensions/libipt_SAME.c b/extensions/libipt_SAME.c
index e9c42a80..52a7e728 100644
--- a/extensions/libipt_SAME.c
+++ b/extensions/libipt_SAME.c
@@ -7,7 +7,8 @@
#include <iptables.h>
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/netfilter_ipv4/ip_nat_rule.h>
-#include <linux/netfilter_ipv4/ipt_SAME.h>
+/* For 64bit kernel / 32bit userspace */
+#include "../include/linux/netfilter_ipv4/ipt_SAME.h"
/* Function which prints out usage message. */
static void
diff --git a/extensions/libipt_ULOG.c b/extensions/libipt_ULOG.c
index 41ee9911..53719116 100644
--- a/extensions/libipt_ULOG.c
+++ b/extensions/libipt_ULOG.c
@@ -17,10 +17,8 @@
#include <getopt.h>
#include <iptables.h>
#include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter_ipv4/ipt_ULOG.h>
-
-#define ULOG_DEFAULT_NLGROUP 1
-#define ULOG_DEFAULT_QTHRESHOLD 1
+/* For 64bit kernel / 32bit userspace */
+#include "../include/linux/netfilter_ipv4/ipt_ULOG.h"
void print_groups(unsigned int gmask)
@@ -124,7 +122,11 @@ static int parse(int c, char **argv, int invert, unsigned int *flags,
if (atoi(optarg) < 0)
exit_error(PARAMETER_PROBLEM,
"Negative copy range?");
+#ifdef KERNEL_64_USERSPACE_32
+ loginfo->copy_range = (unsigned long long)atoll(optarg);
+#else
loginfo->copy_range = atoi(optarg);
+#endif
*flags |= IPT_LOG_OPT_CPRANGE;
break;
case 'B':
@@ -137,7 +139,11 @@ static int parse(int c, char **argv, int invert, unsigned int *flags,
if (atoi(optarg) > ULOG_MAX_QLEN)
exit_error(PARAMETER_PROBLEM,
"Maximum queue length exceeded");
+#ifdef KERNEL_64_USERSPACE_32
+ loginfo->qthreshold = (unsigned long long)atoll(optarg);
+#else
loginfo->qthreshold = atoi(optarg);
+#endif
*flags |= IPT_LOG_OPT_QTHRESHOLD;
break;
}
@@ -163,11 +169,19 @@ static void save(const struct ipt_ip *ip,
printf("--ulog-nlgroup ");
print_groups(loginfo->nl_group);
}
+#ifdef KERNEL_64_USERSPACE_32
+ if (loginfo->copy_range)
+ printf("--ulog-cprange %llu ", loginfo->copy_range);
+
+ if (loginfo->qthreshold != ULOG_DEFAULT_QTHRESHOLD)
+ printf("--ulog-qthreshold %llu ", loginfo->qthreshold);
+#else
if (loginfo->copy_range)
printf("--ulog-cprange %d ", loginfo->copy_range);
if (loginfo->qthreshold != ULOG_DEFAULT_QTHRESHOLD)
printf("--ulog-qthreshold %d ", loginfo->qthreshold);
+#endif
}
/* Prints out the targinfo. */
@@ -179,11 +193,19 @@ print(const struct ipt_ip *ip,
= (const struct ipt_ulog_info *) target->data;
printf("ULOG ");
+#ifdef KERNEL_64_USERSPACE_32
+ printf("copy_range %llu nlgroup ", loginfo->copy_range);
+#else
printf("copy_range %d nlgroup ", loginfo->copy_range);
+#endif
print_groups(loginfo->nl_group);
if (strcmp(loginfo->prefix, "") != 0)
printf("prefix `%s' ", loginfo->prefix);
+#ifdef KERNEL_64_USERSPACE_32
+ printf("queue_threshold %llu ", loginfo->qthreshold);
+#else
printf("queue_threshold %d ", loginfo->qthreshold);
+#endif
}
static
diff --git a/include/linux/netfilter_ipv4/ipt_SAME.h b/include/linux/netfilter_ipv4/ipt_SAME.h
index 428b2137..89ba22fa 100644
--- a/include/linux/netfilter_ipv4/ipt_SAME.h
+++ b/include/linux/netfilter_ipv4/ipt_SAME.h
@@ -8,12 +8,13 @@
struct ipt_same_info
{
unsigned char info;
-
- unsigned int rangesize;
-
- unsigned int ipnum;
-
+ u_int32_t rangesize;
+ u_int32_t ipnum;
+#ifdef KERNEL_64_USERSPACE_32
+ u_int64_t placeholder;
+#else
u_int32_t *iparray;
+#endif
/* hangs off end. */
struct ip_nat_range range[IPT_SAME_MAX_RANGE];
diff --git a/include/linux/netfilter_ipv4/ipt_ULOG.h b/include/linux/netfilter_ipv4/ipt_ULOG.h
index 86a99ee7..f267ab8e 100644
--- a/include/linux/netfilter_ipv4/ipt_ULOG.h
+++ b/include/linux/netfilter_ipv4/ipt_ULOG.h
@@ -1,4 +1,4 @@
-/* Header file for IP tables userspace logging, Version 1.8
+/* Header file for IP tables userspace logging, Version 1.8
*
* (C) 2000-2002 by Harald Welte <laforge@gnumonks.org>
*
@@ -11,6 +11,9 @@
#define NETLINK_NFLOG 5
#endif
+#define ULOG_DEFAULT_NLGROUP 1
+#define ULOG_DEFAULT_QTHRESHOLD 1
+
#define ULOG_MAC_LEN 80
#define ULOG_PREFIX_LEN 32
@@ -23,8 +26,13 @@
/* private data structure for each rule with a ULOG target */
struct ipt_ulog_info {
unsigned int nl_group;
+#ifdef KERNEL_64_USERSPACE_32
+ unsigned long long copy_range;
+ unsigned long long qthreshold;
+#else
size_t copy_range;
size_t qthreshold;
+#endif
char prefix[ULOG_PREFIX_LEN];
};