Swap can’t be enabled/disabled on a per-container basis as it’s a global kernel resource.
LXD lets you configure the swappiness (likelyhood of getting swapped) on a per-container basis through the limits.memory options, but that won’t make the swap disappear.
For the br_netfilter module, you need to load it from the host or by setting it as a linux.kernel_modules property on the container. This should have it show up in the container, if not, then it’s unfortunately a kernel bug. In which case you may want to try a more recent kernel to see if that has since gotten fixed.
If not, @sforshee or @tyhicks may be able to look into why the netfilter bridge files aren’t properly tied to the network namespace.
For the br_netfilter module, how can I load it from host? I know that module is working fine on host. Should I be using devices: section for the same? (update: still does not work, I tried path map in device section in addition with lxc.mount.auto=proc:rw)
On swap, I can try turn it off on host machine. (update: works with host’s swap off)