#!/bin/sh # ipkg - the itsy package management system # # Copyright (C) 2001 Carl D. Worth # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. set -e # By default do not do globbing. Any command wanting globbing should # explicitly enable it first and disable it afterwards. set -o noglob ipkg_is_upgrade () { local A B a b A=$(echo $1 | sed -r "s/([0-9]+)[^[:alnum:]]*/ \1 /g"). B=$(echo $2 | sed -r "s/([0-9]+)[^[:alnum:]]*/ \1 /g"). while [ \! -z "$A" ] && [ \! -z "$B" ]; do { set $A; a=$1; shift; A=$* set $B; b=$1; shift; B=$* [ "$a" -lt "$b" ] 2>&- && return 1 { [ "$a" -gt "$b" ] 2>&- || [ "$a" ">" "$b" ]; } && return }; done return 1 } which md5sum 2>&1 >/dev/null || alias md5sum=md5 ipkg_srcs() { local srcre="$1" sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF } ipkg_src_names() { sed -ne "s/^src[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF } ipkg_src_byname() { local src="$1" ipkg_srcs $src | head -n 1 } ipkg_dests() { local destre="`echo $1 | ipkg_protect_slashes`" sed -ne "/^dest[[:space:]]\+$destre/{ s/^dest[[:space:]]\+[^[:space:]]\+[[:space:]]\+// s/^/`echo $IPKG_OFFLINE_ROOT | ipkg_protect_slashes`/ p }" < $IPKG_CONF } ipkg_dest_names() { sed -ne "s/^dest[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF } ipkg_dests_all() { ipkg_dests '.*' } ipkg_state_dirs() { ipkg_dests_all | sed "s|\$|/$IPKG_DIR_PREFIX|" } ipkg_dest_default() { ipkg_dests_all | head -n 1 } ipkg_dest_default_name() { ipkg_dest_names | head -n 1 } ipkg_dest_byname() { local dest="$1" ipkg_dests $dest | head -n 1 } ipkg_option() { local option="$1" sed -ne "s/^option[[:space:]]\+$option[[:space:]]\+//p" < $IPKG_CONF } ipkg_load_configuration() { if [ -z "$IPKG_CONF_DIR" ]; then IPKG_CONF_DIR=/etc fi IPKG_CONF="$IPKG_CONF_DIR/ipkg.conf" if [ -z "$IPKG_OFFLINE_ROOT" ]; then IPKG_OFFLINE_ROOT="`ipkg_option offline_root`" fi # Export IPKG_OFFLINE_ROOT for use by update-alternatives export IPKG_OFFLINE_ROOT if [ -n "$DEST_NAME" ]; then IPKG_ROOT="`ipkg_dest_byname $DEST_NAME`" if [ -z "$IPKG_ROOT" ]; then if [ -d "$IPKG_OFFLINE_ROOT$DEST_NAME" ]; then IPKG_ROOT="$IPKG_OFFLINE_ROOT$DEST_NAME"; else echo "ipkg: invalid destination specification: $DEST_NAME Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&2 ipkg_dest_names >&2 return 1 fi fi else IPKG_ROOT="`ipkg_dest_default`" fi # Global ipkg state directories IPKG_DIR_PREFIX=usr/lib/ipkg IPKG_LISTS_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/lists IPKG_PENDING_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/pending if [ -z "$IPKG_TMP" ]; then IPKG_TMP=$IPKG_ROOT/tmp/ipkg fi [ -e "$IPKG_TMP" ] || mkdir -p $IPKG_TMP # Destination specific ipkg meta-data directory IPKG_STATE_DIR=$IPKG_ROOT/$IPKG_DIR_PREFIX # Proxy Support IPKG_PROXY_USERNAME="`ipkg_option proxy_username`" IPKG_PROXY_PASSWORD="`ipkg_option proxy_password`" IPKG_HTTP_PROXY="`ipkg_option http_proxy`" IPKG_FTP_PROXY="`ipkg_option ftp_proxy`" IPKG_NO_PROXY="`ipkg_option no_proxy`" if [ -n "$IPKG_HTTP_PROXY" ]; then export http_proxy="$IPKG_HTTP_PROXY" fi if [ -n "$IPKG_FTP_PROXY" ]; then export ftp_proxy="$IPKG_FTP_PROXY" fi if [ -n "$IPKG_NO_PROXY" ]; then export no_proxy="$IPKG_NO_PROXY" fi IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\)' } ipkg_usage() { [ $# -gt 0 ] && echo "ipkg: $*" echo " usage: ipkg [options...] sub-command [arguments...] where sub-command is one of: Package Manipulation: update Update list of available packages upgrade Upgrade all installed packages to latest version install Download and install (and dependencies) install Install package install Install package remove Remove package Informational Commands: list List available packages and descriptions files List all files belonging to search Search for a packaging providing info [pkg []] Display all/some info fields for or all status [pkg []] Display all/some status fields for or all depends Print uninstalled package dependencies for Options: -d Use as the the root directory for -dest package installation, removal, upgrading. should be a defined dest name from the configuration file, (but can also be a directory name in a pinch). -o Use as the root for offline installation. -offline Force Options (use when ipkg is too smart for its own good): -force-depends Make dependency checks warnings instead of errors -force-defaults Use default options for questions asked by ipkg. (no prompts). Note that this will not prevent package installation scripts from prompting. " >&2 exit 1 } ipkg_dir_part() { local dir="`echo $1 | sed -ne 's/\(.*\/\).*/\1/p'`" if [ -z "$dir" ]; then dir="./" fi echo $dir } ipkg_file_part() { echo $1 | sed 's/.*\///' } ipkg_protect_slashes() { sed -e 's/\//\\\//g' } ipkg_download() { local src="$1" local dest="$2" local src_file="`ipkg_file_part $src`" local dest_dir="`ipkg_dir_part $dest`" if [ -z "$dest_dir" ]; then dest_dir="$IPKG_TMP" fi local dest_file="`ipkg_file_part $dest`" if [ -z "$dest_file" ]; then dest_file="$src_file" fi # Proxy support local proxyuser="" local proxypassword="" local proxyoption="" if [ -n "$IPKG_PROXY_USERNAME" ]; then proxyuser="--proxy-user=\"$IPKG_PROXY_USERNAME\"" proxypassword="--proxy-passwd=\"$IPKG_PROXY_PASSWORD\"" fi if [ -n "$IPKG_PROXY_HTTP" -o -n "$IPKG_PROXY_FTP" ]; then proxyoption="--proxy=on" fi rm -f $IPKG_TMP/$src_file case "$src" in http://* | ftp://*) if ! wget --passive-ftp $proxyoption $proxyuser $proxypassword -P $IPKG_TMP $src; then echo "ipkg_download: ERROR: Failed to retrieve $src, returning $err" return 1 fi mv $IPKG_TMP/$src_file $dest_dir/$dest_file 2>/dev/null ;; file:/* ) ln -s `echo $src | sed 's/^file://'` $dest_dir/$dest_file 2>/dev/null ;; *) echo "DEBUG: $src" ;; esac return 0 } ipkg_update() { if [ ! -e "$IPKG_LISTS_DIR" ]; then mkdir -p $IPKG_LISTS_DIR fi local err= for src_name in `ipkg_src_names`; do local src="`ipkg_src_byname $src_name`" if ! ipkg_download $src/Packages $IPKG_LISTS_DIR/$src_name; then echo "ipkg_update: Error downloading $src/Packages to $IPKG_LISTS_DIR/$src_name" >&2 err=t else echo "Updated list of available packages in $IPKG_LISTS_DIR/$src_name" fi done [ -n "$err" ] && return 1 return 0 } ipkg_list() { for src in `ipkg_src_names`; do if ipkg_require_list $src; then # black magic... sed -ne " /^Package:/{ s/^Package:[[:space:]]*\<\([a-z0-9.+-]*$1[a-z0-9.+-]*\).*/\1/ h } /^Description:/{ s/^Description:[[:space:]]*\(.*\)/\1/ H g s/\\ / - / p } " $IPKG_LISTS_DIR/$src fi done } ipkg_extract_paragraph() { local pkg="$1" sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/p" } ipkg_extract_field() { local field="$1" # blacker magic... sed -ne " : TOP /^$field:/{ p n b FIELD } d : FIELD /^$/b TOP /^[^[:space:]]/b TOP p n b FIELD " } ipkg_extract_value() { sed -e "s/^[^:]*:[[:space:]]*//" } ipkg_require_list() { [ $# -lt 1 ] && return 1 local src="$1" if [ ! -f "$IPKG_LISTS_DIR/$src" ]; then echo "ERROR: File not found: $IPKG_LISTS_DIR/$src" >&2 echo " You probably want to run \`ipkg update'" >&2 return 1 fi return 0 } ipkg_info() { for src in `ipkg_src_names`; do if ipkg_require_list $src; then case $# in 0) cat $IPKG_LISTS_DIR/$src ;; 1) ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src ;; *) ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src | ipkg_extract_field $2 ;; esac fi done } ipkg_status_sd() { [ $# -lt 1 ] && return 0 sd="$1" shift if [ -f $sd/status ]; then case $# in 0) cat $sd/status ;; 1) ipkg_extract_paragraph $1 < $sd/status ;; *) ipkg_extract_paragraph $1 < $sd/status | ipkg_extract_field $2 ;; esac fi return 0 } ipkg_status_all() { for sd in `ipkg_state_dirs`; do ipkg_status_sd $sd $* done } ipkg_status() { if [ -n "$DEST_NAME" ]; then ipkg_status_sd $IPKG_STATE_DIR $* else ipkg_status_all $* fi } ipkg_status_matching_sd() { local sd="$1" local re="$2" if [ -f $sd/status ]; then sed -ne " : TOP /^Package:/{ s/^Package:[[:space:]]*// s/[[:space:]]*$// h } /$re/{ g p b NEXT } d : NEXT /^$/b TOP n b NEXT " < $sd/status fi return 0 } ipkg_status_matching_all() { for sd in `ipkg_state_dirs`; do ipkg_status_matching_sd $sd $* done } ipkg_status_matching() { if [ -n "$DEST_NAME" ]; then ipkg_status_matching_sd $IPKG_STATE_DIR $* else ipkg_status_matching_all $* fi } ipkg_status_installed_sd() { local sd="$1" local pkg="$2" ipkg_status_sd $sd $pkg Status | grep -q "Status: install ok installed" } ipkg_status_installed_all() { local ret=1 for sd in `ipkg_state_dirs`; do if `ipkg_status_installed_sd $sd $*`; then ret=0 fi done return $ret } ipkg_status_mentioned_sd() { local sd="$1" local pkg="$2" [ -n "`ipkg_status_sd $sd $pkg Status`" ] } ipkg_files() { local pkg="$1" if [ -n "$DEST_NAME" ]; then dests=$IPKG_ROOT else dests="`ipkg_dests_all`" fi for dest in $dests; do if [ -f $dest/$IPKG_DIR_PREFIX/info/$pkg.list ]; then dest_sed="`echo $dest | ipkg_protect_slashes`" sed -e "s/^/$dest_sed/" < $dest/$IPKG_DIR_PREFIX/info/$pkg.list fi done } ipkg_search() { local pattern="$1" for dest_name in `ipkg_dest_names`; do dest="`ipkg_dest_byname $dest_name`" dest_sed="`echo $dest | ipkg_protect_slashes`" set +o noglob local list_files="`ls -1 $dest/$IPKG_DIR_PREFIX/info/*.list 2>/dev/null`" set -o noglob for file in $list_files; do if sed "s/^/$dest_sed/" $file | grep -q $pattern; then local pkg="`echo $file | sed "s/^.*\/\(.*\)\.list/\1/"`" [ "$dest_name" != `ipkg_dest_default_name` ] && pkg="$pkg ($dest_name)" sed "s/^/$dest_sed/" $file | grep $pattern | sed "s/^/$pkg: /" fi done done } ipkg_status_remove_sd() { local sd="$1" local pkg="$2" if [ ! -f $sd/status ]; then mkdir -p $sd touch $sd/status fi sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/!p" < $sd/status > $sd/status.new mv $sd/status.new $sd/status } ipkg_status_remove_all() { for sd in `ipkg_state_dirs`; do ipkg_status_remove_sd $sd $* done } ipkg_status_remove() { if [ -n "$DEST_NAME" ]; then ipkg_status_remove_sd $IPKG_STATE_DIR $* else ipkg_status_remove_all $* fi } ipkg_status_update_sd() { local sd="$1" local pkg="$2" ipkg_status_remove_sd $sd $pkg ipkg_extract_field "$IPKG_STATUS_FIELDS" >> $sd/status echo "" >> $sd/status } ipkg_status_update() { ipkg_status_update_sd $IPKG_STATE_DIR $* } ipkg_unsatisfied_dependences() { local pkg=$1 local deps="`ipkg_get_depends $pkg`" local remaining_deps= for dep in $deps; do local installed="`ipkg_get_installed $dep`" if [ "$installed" != "installed" ] ; then remaining_deps="$remaining_deps $dep" fi done ## echo "ipkg_unsatisfied_dependences pkg=$pkg $remaining_deps" > /dev/console echo $remaining_deps } ipkg_safe_pkg_name() { local pkg=$1 local spkg="`echo pkg_$pkg | sed -e y/-+./___/`" echo $spkg } ipkg_set_depends() { local pkg=$1; shift local new_deps="$*" pkg="`ipkg_safe_pkg_name $pkg`" ## setvar ${pkg}_depends "$new_deps" echo $new_deps > $IPKG_TMP/${pkg}.depends } ipkg_get_depends() { local pkg=$1 pkg="`ipkg_safe_pkg_name $pkg`" cat $IPKG_TMP/${pkg}.depends ## eval "echo \$${pkg}_depends" } ipkg_set_installed() { local pkg=$1 pkg="`ipkg_safe_pkg_name $pkg`" echo installed > $IPKG_TMP/${pkg}.installed ## setvar ${
# 
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# $Id$

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

