From 4e993598194fb43aeb92c7a7af42482db81335a1 Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Mon, 28 Oct 2019 19:23:17 -0700 Subject: [PATCH] netfilter: fix NAT packaging with kernels 5.2+ --- include/netfilter.mk | 3 ++- .../generic/files/drivers/net/phy/swconfig.c | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/include/netfilter.mk b/include/netfilter.mk index 179d4ed7b..009f3502e 100644 --- a/include/netfilter.mk +++ b/include/netfilter.mk @@ -202,7 +202,8 @@ $(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_TARGET_NPT, $(P_V6)i $(eval $(if $(NF_KMOD),,$(call nf_add,IPT_NAT,CONFIG_NF_NAT, ipt_SNAT ipt_DNAT))) $(eval $(if $(NF_KMOD),,$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_TARGET_NPT, ip6t_DNPT ip6t_SNPT))) -$(eval $(call nf_add,IPT_NAT,CONFIG_IP_NF_TARGET_MASQUERADE, $(P_V4)ipt_MASQUERADE)) +$(eval $(call nf_add,IPT_NAT,CONFIG_IP_NF_TARGET_MASQUERADE, $(P_V4)ipt_MASQUERADE, lt 5.2)) +$(eval $(call nf_add,IPT_NAT,CONFIG_IP_NF_TARGET_MASQUERADE, $(P_XT)xt_MASQUERADE, ge 5.2)) $(eval $(call nf_add,IPT_NAT,CONFIG_IP_NF_TARGET_REDIRECT, $(P_XT)xt_REDIRECT)) diff --git a/target/linux/generic/files/drivers/net/phy/swconfig.c b/target/linux/generic/files/drivers/net/phy/swconfig.c index e8a684742..20d6c693d 100644 --- a/target/linux/generic/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic/files/drivers/net/phy/swconfig.c @@ -1001,55 +1001,75 @@ static struct genl_ops swconfig_ops[] = { { .cmd = SWITCH_CMD_LIST_GLOBAL, .doit = swconfig_list_attrs, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_LIST_VLAN, .doit = swconfig_list_attrs, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_LIST_PORT, .doit = swconfig_list_attrs, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_GET_GLOBAL, .doit = swconfig_get_attr, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_GET_VLAN, .doit = swconfig_get_attr, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_GET_PORT, .doit = swconfig_get_attr, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_SET_GLOBAL, .flags = GENL_ADMIN_PERM, .doit = swconfig_set_attr, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_SET_VLAN, .flags = GENL_ADMIN_PERM, .doit = swconfig_set_attr, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_SET_PORT, .flags = GENL_ADMIN_PERM, .doit = swconfig_set_attr, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif }, { .cmd = SWITCH_CMD_GET_SWITCH, .dumpit = swconfig_dump_switches, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, +#endif .done = swconfig_done, } }; @@ -1062,6 +1082,9 @@ static struct genl_family switch_fam = { .hdrsize = 0, .version = 1, .maxattr = SWITCH_ATTR_MAX, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0) + .policy = switch_policy, +#endif .module = THIS_MODULE, .ops = swconfig_ops, .n_ops = ARRAY_SIZE(swconfig_ops),