]> git.ipfire.org Git - people/ms/network.git/blobdiff - Makefile.am
Makefile: Fix typo in localstatedir
[people/ms/network.git] / Makefile.am
index 40026aa693683560b0dd2fe0d85cbbc0f2e6a7c0..7ca12292dc6889852f0eaf41f3fc299ba7f9033e 100644 (file)
@@ -28,8 +28,10 @@ AUTOMAKE_OPTIONS = color-tests
 # keep itermediate files
 .SECONDARY:
 
+configdir        = $(sysconfdir)/network
 bashcompletiondir= $(datadir)/bash-completion/completions
 libexecdir       = $(prefix)/lib
+modprobedir      = $(prefix)/lib/modprobe.d
 pkgconfigdir     = $(libdir)/pkgconfig
 pppdir           = $(sysconfdir)/ppp
 systemconfigdir  = $(datadir)/network
@@ -49,15 +51,22 @@ hooks_zonesdir   = $(hooksdir)/zones
 
 triggersdir      = $(networkdir)/triggers
 
-logdir           = $(localestatedir)/log/network
+logdir           = $(localstatedir)/log/network
+utildir          = $(networkdir)
 
 CLEANFILES =
 DISTCLEANFILES =
 EXTRA_DIST =
 INSTALL_DIRS =
 INSTALL_EXEC_HOOKS =
+TESTS =
 UNINSTALL_EXEC_HOOKS =
 noinst_DATA =
+network_PROGRAMS =
+dist_dbuspolicy_DATA =
+dist_dbussystembus_DATA =
+dist_polkitpolicy_DATA =
+systemdsystemunit_DATA =
 
 AM_CPPFLAGS = \
        $(OUR_CPPFLAGS) \
@@ -87,6 +96,18 @@ INSTALL_EXEC_HOOKS += \
 
 # ------------------------------------------------------------------------------
 
+AM_V_ASCIIDOC   = $(AM_V_ASCIIDOC_$(V))
+AM_V_ASCIIDOC_  = $(AM_V_ASCIIDOC_$(AM_DEFAULT_VERBOSITY))
+AM_V_ASCIIDOC_0 = @echo "  ASCIIDOC" $@;
+
+AM_V_DOWNLOAD   = $(AM_V_DOWNLOAD_$(V))
+AM_V_DOWNLOAD_  = $(AM_V_DOWNLOAD_$(AM_DEFAULT_VERBOSITY))
+AM_V_DOWNLOAD_0 = @echo "  LOAD    " $@;
+
+AM_V_NITSI   = $(AM_V_NITSI_$(V))
+AM_V_NITSI_  = $(AM_V_NITSI_$(AM_DEFAULT_VERBOSITY))
+AM_V_NITSI_0 = @echo "  NITSI   " $@;
+
 AM_V_XSLT   = $(AM_V_XSLT_$(V))
 AM_V_XSLT_  = $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY))
 AM_V_XSLT_0 = @echo "  XSLT    " $@;
@@ -100,12 +121,10 @@ dist_doc_DATA = \
 
 dist_sbin_SCRIPTS = \
        src/dhclient-script \
-       src/firewall-config \
-       src/firewall4 \
-       src/firewall6 \
+       src/firewall \
        src/network
 
-network_SCRIPTS = \
+network_DATA = \
        src/functions/functions
 
 CLEANFILES += \
@@ -114,9 +133,10 @@ CLEANFILES += \
 EXTRA_DIST += \
        src/functions/functions.in
 
-dist_network_SCRIPTS = \
+dist_network_DATA = \
        src/functions/functions.at \
        src/functions/functions.auth \
+       src/functions/functions.bird \
        src/functions/functions.bonding \
        src/functions/functions.bridge \
        src/functions/functions.cli \
@@ -151,16 +171,17 @@ dist_network_SCRIPTS = \
        src/functions/functions.ip-tunnel \
        src/functions/functions.ipv4 \
        src/functions/functions.ipv6 \
