# keep itermediate files
.SECONDARY:
+configdir = $(sysconfdir)/network
bashcompletiondir= $(datadir)/bash-completion/completions
libexecdir = $(prefix)/lib
-pkgconfigdatadir = $(datadir)/pkgconfig
+pkgconfigdir = $(libdir)/pkgconfig
pppdir = $(sysconfdir)/ppp
systemconfigdir = $(datadir)/network
sysctldir = $(prefix)/lib/sysctl.d
triggersdir = $(networkdir)/triggers
logdir = $(localestatedir)/log/network
+utildir = $(networkdir)
CLEANFILES =
DISTCLEANFILES =
UNINSTALL_EXEC_HOOKS =
noinst_DATA =
-AM_CFLAGS = $(OUR_CFLAGS)
-AM_CPPFLAGS = $(OUR_CPPFLAGS)
-AM_LDFLAGS = $(OUR_LDFLAGS)
+AM_CPPFLAGS = \
+ $(OUR_CPPFLAGS) \
+ -include $(top_builddir)/config.h \
+ -I${top_srcdir}/src/libnetwork
+
+AM_CFLAGS = \
+ $(OUR_CFLAGS) \
+ -fvisibility=hidden \
+ -ffunction-sections \
+ -fdata-sections
+
+AM_LDFLAGS = \
+ $(OUR_LDFLAGS) \
+ -Wl,--gc-sections \
+ -Wl,--as-needed
DISTCHECK_CONFIGURE_FLAGS = \
--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) \
# ------------------------------------------------------------------------------
+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 " $@;
src/firewall6 \
src/network
-network_SCRIPTS = \
+network_DATA = \
src/functions/functions
CLEANFILES += \
EXTRA_DIST += \
src/functions/functions.in
-dist_network_SCRIPTS = \
+dist_network_DATA = \
src/functions/functions.at \
src/functions/functions.auth \
- src/functions/functions.batman-adv \
+ src/functions/functions.bird \
src/functions/functions.bonding \
src/functions/functions.bridge \
src/functions/functions.cli \
src/functions/functions.interrupts \
src/functions/functions.ip \
src/functions/functions.ipsec \
+ src/functions/functions.ipsec-pool \
src/functions/functions.iptables \
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 \
src/functions/functions.vpn \
src/functions/functions.vpn-security-policies \
src/functions/functions.wireless \
+ src/functions/functions.wireless-mesh \
+ 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/bridge-stp \
src/helpers/dhcpd-config-helper \
src/helpers/firewall-kernel-init \
src/helpers/hostapd-config-helper \
+ src/helpers/ipsec-updown \
src/helpers/pppd-angel \
- src/helpers/wpa_supplicant \
- src/helpers/wpa_supplicant-config-helper
+ src/helpers/wpa_supplicant
bin_PROGRAMS = \
src/inetcalc
src_inetcalc_SOURCES = \
src/inetcalc.c
-bridge-stp-install-hook: bridge-stp-uninstall-hook
- ln -svf --relative $(DESTDIR)$(helpersdir)/bridge-stp $(DESTDIR)$(sbindir)/
-
-bridge-stp-uninstall-hook:
- rm -f $(DESTDIR)$(sbindir)/bridge-stp
-
-INSTALL_EXEC_HOOKS += bridge-stp-install-hook
-UNINSTALL_EXEC_HOOKS += bridge-stp-uninstall-hook
+src_inetcalc_LDADD = \
+ src/libnetwork.la
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/batman-adv \
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-adhoc \
- src/hooks/ports/wireless-ap
+ 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
+LIBNETWORK_REVISION=0
+LIBNETWORK_AGE=0
+
+pkginclude_HEADERS = \
+ 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/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) \
+ -version-info $(LIBNETWORK_CURRENT):$(LIBNETWORK_REVISION):$(LIBNETWORK_AGE) \
+ -Wl,--version-script=$(top_srcdir)/src/libnetwork/libnetwork.sym
+
+src_libnetwork_la_DEPENDENCIES = \
+ src/libnetwork/libnetwork.sym
+
+EXTRA_DIST += \
+ src/libnetwork/libnetwork.sym
+
+# ------------------------------------------------------------------------------
+
+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 = \
# ------------------------------------------------------------------------------
-pkgconfigdata_DATA = \
+pkgconfig_DATA = \
src/network.pc
CLEANFILES += \
- $(pkgconfigdata_DATA)
+ $(pkgconfig_DATA)
EXTRA_DIST += \
src/network.pc.in
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 \
man/network-performance-tuning.8 \
man/network-port.8 \
- man/network-port-batman-adv.8 \
- man/network-port-batman-adv-port.8 \
man/network-quick-start.8 \
man/network-route.8 \
man/network-route-static.8 \
man/network-settings.8 \
+ man/network-vpn.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)
$(MANPAGES)
noinst_DATA += \
- $(MANPAGES_HTML)
+ $(MANPAGES_HTML) \
+ $(MANPAGES_XML)
CLEANFILES += \
$(man_MANS) \
- $(MANPAGES_HTML)
+ $(MANPAGES_HTML) \
+ $(MANPAGES_XML)
EXTRA_DIST += \
- $(MANPAGES_XML) \
- man/custom-html.xsl
+ man/asciidoc.conf \
+ $(MANPAGES_TXT)
XSLTPROC_FLAGS = \
--nonet \
--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)/
# ------------------------------------------------------------------------------
'|PACKAGE_NAME=$(PACKAGE_NAME)|' \
'|PACKAGE_URL=$(PACKAGE_URL)|' \
'|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \
+ '|builddir=$(abs_builddir)|' \
'|prefix=$(prefix)|' \
'|exec_prefix=$(exec_prefix)|' \
'|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 += \
# - 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 \
test/functions/ip/ip_prefix_is_valid \
test/functions/ip/ip_protocol_is_supported \
test/functions/ip/ip_split_prefix
+
+# - 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 > $@