Skip to content

Commit

Permalink
[NETFILTER]: introduce and use aligned_u64 data type
Browse files Browse the repository at this point in the history
As proposed by Andi Kleen, this is required esp. for x86_64 architecture,
where 64bit code needs 8byte aligned 64bit data types, but 32bit userspace
apps will only align to 4bytes.

Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Harald Welte authored and David S. Miller committed Aug 29, 2005
1 parent 17b085e commit 0ba2c6e
Showing 3 changed files with 9 additions and 4 deletions.
5 changes: 3 additions & 2 deletions include/linux/netfilter/nfnetlink_log.h
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
* and not any kind of function definitions. It is shared between kernel and
* userspace. Don't put kernel specific stuff in here */

#include <linux/types.h>
#include <linux/netfilter/nfnetlink.h>

enum nfulnl_msg_types {
@@ -27,8 +28,8 @@ struct nfulnl_msg_packet_hw {
} __attribute__ ((packed));

struct nfulnl_msg_packet_timestamp {
u_int64_t sec;
u_int64_t usec;
aligned_u64 sec;
aligned_u64 usec;
} __attribute__ ((packed));

#define NFULNL_PREFIXLEN 30 /* just like old log target */
5 changes: 3 additions & 2 deletions include/linux/netfilter/nfnetlink_queue.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef _NFNETLINK_QUEUE_H
#define _NFNETLINK_QUEUE_H

#include <linux/types.h>
#include <linux/netfilter/nfnetlink.h>

enum nfqnl_msg_types {
@@ -24,8 +25,8 @@ struct nfqnl_msg_packet_hw {
} __attribute__ ((packed));

struct nfqnl_msg_packet_timestamp {
u_int64_t sec;
u_int64_t usec;
aligned_u64 sec;
aligned_u64 usec;
} __attribute__ ((packed));

enum nfqnl_attr_type {
3 changes: 3 additions & 0 deletions include/linux/types.h
Original file line number Diff line number Diff line change
@@ -123,6 +123,9 @@ typedef __u64 u_int64_t;
typedef __s64 int64_t;
#endif

/* this is a special 64bit data type that is 8-byte aligned */
#define aligned_u64 unsigned long long __attribute__((aligned(8)))

/*
* The type used for indexing onto a disc or disc partition.
* If required, asm/types.h can override it and define

0 comments on commit 0ba2c6e

Please sign in to comment.