Commit
e1bf1687740c ("netfilter: nat: Revert "netfilter: nat: convert
nat bysrc hash to rhashtable") changed the type of
nf_conn::nat_bysource. Thankfully the two types are the same size,
and nothing outside of nf_nat_core touches this field directly. Hide
the change from genksyms but add compile-time assertions to make sure
that this isn't an ABI change.
Gbp-Pq: Topic debian
Gbp-Pq: Name netfilter-nat-avoid-abi-change-in-4.9.63.patch
#include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/atomic.h>
+#include <linux/rhashtable.h>
#include <linux/netfilter/nf_conntrack_tcp.h>
#include <linux/netfilter/nf_conntrack_dccp.h>
possible_net_t ct_net;
#if IS_ENABLED(CONFIG_NF_NAT)
+#ifndef __GENKSYMS__
struct hlist_node nat_bysource;
+#else
+ struct rhlist_head nat_bysource;
+#endif
#endif
/* all members below initialized via memset */
u8 __nfct_init_offset[0];
#ifndef _NF_NAT_H
#define _NF_NAT_H
+#include <linux/rhashtable.h>
#include <linux/netfilter_ipv4.h>
#include <linux/netfilter/nf_nat.h>
#include <net/netfilter/nf_conntrack_tuple.h>
{
int ret;
+ /* bwh: Assert that nat_bysource hasn't changed size or alignment */
+ BUILD_BUG_ON(sizeof(struct hlist_node) != sizeof(struct rhlist_head));
+ BUILD_BUG_ON(__alignof__(struct hlist_node) !=
+ __alignof__(struct rhlist_head));
+
/* Leave them the same for the moment. */
nf_nat_htable_size = nf_conntrack_htable_size;