Discussion:
ftwall build broke FC1 tcp.h (glibc-kernheaders)
Warren Togami
2003-11-07 20:21:02 UTC
Permalink
Hi, I could really use assistance with the ftwall package. It fails
build on FC1 due to glibc-kernheaders tcp.h while it builds successfully
on RH9. Any suggestions for this problem?

Thanks,
Warren Togami
***@togami.com

http://bugzilla.fedora.us/show_bug.cgi?id=941
http://videl.ics.hawaii.edu/~warren/fedora/ftwall-1.07-1.src.rpm
http://videl.ics.hawaii.edu/~warren/fedora/md5sums.asc

ftwall is a program for linux firewalls that allows the control of network traffic
from "Fast Track" peer-to-peer clients like "Kazaa" and it's derivatives.

It is designed to block network traffic from Fast track client applications
running in the "home" (or "green") network from making access to any peers
on the public internet. It is ideal for use in networks where the security
paradigm is "open access" for outbound connections and "tightly limited"
access for inbound ones. Ftwall can be used in such a network to prevent
outbound Fast Track access, hence preventing illegal file downloads and uploads.

Known Problems:
* Makefile doesn't use proper CFLAGS. Suggestions please.
* Due to the below change in glibc-kerneheaders /usr/include/linux/tcp.h in FC1,
compiler fails with this message:

In file included from /usr/include/linux/tcp.h:21,
from ftwall.c:51:
/usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel header;
include <endian.h> instead!
In file included from ftwall.c:51:
/usr/include/linux/tcp.h:105: error: enumerator value for `TCP_FLAG_CWR' not
integer constant
/usr/include/linux/tcp.h:106: error: enumerator value for `TCP_FLAG_ECE' not
integer constant
/usr/include/linux/tcp.h:107: error: enumerator value for `TCP_FLAG_URG' not
integer constant
/usr/include/linux/tcp.h:108: error: enumerator value for `TCP_FLAG_ACK' not
integer constant
/usr/include/linux/tcp.h:109: error: enumerator value for `TCP_FLAG_PSH' not
integer constant
/usr/include/linux/tcp.h:110: error: enumerator value for `TCP_FLAG_RST' not
integer constant
/usr/include/linux/tcp.h:111: error: enumerator value for `TCP_FLAG_SYN' not
integer constant
/usr/include/linux/tcp.h:112: error: enumerator value for `TCP_FLAG_FIN' not
integer constant
/usr/include/linux/tcp.h:113: error: enumerator value for `TCP_RESERVED_BITS'
not integer constant
/usr/include/linux/tcp.h:115: error: enumerator value for `TCP_DATA_OFFSET' not
integer constant
ftwall.c:938: warning: conflicting types for built-in function `log'
make: *** [ftwall.o] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.86753 (%build)

* SOURCES includes entire iptables tarball because ftwall requires libipq.h
which is usually provided by iptables-devel in other distributions, but is not
included in Red Hat. Instead ftwall appears to static link to libipq from the
iptables tarball build.

This is the change in tcp.h that causes the build failure in FC1:

--- tcp.h-rh9 2003-11-06 21:45:40.000000000 -1000
+++ tcp.h-fc1 2003-11-06 21:46:08.000000000 -1000
@@ -102,16 +102,16 @@
#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])

enum {
- TCP_FLAG_CWR = __constant_htonl(0x00800000),
- TCP_FLAG_ECE = __constant_htonl(0x00400000),
- TCP_FLAG_URG = __constant_htonl(0x00200000),
- TCP_FLAG_ACK = __constant_htonl(0x00100000),
- TCP_FLAG_PSH = __constant_htonl(0x00080000),
- TCP_FLAG_RST = __constant_htonl(0x00040000),
- TCP_FLAG_SYN = __constant_htonl(0x00020000),
- TCP_FLAG_FIN = __constant_htonl(0x00010000),
- TCP_RESERVED_BITS = __constant_htonl(0x0FC00000),
- TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
+ TCP_FLAG_CWR = htonl(0x00800000),
+ TCP_FLAG_ECE = htonl(0x00400000),
+ TCP_FLAG_URG = htonl(0x00200000),
+ TCP_FLAG_ACK = htonl(0x00100000),
+ TCP_FLAG_PSH = htonl(0x00080000),
+ TCP_FLAG_RST = htonl(0x00040000),
+ TCP_FLAG_SYN = htonl(0x00020000),
+ TCP_FLAG_FIN = htonl(0x00010000),
+ TCP_RESERVED_BITS = htonl(0x0FC00000),
+ TCP_DATA_OFFSET = htonl(0xF0000000)
};

/* TCP socket options */
Roland McGrath
2003-11-07 22:28:44 UTC
Permalink
I think those glibc-kernheaders changes are broken. htonl is not a valid
constant expression macro in userland, though it might now be in
kernelland. The userland macro will be optimized away to the constant by
the compiler, but that does not make it a valid constant expression.

Could you file a report against the FC glibc-kernheaders package on
bugzilla.redhat.com?


Thanks,
Roland
Post by Warren Togami
--- tcp.h-rh9 2003-11-06 21:45:40.000000000 -1000
+++ tcp.h-fc1 2003-11-06 21:46:08.000000000 -1000
@@ -102,16 +102,16 @@
#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
enum {
- TCP_FLAG_CWR = __constant_htonl(0x00800000),
- TCP_FLAG_ECE = __constant_htonl(0x00400000),
- TCP_FLAG_URG = __constant_htonl(0x00200000),
- TCP_FLAG_ACK = __constant_htonl(0x00100000),
- TCP_FLAG_PSH = __constant_htonl(0x00080000),
- TCP_FLAG_RST = __constant_htonl(0x00040000),
- TCP_FLAG_SYN = __constant_htonl(0x00020000),
- TCP_FLAG_FIN = __constant_htonl(0x00010000),
- TCP_RESERVED_BITS = __constant_htonl(0x0FC00000),
- TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
+ TCP_FLAG_CWR = htonl(0x00800000),
+ TCP_FLAG_ECE = htonl(0x00400000),
+ TCP_FLAG_URG = htonl(0x00200000),
+ TCP_FLAG_ACK = htonl(0x00100000),
+ TCP_FLAG_PSH = htonl(0x00080000),
+ TCP_FLAG_RST = htonl(0x00040000),
+ TCP_FLAG_SYN = htonl(0x00020000),
+ TCP_FLAG_FIN = htonl(0x00010000),
+ TCP_RESERVED_BITS = htonl(0x0FC00000),
+ TCP_DATA_OFFSET = htonl(0xF0000000)
};
/* TCP socket options */
Warren Togami
2003-11-08 09:41:04 UTC
Permalink
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109474
Filed.
Post by Roland McGrath
I think those glibc-kernheaders changes are broken. htonl is not a valid
constant expression macro in userland, though it might now be in
kernelland. The userland macro will be optimized away to the constant by
the compiler, but that does not make it a valid constant expression.
Could you file a report against the FC glibc-kernheaders package on
bugzilla.redhat.com?
Thanks,
Roland
Post by Warren Togami
--- tcp.h-rh9 2003-11-06 21:45:40.000000000 -1000
+++ tcp.h-fc1 2003-11-06 21:46:08.000000000 -1000
@@ -102,16 +102,16 @@
#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
enum {
- TCP_FLAG_CWR = __constant_htonl(0x00800000),
- TCP_FLAG_ECE = __constant_htonl(0x00400000),
- TCP_FLAG_URG = __constant_htonl(0x00200000),
- TCP_FLAG_ACK = __constant_htonl(0x00100000),
- TCP_FLAG_PSH = __constant_htonl(0x00080000),
- TCP_FLAG_RST = __constant_htonl(0x00040000),
- TCP_FLAG_SYN = __constant_htonl(0x00020000),
- TCP_FLAG_FIN = __constant_htonl(0x00010000),
- TCP_RESERVED_BITS = __constant_htonl(0x0FC00000),
- TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
+ TCP_FLAG_CWR = htonl(0x00800000),
+ TCP_FLAG_ECE = htonl(0x00400000),
+ TCP_FLAG_URG = htonl(0x00200000),
+ TCP_FLAG_ACK = htonl(0x00100000),
+ TCP_FLAG_PSH = htonl(0x00080000),
+ TCP_FLAG_RST = htonl(0x00040000),
+ TCP_FLAG_SYN = htonl(0x00020000),
+ TCP_FLAG_FIN = htonl(0x00010000),
+ TCP_RESERVED_BITS = htonl(0x0FC00000),
+ TCP_DATA_OFFSET = htonl(0xF0000000)
};
/* TCP socket options */
Loading...