PKG_NAME:=iptables
PKG_VERSION:=1.3.5
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.netfilter.org/projects/iptables/files \
	ftp://ftp.be.netfilter.org/pub/netfilter/iptables/ \
	ftp://ftp.de.netfilter.org/pub/netfilter/iptables/ \
	ftp://ftp.no.netfilter.org/pub/netfilter/iptables/
PKG_MD5SUM:=00fb916fa8040ca992a5ace56d905ea5
PKG_CAT:=bzcat

include $(INCLUDE_DIR)/package.mk
ifeq ($(DUMP),)
  -include $(LINUX_DIR)/.config
  include $(INCLUDE_DIR)/netfilter.mk
endif

define Package/iptables/Default
  SECTION:=net
  CATEGORY:=Base system
  URL:=http://netfilter.org/
endef

define Package/iptables
  $(call Package/iptables/Default)
  TITLE:=IPv4 firewall administration tool
  MENU:=1
endef

define Package/iptables/conffiles
/etc/config/firewall
/etc/firewall.user
endef

define Package/iptables-mod-conntrack
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-conntrack
  TITLE:=connection tracking modules
  DESCRIPTION:=\
	iptables extensions for connection tracking.\\\
	\\\
	Includes: \\\
	- libipt_conntrack \\\
	- libipt_helper \\\
	- libipt_connmark/CONNMARK