+       src/functions/functions.leds \
        src/functions/functions.list \
        src/functions/functions.lock \
        src/functions/functions.logging \
        src/functions/functions.macros \
        src/functions/functions.modem \
+       src/functions/functions.offloading \
        src/functions/functions.phy \
        src/functions/functions.ports \
        src/functions/functions.ppp \
        src/functions/functions.pppoe-server \
-       src/functions/functions.radvd \
        src/functions/functions.route \
        src/functions/functions.routing \
        src/functions/functions.serial \
@@ -180,17 +201,17 @@ dist_network_SCRIPTS = \
        src/functions/functions.wireless-networks \
        src/functions/functions.wpa_supplicant \
        src/functions/functions.zone \
-       src/network-radvd-config \
-       src/dhclient-helper \
        src/header-config \
        src/header-port \
-       src/header-zone \
+       src/header-zone
+
+dist_network_SCRIPTS = \
+       src/dhclient-helper \
        src/ppp/dialer \
        src/ppp/pppoe-server
 
 dist_helpers_SCRIPTS = \
        src/helpers/dhcpd-config-helper \
-       src/helpers/firewall-kernel-init \
        src/helpers/hostapd-config-helper \
        src/helpers/ipsec-updown \
        src/helpers/pppd-angel \
@@ -207,26 +228,36 @@ src_inetcalc_LDADD = \
 
 dist_hooks_configs_SCRIPTS = \
        src/hooks/configs/dhcp \
-       src/hooks/configs/ipv4-static \
        src/hooks/configs/ipv6-auto \
-       src/hooks/configs/ipv6-static \
-       src/hooks/configs/pppoe-server
+       src/hooks/configs/pppoe-server \
+       src/hooks/configs/static
 
 dist_hooks_ports_SCRIPTS = \
        src/hooks/ports/bonding \
        src/hooks/ports/dummy \
        src/hooks/ports/ethernet \
+       src/hooks/ports/ip-tunnel \
        src/hooks/ports/vlan \
        src/hooks/ports/wireless-ap \
        src/hooks/ports/wireless-mesh
 
 dist_hooks_zones_SCRIPTS = \
-       src/hooks/zones/6to4-tunnel \
        src/hooks/zones/bridge \
+       src/hooks/zones/ip-tunnel \
        src/hooks/zones/modem \
        src/hooks/zones/pppoe \
        src/hooks/zones/wireless
 
+INSTALL_DIRS += \
+       $(configdir) \
+       $(configdir)/ports \
+       $(configdir)/vpn \
+       $(configdir)/vpn/ipsec/connections \
+       $(configdir)/vpn/security-policies \
+       $(configdir)/wireless \
+       $(configdir)/wireless/networks \
+       $(configdir)/zones
+
 # ------------------------------------------------------------------------------
 
 LIBNETWORK_CURRENT=0
@@ -234,14 +265,32 @@ LIBNETWORK_REVISION=0
 LIBNETWORK_AGE=0
 
 pkginclude_HEADERS = \
-       src/libnetwork/network/libnetwork.h
+       src/libnetwork/network/interface.h \
+       src/libnetwork/network/libnetwork.h \
+       src/libnetwork/network/logging.h \
+       src/libnetwork/network/phy.h
 
 lib_LTLIBRARIES = \
        src/libnetwork.la
 
 src_libnetwork_la_SOURCES = \
+       src/libnetwork/interface.c \
        src/libnetwork/libnetwork-private.h \
-       src/libnetwork/libnetwork.c
+       src/libnetwork/libnetwork.c \
+       src/libnetwork/phy.c
+
+src_libnetwork_la_LIBADD = \
+       $(LIBNL_LIBS)
+
+src_libnetwork_la_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       $(LIBNL_CPPFLAGS) \
+       -D_GNU_SOURCE \
+       -DNETWORK_PRIVATE
+
+src_libnetwork_la_CFLAGS = \
+       $(AM_CFLAGS) \
+       $(LIBNL_CFLAGS)
 
 src_libnetwork_la_LDFLAGS = \
        $(AM_LDFLAGS) \
