netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* libnftnl: two trivial build fixes
@ 2014-01-20 23:52 Jan Engelhardt
  2014-01-20 23:52 ` [PATCH 1/2] build: resolve build failure involving linux/netlink.h Jan Engelhardt
  2014-01-20 23:52 ` [PATCH 2/2] build: resolve compile error involving XT_EXTENSION_MAXNAMELEN Jan Engelhardt
  0 siblings, 2 replies; 4+ messages in thread
From: Jan Engelhardt @ 2014-01-20 23:52 UTC (permalink / raw)
  To: netfilter-devel


The following changes since commit 91264d8b8b746f7eee8a3e1ee9b5e57758441cfc:

  build: Ensure pkg-config file provides the right informations (2014-01-20 17:01:03 +0100)

are available in the git repository at:

  git://git.inai.de/libnftnl master

for you to fetch changes up to b5d35ad41234e92e17168ce44dafb8d653a6bfc7:

  build: resolve compile error involving XT_EXTENSION_MAXNAMELEN (2014-01-21 00:50:26 +0100)

----------------------------------------------------------------
Jan Engelhardt (2):
      build: resolve build failure involving linux/netlink.h
      build: resolve compile error involving XT_EXTENSION_MAXNAMELEN

 include/linux/netfilter/x_tables.h | 185 +++++++++++++++++++++++++++++++++++++
 src/common.c                       |   3 +-
 2 files changed, 187 insertions(+), 1 deletion(-)
 create mode 100644 include/linux/netfilter/x_tables.h

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] build: resolve build failure involving linux/netlink.h
  2014-01-20 23:52 libnftnl: two trivial build fixes Jan Engelhardt
@ 2014-01-20 23:52 ` Jan Engelhardt
  2014-01-21 12:25   ` Pablo Neira Ayuso
  2014-01-20 23:52 ` [PATCH 2/2] build: resolve compile error involving XT_EXTENSION_MAXNAMELEN Jan Engelhardt
  1 sibling, 1 reply; 4+ messages in thread
From: Jan Engelhardt @ 2014-01-20 23:52 UTC (permalink / raw)
  To: netfilter-devel

This was seen with a sufficiently-old /usr/include/linux
(from Linux 2.6.32).

	In file included from common.c:10:
	/usr/include/linux/netlink.h:34: error: expected
	specifier-qualifier-list before 'sa_family_t'

The solution is to include <linux/*> last of all system headers.

Signed-off-by: Jan Engelhardt <jengelh@inai.de>
---
 src/common.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/common.c b/src/common.c
index b9598bf..336d2b4 100644
--- a/src/common.c
+++ b/src/common.c
@@ -7,6 +7,8 @@
  * (at your option) any later version.
  */
 
+#include <stdlib.h>
+#include <sys/socket.h>
 #include <linux/netlink.h>
 #include <linux/netfilter/nfnetlink.h>
 
@@ -14,7 +16,6 @@
 #include <libnftnl/common.h>
 
 #include "internal.h"
-#include<stdlib.h>
 
 struct nlmsghdr *nft_nlmsg_build_hdr(char *buf, uint16_t cmd, uint16_t family,
 				     uint16_t type, uint32_t seq)
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] build: resolve compile error involving XT_EXTENSION_MAXNAMELEN
  2014-01-20 23:52 libnftnl: two trivial build fixes Jan Engelhardt
  2014-01-20 23:52 ` [PATCH 1/2] build: resolve build failure involving linux/netlink.h Jan Engelhardt
