Problem description
--------------------
Iptables userspace utility needs to transfer information to/from kernel
in structures defined in kernel headers.
Two versions of iptables are available:
iptables_32 for 32-bit kernel
iptables_64 for 64-bit kernel.
When compiling iptalbes_64, two defines "-DIPT_MIN_ALIGN=8" "-DKERNEL_64_USERSPACE_32" are added to gcc, which can affect some structures in iptables source tree, but can not affect those in public headers.
As a result, most parts of iptables_64 are still compiled for 32-bit.
This patch fixes that problem.
Steps to reproduce the problem:
-------------------------------
* root@slot04:~/iptables_issue# iptables_32 -L -n
iptables v1.3.4: can't initialize iptables table filter': Bad file descriptor
filter': Bad file descriptor
Perhaps iptables or your kernel needs to be upgraded.
* root@slot04:~/iptables_issue# iptables_64 -L -n
iptables v1.3.4: can't initialize iptables table
Perhaps iptables or your kernel needs to be upgraded.
IDENTIFIER = WIND00097110-PNELE14
Installation Instructions
-------------------------
1) This is a source only patch.
2) Copy the attached zip file to the updates directory of the installation and unzip it.
3) Run ./setup_linux
4) Configure a project;
5) 'make -C build iptables'; (it is a source only patch)
6) 'make fs';
7) Boot hardware with new rootfs
Note:
-----
1) Two versions of iptables commands exist, the reason is because the iptables command need to exchange data to or from kernel space, use a predefined data structure.
2) In this version of wrlinux, when kernel is in 64-bit mode, we should use iptables compiled for 64-bit mode (iptables_64), when kernel is in 32-bit mode, iptables_32 should be used.