#
# Copyright (C) 2006-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(TOPDIR)/draytek_include/draytek_info

PKG_NAME:=ndpi-netfilter
PKG_VERSION:=4
PKG_RELEASE:=1

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/vel21ripn/nDPI.git
PKG_SOURCE_DATE:=2023-07-06
PKG_SOURCE_VERSION:=3deea541af037b663b1b83a055b80d9a06a0afd2
PKG_MIRROR_HASH:=f4656e06cac42f386d1e80b5f8fcb243f17c8a82f5968b68456530f17ffb243b

PKG_FIXUP:=autoreconf
PKG_INSTALL:=1

include $(INCLUDE_DIR)/package.mk

define Package/iptables-mod-ndpi
  SECTION:=apps
  CATEGORY:=DrayOS5
  SUBMENU:=System
  TITLE:=ndpi-netfilter
  URL:=https://github.com/vel21ripn/nDPI.git
  DEPENDS:=+iptables +iptables-mod-conntrack-extra
endef

define Package/iptables-mod-ndpi/description
  nDPI is a ntop-maintained superset of the popular OpenDPI library
endef

MAKE_PATH:=ndpi-netfilter
MAKE_FLAGS += ARCH="$(LINUX_KARCH)" KERNEL_DIR="$(LINUX_DIR)" MODULES_DIR="$(TARGET_MODULES_DIR)"

define Build/Prepare
	cp -rf $(CURDIR)/nDPI-custom/ $(PKG_BUILD_DIR)/../
	$(call Build/Prepare/Default,)
endef

ifeq ($(findstring an758,$(DRAY_PLATFORM)),an758)
CONFIGURE_VARS += ac_cv_lib_pcap_pcap_open_live=y
endif

define Build/Compile
	(cd $(PKG_BUILD_DIR)/src/lib &&\
		gcc -g -O2 -fPIC -DPIC -DNDPI_LIB_COMPILATION -I../../src/include/ -I../../src/lib/third_party/include/ ndpi_network_list_compile.c -o ndpi_network_list_compile &&\
		./ndpi_network_list_compile -o ndpi_network_list.c.inc ndpi_network_list_*.yaml)
	$(call Build/Compile/Default,)
endef

define Package/iptables-mod-ndpi/install
	$(INSTALL_DIR) $(1)/usr/lib/iptables
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/ndpi-netfilter/ipt/libxt_ndpi.so $(1)/usr/lib/iptables
endef

define KernelPackage/ipt-ndpi
  CATEGORY:=DrayOS5
  SUBMENU:=System
  TITLE:=nDPI net netfilter module
  FILES:=$(PKG_BUILD_DIR)/ndpi-netfilter/src/xt_ndpi.ko
  AUTOLOAD:=$(call AutoProbe,xt_ndpi)
endef

$(eval $(call BuildPackage,iptables-mod-ndpi))
$(eval $(call KernelPackage,ipt-ndpi))

