From 543a4a41a615ce38ae32e887f94d3b85d50a93d9 Mon Sep 17 00:00:00 2001 From: Mattraks <16359027+Mattraks@users.noreply.github.com> Date: Wed, 16 Dec 2020 02:36:08 +0800 Subject: [PATCH] Fix unable to start SFE with IPv4 only (#5914) --- package/lean/fast-classifier/Makefile | 5 +++-- package/lean/fast-classifier/src/fast-classifier.c | 6 ++++-- package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua | 2 ++ package/lean/shortcut-fe/Makefile | 10 ++++------ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/package/lean/fast-classifier/Makefile b/package/lean/fast-classifier/Makefile index 2b02f1b64..29d024e7b 100644 --- a/package/lean/fast-classifier/Makefile +++ b/package/lean/fast-classifier/Makefile @@ -3,6 +3,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=fast-classifier PKG_RELEASE:=1 +PKG_CONFIG_DEPENDS := CONFIG_IPV6 include $(INCLUDE_DIR)/package.mk @@ -49,10 +50,10 @@ Example user space program that communicates with fast classifier kernel module endef -SFE_MAKE_OPTS:=SFE_SUPPORT_IPV6=y +SFE_MAKE_OPTS:=SFE_SUPPORT_IPV6=$(if $(CONFIG_IPV6),y,n) define Build/Compile/kmod - +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" $(strip $(SFE_MAKE_OPTS)) \ + +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" $(SFE_MAKE_OPTS) \ $(KERNEL_MAKE_FLAGS) \ $(PKG_MAKE_FLAGS) \ M="$(PKG_BUILD_DIR)" \ diff --git a/package/lean/fast-classifier/src/fast-classifier.c b/package/lean/fast-classifier/src/fast-classifier.c index 62255733e..160d14091 100644 --- a/package/lean/fast-classifier/src/fast-classifier.c +++ b/package/lean/fast-classifier/src/fast-classifier.c @@ -345,7 +345,9 @@ static bool fast_classifier_find_dev_and_mac_addr(struct sk_buff *skb, sfe_ip_ad } dst = (struct dst_entry *)rt; - } else { + } +#ifdef SFE_SUPPORT_IPV6 + else { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)) rt6 = rt6_lookup(&init_net, (struct in6_addr *)addr->ip6, 0, 0, NULL, 0); #else @@ -357,6 +359,7 @@ static bool fast_classifier_find_dev_and_mac_addr(struct sk_buff *skb, sfe_ip_ad dst = (struct dst_entry *)rt6; } +#endif skip_dst_lookup: rcu_read_lock(); @@ -1971,4 +1974,3 @@ module_exit(fast_classifier_exit) MODULE_DESCRIPTION("Shortcut Forwarding Engine - Connection Manager"); MODULE_LICENSE("Dual BSD/GPL"); - diff --git a/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua b/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua index bb4c47616..c30f3aa17 100644 --- a/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua +++ b/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua @@ -21,11 +21,13 @@ wifi.rmempty = false wifi.description = translate("Enable Bridge Acceleration (may be functional conflict with bridge-mode VPN Server)") wifi:depends("enabled", 1) +if nixio.fs.access("/proc/sys/net/ipv6") then ipv6 = s:option(Flag, "ipv6", translate("IPv6 Acceleration")) ipv6.default = 0 ipv6.rmempty = false ipv6.description = translate("Enable IPv6 Acceleration") ipv6:depends("enabled", 1) +end bbr = s:option(Flag, "bbr", translate("Enable BBR")) bbr.default = 0 diff --git a/package/lean/shortcut-fe/Makefile b/package/lean/shortcut-fe/Makefile index 4061a7537..148cfda12 100644 --- a/package/lean/shortcut-fe/Makefile +++ b/package/lean/shortcut-fe/Makefile @@ -16,6 +16,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=shortcut-fe PKG_RELEASE:=2 +PKG_CONFIG_DEPENDS := CONFIG_IPV6 include $(INCLUDE_DIR)/package.mk @@ -25,7 +26,7 @@ define KernelPackage/shortcut-fe SUBMENU:=Network Support DEPENDS:= TITLE:=Kernel driver for SFE - FILES:=$(PKG_BUILD_DIR)/shortcut-fe.ko $(PKG_BUILD_DIR)/shortcut-fe-ipv6.ko + FILES:=$(PKG_BUILD_DIR)/shortcut-fe.ko $(if $(CONFIG_IPV6),$(PKG_BUILD_DIR)/shortcut-fe-ipv6.ko,) KCONFIG:=CONFIG_NF_CONNTRACK_EVENTS=y \ CONFIG_NF_CONNTRACK_TIMEOUT=y \ CONFIG_SHORTCUT_FE=y \ @@ -56,16 +57,13 @@ define KernelPackage/shortcut-fe-cm/Description Simple connection manager for the Shortcut forwarding engine. endef -EXTRA_CFLAGS+=-DSFE_SUPPORT_IPV6 - define Build/Compile +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ $(KERNEL_MAKE_FLAGS) \ $(PKG_MAKE_FLAGS) \ M="$(PKG_BUILD_DIR)" \ - EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ - SFE_SUPPORT_IPV6=1 \ - modules + modules \ + $(if $(CONFIG_IPV6),EXTRA_CFLAGS="-DSFE_SUPPORT_IPV6" SFE_SUPPORT_IPV6=y,) endef ifneq ($(CONFIG_PACKAGE_kmod-shortcut-fe)$(CONFIG_PACKAGE_kmod-shortcut-fe-cm),)