diff mbox

[2/2] Netfilter: xt_LOG: Add timestamp support

Message ID 1329262573-22048-2-git-send-email-richard@nod.at
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Richard Weinberger Feb. 14, 2012, 11:36 p.m. UTC
Using XT_LOG_ADD_TIMESTAMP it is possible to have a timestamp
directly in the log message.

Signed-off-by: Richard Weinberger <richard@nod.at>
---
 include/linux/netfilter/xt_LOG.h |    1 +
 net/netfilter/xt_LOG.c           |   10 ++++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

Comments

Eric Dumazet Feb. 15, 2012, 4:56 a.m. UTC | #1
Le mercredi 15 février 2012 à 00:36 +0100, Richard Weinberger a écrit :
> Using XT_LOG_ADD_TIMESTAMP it is possible to have a timestamp
> directly in the log message.
> 
> Signed-off-by: Richard Weinberger <richard@nod.at>
> ---
>  include/linux/netfilter/xt_LOG.h |    1 +
>  net/netfilter/xt_LOG.c           |   10 ++++++++++
>  2 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/include/linux/netfilter/xt_LOG.h b/include/linux/netfilter/xt_LOG.h
> index e4b1177..d84710c 100644
> --- a/include/linux/netfilter/xt_LOG.h
> +++ b/include/linux/netfilter/xt_LOG.h
> @@ -8,6 +8,7 @@
>  #define XT_LOG_UID		0x08	/* Log UID owning local socket */
>  #define XT_LOG_NFLOG		0x10	/* Unsupported, don't reuse */
>  #define XT_LOG_MACDECODE	0x20	/* Decode MAC header */
> +#define XT_LOG_ADD_TIMESTAMP	0x40	/* Add a timestamp */
>  #define XT_LOG_MASK		0x6f
>  
>  struct xt_log_info {
> diff --git a/net/netfilter/xt_LOG.c b/net/netfilter/xt_LOG.c
> index 211d341..bd59dfd 100644
> --- a/net/netfilter/xt_LOG.c
> +++ b/net/netfilter/xt_LOG.c
> @@ -490,6 +490,16 @@ log_packet_common(struct sbuff *m,
>  	if (loginfo->type == NF_LOG_TYPE_LOG)
>  		sb_add(m, "<%d>", loginfo->u.log.level);
>  
> +	if (loginfo->u.log.logflags & XT_LOG_ADD_TIMESTAMP) {
> +		static struct timespec tv;

Please remove 'static', its unsafe on SMP and useless anyway.

> +		unsigned int msec;
> +
> +		getnstimeofday(&tv);
> +		msec = tv.tv_nsec;
> +		do_div(msec, 1000000);

why do_div() ? Its not an u64 

Just use tv.tv_nsec / NSEC_PER_MSEC


> +		sb_add(m, "TIMESTAMP=%li.%03li ", tv.tv_sec, msec);
> +	}
> +
>  	sb_add(m, "%sIN=%s OUT=%s ", prefix, in ? in->name : "",
>  	       out ? out->name : "");
>  #ifdef CONFIG_BRIDGE_NETFILTER


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/linux/netfilter/xt_LOG.h b/include/linux/netfilter/xt_LOG.h
index e4b1177..d84710c 100644
--- a/include/linux/netfilter/xt_LOG.h
+++ b/include/linux/netfilter/xt_LOG.h
@@ -8,6 +8,7 @@ 
 #define XT_LOG_UID		0x08	/* Log UID owning local socket */
 #define XT_LOG_NFLOG		0x10	/* Unsupported, don't reuse */
 #define XT_LOG_MACDECODE	0x20	/* Decode MAC header */
+#define XT_LOG_ADD_TIMESTAMP	0x40	/* Add a timestamp */
 #define XT_LOG_MASK		0x6f
 
 struct xt_log_info {
diff --git a/net/netfilter/xt_LOG.c b/net/netfilter/xt_LOG.c
index 211d341..bd59dfd 100644
--- a/net/netfilter/xt_LOG.c
+++ b/net/netfilter/xt_LOG.c
@@ -490,6 +490,16 @@  log_packet_common(struct sbuff *m,
 	if (loginfo->type == NF_LOG_TYPE_LOG)
 		sb_add(m, "<%d>", loginfo->u.log.level);
 
+	if (loginfo->u.log.logflags & XT_LOG_ADD_TIMESTAMP) {
+		static struct timespec tv;
+		unsigned int msec;
+
+		getnstimeofday(&tv);
+		msec = tv.tv_nsec;
+		do_div(msec, 1000000);
+		sb_add(m, "TIMESTAMP=%li.%03li ", tv.tv_sec, msec);
+	}
+
 	sb_add(m, "%sIN=%s OUT=%s ", prefix, in ? in->name : "",
 	       out ? out->name : "");
 #ifdef CONFIG_BRIDGE_NETFILTER