endef

define Package/iptables-mod-filter
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-filter
  TITLE:=filter modules
  DESCRIPTION:=\
	iptables extensions for packet content inspection.\\\
	\\\
	Includes: \\\
	- libipt_ipp2p \\\
	- libipt_layer7 
endef

define Package/iptables-mod-imq
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-imq
  TITLE:=IMQ support
  DESCRIPTION:=\
	iptables extension for IMQ support.\\\
	\\\
	Includes: \\\
	- libipt_IMQ
endef

define Package/iptables-mod-ipopt
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-ipopt
  TITLE:=IP/Packet option modules
  DESCRIPTION:=\
	iptables extensions for matching/changing IP packet options.\\\
	\\\
	Includes: \\\
	- libipt_CLASSIFY \\\
	- libipt_dscp/DSCP \\\
	- libipt_ecn/ECN \\\
	- libipt_length \\\
	- libipt_mac \\\
	- libipt_tos/TOS \\\
	- libipt_tcpmms \\\
	- libipt_ttl/TTL \\\
	- libipt_unclean 
endef

define Package/iptables-mod-ipsec
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-ipsec
  TITLE:=IPSec extensions
  DESCRIPTION:=\
	iptables extensions for matching ipsec traffic.\\\
	\\\
	Includes: \\\
	- libipt_ah \\\
	- libipt_esp