@@ -256,6 +305,156 @@ EXTRA_DIST += \
 
 # ------------------------------------------------------------------------------
 
+network_PROGRAMS += \
+       networkd
+
+dist_networkd_SOURCES = \
+       src/networkd/address.h \
+       src/networkd/bus.c \
+       src/networkd/bus.h \
+       src/networkd/config.c \
+       src/networkd/config.h \
+       src/networkd/daemon.c \
+       src/networkd/daemon.h \
+       src/networkd/daemon-bus.c \
+       src/networkd/daemon-bus.h \
+       src/networkd/devmon.c \
+       src/networkd/devmon.h \
+       src/networkd/json.h \
+       src/networkd/link.c \
+       src/networkd/link.h \
+       src/networkd/links.c \
+       src/networkd/links.h \
+       src/networkd/logging.c \
+       src/networkd/logging.h \
+       src/networkd/main.c \
+       src/networkd/ports.c \
+       src/networkd/ports.h \
+       src/networkd/port.c \
+       src/networkd/port.h \
+       src/networkd/port-bonding.c \
+       src/networkd/port-bonding.h \
+       src/networkd/port-bus.c \
+       src/networkd/port-bus.h \
+       src/networkd/port-dummy.c \
+       src/networkd/port-dummy.h \
+       src/networkd/port-ethernet.c \
+       src/networkd/port-ethernet.h \
+       src/networkd/port-veth.c \
+       src/networkd/port-veth.h \
+       src/networkd/port-vlan.c \
+       src/networkd/port-vlan.h \
+       src/networkd/stats-collector.c \
+       src/networkd/stats-collector.h \
+       src/networkd/string.h \
+       src/networkd/util.c \
+       src/networkd/util.h \
+       src/networkd/zones.c \
+       src/networkd/zones.h \
+       src/networkd/zone.c \
+       src/networkd/zone.h \
+       src/networkd/zone-bus.c \
+       src/networkd/zone-bus.h
+
+networkd_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       -DCONFIG_DIR="\"$(configdir)\""
+
+networkd_CFLAGS = \
+       $(AM_CFLAGS) \
+       $(CAP_CFLAGS) \
+       $(JSON_C_CFLAGS) \
+       $(SYSTEMD_CFLAGS)
+
+networkd_LDFLAGS = \
+       $(AM_LDFLAGS)
+
+networkd_LDADD = \
+       src/libnetwork.la \
+       $(CAP_LIBS) \
+       $(JSON_C_LIBS) \
+       $(SYSTEMD_LIBS)
+
+dist_dbuspolicy_DATA += \
+       src/networkd/org.ipfire.network1.conf
+
+dist_dbussystembus_DATA += \
+       src/networkd/org.ipfire.network1.service
+
+dist_polkitpolicy_DATA += \
+       src/networkd/org.ipfire.network1.policy
+
+systemdsystemunit_DATA += \
+       src/networkd/networkd.service
+
+EXTRA_DIST += \
+       src/networkd/networkd.service.in
+
+CLEANFILES += \
+       src/networkd/networkd.service
+
+# ------------------------------------------------------------------------------
+
+bin_PROGRAMS += \
+       networkctl
+
+dist_networkctl_SOURCES = \
+       src/networkctl/command.c \
+       src/networkctl/command.h \
+       src/networkctl/main.c \
+       src/networkctl/port.c \
+       src/networkctl/port.h \
+       src/networkctl/terminal.c \
+       src/networkctl/terminal.h \
+       src/networkctl/zone.c \
+       src/networkctl/zone.h
+
+networkctl_CFLAGS = \
+       $(AM_CFLAGS) \
+       $(JSON_C_CFLAGS) \
+       $(SYSTEMD_CFLAGS)
+
+networkctl_LDFLAGS = \
+       $(AM_LDFLAGS)
+
+networkctl_LDADD = \
+       $(JSON_C_LIBS) \
+       $(SYSTEMD_LIBS)
+
+# ------------------------------------------------------------------------------
+
+util_PROGRAMS = \
+       src/utils/network-phy-list-channels \
+       src/utils/network-phy-list-ciphers \
+       src/utils/network-phy-list-ht-caps \
+       src/utils/network-phy-list-vht-caps
+
+src_utils_network_phy_list_channels_SOURCES = \
+       src/utils/network-phy-list-channels.c
+
+src_utils_network_phy_list_channels_LDADD = \
+       src/libnetwork.la
+
+src_utils_network_phy_list_ciphers_SOURCES = \
+       src/utils/network-phy-list-ciphers.c
+
+src_utils_network_phy_list_ciphers_LDADD = \
+       src/libnetwork.la
+
+src_utils_network_phy_list_ht_caps_SOURCES = \
+       src/utils/network-phy-list-ht-caps.c
+
+src_utils_network_phy_list_ht_caps_LDADD = \
+       src/libnetwork.la
+
+src_utils_network_phy_list_vht_caps_SOURCES = \
+       src/utils/network-phy-list-vht-caps.c
+
+src_utils_network_phy_list_vht_caps_LDADD = \
+       src/libnetwork.la
+
+# ------------------------------------------------------------------------------
+
 ppp_SCRIPTS = \
        src/ppp/ip-updown
 
