Thomas De Schampheleire <patrickdepinguin@xxxxxxxxx> wrote: > 1. x86_64 kernel 5.4.x + i686 userspace: ebtables works correctly > > 2. aarch64 kernel 4.1.x + 32-bit ARM userspace: ebtables fails as described > > As mentioned before, in both cases CONFIG_COMPAT=y . > > > > Thomas, does unmodified 32bit iptables work on those arch/kernel > > combinations? > > Yes, iptables 1.8.6 is used successfully without special provisioning > for bitness. We are using Buildroot 2021.02 to compile. Ok, so this is 'just' a bug in the ebtables translation layer. Its likely that there are alignment differences on aarch that the ebtables i686 fixups are not aware of. > > ebtables-userspace compat fixups predate the ebtables kernel side > > support, it was autoenabled on sparc64 in the old makefile: > > > > ifeq ($(shell uname -m),sparc64) > > CFLAGS+=-DEBT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32 > > endif > > Yes, in the proposed changes to ebtables userspace, this kind of logic > is restored, but not based on the machine type but with an autoconf > flag. > > > > > I don't even know if the ebtables compat support is compiled in on > > non-amd64. > > Can you be more specific what you are referring to here? I meant I wasn't sure if the ebtables compat stuff is compiled in on non-amd64 platforms. But I guess they are because iptables works for you. > So at this moment it seems to me that the kernel compat support is > effectively compiled in, and supports x86(_64) but does not support > the Aarch64/ARM combination (and perhaps others). > > How to proceed now? The proper solution is to make the existing translation work on aarch64. It will take me some time to get a crosscompiler+qemu setup going though.