endef

define Package/iptables-mod-nat
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-nat
  TITLE:=extra NAT targets
  DESCRIPTION:=\
	iptables extensions for different NAT targets.\\\
	\\\
	Includes: \\\
	- libipt_REDIRECT
endef

define Package/iptables-mod-ulog
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-ulog
  TITLE:=user-space packet logging
  DESCRIPTION:=\
	iptables extensions for user-space packet logging.\\\
	\\\
	Includes: \\\
	- libipt_ULOG
endef

define Package/iptables-mod-extra
  $(call Package/iptables/Default)
  DEPENDS:=iptables +kmod-ipt-extra
  TITLE:=other extra iptables extensions
  DESCRIPTION:=\
	other extra iptables extensions.\\\
	\\\
	Includes: \\\
	- libipt_limit \\\
	- libipt_owner \\\
	- libipt_physdev \\\
	- libipt_pkttype \\\
	- libipt_recent
endef

define Package/iptables-utils
  $(call Package/iptables/Default)
  DEPENDS:=iptables
  TITLE:=iptables save and restore utilities
endef

define Package/ip6tables
  $(call Package/iptables/Default)
  CATEGORY:=Network
  TITLE:=IPv6 firewall administration tool
endef

$(PKG_BUILD_DIR)/.configured: $(LINUX_DIR)/.config

