[Bug 1066] nfq_get_timestamp() not setting timeval struc

bugzilla-daemon at netfilter.org bugzilla-daemon at netfilter.org
Thu May 12 14:28:51 CEST 2016


https://bugzilla.netfilter.org/show_bug.cgi?id=1066

Florian Westphal <fw at strlen.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |fw at strlen.de
           Assignee|netfilter-buglog at lists.netf |fw at strlen.de
                   |ilter.org                   |

--- Comment #1 from Florian Westphal <fw at strlen.de> ---
(In reply to emacsuser123 from comment #0)
> Hi.
> 
> I'm developing an application that makes use of NFQUEUE functionality.
> 
> When using Ubuntu with recent kernels (4.4 and onwards), I'm having trouble
> trying to get the packet timestamp by means of nfq_get_timestamp.
> It seems that it does nothing with the timeval struct passed as an input
> parameter. So, I always get 0 on both tv_sec and tv_usec fields.
> 
> If I use older kernels (3.3, for instance), I have no problem at all. The
> timeval struct is filled in successfully and I get the proper timestamp from
> the kernel.
> 
> I have also tried to set the queue socket options to SO_TIMESTAMP
> explicitly, just in case. The call to setsockopt goes smoothly, but it seems
> that nfq_get_timestamp is not taking that into account.
> 
> I'm not sure what else could be done here, to be honest.
> 
> Any ideas?
> 
> Thanks a lot.
> -Bob

Kernel bug, this should fix it:

diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -557,7 +557,7 @@ nfqnl_build_packet_message(struct net *net, struct
nfqnl_instance *queue,

        if (entskb->tstamp.tv64) {
                struct nfqnl_msg_packet_timestamp ts;
-               struct timespec64 kts = ktime_to_timespec64(skb->tstamp);
+               struct timespec64 kts = ktime_to_timespec64(entskb->tstamp);

                ts.sec = cpu_to_be64(kts.tv_sec);
                ts.usec = cpu_to_be64(kts.tv_nsec / NSEC_PER_USEC);

-- 
You are receiving this mail because:
You are watching all bug changes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.netfilter.org/pipermail/netfilter-buglog/attachments/20160512/7a1910ac/attachment.html>


More information about the netfilter-buglog mailing list