@@ -286,9 +485,8 @@ UNINSTALL_EXEC_HOOKS += ppp-uninstall-hook
 # ------------------------------------------------------------------------------
 
 if HAVE_SYSTEMD
-systemdsystemunit_DATA = \
-       src/systemd/firewall4.service \
-       src/systemd/firewall6.service \
+systemdsystemunit_DATA += \
+       src/systemd/firewall.service \
        src/systemd/firewall-init.service \
        src/systemd/network-init.service \
        src/systemd/network@.service
@@ -301,8 +499,7 @@ INSTALL_DIRS += \
 endif
 
 EXTRA_DIST += \
-       src/systemd/firewall4.service.in \
-       src/systemd/firewall6.service.in \
+       src/systemd/firewall.service.in \
        src/systemd/firewall-init.service.in \
        src/systemd/network-init.service.in \
        src/systemd/network@.service.in
@@ -324,6 +521,11 @@ dist_sysctl_DATA = \
 
 # ------------------------------------------------------------------------------
 
+dist_modprobe_DATA = \
+       src/modprobe.d/no-copybreak.conf
+
+# ------------------------------------------------------------------------------
+
 dist_bashcompletion_SCRIPTS = \
        src/bash-completion/network
 
@@ -378,8 +580,6 @@ INSTALL_DIRS += \
 MANPAGES = \
        man/firewall-settings.8 \
        man/network.8 \
-       man/network-color.8 \
-       man/network-description.8 \
        man/network-device.8 \
        man/network-dhcp.8 \
        man/network-dns-server.8 \
@@ -390,34 +590,40 @@ MANPAGES = \
        man/network-route-static.8 \
        man/network-settings.8 \
        man/network-vpn.8 \
+       man/network-vpn-ipsec.8 \
        man/network-vpn-security-policies.8 \
        man/network-zone.8 \
-       man/network-zone-6to4-tunnel.8 \
        man/network-zone-bridge.8 \
        man/network-zone-config-pppoe-server.8 \
+       man/network-zone-ip-tunnel.8 \
        man/network-zone-modem.8 \
        man/network-zone-pppoe.8 \
        man/network-zone-wireless.8
 
-MANPAGES_XML  = $(patsubst %.8,%.xml,$(MANPAGES))
-MANPAGES_HTML = $(patsubst %.xml,%.html,$(MANPAGES_XML))
+EXTRA_DIST += \
+       man/include-color.txt \
+       man/include-description.txt
+
+MANPAGES_TXT  = $(patsubst %.8,%.txt,$(MANPAGES))
+MANPAGES_HTML = $(patsubst %.txt,%.html,$(MANPAGES_TXT))
+MANPAGES_XML  = $(patsubst %.txt,%.xml,$(MANPAGES_TXT))
 
 .PHONY: man
 man: $(MANPAGES) $(MANPAGES_HTML)
 