define Build/Configure
	$(MAKE) -C $(PKG_BUILD_DIR) \
		clean
endef

define Build/Compile
	chmod a+x $(PKG_BUILD_DIR)/extensions/.*-test*
	mkdir -p $(PKG_INSTALL_DIR)
	$(MAKE) -C $(PKG_BUILD_DIR) \
		$(TARGET_CONFIGURE_OPTS) \
		COPT_FLAGS="$(TARGET_CFLAGS)" \
		KERNEL_DIR="$(LINUX_DIR)" PREFIX=/usr \
		DESTDIR="$(PKG_INSTALL_DIR)" \
		all install
endef

define Build/InstallDev
	$(MAKE) -C $(PKG_BUILD_DIR) \
		$(TARGET_CONFIGURE_OPTS) \
		COPT_FLAGS="$(TARGET_CFLAGS)" \
		KERNEL_DIR="$(LINUX_DIR)" PREFIX=/usr \
		DESTDIR="$(STAGING_DIR)" \
		install-devel
	$(CP) $(PKG_BUILD_DIR)/include $(STAGING_DIR)/usr
	$(CP) $(PKG_BUILD_DIR)/libiptc/libiptc.a $(STAGING_DIR)/usr/lib
endef

define Build/UninstallDev
	rm -rf $(STAGING_DIR)/usr/include/libipq.h
	rm -rf $(STAGING_DIR)/usr/include/libipulog
	rm -rf $(STAGING_DIR)/usr/include/libipq
	rm -rf $(STAGING_DIR)/usr/include/libiptc
	rm -rf $(STAGING_DIR)/usr/include/linux/netfilter*
	rm -rf $(STAGING_DIR)/usr/include/iptables*
	rm -rf $(STAGING_DIR)/usr/include/ip6tables*
	rm -rf $(STAGING_DIR)/usr/lib/libipq.a
	rm -rf $(STAGING_DIR)/usr/lib/libiptc.a