@ 2014-01-20 23:52 ` Jan Engelhardt
  1 sibling, 0 replies; 4+ messages in thread
From: Jan Engelhardt @ 2014-01-20 23:52 UTC (permalink / raw)
  To: netfilter-devel

2.6.32 headers in /usr/include/linux again.
Ship a copy of x_tables.h from Linux 3.11.

Signed-off-by: Jan Engelhardt <jengelh@inai.de>
---
 include/linux/netfilter/x_tables.h | 185 +++++++++++++++++++++++++++++++++++++
 1 file changed, 185 insertions(+)
 create mode 100644 include/linux/netfilter/x_tables.h

diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
new file mode 100644
index 0000000..4120970
--- /dev/null
+++ b/include/linux/netfilter/x_tables.h
@@ -0,0 +1,185 @@
+#ifndef _X_TABLES_H
+#define _X_TABLES_H
+#include <linux/kernel.h>
+#include <linux/types.h>
+
+#define XT_FUNCTION_MAXNAMELEN 30
+#define XT_EXTENSION_MAXNAMELEN 29
+#define XT_TABLE_MAXNAMELEN 32
+
+struct xt_entry_match {
+	union {
+		struct {
+			__u16 match_size;
+
+			/* Used by userspace */
+			char name[XT_EXTENSION_MAXNAMELEN];
+			__u8 revision;
+		} user;
+		struct {
+			__u16 match_size;
+
+			/* Used inside the kernel */
+			struct xt_match *match;
+		} kernel;
+
+		/* Total length */
+		__u16 match_size;
+	} u;
+
+	unsigned char data[0];
+};
+
+struct xt_entry_target {
+	union {
+		struct {
+			__u16 target_size;
+
+			/* Used by userspace */
+			char name[XT_EXTENSION_MAXNAMELEN];
+			__u8 revision;
+		} user;
+		struct {
+			__u16 target_size;
+
+			/* Used inside the kernel */
+			struct xt_target *target;
+		} kernel;
+
+		/* Total length */
+		__u16 target_size;
+	} u;
+
+	unsigned char data[0];
+};
+
+#define XT_TARGET_INIT(__name, __size)					       \
+{									       \
+	.target.u.user = {						       \
+		.target_size	= XT_ALIGN(__size),			       \
+		.name		= __name,				       \
+	},								       \
+}
+
+struct xt_standard_target {
+	struct xt_entry_target target;
+	int verdict;
+};
+
+struct xt_error_target {
+	struct xt_entry_target target;
+	char errorname[XT_FUNCTION_MAXNAMELEN];
+};
+
+/* The argument to IPT_SO_GET_REVISION_*.  Returns highest revision
+ * kernel supports, if >= revision. */
+struct xt_get_revision {
+	char name[XT_EXTENSION_MAXNAMELEN];
+	__u8 revision;
+};
+
+/* CONTINUE verdict for targets */
+#define XT_CONTINUE 0xFFFFFFFF
+
+/* For standard target */
+#define XT_RETURN (-NF_REPEAT - 1)
+
+/* this is a dummy structure to find out the alignment requirement for a struct
+ * containing all the fundamental data types that are used in ipt_entry,
+ * ip6t_entry and arpt_entry.  This sucks, and it is a hack.  It will be my
+ * personal pleasure to remove it -HW
+ */
+struct _xt_align {
+	__u8 u8;
+	__u16 u16;
+	__u32 u32;
+	__u64 u64;
+};
+
+#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
+
+/* Standard return verdict, or do jump. */
+#define XT_STANDARD_TARGET ""
+/* Error verdict. */
+#define XT_ERROR_TARGET "ERROR"
+
+#define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0)
+#define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
+
+struct xt_counters {
+	__u64 pcnt, bcnt;			/* Packet and byte counters */
+};
+
+/* The argument to IPT_SO_ADD_COUNTERS. */
+struct xt_counters_info {
+	/* Which table. */
+	char name[XT_TABLE_MAXNAMELEN];
+
+	unsigned int num_counters;
+
+	/* The counters (actually `number' of these). */
+	struct xt_counters counters[0];
+};
+
+#define XT_INV_PROTO		0x40	/* Invert the sense of PROTO. */
+
+/* fn returns 0 to continue iteration */
+#define XT_MATCH_ITERATE(type, e, fn, args...)			\
+({								\
+	unsigned int __i;					\
+	int __ret = 0;						\
+	struct xt_entry_match *__m;				\
+								\
+	for (__i = sizeof(type);				\
+	     __i < (e)->target_offset;				\
+	     __i += __m->u.match_size) {			\
+		__m = (void *)e + __i;				\
+								\
+		__ret = fn(__m , ## args);			\
+		if (__ret != 0)					\
+			break;					\
+	}							\
+	__ret;							\
+})
+
+/* fn returns 0 to continue iteration */
+#define XT_ENTRY_ITERATE_CONTINUE(type, entries, size, n, fn, args...) \
+({								\
+	unsigned int __i, __n;					\
+	int __ret = 0;						\
+	type *__entry;						\
+								\
+	for (__i = 0, __n = 0; __i < (size);			\
+	     __i += __entry->next_offset, __n++) { 		\
+		__entry = (void *)(entries) + __i;		\
+		if (__n < n)					\
+			continue;				\
+								\
+		__ret = fn(__entry , ## args);			\
+		if (__ret != 0)					\
+			break;					\
+	}							\
+	__ret;							\
+})
+
+/* fn returns 0 to continue iteration */
+#define XT_ENTRY_ITERATE(type, entries, size, fn, args...) \
+	XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
+
+
+/* pos is normally a struct ipt_entry/ip6t_entry/etc. */
+#define xt_entry_foreach(pos, ehead, esize) \
+	for ((pos) = (typeof(pos))(ehead); \
+	     (pos) < (typeof(pos))((char *)(ehead) + (esize)); \
+	     (pos) = (typeof(pos))((char *)(pos) + (pos)->next_offset))
+
+/* can only be xt_entry_match, so no use of typeof here */
+#define xt_ematch_foreach(pos, entry) \
+	for ((pos) = (struct xt_entry_match *)entry->elems; \
+	     (pos) < (struct xt_entry_match *)((char *)(entry) + \
+	             (entry)->target_offset); \
+	     (pos) = (struct xt_entry_match *)((char *)(pos) + \
+	             (pos)->u.match_size))
+
+
+#endif /* _X_TABLES_H */
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] build: resolve build failure involving linux/netlink.h
  2014-01-20 23:52 ` [PATCH 1/2] build: resolve build failure involving linux/netlink.h Jan Engelhardt
@ 2014-01-21 12:25   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 4+ messages in thread
From: Pablo Neira Ayuso @ 2014-01-21 12:25 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: netfilter-devel

On Tue, Jan 21, 2014 at 12:52:01AM +0100, Jan Engelhardt wrote:
> This was seen with a sufficiently-old /usr/include/linux
> (from Linux 2.6.32).
> 
> 	In file included from common.c:10:
> 	/usr/include/linux/netlink.h:34: error: expected
> 	specifier-qualifier-list before 'sa_family_t'
> 
> The solution is to include <linux/*> last of all system headers.

applied.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-01-21 12:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-20 23:52 libnftnl: two trivial build fixes Jan Engelhardt
2014-01-20 23:52 ` [PATCH 1/2] build: resolve build failure involving linux/netlink.h Jan Engelhardt
2014-01-21 12:25   ` Pablo Neira Ayuso
2014-01-20 23:52 ` [PATCH 2/2] build: resolve compile error involving XT_EXTENSION_MAXNAMELEN Jan Engelhardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).