From 7d5cc229064b0e718046b9ecaebad3426dfff15f Mon Sep 17 00:00:00 2001 From: Yasuyuki KOZAKAI Date: Sat, 30 Jun 2007 10:47:57 +0000 Subject: Removes KERNEL_64_USERSPACE_32 The recent kernel has compat layer for iptables. It doesn't have compat layer for libipq and ip6tables, but ip6tables with KERNEL_64_USERSPACE_32 is still broken. We should fix kernel instead of fixing them if and when we want use their 32bit binary with 64bit kernel. --- Makefile | 33 --------------- include/libipq/ip_queue_64.h | 62 ---------------------------- include/libipq/libipq.h | 5 --- include/linux/netfilter_ipv4/ipt_CLUSTERIP.h | 4 -- include/linux/netfilter_ipv4/ipt_SAME.h | 4 -- libiptc/libiptc.c | 16 ------- 6 files changed, 124 deletions(-) delete mode 100644 include/libipq/ip_queue_64.h diff --git a/Makefile b/Makefile index df04d35a..76d8e407 100644 --- a/Makefile +++ b/Makefile @@ -59,39 +59,6 @@ EXTRAS_EXP+=ip6tables-save ip6tables-restore EXTRA_INSTALLS_EXP+=$(DESTDIR)$(BINDIR)/ip6tables-save $(DESTDIR)$(BINDIR)/ip6tables-restore # $(DESTDIR)$(MANDIR)/man8/iptables-restore.8 $(DESTDIR)$(MANDIR)/man8/iptables-save.8 $(DESTDIR)$(MANDIR)/man8/ip6tables-save.8 $(DESTDIR)$(MANDIR)/man8/ip6tables-restore.8 endif -# Sparc64 hack -ifeq ($(shell uname -m),sparc64) - POINTERTEST:=1 - 32bituser := $(shell echo -e "\#include \n\#if !defined(__sparcv9) && !defined(__arch64__) && !defined(_LP64)\nuserspace_is_32bit\n\#endif" | $(CC) $(CFLAGS) -E - | grep userspace_is_32bit) - ifdef 32bituser - # The kernel is 64-bit, even though userspace is 32. - CFLAGS+=-DIPT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32 - else - EXT_LDFLAGS+=-Wl,-m,elf64_sparc - endif -endif - -# Alpha only has 64bit userspace and fails the test below -ifeq ($(shell uname -m), alpha) - POINTERTEST:=1 -endif - -# Generic test if arch wasn't found above -ifneq ($(POINTERTEST),1) - # Try to determine if kernel is 64bit and we are compiling for 32bit - ifeq ($(shell [ -d $(KERNEL_DIR)/include/asm ] && echo YES), YES) - 64bitkernel := $(shell echo -e "\#include \n\#if BITS_PER_LONG == 64\nkernel_is_64bits\n\#endif" | $(CC) $(CFLAGS) -D__KERNEL__ -E - | grep kernel_is_64bits) - ifdef 64bitkernel - 32bituser := $(shell echo -e "\#include \n\#if !defined(__arch64__) && !defined(_LP64)\nuserspace_is_32bit\n\#endif" | $(CC) $(CFLAGS) -E - | grep userspace_is_32bit) - ifdef 32bituser - CFLAGS+=-DIPT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32 - endif - endif - else - CFLAGS+=-D_UNKNOWN_KERNEL_POINTER_SIZE - endif -endif - ifndef IPT_LIBDIR IPT_LIBDIR:=$(LIBDIR)/iptables endif diff --git a/include/libipq/ip_queue_64.h b/include/libipq/ip_queue_64.h deleted file mode 100644 index b0c32227..00000000 --- a/include/libipq/ip_queue_64.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Redefine everything for a 64-bit kernel on 32-bit userspace */ - -/* Based on ip_queue.h by (C) 2000 James Morris, this code is GPL. */ -#ifndef _IP_QUEUE_H -#define _IP_QUEUE_H - -#include -#include - -/* Messages sent from kernel */ -typedef struct ipq_packet_msg { - u_int64_t packet_id; /* ID of queued packet */ - u_int64_t mark; /* Netfilter mark value */ - int64_t timestamp_sec; /* Packet arrival time (seconds) */ - int64_t timestamp_usec; /* Packet arrvial time (+useconds) */ - unsigned int hook; /* Netfilter hook we rode in on */ - char indev_name[IFNAMSIZ]; /* Name of incoming interface */ - char outdev_name[IFNAMSIZ]; /* Name of outgoing interface */ - unsigned short hw_protocol; /* Hardware protocol (network order) */ - unsigned short hw_type; /* Hardware type */ - unsigned char hw_addrlen; /* Hardware address length */ - unsigned char hw_addr[8]; /* Hardware address */ - u_int64_t data_len; /* Length of packet data */ - unsigned char payload[0]; /* Optional packet data */ -} ipq_packet_msg_t; - -/* Messages sent from userspace */ -typedef struct ipq_mode_msg { - unsigned char value; /* Requested mode */ - u_int64_t range; /* Optional range of packet requested */ -} ipq_mode_msg_t; - -typedef struct ipq_verdict_msg { - unsigned int value; /* Verdict to hand to netfilter */ - u_int64_t id; /* Packet ID for this verdict */ - u_int64_t data_len; /* Length of replacement data */ - unsigned char payload[0]; /* Optional replacement packet */ -} ipq_verdict_msg_t; - -typedef struct ipq_peer_msg { - union { - ipq_verdict_msg_t verdict; - ipq_mode_msg_t mode; - } msg; -} ipq_peer_msg_t; - -/* Packet delivery modes */ -enum { - IPQ_COPY_NONE, /* Initial mode, packets are dropped */ - IPQ_COPY_META, /* Copy metadata */ - IPQ_COPY_PACKET /* Copy metadata + packet (range) */ -}; -#define IPQ_COPY_MAX IPQ_COPY_PACKET - -/* Types of messages */ -#define IPQM_BASE 0x10 /* standard netlink messages below this */ -#define IPQM_MODE (IPQM_BASE + 1) /* Mode request from peer */ -#define IPQM_VERDICT (IPQM_BASE + 2) /* Verdict from peer */ -#define IPQM_PACKET (IPQM_BASE + 3) /* Packet from kernel */ -#define IPQM_MAX (IPQM_BASE + 4) - -#endif /*_IP_QUEUE_H*/ diff --git a/include/libipq/libipq.h b/include/libipq/libipq.h index f60fc4bd..3cd13292 100644 --- a/include/libipq/libipq.h +++ b/include/libipq/libipq.h @@ -30,13 +30,8 @@ #include #include -#ifdef KERNEL_64_USERSPACE_32 -#include "ip_queue_64.h" -typedef u_int64_t ipq_id_t; -#else #include typedef unsigned long ipq_id_t; -#endif #ifdef DEBUG_LIBIPQ #include diff --git a/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h index 6f76060d..a8252ea5 100644 --- a/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h +++ b/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h @@ -27,11 +27,7 @@ struct ipt_clusterip_tgt_info { enum clusterip_hashmode hash_mode; u_int32_t hash_initval; -#ifdef KERNEL_64_USERSPACE_32 - u_int64_t config; -#else struct clusterip_config *config; -#endif }; #endif /*_IPT_CLUSTERIP_H_target*/ diff --git a/include/linux/netfilter_ipv4/ipt_SAME.h b/include/linux/netfilter_ipv4/ipt_SAME.h index 89ba22fa..cc4c0b22 100644 --- a/include/linux/netfilter_ipv4/ipt_SAME.h +++ b/include/linux/netfilter_ipv4/ipt_SAME.h @@ -10,11 +10,7 @@ struct ipt_same_info unsigned char info; u_int32_t rangesize; u_int32_t ipnum; -#ifdef KERNEL_64_USERSPACE_32 - u_int64_t placeholder; -#else u_int32_t *iparray; -#endif /* hangs off end. */ struct ip_nat_range range[IPT_SAME_MAX_RANGE]; diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c index feb4379c..574cc0ab 100644 --- a/libiptc/libiptc.c +++ b/libiptc/libiptc.c @@ -2170,22 +2170,6 @@ TC_COMMIT(TC_HANDLE_T *handle) } } - -#ifdef KERNEL_64_USERSPACE_32 - { - /* Kernel will think that pointer should be 64-bits, and get - padding. So we accomodate here (assumption: alignment of - `counters' is on 64-bit boundary). */ - u_int64_t *kernptr = (u_int64_t *)&newcounters->counters; - if ((unsigned long)&newcounters->counters % 8 != 0) { - fprintf(stderr, - "counters alignment incorrect! Mail rusty!\n"); - abort(); - } - *kernptr = newcounters->counters; - } -#endif /* KERNEL_64_USERSPACE_32 */ - #ifdef IPTC_DEBUG2 { int fd = open("/tmp/libiptc-so_set_add_counters.blob", -- cgit v1.2.3