endef

define Package/iptables/install
	$(INSTALL_DIR) $(1)/etc/config
	$(INSTALL_DATA) ./files/firewall.config $(1)/etc/config/firewall
	$(INSTALL_DIR) $(1)/etc/init.d
	$(INSTALL_BIN) ./files/firewall.init $(1)/etc/init.d/firewall
	$(INSTALL_BIN) ./files/firewall.user $(1)/etc/
	$(INSTALL_DIR) $(1)/usr/lib
	$(INSTALL_DATA) ./files/firewall.awk $(1)/usr/lib
	$(INSTALL_DIR) $(1)/usr/sbin
	$(CP) $(PKG_INSTALL_DIR)/usr/sbin/iptables $(1)/usr/sbin/
	$(INSTALL_DIR) $(1)/usr/lib/iptables
	(cd $(PKG_INSTALL_DIR)/usr/lib/iptables ; \
		$(CP) $(patsubst %,lib%.so,$(IPT_BUILTIN:xt_%=ipt_%)) $(1)/usr/lib/iptables/ \
	)
endef

define Package/iptables-utils/install
	$(INSTALL_DIR) $(1)/usr/sbin
	$(CP) $(PKG_INSTALL_DIR)/usr/sbin/iptables-{save,restore} $(1)/usr/sbin/
endef

define Package/ip6tables/install
	$(INSTALL_DIR) $(1)/usr/sbin
	$(CP) $(PKG_INSTALL_DIR)/usr/sbin/ip6tables $(1)/usr/sbin/
	$(INSTALL_DIR) $(1)/usr/lib/iptables
	(cd $(PKG_INSTALL_DIR)/usr/lib/iptables ; \
		$(CP) libip6t_*.so $(1)/usr/lib/iptables/ \
	)
endef

define BuildPlugin
  define Package/$(1)/install
	$(INSTALL_DIR) $$(1)/usr/lib/iptables
	for m in $$(patsubst xt_%,ipt_%,$(2)); do \
		$(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables/lib$$$$$$$${m}.so $$(1)/usr/lib/iptables/ ; \
	done
	$(3)
  endef

  $$(eval $$(call BuildPackage,$(1)))
endef

L7_INSTALL:=\
	$(INSTALL_DIR) $$(1)/etc/l7-protocols; \
	$(CP) files/l7/*.pat $$(1)/etc/l7-protocols/

$(eval $(call BuildPackage,iptables))
$(eval $(call BuildPackage,iptables-utils))
$(eval $(call BuildPlugin,iptables-mod-conntrack,$(IPT_CONNTRACK-m)))
$(eval $(call BuildPlugin,iptables-mod-extra,$(IPT_EXTRA-m)))
$(eval $(call BuildPlugin,iptables-mod-filter,$(IPT_FILTER-m),$(L7_INSTALL)))
$(eval $(call BuildPlugin,iptables-mod-imq,$(IPT_IMQ-m)))
$(eval $(call BuildPlugin,iptables-mod-ipopt,$(IPT_IPOPT-m)))
$(eval $(call BuildPlugin,iptables-mod-ipsec,$(IPT_IPSEC-m)))
$(eval $(call BuildPlugin,iptables-mod-nat,$(IPT_NAT-m)))
$(eval $(call BuildPlugin,iptables-mod-ulog,$(IPT_ULOG-m)))
$(eval $(call BuildPackage,ip6tables))