include $(TOPDIR)/rules.mk

PKG_NAME:=snmp-mod
PKG_VERSION:=2025-09-03
PKG_RELEASE:=1

PKG_SOURCE_VERSION:=3.12.1
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)

PKG_LICENSE:=Teltonika-closed

include $(INCLUDE_DIR)/package.mk

define Package/snmp-mod/Default
	SUBMENU:=SNMP modules
	SECTION:=base
	CATEGORY:=Base system
	DEPENDS:=+libnetsnmp +libubus +libubox
endef

define Package/snmp
	$(call Package/snmp-mod/Default)
	DEPENDS+=+snmpd +snmp-mib +snmp-mod-device +snmp-mod-vlan +snmp-mod-port \
		 +snmp-mod-rmon +snmp-mod-dot1d +IO_SUPPORT:snmp-mod-io +snmptrap
	TITLE:=SNMP Meta package

	ifeq (m, $(CONFIG_PACKAGE_snmp))
		PKG_TLT_NAME:=SNMP
		PKG_ROUTER:=$(TLT_PLATFORM_NAME)
	endif
endef

define Package/snmp-mod-device
	$(call Package/snmp-mod/Default)
	DEPENDS+=+libuci +libmnfinfo
	TITLE:=SNMP mnf info module
endef

define Package/snmp-mod-vlan
	$(call Package/snmp-mod/Default)
	DEPENDS+=+libuci
	TITLE:=SNMP VLAN module
endef

define Package/snmp-mod-io
	$(call Package/snmp-mod/Default)
	DEPENDS+=+iomand
	TITLE:=SNMP I/O module
endef

define Package/snmp-mod-port
	$(call Package/snmp-mod/Default)
	TITLE:=SNMP Port module
endef

define Package/snmp-mod-rmon
	$(call Package/snmp-mod/Default)
	DEPENDS+=+libubus
	TITLE:=SNMP RMON module
endef

define Package/snmp-mod-dot1d
	$(call Package/snmp-mod/Default)
	DEPENDS+=+libubus
	TITLE:=SNMP IEEE 802.1D bridge support
endef

define Package/snmp-mib
	SUBMENU:=SNMP modules
	SECTION:=base
	CATEGORY:=Base system
	TITLE:=SNMP teltonika MIBs
endef

define Package/snmp/install
	true
endef


define Package/snmp-mib/install
	$(INSTALL_DIR) $(1)/etc/snmp
	$(INSTALL_DIR) $(1)/etc/snmp/modules
	$(INSTALL_DIR) $(1)/etc/uci-defaults

	$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/generate_MIBs.sh $(1)/etc/snmp/
	$(CP) $(PKG_BUILD_DIR)/files/modules/* $(1)/etc/snmp/modules/
	$(INSTALL_DATA) $(PKG_BUILD_DIR)/files/snmpd.defaults $(1)/etc/uci-defaults/
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/launch_generate_MIBs.sh $(1)/etc/snmp/
endef

define BuildPlugin
  define Package/snmp-mod-$(1)/install
	$(INSTALL_DIR) $$(1)/usr/lib/snmpd-mod
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(1).so $$(1)/usr/lib/snmpd-mod/
  endef
  $$(eval $$(call BuildPackage,snmp-mod-$(1)))
endef

$(eval $(call BuildPackage,snmp))
$(eval $(call BuildPackage,snmp-mib))
$(eval $(call BuildPlugin,device))
$(eval $(call BuildPlugin,vlan))
$(eval $(call BuildPlugin,io))
$(eval $(call BuildPlugin,port))
$(eval $(call BuildPlugin,rmon))
$(eval $(call BuildPlugin,dot1d))