+if ENABLE_MANPAGES
 man_MANS = \
        $(MANPAGES)
-
-noinst_DATA += \
-       $(MANPAGES_HTML)
+endif
 
 CLEANFILES += \
-       $(man_MANS) \
-       $(MANPAGES_HTML)
+       $(MANPAGES) \
+       $(MANPAGES_HTML) \
+       $(MANPAGES_XML)
 
 EXTRA_DIST += \
-       $(MANPAGES_XML) \
-       man/custom-html.xsl
+       man/asciidoc.conf \
+       $(MANPAGES_TXT)
 
 XSLTPROC_FLAGS = \
        --nonet \
@@ -428,17 +634,28 @@ XSLTPROC_FLAGS = \
        --stringparam man.copyright.section.enabled 1
 
 XSLTPROC_COMMAND_MAN = \
-       $(AM_V_XSLT)$(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) \
+       $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \
+       $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) \
                http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
 
-XSLTPROC_COMMAND_HTML = \
-       $(AM_V_XSLT)$(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $<
+man/%.xml: man/%.txt man/asciidoc.conf
+       $(AM_V_ASCIIDOC)$(MKDIR_P) $(dir $@) && \
+       $(ASCIIDOC) \
+               -f $(abs_srcdir)/man/asciidoc.conf \
+               -d manpage -b docbook -o $@ $<
 
 man/%.8: man/%.xml
        $(XSLTPROC_COMMAND_MAN)
 
-man/%.html: man/%.xml man/custom-html.xsl
-       $(XSLTPROC_COMMAND_HTML)
+man/%.html: man/%.txt man/asciidoc.conf
+       $(AM_V_ASCIIDOC)$(MKDIR_P) $(dir $@) && \
+       $(ASCIIDOC) \
+               -f $(abs_srcdir)/man/asciidoc.conf \
+               -b html5 -a icons -a theme=flask -o $@ $<
+
+.PHONY: upload-man
+upload-man: $(MANPAGES_HTML)
+       rsync -avHz --delete --progress $(MANPAGES_HTML) ms@people.ipfire.org:/pub/man-pages/$(PACKAGE_NAME)/
 
 # ------------------------------------------------------------------------------
 
@@ -446,27 +663,22 @@ substitutions = \
        '|PACKAGE_NAME=$(PACKAGE_NAME)|' \
        '|PACKAGE_URL=$(PACKAGE_URL)|' \
        '|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \
+       '|builddir=$(abs_builddir)|' \
        '|prefix=$(prefix)|' \
        '|exec_prefix=$(exec_prefix)|' \
+       '|bindir=$(bindir)|' \
        '|sbindir=$(sbindir)|' \
        '|networkdir=$(networkdir)|' \
-       '|helpersdir=$(helpersdir)|'
+       '|helpersdir=$(helpersdir)|' \
+       '|utildir=$(utildir)|' \
+       '|VIRTUAL_ENVIRONMENT_IMAGES_DIR=$(VIRTUAL_ENVIRONMENT_IMAGES_DIR)|'
 
 SED_PROCESS = \
        $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
        $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) \
                < $< > $@
 
-src/functions/functions: src/functions/functions.in Makefile
-       $(SED_PROCESS)
-
-src/ppp/ip-updown: src/ppp/ip-updown.in Makefile
-       $(SED_PROCESS)
-
-src/systemd/%: src/systemd/%.in Makefile
-       $(SED_PROCESS)
-
-src/%.pc: src/%.pc.in Makefile
+%: %.in Makefile
        $(SED_PROCESS)
 
 INSTALL_DIRS += \
@@ -479,6 +691,7 @@ uninstall-hook: $(UNINSTALL_EXEC_HOOKS)
 # - testsuite ------------------------------------------------------------------
 
 TESTS_ENVIRONMENT = \
