summaryrefslogtreecommitdiffstats
path: root/extensions/libip6t_LOG.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2010-06-28 14:51:35 +0200
committerPatrick McHardy <kaber@trash.net>2010-06-28 14:51:35 +0200
commit127647892c7cac85baf8da62ed21232baa60f1c9 (patch)
treebe7bdea7d7e1b675ea25d74a25671ef838d0cf95 /extensions/libip6t_LOG.c
parentd96993e50b44b358ea5bd15f3944674eafd62542 (diff)
extensions: libipt_LOG/libip6t_LOG: support macdecode option
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'extensions/libip6t_LOG.c')
-rw-r--r--extensions/libip6t_LOG.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/extensions/libip6t_LOG.c b/extensions/libip6t_LOG.c
index 423d9884..ff9edc68 100644
--- a/extensions/libip6t_LOG.c
+++ b/extensions/libip6t_LOG.c
@@ -25,7 +25,8 @@ static void LOG_help(void)
" --log-tcp-sequence Log TCP sequence numbers.\n"
" --log-tcp-options Log TCP options.\n"
" --log-ip-options Log IP options.\n"
-" --log-uid Log UID owning the local socket.\n");
+" --log-uid Log UID owning the local socket.\n"
+" --log-macdecode Decode MAC addresses and protocol.\n");
}
static const struct option LOG_opts[] = {
@@ -35,6 +36,7 @@ static const struct option LOG_opts[] = {
{ .name = "log-tcp-options", .has_arg = 0, .val = '2' },
{ .name = "log-ip-options", .has_arg = 0, .val = '3' },
{ .name = "log-uid", .has_arg = 0, .val = '4' },
+ { .name = "log-macdecode", .has_arg = 0, .val = '5' },
{ .name = NULL }
};
@@ -96,6 +98,7 @@ parse_level(const char *level)
#define IP6T_LOG_OPT_TCPOPT 0x08
#define IP6T_LOG_OPT_IPOPT 0x10
#define IP6T_LOG_OPT_UID 0x20
+#define IP6T_LOG_OPT_MACDECODE 0x40
static int LOG_parse(int c, char **argv, int invert, unsigned int *flags,
const void *entry, struct xt_entry_target **target)
@@ -179,6 +182,15 @@ static int LOG_parse(int c, char **argv, int invert, unsigned int *flags,
*flags |= IP6T_LOG_OPT_UID;
break;
+ case '5':
+ if (*flags & IP6T_LOG_OPT_MACDECODE)
+ xtables_error(PARAMETER_PROBLEM,
+ "Can't specify --log-macdecode twice");
+
+ loginfo->logflags |= IP6T_LOG_MACDECODE;
+ *flags |= IP6T_LOG_OPT_MACDECODE;
+ break;
+
default:
return 0;
}
@@ -213,6 +225,8 @@ static void LOG_print(const void *ip, const struct xt_entry_target *target,
printf("ip-options ");
if (loginfo->logflags & IP6T_LOG_UID)
printf("uid ");
+ if (loginfo->logflags & IP6T_LOG_MACDECODE)
+ printf("macdecode ");
if (loginfo->logflags & ~(IP6T_LOG_MASK))
printf("unknown-flags ");
}
@@ -240,6 +254,8 @@ static void LOG_save(const void *ip, const struct xt_entry_target *target)
printf("--log-ip-options ");
if (loginfo->logflags & IP6T_LOG_UID)
printf("--log-uid ");
+ if (loginfo->logflags & IP6T_LOG_MACDECODE)
+ printf("--log-macdecode ");
}
static struct xtables_target log_tg6_reg = {