diff options
author | /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org> | 2005-11-06 09:58:03 +0000 |
---|---|---|
committer | /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org> | 2005-11-06 09:58:03 +0000 |
commit | e636f72ad8619b2907489545791d1d20e92de18d (patch) | |
tree | 5e574532228240d5b8f24de04d09ca3557cfbddb /src | |
parent | 2e2a200435daeebeccac0a802d156ab24306e8bb (diff) |
fix nfq_get_timestamp() to use struct timeval and be endian correct
Diffstat (limited to 'src')
-rw-r--r-- | src/libnetfilter_queue.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libnetfilter_queue.c b/src/libnetfilter_queue.c index 8844012..7fa0643 100644 --- a/src/libnetfilter_queue.c +++ b/src/libnetfilter_queue.c @@ -335,10 +335,18 @@ uint32_t nfq_get_nfmark(struct nfq_data *nfad) return ntohl(nfnl_get_data(nfad->data, NFQA_MARK, u_int32_t)); } -struct nfq_msg_packet_timestamp *nfq_get_timestamp(struct nfq_data *nfad) +int nfq_get_timestamp(struct nfq_data *nfad, struct timeval *tv) { - return nfnl_get_pointer_to_data(nfad->data, NFQA_TIMESTAMP, - struct nfq_msg_packet_timestamp); + struct nfqnl_msg_packet_timestamp *qpt; + qpt = nfnl_get_pointer_to_data(nfad->data, NFQA_TIMESTAMP, + struct nfqnl_msg_packet_timestamp); + if (!qpt) + return -1; + + tv->tv_sec = __be64_to_cpu(qpt->sec); + tv->tv_usec = __be64_to_cpu(qpt->usec); + + return 0; } /* all nfq_get_*dev() functions return 0 if not set, since linux only allows |