+       LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(LD_LIBRARY_PATH) \
        PATH=$(top_builddir)/src:$(PATH) \
        functions=$(abs_builddir)/src/functions/functions \
        networkdir=$(abs_srcdir)/src/functions \
@@ -486,12 +699,10 @@ TESTS_ENVIRONMENT = \
 
 dist_check_DATA = \
        test/constants.sh \
-       test/test-functions
+       test/test-functions \
+       test/networkd/test.sh
 
 dist_check_SCRIPTS = \
-       $(TESTS)
-
-TESTS = \
        test/load-library \
        test/functions/ip/ip_detect_protocol \
        test/functions/ip/ip_get_prefix \
@@ -501,3 +712,139 @@ TESTS = \
        test/functions/ip/ip_prefix_is_valid \
        test/functions/ip/ip_protocol_is_supported \
        test/functions/ip/ip_split_prefix
+
+TESTS += $(dist_check_SCRIPTS)
+
+TEST_EXTENSIONS = .t
+
+NETWORKD_TESTS = \
+       test/networkd/00_launch.t \
+       test/networkd/01_dummy.t
+
+TESTS += $(NETWORKD_TESTS)
+
+EXTRA_DIST += \
+       test/networkd/test.sh \
+       $(NETWORKD_TESTS)
+
+# Run all networkd tests in their own namespaces
+T_LOG_COMPILER = unshare --net --ipc --uts --user --cgroup --time --pid --fork \
+       --map-root-user --keep-caps $(SHELL) test/networkd/test.sh
+
+# - NITSI tests ----------------------------------------------------------------
+
+# Files for the virtual environment
+VIRTUAL_ENVIRONMENT_FILES = \
+       test/nitsi/virtual-environment/basic/machines/alice/machine.xml \
+       test/nitsi/virtual-environment/basic/machines/alice/snapshot.xml \
+       test/nitsi/virtual-environment/basic/machines/bob/machine.xml \
+       test/nitsi/virtual-environment/basic/machines/bob/snapshot.xml \
+       test/nitsi/virtual-environment/basic/network/network1/network.xml \
+       test/nitsi/virtual-environment/basic/network/network2/network.xml \
+       test/nitsi/virtual-environment/basic/network/network3/network.xml \
+       test/nitsi/virtual-environment/basic/network/network4/network.xml \
+       test/nitsi/virtual-environment/basic/settings
+
+EXTRA_DIST += \
+       test/nitsi/virtual-environment/basic/machines/alice/machine.xml.in \
+       test/nitsi/virtual-environment/basic/machines/alice/snapshot.xml.in \
+       test/nitsi/virtual-environment/basic/machines/bob/machine.xml.in \
+       test/nitsi/virtual-environment/basic/machines/bob/snapshot.xml.in \
+       test/nitsi/virtual-environment/basic/settings.in
+
+CLEANFILES += \
+       test/nitsi/virtual-environment/basic/machines/alice/machine.xml \
+       test/nitsi/virtual-environment/basic/machines/alice/snapshot.xml \
+       test/nitsi/virtual-environment/basic/machines/bob/machine.xml \
+       test/nitsi/virtual-environment/basic/machines/bob/snapshot.xml \
+       test/nitsi/virtual-environment/basic/settings
+
+# Virtual Machine Images
+VIRTUAL_ENVIRONMENT_IMAGES = \
+       $(VIRTUAL_ENVIRONMENT_IMAGES_DIR)/ipfire-alice-2.qcow2 \
+       $(VIRTUAL_ENVIRONMENT_IMAGES_DIR)/ipfire-bob.qcow2
+
+DISTCLEANFILES += \
+       $(VIRTUAL_ENVIRONMENT_IMAGES)
+
+VIRTUAL_ENVIRONMENT_IMAGES_DIR = $(abs_builddir)/test/nitsi/virtual-environment/.images
+VIRTUAL_ENVIRONMENT_IMAGES_DOWNLOAD_URL = \
+       https://people.ipfire.org/~jschlag/nitsi-ipfire/virtual-environment/basic/
+
+NITSI_INCLUDE_RECIPES = \
+       test/nitsi/include/setup
+
+EXTRA_DIST += \
+       test/nitsi/include/setup.in
+
+CLEANFILES += \
+       test/nitsi/include/setup
+
+NITSI_TESTS = \
+       test/nitsi/test/make-check \
+       test/nitsi/test/phase1 \
+       test/nitsi/test/pppoe \
+       test/nitsi/test/raw-device-get-by-mac \
+       test/nitsi/test/zone-new-bridge \
+       test/nitsi/test/zone-port-attach-bridge \
+       test/nitsi/test/zone/ip-tunnel/gre6 \
+       test/nitsi/test/zone/ip-tunnel/gre4 \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv4-via-ipv4 \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv4-via-ipv6 \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv6-via-ipv4 \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv6-via-ipv6 \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv64-via-ipv4 \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv64-via-ipv6 \
+       test/nitsi/test/port-vlan
+
+EXTRA_DIST += \
+       test/nitsi/test/settings.in \
+       test/nitsi/test/make-check/recipe.in \
+       test/nitsi/test/make-check/settings.in \
+       test/nitsi/test/raw-device-get-by-mac/recipe \
+       test/nitsi/test/raw-device-get-by-mac/settings.in \
+       test/nitsi/test/zone-new-bridge/recipe \
+       test/nitsi/test/zone-new-bridge/settings.in \
+       test/nitsi/test/zone-port-attach-bridge/recipe \
+       test/nitsi/test/zone-port-attach-bridge/settings.in \
+       test/nitsi/test/zone/ip-tunnel/gre6/recipe \
+       test/nitsi/test/zone/ip-tunnel/gre6/settings \
+       test/nitsi/test/zone/ip-tunnel/gre4/recipe \
+       test/nitsi/test/zone/ip-tunnel/gre4/settings \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv4-via-ipv4/recipe \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv4-via-ipv4/settings \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv4-via-ipv6/recipe \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv4-via-ipv6/settings \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv6-via-ipv4/recipe \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv6-via-ipv4/settings \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv6-via-ipv6/recipe \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv6-via-ipv6/settings \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv64-via-ipv4/recipe \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv64-via-ipv4/settings \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv64-via-ipv6/recipe \
+       test/nitsi/test/vpn/ipsec/n2n/vti/ipv64-via-ipv6/settings \
+       test/nitsi/test/port-vlan/recipe \
+       test/nitsi/test/port-vlan/settings
+
+CLEANFILES += \
+       test/nitsi/test/settings \
+       test/nitsi/test/make-check/recipe \
+       test/nitsi/test/make-check/settings \
+       test/nitsi/test/raw-device-get-by-mac/settings \
+       test/nitsi/test/zone-new-bridge/settings \
+       test/nitsi/test/zone-port-attach-bridge/settings
+
+NITSI_ENVIRONMENT =
+
+.PHONY: $(NITSI_TESTS)
+$(NITSI_TESTS): % : dist %/recipe %/settings test/nitsi/test/settings $(VIRTUAL_ENVIRONMENT_FILES) $(VIRTUAL_ENVIRONMENT_IMAGES) $(NITSI_INCLUDE_RECIPES)
+       $(AM_V_NITSI) $(NITSI_ENVIRONMENT) $(NITSI) --log-level error run-test -d $@ \
+               --default-settings $(abs_builddir)/test/nitsi/test/settings --interactive-error-handling
+
+.PHONY: nitsi
+nitsi: $(NITSI_TESTS)
+
+# Downloads a virtual image file and extracts it
+$(VIRTUAL_ENVIRONMENT_IMAGES):
+       $(AM_V_DOWNLOAD)$(MKDIR_P) $(dir $@) && \
+       $(WGET) -qO - $(VIRTUAL_ENVIRONMENT_IMAGES_DOWNLOAD_URL)/$(notdir $@).xz | xz -qd > $@