summaryrefslogtreecommitdiffstats
path: root/extensions/libipt_connmark.c
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/libipt_connmark.c')
-rw-r--r--extensions/libipt_connmark.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/extensions/libipt_connmark.c b/extensions/libipt_connmark.c
index 6afb78ec..5bb24912 100644
--- a/extensions/libipt_connmark.c
+++ b/extensions/libipt_connmark.c
@@ -26,7 +26,7 @@
#include <getopt.h>
#include <iptables.h>
-#include <linux/netfilter_ipv4/ipt_connmark.h>
+#include "../include/linux/netfilter_ipv4/ipt_connmark.h"
/* Function which prints out usage message. */
static void
@@ -66,11 +66,17 @@ parse(int c, char **argv, int invert, unsigned int *flags,
char *end;
case '1':
check_inverse(optarg, &invert, &optind, 0);
+#ifdef KERNEL_64_USERSPACE_32
+ markinfo->mark = strtoull(optarg, &end, 0);
+ markinfo->mask = ~0ULL;
+ if (*end == '/')
+ markinfo->mask = strtoull(end+1, &end, 0);
+#else
markinfo->mark = strtoul(optarg, &end, 0);
- if (*end == '/') {
+ markinfo->mask = ~0UL;
+ if (*end == '/')
markinfo->mask = strtoul(end+1, &end, 0);
- } else
- markinfo->mask = ~0;
+#endif
if (*end != '\0' || end == optarg)
exit_error(PARAMETER_PROBLEM, "Bad MARK value `%s'", optarg);
if (invert)
@@ -84,14 +90,25 @@ parse(int c, char **argv, int invert, unsigned int *flags,
return 1;
}
+#ifdef KERNEL_64_USERSPACE_32
+static void
+print_mark(unsigned long long mark, unsigned long long mask, int numeric)
+{
+ if(mask != ~0ULL)
+ printf("0x%llx/0x%llx ", mark, mask);
+ else
+ printf("0x%llx ", mark);
+}
+#else
static void
print_mark(unsigned long mark, unsigned long mask, int numeric)
{
- if(mask != ~0)
+ if(mask != ~0UL)
printf("0x%lx/0x%lx ", mark, mask);
else
printf("0x%lx ", mark);
}
+#endif
/* Final check; must have specified --mark. */
static void