From 33491bc4279481db8ae47213e34a6d695a0e8830 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sun, 6 Jul 2014 02:16:10 +0200 Subject: Imported Upstream version 0.9.10.0 --- src/settings/plugins/ifcfg-rh/tests/Makefile.am | 56 +- src/settings/plugins/ifcfg-rh/tests/Makefile.in | 305 +- .../ifcfg-rh/tests/network-scripts/Makefile.am | 43 +- .../ifcfg-rh/tests/network-scripts/Makefile.in | 70 +- .../ifcfg-rh/tests/network-scripts/ifcfg-aliasem0 | 12 + .../tests/network-scripts/ifcfg-aliasem0:1 | 2 + .../tests/network-scripts/ifcfg-aliasem0:2 | 2 + .../tests/network-scripts/ifcfg-aliasem0:99 | 2 + .../ifcfg-rh/tests/network-scripts/ifcfg-aliasem1 | 12 + .../tests/network-scripts/ifcfg-aliasem1:1 | 2 + .../ifcfg-rh/tests/network-scripts/ifcfg-aliasem2 | 12 + .../tests/network-scripts/ifcfg-aliasem2:1 | 3 + .../tests/network-scripts/ifcfg-test-bridge-main | 1 + .../ifcfg-rh/tests/network-scripts/ifcfg-test-dcb | 43 + .../network-scripts/ifcfg-test-dcb-bad-booleans | 12 + .../network-scripts/ifcfg-test-dcb-bad-percent | 12 + .../tests/network-scripts/ifcfg-test-dcb-bad-uints | 12 + .../ifcfg-test-dcb-default-app-priorities | 7 + .../network-scripts/ifcfg-test-dcb-pgpct-not-100 | 12 + .../network-scripts/ifcfg-test-dcb-short-booleans | 12 + .../network-scripts/ifcfg-test-dcb-short-percent | 12 + .../network-scripts/ifcfg-test-dcb-short-uints | 12 + .../tests/network-scripts/ifcfg-test-fcoe-fabric | 6 + .../tests/network-scripts/ifcfg-test-fcoe-vn2vn | 6 + .../ifcfg-test-nm-controlled-unrecognized | 6 + .../ifcfg-rh/tests/network-scripts/ifcfg-test-noip | 3 + .../tests/network-scripts/ifcfg-test-team-master | 6 + .../tests/network-scripts/ifcfg-test-team-port | 5 + .../ifcfg-test-team-port-empty-config | 4 + .../tests/network-scripts/ifcfg-test-unrecognized | 7 + .../tests/network-scripts/ifcfg-test-wifi-hidden | 10 + .../ifcfg-test-wired-802-1X-subj-matches | 17 + .../ifcfg-test-wired-802-1x-ttls-eapgtc | 13 + .../network-scripts/ifcfg-test-wired-dhcp-plus-ip | 26 + .../ifcfg-test-wired-dhcp-send-hostname | 12 + .../route-test-static-routes-legacy | 1 + .../network-scripts/route6-test-wired-ipv6-manual | 3 + .../plugins/ifcfg-rh/tests/test-ifcfg-rh-utils.c | 7 +- .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 6461 +++++++++++--------- 39 files changed, 4417 insertions(+), 2832 deletions(-) create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:1 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:2 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:99 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1:1 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2:1 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname (limited to 'src/settings/plugins/ifcfg-rh/tests') diff --git a/src/settings/plugins/ifcfg-rh/tests/Makefile.am b/src/settings/plugins/ifcfg-rh/tests/Makefile.am index d1b75fc3..e758776d 100644 --- a/src/settings/plugins/ifcfg-rh/tests/Makefile.am +++ b/src/settings/plugins/ifcfg-rh/tests/Makefile.am @@ -2,43 +2,61 @@ if ENABLE_TESTS SUBDIRS=network-scripts +@GNOME_CODE_COVERAGE_RULES@ + AM_CPPFLAGS = \ + $(GLIB_CFLAGS) \ + $(DBUS_CFLAGS) \ + $(CODE_COVERAGE_CFLAGS) \ -I$(top_srcdir)/include \ -I$(top_builddir)/include \ -I$(top_srcdir)/libnm-util \ -I$(top_builddir)/libnm-util \ -I$(top_srcdir)/libnm-glib \ + -I$(top_srcdir)/src/ \ + -I$(top_srcdir)/src/logging \ + -I$(top_srcdir)/src/platform \ + -I$(top_srcdir)/src/settings \ + -I$(top_srcdir)/src/posix-signals \ -I$(srcdir)/../ \ - $(GLIB_CFLAGS) + -DG_LOG_DOMAIN=\""NetworkManager-ifcfg-rh"\" \ + -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ + -DTEST_IFCFG_DIR=\"$(abs_srcdir)\" \ + -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" \ + -DSYSCONFDIR=\"nonexistent\" \ + -DSBINDIR=\"nonexistent\" + +AM_LDFLAGS = \ + $(GLIB_LIBS) \ + $(DBUS_LIBS) \ + $(CODE_COVERAGE_LDFLAGS) + +AM_LDADD = \ + $(top_builddir)/libnm-util/libnm-util.la \ + $(top_builddir)/libnm-glib/libnm-glib.la noinst_PROGRAMS = test-ifcfg-rh test-ifcfg-rh-utils test_ifcfg_rh_SOURCES = \ - test-ifcfg-rh.c - -test_ifcfg_rh_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(DBUS_CFLAGS) \ - -DTEST_IFCFG_DIR=\"$(abs_srcdir)\" \ - -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" + test-ifcfg-rh.c \ + ../errors.c \ + ../reader.c \ + ../shvar.c \ + ../utils.c \ + ../writer.c test_ifcfg_rh_LDADD = \ - $(top_builddir)/libnm-glib/libnm-glib.la \ - $(top_builddir)/libnm-util/libnm-util.la \ - $(top_builddir)/src/wifi/libwifi-utils.la \ - $(builddir)/../libifcfg-rh-io.la \ - $(LIBM) - $(DBUS_LIBS) + $(top_builddir)/src/libNetworkManager.la test_ifcfg_rh_utils_SOURCES = \ - test-ifcfg-rh-utils.c + test-ifcfg-rh-utils.c \ + ../utils.c \ + ../shvar.c test_ifcfg_rh_utils_LDADD = \ - $(builddir)/../libifcfg-rh-io.la + $(AM_LDADD) -check-local: test-ifcfg-rh - $(abs_builddir)/test-ifcfg-rh-utils - $(abs_builddir)/test-ifcfg-rh +TESTS = test-ifcfg-rh-utils test-ifcfg-rh EXTRA_DIST = \ iscsiadm-test-dhcp \ diff --git a/src/settings/plugins/ifcfg-rh/tests/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/Makefile.in index 94c0dc69..2018134a 100644 --- a/src/settings/plugins/ifcfg-rh/tests/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/tests/Makefile.in @@ -80,11 +80,14 @@ build_triplet = @build@ host_triplet = @host@ @ENABLE_TESTS_TRUE@noinst_PROGRAMS = test-ifcfg-rh$(EXEEXT) \ @ENABLE_TESTS_TRUE@ test-ifcfg-rh-utils$(EXEEXT) +@ENABLE_TESTS_TRUE@TESTS = test-ifcfg-rh-utils$(EXEEXT) \ +@ENABLE_TESTS_TRUE@ test-ifcfg-rh$(EXEEXT) subdir = src/settings/plugins/ifcfg-rh/tests DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/build-aux/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_readline.m4 \ + $(top_srcdir)/m4/compiler_warnings.m4 \ $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnome-code-coverage.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/iconv.m4 \ @@ -103,27 +106,26 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) -am__test_ifcfg_rh_SOURCES_DIST = test-ifcfg-rh.c -@ENABLE_TESTS_TRUE@am_test_ifcfg_rh_OBJECTS = \ -@ENABLE_TESTS_TRUE@ test_ifcfg_rh-test-ifcfg-rh.$(OBJEXT) +am__test_ifcfg_rh_SOURCES_DIST = test-ifcfg-rh.c ../errors.c \ + ../reader.c ../shvar.c ../utils.c ../writer.c +@ENABLE_TESTS_TRUE@am_test_ifcfg_rh_OBJECTS = test-ifcfg-rh.$(OBJEXT) \ +@ENABLE_TESTS_TRUE@ errors.$(OBJEXT) reader.$(OBJEXT) \ +@ENABLE_TESTS_TRUE@ shvar.$(OBJEXT) utils.$(OBJEXT) \ +@ENABLE_TESTS_TRUE@ writer.$(OBJEXT) test_ifcfg_rh_OBJECTS = $(am_test_ifcfg_rh_OBJECTS) -am__DEPENDENCIES_1 = @ENABLE_TESTS_TRUE@test_ifcfg_rh_DEPENDENCIES = \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-glib/libnm-glib.la \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/src/wifi/libwifi-utils.la \ -@ENABLE_TESTS_TRUE@ $(builddir)/../libifcfg-rh-io.la \ -@ENABLE_TESTS_TRUE@ $(am__DEPENDENCIES_1) +@ENABLE_TESTS_TRUE@ $(top_builddir)/src/libNetworkManager.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = -am__test_ifcfg_rh_utils_SOURCES_DIST = test-ifcfg-rh-utils.c +am__test_ifcfg_rh_utils_SOURCES_DIST = test-ifcfg-rh-utils.c \ + ../utils.c ../shvar.c @ENABLE_TESTS_TRUE@am_test_ifcfg_rh_utils_OBJECTS = \ -@ENABLE_TESTS_TRUE@ test-ifcfg-rh-utils.$(OBJEXT) +@ENABLE_TESTS_TRUE@ test-ifcfg-rh-utils.$(OBJEXT) \ +@ENABLE_TESTS_TRUE@ utils.$(OBJEXT) shvar.$(OBJEXT) test_ifcfg_rh_utils_OBJECTS = $(am_test_ifcfg_rh_utils_OBJECTS) -@ENABLE_TESTS_TRUE@test_ifcfg_rh_utils_DEPENDENCIES = \ -@ENABLE_TESTS_TRUE@ $(builddir)/../libifcfg-rh-io.la +@ENABLE_TESTS_TRUE@test_ifcfg_rh_utils_DEPENDENCIES = $(AM_LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -201,6 +203,28 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} DIST_SUBDIRS = network-scripts DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ @@ -253,12 +277,15 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_GLIB_100_CFLAGS = @DBUS_GLIB_100_CFLAGS@ +DBUS_GLIB_100_LIBS = @DBUS_GLIB_100_LIBS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_SYS_DIR = @DBUS_SYS_DIR@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCPCD_PATH = @DHCPCD_PATH@ +DISTRO_NETWORK_SERVICE = @DISTRO_NETWORK_SERVICE@ DLLTOOL = @DLLTOOL@ DNSMASQ_PATH = @DNSMASQ_PATH@ DSYMUTIL = @DSYMUTIL@ @@ -283,7 +310,6 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -328,12 +354,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNDP_CFLAGS = @LIBNDP_CFLAGS@ +LIBNDP_LIBS = @LIBNDP_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ LIBSOUP_LIBS = @LIBSOUP_LIBS@ +LIBTEAMDCTL_CFLAGS = @LIBTEAMDCTL_CFLAGS@ +LIBTEAMDCTL_LIBS = @LIBTEAMDCTL_LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ @@ -350,6 +380,8 @@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +NEWT_CFLAGS = @NEWT_CFLAGS@ +NEWT_LIBS = @NEWT_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ NM_MAJOR_VERSION = @NM_MAJOR_VERSION@ @@ -377,11 +409,16 @@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLKIT_CFLAGS = @POLKIT_CFLAGS@ POLKIT_LIBS = @POLKIT_LIBS@ POSUB = @POSUB@ +PPPD_PATH = @PPPD_PATH@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ +PPPOE_PATH = @PPPOE_PATH@ QT_CFLAGS = @QT_CFLAGS@ QT_LIBS = @QT_LIBS@ RANLIB = @RANLIB@ +READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ +SELINUX_CFLAGS = @SELINUX_CFLAGS@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -396,6 +433,7 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@ USE_NLS = @USE_NLS@ UUID_CFLAGS = @UUID_CFLAGS@ UUID_LIBS = @UUID_LIBS@ +VALGRIND_RULES = @VALGRIND_RULES@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ @@ -458,6 +496,7 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ +subdirs = @subdirs@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ target_alias = @target_alias@ @@ -468,37 +507,57 @@ with_dhclient = @with_dhclient@ with_dhcpcd = @with_dhcpcd@ with_netconfig = @with_netconfig@ with_resolvconf = @with_resolvconf@ +with_valgrind = @with_valgrind@ @ENABLE_TESTS_TRUE@SUBDIRS = network-scripts @ENABLE_TESTS_TRUE@AM_CPPFLAGS = \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(CODE_COVERAGE_CFLAGS) \ @ENABLE_TESTS_TRUE@ -I$(top_srcdir)/include \ @ENABLE_TESTS_TRUE@ -I$(top_builddir)/include \ @ENABLE_TESTS_TRUE@ -I$(top_srcdir)/libnm-util \ @ENABLE_TESTS_TRUE@ -I$(top_builddir)/libnm-util \ @ENABLE_TESTS_TRUE@ -I$(top_srcdir)/libnm-glib \ +@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/ \ +@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/logging \ +@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/platform \ +@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/settings \ +@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/posix-signals \ @ENABLE_TESTS_TRUE@ -I$(srcdir)/../ \ -@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) +@ENABLE_TESTS_TRUE@ -DG_LOG_DOMAIN=\""NetworkManager-ifcfg-rh"\" \ +@ENABLE_TESTS_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ +@ENABLE_TESTS_TRUE@ -DTEST_IFCFG_DIR=\"$(abs_srcdir)\" \ +@ENABLE_TESTS_TRUE@ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" \ +@ENABLE_TESTS_TRUE@ -DSYSCONFDIR=\"nonexistent\" \ +@ENABLE_TESTS_TRUE@ -DSBINDIR=\"nonexistent\" -@ENABLE_TESTS_TRUE@test_ifcfg_rh_SOURCES = \ -@ENABLE_TESTS_TRUE@ test-ifcfg-rh.c +@ENABLE_TESTS_TRUE@AM_LDFLAGS = \ +@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_LIBS) \ +@ENABLE_TESTS_TRUE@ $(CODE_COVERAGE_LDFLAGS) -@ENABLE_TESTS_TRUE@test_ifcfg_rh_CPPFLAGS = \ -@ENABLE_TESTS_TRUE@ $(AM_CPPFLAGS) \ -@ENABLE_TESTS_TRUE@ $(DBUS_CFLAGS) \ -@ENABLE_TESTS_TRUE@ -DTEST_IFCFG_DIR=\"$(abs_srcdir)\" \ -@ENABLE_TESTS_TRUE@ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" +@ENABLE_TESTS_TRUE@AM_LDADD = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-glib/libnm-glib.la + +@ENABLE_TESTS_TRUE@test_ifcfg_rh_SOURCES = \ +@ENABLE_TESTS_TRUE@ test-ifcfg-rh.c \ +@ENABLE_TESTS_TRUE@ ../errors.c \ +@ENABLE_TESTS_TRUE@ ../reader.c \ +@ENABLE_TESTS_TRUE@ ../shvar.c \ +@ENABLE_TESTS_TRUE@ ../utils.c \ +@ENABLE_TESTS_TRUE@ ../writer.c @ENABLE_TESTS_TRUE@test_ifcfg_rh_LDADD = \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-glib/libnm-glib.la \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/src/wifi/libwifi-utils.la \ -@ENABLE_TESTS_TRUE@ $(builddir)/../libifcfg-rh-io.la \ -@ENABLE_TESTS_TRUE@ $(LIBM) +@ENABLE_TESTS_TRUE@ $(top_builddir)/src/libNetworkManager.la @ENABLE_TESTS_TRUE@test_ifcfg_rh_utils_SOURCES = \ -@ENABLE_TESTS_TRUE@ test-ifcfg-rh-utils.c +@ENABLE_TESTS_TRUE@ test-ifcfg-rh-utils.c \ +@ENABLE_TESTS_TRUE@ ../utils.c \ +@ENABLE_TESTS_TRUE@ ../shvar.c @ENABLE_TESTS_TRUE@test_ifcfg_rh_utils_LDADD = \ -@ENABLE_TESTS_TRUE@ $(builddir)/../libifcfg-rh-io.la +@ENABLE_TESTS_TRUE@ $(AM_LDADD) @ENABLE_TESTS_TRUE@EXTRA_DIST = \ @ENABLE_TESTS_TRUE@ iscsiadm-test-dhcp \ @@ -568,8 +627,13 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shvar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ifcfg-rh-utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ifcfg-rh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writer.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -592,19 +656,75 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -test_ifcfg_rh-test-ifcfg-rh.o: test-ifcfg-rh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ifcfg_rh_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_ifcfg_rh-test-ifcfg-rh.o -MD -MP -MF $(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Tpo -c -o test_ifcfg_rh-test-ifcfg-rh.o `test -f 'test-ifcfg-rh.c' || echo '$(srcdir)/'`test-ifcfg-rh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Tpo $(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-ifcfg-rh.c' object='test_ifcfg_rh-test-ifcfg-rh.o' libtool=no @AMDEPBACKSLASH@ +errors.o: ../errors.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT errors.o -MD -MP -MF $(DEPDIR)/errors.Tpo -c -o errors.o `test -f '../errors.c' || echo '$(srcdir)/'`../errors.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/errors.Tpo $(DEPDIR)/errors.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../errors.c' object='errors.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o errors.o `test -f '../errors.c' || echo '$(srcdir)/'`../errors.c + +errors.obj: ../errors.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT errors.obj -MD -MP -MF $(DEPDIR)/errors.Tpo -c -o errors.obj `if test -f '../errors.c'; then $(CYGPATH_W) '../errors.c'; else $(CYGPATH_W) '$(srcdir)/../errors.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/errors.Tpo $(DEPDIR)/errors.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../errors.c' object='errors.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o errors.obj `if test -f '../errors.c'; then $(CYGPATH_W) '../errors.c'; else $(CYGPATH_W) '$(srcdir)/../errors.c'; fi` + +reader.o: ../reader.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reader.o -MD -MP -MF $(DEPDIR)/reader.Tpo -c -o reader.o `test -f '../reader.c' || echo '$(srcdir)/'`../reader.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/reader.Tpo $(DEPDIR)/reader.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../reader.c' object='reader.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ifcfg_rh_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_ifcfg_rh-test-ifcfg-rh.o `test -f 'test-ifcfg-rh.c' || echo '$(srcdir)/'`test-ifcfg-rh.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o reader.o `test -f '../reader.c' || echo '$(srcdir)/'`../reader.c -test_ifcfg_rh-test-ifcfg-rh.obj: test-ifcfg-rh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ifcfg_rh_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_ifcfg_rh-test-ifcfg-rh.obj -MD -MP -MF $(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Tpo -c -o test_ifcfg_rh-test-ifcfg-rh.obj `if test -f 'test-ifcfg-rh.c'; then $(CYGPATH_W) 'test-ifcfg-rh.c'; else $(CYGPATH_W) '$(srcdir)/test-ifcfg-rh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Tpo $(DEPDIR)/test_ifcfg_rh-test-ifcfg-rh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-ifcfg-rh.c' object='test_ifcfg_rh-test-ifcfg-rh.obj' libtool=no @AMDEPBACKSLASH@ +reader.obj: ../reader.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reader.obj -MD -MP -MF $(DEPDIR)/reader.Tpo -c -o reader.obj `if test -f '../reader.c'; then $(CYGPATH_W) '../reader.c'; else $(CYGPATH_W) '$(srcdir)/../reader.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/reader.Tpo $(DEPDIR)/reader.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../reader.c' object='reader.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ifcfg_rh_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_ifcfg_rh-test-ifcfg-rh.obj `if test -f 'test-ifcfg-rh.c'; then $(CYGPATH_W) 'test-ifcfg-rh.c'; else $(CYGPATH_W) '$(srcdir)/test-ifcfg-rh.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o reader.obj `if test -f '../reader.c'; then $(CYGPATH_W) '../reader.c'; else $(CYGPATH_W) '$(srcdir)/../reader.c'; fi` + +shvar.o: ../shvar.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shvar.o -MD -MP -MF $(DEPDIR)/shvar.Tpo -c -o shvar.o `test -f '../shvar.c' || echo '$(srcdir)/'`../shvar.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shvar.Tpo $(DEPDIR)/shvar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../shvar.c' object='shvar.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shvar.o `test -f '../shvar.c' || echo '$(srcdir)/'`../shvar.c + +shvar.obj: ../shvar.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shvar.obj -MD -MP -MF $(DEPDIR)/shvar.Tpo -c -o shvar.obj `if test -f '../shvar.c'; then $(CYGPATH_W) '../shvar.c'; else $(CYGPATH_W) '$(srcdir)/../shvar.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shvar.Tpo $(DEPDIR)/shvar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../shvar.c' object='shvar.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shvar.obj `if test -f '../shvar.c'; then $(CYGPATH_W) '../shvar.c'; else $(CYGPATH_W) '$(srcdir)/../shvar.c'; fi` + +utils.o: ../utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utils.o -MD -MP -MF $(DEPDIR)/utils.Tpo -c -o utils.o `test -f '../utils.c' || echo '$(srcdir)/'`../utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/utils.Tpo $(DEPDIR)/utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../utils.c' object='utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.o `test -f '../utils.c' || echo '$(srcdir)/'`../utils.c + +utils.obj: ../utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utils.obj -MD -MP -MF $(DEPDIR)/utils.Tpo -c -o utils.obj `if test -f '../utils.c'; then $(CYGPATH_W) '../utils.c'; else $(CYGPATH_W) '$(srcdir)/../utils.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/utils.Tpo $(DEPDIR)/utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../utils.c' object='utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.obj `if test -f '../utils.c'; then $(CYGPATH_W) '../utils.c'; else $(CYGPATH_W) '$(srcdir)/../utils.c'; fi` + +writer.o: ../writer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT writer.o -MD -MP -MF $(DEPDIR)/writer.Tpo -c -o writer.o `test -f '../writer.c' || echo '$(srcdir)/'`../writer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/writer.Tpo $(DEPDIR)/writer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../writer.c' object='writer.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o writer.o `test -f '../writer.c' || echo '$(srcdir)/'`../writer.c + +writer.obj: ../writer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT writer.obj -MD -MP -MF $(DEPDIR)/writer.Tpo -c -o writer.obj `if test -f '../writer.c'; then $(CYGPATH_W) '../writer.c'; else $(CYGPATH_W) '$(srcdir)/../writer.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/writer.Tpo $(DEPDIR)/writer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../writer.c' object='writer.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o writer.obj `if test -f '../writer.c'; then $(CYGPATH_W) '../writer.c'; else $(CYGPATH_W) '$(srcdir)/../writer.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -711,6 +831,99 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -766,9 +979,8 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done -@ENABLE_TESTS_FALSE@check-local: check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-local + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive @@ -877,7 +1089,7 @@ uninstall-am: .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am check-local clean clean-generic clean-libtool \ + check-TESTS check-am clean clean-generic clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ @@ -891,11 +1103,8 @@ uninstall-am: mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am -@ENABLE_TESTS_TRUE@ $(DBUS_LIBS) -@ENABLE_TESTS_TRUE@check-local: test-ifcfg-rh -@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-ifcfg-rh-utils -@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-ifcfg-rh +@ENABLE_TESTS_TRUE@@GNOME_CODE_COVERAGE_RULES@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.am b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.am index df3ebb12..1701aeeb 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.am +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.am @@ -2,9 +2,13 @@ EXTRA_DIST = \ ifcfg-test-minimal \ ifcfg-test-variables-corner-cases-1 \ ifcfg-test-nm-controlled \ + ifcfg-test-nm-controlled-unrecognized \ + ifcfg-test-unrecognized \ ifcfg-test-wired-static \ ifcfg-test-wired-static-bootproto \ ifcfg-test-wired-dhcp \ + ifcfg-test-wired-dhcp-plus-ip \ + ifcfg-test-wired-dhcp-send-hostname \ ifcfg-test-wired-dhcp6-only \ ifcfg-test-wired-global-gateway \ network-test-wired-global-gateway \ @@ -17,7 +21,10 @@ EXTRA_DIST = \ keys-test-wired-8021x-peap-mschapv2 \ ifcfg-test-wired-8021x-tls-agent \ ifcfg-test-wired-8021x-tls-always \ + ifcfg-test-wired-802-1X-subj-matches \ + ifcfg-test-wired-802-1x-ttls-eapgtc \ ifcfg-test-onboot-no \ + ifcfg-test-noip \ ifcfg-test-wifi-open \ ifcfg-test-wifi-open-auto \ ifcfg-test-wifi-open-ssid-quoted \ @@ -51,6 +58,7 @@ EXTRA_DIST = \ keys-test-wifi-wpa-eap-tls \ ifcfg-test-wifi-wpa-eap-ttls-tls \ keys-test-wifi-wpa-eap-ttls-tls \ + ifcfg-test-wifi-hidden \ test_ca_cert.pem \ test1_key_and_cert.pem \ ifcfg-test-ibft-dhcp \ @@ -94,10 +102,41 @@ EXTRA_DIST = \ ifcfg-test-infiniband \ ifcfg-test-bond-main \ ifcfg-test-bond-slave \ - ifcfg-test-bond-slave-ib + ifcfg-test-bond-slave-ib \ + ifcfg-test-dcb \ + ifcfg-test-dcb-default-app-priorities \ + ifcfg-test-dcb-bad-booleans \ + ifcfg-test-dcb-short-booleans \ + ifcfg-test-dcb-bad-uints \ + ifcfg-test-dcb-short-uints \ + ifcfg-test-dcb-bad-percent \ + ifcfg-test-dcb-short-percent \ + ifcfg-test-dcb-pgpct-not-100 \ + ifcfg-test-fcoe-fabric \ + ifcfg-test-fcoe-vn2vn \ + ifcfg-test-team-master \ + ifcfg-test-team-port \ + ifcfg-test-team-port-empty-config + +# make target dependencies can't have colons in their names, which ends up +# meaning that we can't add the alias files to EXTRA_DIST +ALIAS_FILES = \ + ifcfg-aliasem0 \ + ifcfg-aliasem0:1 \ + ifcfg-aliasem0:2 \ + ifcfg-aliasem0:99 \ + ifcfg-aliasem1 \ + ifcfg-aliasem1:1 \ + ifcfg-aliasem2 \ + ifcfg-aliasem2:1 + +dist-hook: + @for f in $(ALIAS_FILES); do \ + cp $(abs_srcdir)/$$f $(distdir)/; \ + done check-local: - @for f in $(EXTRA_DIST); do \ + @for f in $(EXTRA_DIST) $(ALIAS_FILES); do \ chmod 0600 $(abs_srcdir)/$$f; \ done diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in index a8933e30..eff763e8 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in @@ -80,7 +80,8 @@ host_triplet = @host@ subdir = src/settings/plugins/ifcfg-rh/tests/network-scripts DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_readline.m4 \ + $(top_srcdir)/m4/compiler_warnings.m4 \ $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnome-code-coverage.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/iconv.m4 \ @@ -144,12 +145,15 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_GLIB_100_CFLAGS = @DBUS_GLIB_100_CFLAGS@ +DBUS_GLIB_100_LIBS = @DBUS_GLIB_100_LIBS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_SYS_DIR = @DBUS_SYS_DIR@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCPCD_PATH = @DHCPCD_PATH@ +DISTRO_NETWORK_SERVICE = @DISTRO_NETWORK_SERVICE@ DLLTOOL = @DLLTOOL@ DNSMASQ_PATH = @DNSMASQ_PATH@ DSYMUTIL = @DSYMUTIL@ @@ -174,7 +178,6 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -219,12 +222,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNDP_CFLAGS = @LIBNDP_CFLAGS@ +LIBNDP_LIBS = @LIBNDP_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ LIBSOUP_LIBS = @LIBSOUP_LIBS@ +LIBTEAMDCTL_CFLAGS = @LIBTEAMDCTL_CFLAGS@ +LIBTEAMDCTL_LIBS = @LIBTEAMDCTL_LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ @@ -241,6 +248,8 @@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +NEWT_CFLAGS = @NEWT_CFLAGS@ +NEWT_LIBS = @NEWT_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ NM_MAJOR_VERSION = @NM_MAJOR_VERSION@ @@ -268,11 +277,16 @@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLKIT_CFLAGS = @POLKIT_CFLAGS@ POLKIT_LIBS = @POLKIT_LIBS@ POSUB = @POSUB@ +PPPD_PATH = @PPPD_PATH@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ +PPPOE_PATH = @PPPOE_PATH@ QT_CFLAGS = @QT_CFLAGS@ QT_LIBS = @QT_LIBS@ RANLIB = @RANLIB@ +READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ +SELINUX_CFLAGS = @SELINUX_CFLAGS@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -287,6 +301,7 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@ USE_NLS = @USE_NLS@ UUID_CFLAGS = @UUID_CFLAGS@ UUID_LIBS = @UUID_LIBS@ +VALGRIND_RULES = @VALGRIND_RULES@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ @@ -349,6 +364,7 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ +subdirs = @subdirs@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ target_alias = @target_alias@ @@ -359,13 +375,18 @@ with_dhclient = @with_dhclient@ with_dhcpcd = @with_dhcpcd@ with_netconfig = @with_netconfig@ with_resolvconf = @with_resolvconf@ +with_valgrind = @with_valgrind@ EXTRA_DIST = \ ifcfg-test-minimal \ ifcfg-test-variables-corner-cases-1 \ ifcfg-test-nm-controlled \ + ifcfg-test-nm-controlled-unrecognized \ + ifcfg-test-unrecognized \ ifcfg-test-wired-static \ ifcfg-test-wired-static-bootproto \ ifcfg-test-wired-dhcp \ + ifcfg-test-wired-dhcp-plus-ip \ + ifcfg-test-wired-dhcp-send-hostname \ ifcfg-test-wired-dhcp6-only \ ifcfg-test-wired-global-gateway \ network-test-wired-global-gateway \ @@ -378,7 +399,10 @@ EXTRA_DIST = \ keys-test-wired-8021x-peap-mschapv2 \ ifcfg-test-wired-8021x-tls-agent \ ifcfg-test-wired-8021x-tls-always \ + ifcfg-test-wired-802-1X-subj-matches \ + ifcfg-test-wired-802-1x-ttls-eapgtc \ ifcfg-test-onboot-no \ + ifcfg-test-noip \ ifcfg-test-wifi-open \ ifcfg-test-wifi-open-auto \ ifcfg-test-wifi-open-ssid-quoted \ @@ -412,6 +436,7 @@ EXTRA_DIST = \ keys-test-wifi-wpa-eap-tls \ ifcfg-test-wifi-wpa-eap-ttls-tls \ keys-test-wifi-wpa-eap-ttls-tls \ + ifcfg-test-wifi-hidden \ test_ca_cert.pem \ test1_key_and_cert.pem \ ifcfg-test-ibft-dhcp \ @@ -455,7 +480,34 @@ EXTRA_DIST = \ ifcfg-test-infiniband \ ifcfg-test-bond-main \ ifcfg-test-bond-slave \ - ifcfg-test-bond-slave-ib + ifcfg-test-bond-slave-ib \ + ifcfg-test-dcb \ + ifcfg-test-dcb-default-app-priorities \ + ifcfg-test-dcb-bad-booleans \ + ifcfg-test-dcb-short-booleans \ + ifcfg-test-dcb-bad-uints \ + ifcfg-test-dcb-short-uints \ + ifcfg-test-dcb-bad-percent \ + ifcfg-test-dcb-short-percent \ + ifcfg-test-dcb-pgpct-not-100 \ + ifcfg-test-fcoe-fabric \ + ifcfg-test-fcoe-vn2vn \ + ifcfg-test-team-master \ + ifcfg-test-team-port \ + ifcfg-test-team-port-empty-config + + +# make target dependencies can't have colons in their names, which ends up +# meaning that we can't add the alias files to EXTRA_DIST +ALIAS_FILES = \ + ifcfg-aliasem0 \ + ifcfg-aliasem0:1 \ + ifcfg-aliasem0:2 \ + ifcfg-aliasem0:99 \ + ifcfg-aliasem1 \ + ifcfg-aliasem1:1 \ + ifcfg-aliasem2 \ + ifcfg-aliasem2:1 all: all-am @@ -533,6 +585,9 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am @@ -637,7 +692,7 @@ uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-am check-local clean clean-generic \ - clean-libtool cscopelist-am ctags-am distclean \ + clean-libtool cscopelist-am ctags-am dist-hook distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ @@ -650,8 +705,13 @@ uninstall-am: uninstall-am +dist-hook: + @for f in $(ALIAS_FILES); do \ + cp $(abs_srcdir)/$$f $(distdir)/; \ + done + check-local: - @for f in $(EXTRA_DIST); do \ + @for f in $(EXTRA_DIST) $(ALIAS_FILES); do \ chmod 0600 $(abs_srcdir)/$$f; \ done diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0 new file mode 100644 index 00000000..4f9d645c --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0 @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=aliasem0 +HWADDR=00:11:22:33:44:55 +BOOTPROTO=none +ONBOOT=yes +DNS1=4.2.2.1 +DNS2=4.2.2.2 +IPADDR=192.168.1.5 +PREFIX=24 +NETMASK=255.255.255.0 +GATEWAY=192.168.1.1 +IPV6INIT=no diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:1 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:1 new file mode 100644 index 00000000..37c0df11 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:1 @@ -0,0 +1,2 @@ +DEVICE=aliasem0:1 +IPADDR=192.168.1.6 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:2 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:2 new file mode 100644 index 00000000..0c3b6a7e --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:2 @@ -0,0 +1,2 @@ +DEVICE=aliasem0:2 +IPADDR=192.168.1.9 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:99 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:99 new file mode 100644 index 00000000..5df3f154 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem0:99 @@ -0,0 +1,2 @@ +DEVICE=aliasem0:99 +IPADDR=192.168.1.99 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1 new file mode 100644 index 00000000..f6fefc0d --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1 @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=aliasem1 +HWADDR=00:11:22:33:44:55 +BOOTPROTO=none +ONBOOT=yes +DNS1=4.2.2.1 +DNS2=4.2.2.2 +IPADDR=192.168.1.5 +PREFIX=24 +NETMASK=255.255.255.0 +GATEWAY=192.168.1.1 +IPV6INIT=no diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1:1 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1:1 new file mode 100644 index 00000000..21971611 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem1:1 @@ -0,0 +1,2 @@ +# bad, no DEVICE +IPADDR=192.168.1.12 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2 new file mode 100644 index 00000000..92ed461e --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2 @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=aliasem2 +HWADDR=00:11:22:33:44:55 +BOOTPROTO=none +ONBOOT=yes +DNS1=4.2.2.1 +DNS2=4.2.2.2 +IPADDR=192.168.1.5 +PREFIX=24 +NETMASK=255.255.255.0 +GATEWAY=192.168.1.1 +IPV6INIT=no diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2:1 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2:1 new file mode 100644 index 00000000..ce0f23ba --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-aliasem2:1 @@ -0,0 +1,3 @@ +# bad: wrong DEVICE +DEVICE=aliasem0:1 +IPADDR=192.168.1.20 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main index c406bbb3..8507628e 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main @@ -5,3 +5,4 @@ BOOTPROTO=dhcp STP=on DELAY=0 BRIDGING_OPTS="priority=32744 hello_time=7 max_age=39 ageing_time=235352" +MACADDR=00:16:41:11:22:33 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb new file mode 100644 index 00000000..6e6589d3 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb @@ -0,0 +1,43 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +# dcb global switch +# use DCB=no to turn it off +DCB=yes + +# application settings +DCB_APP_FCOE_PRIORITY=7 +DCB_APP_FCOE_ENABLE=yes +DCB_APP_FCOE_ADVERTISE=yes +DCB_APP_FCOE_WILLING=yes + +DCB_APP_ISCSI_PRIORITY=6 +DCB_APP_ISCSI_ENABLE=yes +DCB_APP_ISCSI_ADVERTISE=yes +DCB_APP_ISCSI_WILLING=yes + +DCB_APP_FIP_PRIORITY=2 +DCB_APP_FIP_ENABLE=yes +DCB_APP_FIP_ADVERTISE=yes +DCB_APP_FIP_WILLING=yes + +# priority group settings +DCB_PG_UP2TC=76543210 +DCB_PG_PCT=25,0,0,75,0,0,0,0 +DCB_PG_ID=0000111f +DCB_PG_UPPCT=5,10,30,25,10,50,5,0 +DCB_PG_STRICT=00110101 +DCB_PG_ENABLE=yes +DCB_PG_ADVERTISE=yes +DCB_PG_WILLING=yes + +# priority flow control settings +DCB_PFC_UP=10011010 +DCB_PFC_ENABLE=yes +DCB_PFC_ADVERTISE=yes +DCB_PFC_WILLING=no diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans new file mode 100644 index 00000000..2f46a082 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_STRICT=02030101 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent new file mode 100644 index 00000000..0c5d7b88 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_PCT=25,0,0,75,0,0,110,0 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints new file mode 100644 index 00000000..8334999b --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_UP2TC=96543210 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities new file mode 100644 index 00000000..5bdcb63c --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities @@ -0,0 +1,7 @@ +TYPE=Ethernet +DEVICE=eth0 +DCB=yes +DCB_APP_FCOE_ENABLE=yes +DCB_APP_ISCSI_ENABLE=yes +DCB_APP_FIP_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 new file mode 100644 index 00000000..95eb7c5b --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_PCT=25,0,0,3,75,0,25,0 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans new file mode 100644 index 00000000..fbe1cbbc --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_STRICT=0111010 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent new file mode 100644 index 00000000..07ba6b64 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_PCT=25,0,0,75,0,0,0 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints new file mode 100644 index 00000000..05ae39cb --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints @@ -0,0 +1,12 @@ +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none +IPADDR=1.2.3.4 +PREFIX=24 +GATEWAY=1.1.1.1 + +DCB=yes +DCB_PG_UP2TC=7654321 +DCB_PG_ENABLE=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric new file mode 100644 index 00000000..cde1c28d --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric @@ -0,0 +1,6 @@ +TYPE=Ethernet +DEVICE=eth0 +DCB=yes +DCB_APP_FCOE_ENABLE=yes +DCB_APP_FCOE_MODE=fabric + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn new file mode 100644 index 00000000..20c08451 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn @@ -0,0 +1,6 @@ +TYPE=Ethernet +DEVICE=eth0 +DCB=yes +DCB_APP_FCOE_ENABLE=yes +DCB_APP_FCOE_MODE=vn2vn + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized new file mode 100644 index 00000000..58263ece --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized @@ -0,0 +1,6 @@ +TYPE=IPoAC +NAME=PigeonNet +DEVICE=ipoac0 +BOOTPROTO=dhcp +ONBOOT=yes +NM_CONTROLLED=no diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip new file mode 100644 index 00000000..b5028daa --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip @@ -0,0 +1,3 @@ +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=none diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master new file mode 100644 index 00000000..7edc736a --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master @@ -0,0 +1,6 @@ +DEVICE=team0 +ONBOOT=no +DEVICETYPE=Team +BOOTPROTO=dhcp +TEAM_CONFIG="{ \"device\": \"team0\", \"link_watch\": { \"name\": \"ethtool\" } }" + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port new file mode 100644 index 00000000..966bec67 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port @@ -0,0 +1,5 @@ +TYPE=Ethernet +TEAM_PORT_CONFIG="{ \"p4p1\": { \"prio\": -10, \"sticky\": true } }" +DEVICE=p4p1 +TEAM_MASTER=team0 +DEVICETYPE=TeamPort diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config new file mode 100644 index 00000000..04df6938 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config @@ -0,0 +1,4 @@ +TYPE=Ethernet +DEVICE=p4p1 +TEAM_MASTER=team0 +DEVICETYPE=TeamPort diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized new file mode 100644 index 00000000..18da66c1 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized @@ -0,0 +1,7 @@ +TYPE=PPP-over-InfiniBand +NAME=U Can't Touch This +DEVICE=pppoipoib0 +HWADDR=00:11:22:33 +BOOTPROTO=dhcp +ONBOOT=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden new file mode 100644 index 00000000..08b9a730 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden @@ -0,0 +1,10 @@ +# Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) +TYPE=Wireless +DEVICE=eth2 +HWADDR=00:16:41:11:22:33 +BOOTPROTO=dhcp +ONBOOT=yes +ESSID=blahblah +MODE=Managed +SSID_HIDDEN=yes + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches new file mode 100644 index 00000000..70d69bf5 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches @@ -0,0 +1,17 @@ +# Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=dhcp +ONBOOT=yes +NM_CONTROLLED=yes +KEY_MGMT=IEEE8021X +IEEE_8021X_EAP_METHODS=PEAP +IEEE_8021X_IDENTITY="Jara Cimrman" +IEEE_8021X_PEAP_VERSION=1 +IEEE_8021X_INNER_AUTH_METHODS=GTC +IEEE_8021X_PASSWORD_FLAGS="user ask" +IEEE_8021X_SUBJECT_MATCH=server1.yourdomain.tld +IEEE_8021X_ALTSUBJECT_MATCHES="a.yourdomain.tld b.yourdomain.tld c.yourdomain.tld" +IEEE_8021X_PHASE2_SUBJECT_MATCH=server2.yourdomain.tld +IEEE_8021X_PHASE2_ALTSUBJECT_MATCHES="x.yourdomain.tld y.yourdomain.tld" diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc new file mode 100644 index 00000000..fad92772 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc @@ -0,0 +1,13 @@ +# Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=dhcp +ONBOOT=yes +NM_CONTROLLED=yes +KEY_MGMT=IEEE8021X +IEEE_8021X_EAP_METHODS=TTLS +IEEE_8021X_IDENTITY="Bill Smith" +IEEE_8021X_CA_CERT=test_ca_cert.pem +IEEE_8021X_INNER_AUTH_METHODS=EAP-GTC +IEEE_8021X_PASSWORD_FLAGS=ask diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip new file mode 100644 index 00000000..f0c022a9 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip @@ -0,0 +1,26 @@ +# Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=dhcp +ONBOOT=yes +IPV6INIT=yes +IPV6_AUTOCONF=yes +USERCTL=yes +NM_CONTROLLED=yes +PEERDNS=no +DNS1=4.2.2.1 +DNS2=4.2.2.2 +DNS3=1:2:3:4::a +DNS4=1:2:3:4::b + +# additional IPs +IPADDR0=1.2.3.4 +PREFIX0=24 +GATEWAY0=1.1.1.1 +IPADDR1=9.8.7.6 +PREFIX1=16 + +IPV6ADDR="1001:abba::1234/56" +IPV6ADDR_SECONDARIES="2001:abba::2234/64 3001:abba::3234/96" + diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname new file mode 100644 index 00000000..cba380db --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname @@ -0,0 +1,12 @@ +# Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) +TYPE=Ethernet +DEVICE=eth0 +HWADDR=00:11:22:33:44:ee +BOOTPROTO=dhcp +ONBOOT=yes +IPV6INIT=yes +IPV6_AUTOCONF=yes +USERCTL=yes +NM_CONTROLLED=yes +PEERDNS=no +DHCP_HOSTNAME="svata-pulec" diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy b/src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy index 3db42ab5..c9e422e7 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy @@ -1,3 +1,4 @@ 1.2.3.0/24 via 222.173.190.239 metric 0 3.2.1.0/24 via 202.254.171.190 metric 77 7.7.7.7/32 via 10.0.2.2 metric 11 +8.8.8.8/32 metric 12 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual b/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual index 2a994c50..b3259ab7 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual @@ -2,3 +2,6 @@ # default route is ignored by ifcfg-rh reader, because NM handles it internally default via dead::beaf + +# routes without "via" are valid +abbe::cafe/64 metric 777 diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh-utils.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh-utils.c index e32ad789..39c81027 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh-utils.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh-utils.c @@ -23,11 +23,10 @@ #include #include -#include "nm-test-helpers.h" - #include "common.h" #include "utils.h" +#include "nm-test-utils.h" static void test_get_ifcfg_name (const char *desc, @@ -114,10 +113,14 @@ test_ignored (const char *desc, const char *path, gboolean expected_ignored) ASSERT (result == expected_ignored, desc, "unexpected ignore result for path '%s'", path); } +NMTST_DEFINE (); + int main (int argc, char **argv) { char *base; + nmtst_init (&argc, &argv, TRUE); + /* The tests */ test_get_ifcfg_name ("get-ifcfg-name-bad", "/foo/bar/adfasdfadf", FALSE, NULL); test_get_ifcfg_name ("get-ifcfg-name-good", "/foo/bar/ifcfg-FooBar", FALSE, "FooBar"); diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index 668dcd9b..c1b14f12 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -45,13 +45,18 @@ #include #include #include +#include +#include -#include "nm-test-helpers.h" +#include "NetworkManagerUtils.h" #include "common.h" #include "reader.h" #include "writer.h" #include "utils.h" +#include "nm-logging.h" + +#include "nm-test-utils.h" #if 0 static void @@ -74,20 +79,11 @@ connection_diff (NMConnection *a, NMConnection *b) } #endif -typedef enum { - CK_CA_CERT = 0, - CK_CLIENT_CERT = 1, - CK_PRIV_KEY = 2 -} CertKeyType; - static gboolean -verify_cert_or_key (CertKeyType ck_type, - NMSetting8021x *s_compare, +verify_cert_or_key (NMSetting8021x *s_compare, const char *file, const char *privkey_password, - const char *ifcfg, - const char *test_name, - const char *setting_key) + const char *property) { NMSetting8021x *s_8021x; GError *error = NULL; @@ -96,518 +92,466 @@ verify_cert_or_key (CertKeyType ck_type, gboolean phase2 = FALSE; NMSetting8021xCKScheme scheme = NM_SETTING_802_1X_CK_SCHEME_UNKNOWN; - if (strstr (setting_key, "phase2")) + if (strstr (property, "phase2")) phase2 = TRUE; - /* CA Cert */ s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, - test_name, "failed to verify %s: could not create temp 802.1x setting", - ifcfg); - if (ck_type == CK_CA_CERT) { + /* Load the certificate into an empty setting */ + if (strstr (property, "ca-cert")) { if (phase2) success = nm_setting_802_1x_set_phase2_ca_cert (s_8021x, file, NM_SETTING_802_1X_CK_SCHEME_PATH, NULL, &error); else success = nm_setting_802_1x_set_ca_cert (s_8021x, file, NM_SETTING_802_1X_CK_SCHEME_PATH, NULL, &error); - } else if (ck_type == CK_CLIENT_CERT) { + } else if (strstr (property, "client-cert")) { if (phase2) success = nm_setting_802_1x_set_phase2_client_cert (s_8021x, file, NM_SETTING_802_1X_CK_SCHEME_PATH, NULL, &error); else success = nm_setting_802_1x_set_client_cert (s_8021x, file, NM_SETTING_802_1X_CK_SCHEME_PATH, NULL, &error); - } else if (ck_type == CK_PRIV_KEY) { + } else if (strstr (property, "private-key")) { if (phase2) success = nm_setting_802_1x_set_phase2_private_key (s_8021x, file, privkey_password, NM_SETTING_802_1X_CK_SCHEME_PATH, NULL, &error); else success = nm_setting_802_1x_set_private_key (s_8021x, file, privkey_password, NM_SETTING_802_1X_CK_SCHEME_PATH, NULL, &error); } - ASSERT (success == TRUE, - test_name, "failed to verify %s: could not load item for %s / %s: %s", - ifcfg, NM_SETTING_802_1X_SETTING_NAME, setting_key, error->message); + g_assert_no_error (error); + g_assert_cmpint (success, ==, TRUE); - if (ck_type == CK_CA_CERT) { + /* Ensure it was loaded using the PATH scheme */ + if (strstr (property, "ca-cert")) { if (phase2) scheme = nm_setting_802_1x_get_phase2_ca_cert_scheme (s_8021x); else scheme = nm_setting_802_1x_get_ca_cert_scheme (s_8021x); - } else if (ck_type == CK_CLIENT_CERT) { + } else if (strstr (property, "client-cert")) { if (phase2) scheme = nm_setting_802_1x_get_phase2_client_cert_scheme (s_8021x); else scheme = nm_setting_802_1x_get_client_cert_scheme (s_8021x); - } else if (ck_type == CK_PRIV_KEY) { + } else if (strstr (property, "private-key")) { if (phase2) scheme = nm_setting_802_1x_get_phase2_private_key_scheme (s_8021x); else scheme = nm_setting_802_1x_get_private_key_scheme (s_8021x); } - ASSERT (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, - test_name, "failed to verify %s: unexpected cert/key scheme for %s / %s", - ifcfg, NM_SETTING_802_1X_SETTING_NAME, setting_key); + g_assert_cmpint (scheme, ==, NM_SETTING_802_1X_CK_SCHEME_PATH); - if (ck_type == CK_CA_CERT) { + /* Grab the path back out */ + if (strstr (property, "ca-cert")) { if (phase2) expected = nm_setting_802_1x_get_phase2_ca_cert_path (s_8021x); else expected = nm_setting_802_1x_get_ca_cert_path (s_8021x); - } else if (ck_type == CK_CLIENT_CERT) { + } else if (strstr (property, "client-cert")) { if (phase2) expected = nm_setting_802_1x_get_phase2_client_cert_path (s_8021x); else expected = nm_setting_802_1x_get_client_cert_path (s_8021x); - } else if (ck_type == CK_PRIV_KEY) { + } else if (strstr (property, "private-key")) { if (phase2) expected = nm_setting_802_1x_get_phase2_private_key_path (s_8021x); else expected = nm_setting_802_1x_get_private_key_path (s_8021x); } - ASSERT (expected != NULL, - test_name, "failed to verify %s: failed to get read item for %s / %s", - ifcfg, NM_SETTING_802_1X_SETTING_NAME, setting_key); + g_assert_cmpstr (expected, ==, file); - if (ck_type == CK_CA_CERT) { + /* Compare the path with the expected path from the real setting */ + if (strstr (property, "ca-cert")) { if (phase2) setting = nm_setting_802_1x_get_phase2_ca_cert_path (s_compare); else setting = nm_setting_802_1x_get_ca_cert_path (s_compare); - } else if (ck_type == CK_CLIENT_CERT) { + } else if (strstr (property, "client-cert")) { if (phase2) setting = nm_setting_802_1x_get_phase2_client_cert_path (s_compare); else setting = nm_setting_802_1x_get_client_cert_path (s_compare); - } else if (ck_type == CK_PRIV_KEY) { + } else if (strstr (property, "private-key")) { if (phase2) setting = nm_setting_802_1x_get_phase2_private_key_path (s_compare); else setting = nm_setting_802_1x_get_private_key_path (s_compare); } - ASSERT (setting != NULL, - test_name, "failed to verify %s: missing %s / %s key", - ifcfg, NM_SETTING_802_1X_SETTING_NAME, setting_key); - - ASSERT (strlen (setting) == strlen (expected), - test_name, "failed to verify %s: unexpected %s / %s certificate length", - test_name, NM_SETTING_802_1X_SETTING_NAME, setting_key); - - ASSERT (strcmp (setting, expected) == 0, - test_name, "failed to verify %s: %s / %s key certificate mismatch", - ifcfg, NM_SETTING_802_1X_SETTING_NAME, setting_key); + g_assert_cmpstr (setting, ==, expected); g_object_unref (s_8021x); return TRUE; } -#define TEST_IFCFG_MINIMAL TEST_IFCFG_DIR"/network-scripts/ifcfg-test-minimal" - static void -test_read_minimal (void) +test_read_basic (void) { NMConnection *connection; NMSettingConnection *s_con; NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; + NMSettingIP6Config *s_ip6; GError *error = NULL; - const char *tmp; const GByteArray *array; char expected_mac_address[ETH_ALEN] = { 0x00, 0x16, 0x41, 0x11, 0x22, 0x33 }; const char *expected_id = "System test-minimal"; guint64 expected_timestamp = 0; + gboolean success; - connection = connection_from_file (TEST_IFCFG_MINIMAL, - NULL, - TYPE_ETHERNET, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection != NULL, - "minimal-wired-read", "failed to read %s: %s", TEST_IFCFG_MINIMAL, error->message); - - ASSERT (nm_connection_verify (connection, &error), - "minimal-wired-verify", "failed to verify %s: %s", TEST_IFCFG_MINIMAL, error->message); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-minimal", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); /* ===== CONNECTION SETTING ===== */ - s_con = nm_connection_get_setting_connection (connection); - ASSERT (s_con != NULL, - "minimal-wired-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_MINIMAL, - NM_SETTING_CONNECTION_SETTING_NAME); - - /* ID */ - tmp = nm_setting_connection_get_id (s_con); - ASSERT (tmp != NULL, - "minimal-wired-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_MINIMAL, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - ASSERT (strcmp (tmp, expected_id) == 0, - "minimal-wired-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, expected_timestamp); + g_assert (nm_setting_connection_get_autoconnect (s_con)); /* UUID can't be tested if the ifcfg does not contain the UUID key, because * the UUID is generated on the full path of the ifcfg file, which can change * depending on where the tests are run. */ - /* Timestamp */ - ASSERT (nm_setting_connection_get_timestamp (s_con) == expected_timestamp, - "minimal-wired-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_TIMESTAMP); - - /* Autoconnect */ - ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, - "minimal-wired-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_AUTOCONNECT); - /* ===== WIRED SETTING ===== */ - s_wired = nm_connection_get_setting_wired (connection); - ASSERT (s_wired != NULL, - "minimal-wired-verify-wired", "failed to verify %s: missing %s setting", - TEST_IFCFG_MINIMAL, - NM_SETTING_WIRED_SETTING_NAME); + g_assert (s_wired); + g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 0); /* MAC address */ array = nm_setting_wired_get_mac_address (s_wired); - ASSERT (array != NULL, - "minimal-wired-verify-wired", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_MINIMAL, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (array->len == ETH_ALEN, - "minimal-wired-verify-wired", "failed to verify %s: unexpected %s / %s key value length", - TEST_IFCFG_MINIMAL, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, - "minimal-wired-verify-wired", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - - ASSERT (nm_setting_wired_get_mtu (s_wired) == 0, - "minimal-wired-verify-wired", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MTU); + g_assert (array); + g_assert_cmpint (array->len, ==, ETH_ALEN); + g_assert (memcmp (array->data, &expected_mac_address[0], ETH_ALEN) == 0); /* ===== IPv4 SETTING ===== */ - s_ip4 = nm_connection_get_setting_ip4_config (connection); - ASSERT (s_ip4 != NULL, - "minimal-wired-verify-ip4", "failed to verify %s: missing %s setting", - TEST_IFCFG_MINIMAL, - NM_SETTING_IP4_CONFIG_SETTING_NAME); - - /* Method */ - tmp = nm_setting_ip4_config_get_method (s_ip4); - ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, - "minimal-wired-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_METHOD); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip4_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_DISABLED); + g_assert (nm_setting_ip4_config_get_never_default (s_ip4) == FALSE); - ASSERT (nm_setting_ip4_config_get_never_default (s_ip4) == FALSE, - "minimal-wired-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_MINIMAL, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_NEVER_DEFAULT); + /* ===== IPv6 SETTING ===== */ + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip6); + g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_IGNORE); + g_assert (nm_setting_ip6_config_get_never_default (s_ip6) == FALSE); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); g_object_unref (connection); } static void -test_read_variables_corner_cases (const char *file, const char *expected_id) +test_read_variables_corner_cases (void) { NMConnection *connection; NMSettingConnection *s_con; NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; GError *error = NULL; - const char *tmp; const GByteArray *array; char expected_mac_address[ETH_ALEN] = { 0x00, 0x16, 0x41, 0x11, 0x22, 0x33 }; const char *expected_zone = "'"; + const char *expected_id = "\""; guint64 expected_timestamp = 0; + gboolean success; - connection = connection_from_file (file, - NULL, - TYPE_ETHERNET, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection != NULL, - "corner-cases-read", "failed to read %s: %s", file, error->message); - - ASSERT (nm_connection_verify (connection, &error), - "corner-cases-verify", "failed to verify %s: %s", file, error->message); + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-variables-corner-cases-1", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); /* ===== CONNECTION SETTING ===== */ - s_con = nm_connection_get_setting_connection (connection); - ASSERT (s_con != NULL, - "corner-cases-verify-connection", "failed to verify %s: missing %s setting", - file, - NM_SETTING_CONNECTION_SETTING_NAME); - - /* ID - that is NAME= variable */ - tmp = nm_setting_connection_get_id (s_con); - ASSERT (tmp != NULL, - "corner-cases-verify-connection", "failed to verify %s: missing %s / %s key", - file, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - ASSERT (strcmp (tmp, expected_id) == 0, - "corner-cases-verify-connection", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - - /* ZONE */ - tmp = nm_setting_connection_get_zone (s_con); - ASSERT (tmp != NULL, - "corner-cases-verify-connection", "failed to verify %s: missing %s / %s key", - file, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - ASSERT (strcmp (tmp, expected_zone) == 0, - "corner-cases-verify-connection", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - - - /* Timestamp */ - ASSERT (nm_setting_connection_get_timestamp (s_con) == expected_timestamp, - "corner-cases-verify-connection", "failed to verify %s: unexpected %s /%s key value", - file, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_TIMESTAMP); - - /* Autoconnect */ - ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, - "corner-cases-verify-connection", "failed to verify %s: unexpected %s /%s key value", - file, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_AUTOCONNECT); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + g_assert_cmpstr (nm_setting_connection_get_zone (s_con), ==, expected_zone); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, expected_timestamp); + g_assert (nm_setting_connection_get_autoconnect (s_con)); /* ===== WIRED SETTING ===== */ - s_wired = nm_connection_get_setting_wired (connection); - ASSERT (s_wired != NULL, - "corner-cases-verify-wired", "failed to verify %s: missing %s setting", - file, - NM_SETTING_WIRED_SETTING_NAME); + g_assert (s_wired); + g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 0); /* MAC address */ array = nm_setting_wired_get_mac_address (s_wired); - ASSERT (array != NULL, - "corner-cases-verify-wired", "failed to verify %s: missing %s / %s key", - file, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (array->len == ETH_ALEN, - "corner-cases-verify-wired", "failed to verify %s: unexpected %s / %s key value length", - file, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, - "corner-cases-verify-wired", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - - ASSERT (nm_setting_wired_get_mtu (s_wired) == 0, - "corner-cases-verify-wired", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MTU); + g_assert (array); + g_assert_cmpint (array->len, ==, ETH_ALEN); + g_assert (memcmp (array->data, &expected_mac_address[0], ETH_ALEN) == 0); /* ===== IPv4 SETTING ===== */ - s_ip4 = nm_connection_get_setting_ip4_config (connection); - ASSERT (s_ip4 != NULL, - "corner-cases-verify-ip4", "failed to verify %s: missing %s setting", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME); - - /* Method */ - tmp = nm_setting_ip4_config_get_method (s_ip4); - ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, - "corner-cases-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_METHOD); - - ASSERT (nm_setting_ip4_config_get_never_default (s_ip4) == FALSE, - "corner-cases-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_NEVER_DEFAULT); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip4_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_DISABLED); + g_assert (nm_setting_ip4_config_get_never_default (s_ip4) == FALSE); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); g_object_unref (connection); } -#define TEST_IFCFG_UNMANAGED TEST_IFCFG_DIR"/network-scripts/ifcfg-test-nm-controlled" - static void test_read_unmanaged (void) { NMConnection *connection; NMSettingConnection *s_con; - NMSettingWired *s_wired; - NMSettingIP4Config *s_ip4; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; + char *unhandled_spec = NULL; GError *error = NULL; - const char *tmp; - const GByteArray *array; - char expected_mac_address[ETH_ALEN] = { 0x00, 0x11, 0x22, 0x33, 0xf8, 0x9f }; const char *expected_id = "System test-nm-controlled"; guint64 expected_timestamp = 0; + gboolean success; - connection = connection_from_file (TEST_IFCFG_UNMANAGED, - NULL, - TYPE_ETHERNET, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection != NULL, - "unmanaged-read", "failed to read %s: %s", TEST_IFCFG_UNMANAGED, error->message); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-nm-controlled", + NULL, TYPE_ETHERNET, NULL, + &unhandled_spec, + NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + g_assert_cmpstr (unhandled_spec, ==, "unmanaged:mac:00:11:22:33:f8:9f"); - ASSERT (nm_connection_verify (connection, &error), - "unmanaged-verify", "failed to verify %s: %s", TEST_IFCFG_UNMANAGED, error->message); + /* ===== CONNECTION SETTING ===== */ + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, expected_timestamp); + g_assert (nm_setting_connection_get_autoconnect (s_con)); - ASSERT (unmanaged != NULL, - "unmanaged-verify", "failed to verify %s: expected unmanaged", TEST_IFCFG_UNMANAGED); + g_free (unhandled_spec); + g_object_unref (connection); +} + +static void +test_read_unmanaged_unrecognized (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + char *unhandled_spec = NULL; + GError *error = NULL; + const char *expected_id = "PigeonNet"; + guint64 expected_timestamp = 0; + gboolean success; - ASSERT (strcmp (unmanaged, "mac:00:11:22:33:f8:9f") == 0, - "unmanaged-verify", "failed to verify %s: expected unmanaged", TEST_IFCFG_UNMANAGED); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-nm-controlled-unrecognized", + NULL, NULL, NULL, + &unhandled_spec, + NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + g_assert_cmpstr (unhandled_spec, ==, "unmanaged:interface-name:ipoac0"); /* ===== CONNECTION SETTING ===== */ - s_con = nm_connection_get_setting_connection (connection); - ASSERT (s_con != NULL, - "unmanaged-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_UNMANAGED, - NM_SETTING_CONNECTION_SETTING_NAME); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, expected_timestamp); - /* ID */ - tmp = nm_setting_connection_get_id (s_con); - ASSERT (tmp != NULL, - "unmanaged-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_UNMANAGED, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - ASSERT (strcmp (tmp, expected_id) == 0, - "unmanaged-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_UNMANAGED, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); + g_object_unref (connection); +} - /* Timestamp */ - ASSERT (nm_setting_connection_get_timestamp (s_con) == expected_timestamp, - "unmanaged-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_UNMANAGED, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_TIMESTAMP); +static void +test_read_unrecognized (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + char *unhandled_spec = NULL; + GError *error = NULL; + const char *expected_id = "U Can't Touch This"; + guint64 expected_timestamp = 0; + gboolean success; - /* Autoconnect */ - /* Since the unmanaged connections are not completely read, defaults will - * be used for many settings. - */ - ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, - "unmanaged-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_UNMANAGED, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_AUTOCONNECT); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-unrecognized", + NULL, NULL, NULL, + &unhandled_spec, + NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + g_assert_cmpstr (unhandled_spec, ==, "unrecognized:mac:00:11:22:33"); - /* ===== WIRED SETTING ===== */ + /* ===== CONNECTION SETTING ===== */ + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, expected_timestamp); + + g_object_unref (connection); +} + +static void +test_read_wired_static (const char *file, + const char *expected_id, + gboolean expect_ip6) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + char *unmanaged = NULL; + GError *error = NULL; + const GByteArray *array; + char expected_mac_address[ETH_ALEN] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0xee }; + const char *expected_dns1 = "4.2.2.1"; + const char *expected_dns2 = "4.2.2.2"; + guint32 addr; + struct in6_addr addr6; + const char *expected_address1 = "192.168.1.5"; + const char *expected_address1_gw = "192.168.1.1"; + const char *expected6_address1 = "dead:beaf::1"; + const char *expected6_address2 = "dead:beaf::2"; + const char *expected6_dns1 = "1:2:3:4::a"; + const char *expected6_dns2 = "1:2:3:4::b"; + NMIP4Address *ip4_addr; + NMIP6Address *ip6_addr; + gboolean success; + + connection = connection_from_file (file, NULL, TYPE_ETHERNET, NULL, + &unmanaged, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + g_assert_cmpstr (unmanaged, ==, NULL); + + /* ===== CONNECTION SETTING ===== */ + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0); + g_assert (nm_setting_connection_get_autoconnect (s_con)); + /* ===== WIRED SETTING ===== */ s_wired = nm_connection_get_setting_wired (connection); - ASSERT (s_wired != NULL, - "unmanaged-verify-wired", "failed to verify %s: missing %s setting", - TEST_IFCFG_UNMANAGED, - NM_SETTING_WIRED_SETTING_NAME); + g_assert (s_wired); + g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 1492); /* MAC address */ array = nm_setting_wired_get_mac_address (s_wired); - ASSERT (array != NULL, - "unmanaged-verify-wired", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_UNMANAGED, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (array->len == ETH_ALEN, - "unmanaged-verify-wired", "failed to verify %s: unexpected %s / %s key value length", - TEST_IFCFG_UNMANAGED, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, - "unmanaged-verify-wired", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_UNMANAGED, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); + g_assert (array); + g_assert_cmpint (array->len, ==, ETH_ALEN); + g_assert (memcmp (array->data, &expected_mac_address[0], ETH_ALEN) == 0); /* ===== IPv4 SETTING ===== */ - s_ip4 = nm_connection_get_setting_ip4_config (connection); - ASSERT (s_ip4 == NULL, - "unmanaged-verify-ip4", "failed to verify %s: unexpected %s setting", - TEST_IFCFG_UNMANAGED, - NM_SETTING_IP4_CONFIG_SETTING_NAME); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip4_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_MANUAL); + g_assert (nm_setting_ip4_config_get_may_fail (s_ip4)); + + /* DNS Addresses */ + g_assert_cmpint (nm_setting_ip4_config_get_num_dns (s_ip4), ==, 2); + g_assert_cmpint (inet_pton (AF_INET, expected_dns1, &addr), >, 0); + g_assert_cmpint (nm_setting_ip4_config_get_dns (s_ip4, 0), ==, addr); + g_assert_cmpint (inet_pton (AF_INET, expected_dns2, &addr), >, 0); + g_assert_cmpint (nm_setting_ip4_config_get_dns (s_ip4, 1), ==, addr); + + /* IP addresses */ + g_assert_cmpint (nm_setting_ip4_config_get_num_addresses (s_ip4), ==, 1); + ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); + g_assert (ip4_addr); + g_assert_cmpint (nm_ip4_address_get_prefix (ip4_addr), ==, 24); + g_assert_cmpint (inet_pton (AF_INET, expected_address1, &addr), >, 0); + g_assert_cmpint (nm_ip4_address_get_address (ip4_addr), ==, addr); + g_assert_cmpint (inet_pton (AF_INET, expected_address1_gw, &addr), >, 0); + g_assert_cmpint (nm_ip4_address_get_gateway (ip4_addr), ==, addr); + + /* ===== IPv6 SETTING ===== */ + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip6); + if (expect_ip6) { + g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_MANUAL); + g_assert (nm_setting_ip6_config_get_may_fail (s_ip6)); + + /* DNS Addresses */ + g_assert_cmpint (nm_setting_ip6_config_get_num_dns (s_ip6), ==, 2); + g_assert_cmpint (inet_pton (AF_INET6, expected6_dns1, &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_setting_ip6_config_get_dns (s_ip6, 0), &addr6)); + g_assert_cmpint (inet_pton (AF_INET6, expected6_dns2, &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_setting_ip6_config_get_dns (s_ip6, 1), &addr6)); + + /* IP addresses */ + g_assert_cmpint (nm_setting_ip6_config_get_num_addresses (s_ip6), ==, 2); + + ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 0); + g_assert (ip6_addr); + g_assert_cmpint (nm_ip6_address_get_prefix (ip6_addr), ==, 64); + g_assert_cmpint (inet_pton (AF_INET6, expected6_address1, &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6)); + + ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 1); + g_assert (ip6_addr); + g_assert_cmpint (nm_ip6_address_get_prefix (ip6_addr), ==, 56); + g_assert_cmpint (inet_pton (AF_INET6, expected6_address2, &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6)); + } else { + g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_IGNORE); + } g_free (unmanaged); g_object_unref (connection); } static void -test_read_wired_static (const char *file, const char *expected_id) +test_read_wired_static_no_prefix (gconstpointer user_data) +{ + guint32 expected_prefix = GPOINTER_TO_UINT (user_data); + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingIP4Config *s_ip4; + GError *error = NULL; + NMIP4Address *ip4_addr; + char *file, *expected_id; + + file = g_strdup_printf (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-wired-static-no-prefix-%u", expected_prefix); + expected_id = g_strdup_printf ("System test-wired-static-no-prefix-%u", expected_prefix); + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*missing PREFIX, assuming*"); + connection = connection_from_file (file, NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + g_assert_no_error (error); + g_assert (connection); + g_assert (nm_connection_verify (connection, &error)); + + /* ===== CONNECTION SETTING ===== */ + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id); + + /* ===== IPv4 SETTING ===== */ + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip4_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_MANUAL); + + g_assert_cmpint (nm_setting_ip4_config_get_num_addresses (s_ip4), ==, 1); + ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); + g_assert (ip4_addr); + g_assert_cmpint (nm_ip4_address_get_prefix (ip4_addr), ==, expected_prefix); + + g_free (file); + g_free (expected_id); + g_object_unref (connection); +} + +#define TEST_IFCFG_WIRED_DHCP TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-dhcp" + +static void +test_read_wired_dhcp (void) { NMConnection *connection; NMSettingConnection *s_con; NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; - NMSettingIP6Config *s_ip6; char *unmanaged = NULL; char *keyfile = NULL; char *routefile = NULL; @@ -617,20 +561,13 @@ test_read_wired_static (const char *file, const char *expected_id) const GByteArray *array; char expected_mac_address[ETH_ALEN] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0xee }; const char *tmp; + const char *expected_id = "System test-wired-dhcp"; const char *expected_dns1 = "4.2.2.1"; const char *expected_dns2 = "4.2.2.2"; - struct in_addr addr; - struct in6_addr addr6; - const char *expected_address1 = "192.168.1.5"; - const char *expected_address1_gw = "192.168.1.1"; - const char *expected6_address1 = "dead:beaf::1"; - const char *expected6_address2 = "dead:beaf::2"; - const char *expected6_dns1 = "1:2:3:4::a"; - const char *expected6_dns2 = "1:2:3:4::b"; - NMIP4Address *ip4_addr; - NMIP6Address *ip6_addr; + guint32 addr; + const char *expected_dhcp_hostname = "foobar"; - connection = connection_from_file (file, + connection = connection_from_file (TEST_IFCFG_WIRED_DHCP, NULL, TYPE_ETHERNET, NULL, @@ -641,46 +578,46 @@ test_read_wired_static (const char *file, const char *expected_id) &error, &ignore_error); ASSERT (connection != NULL, - "wired-static-read", "failed to read %s: %s", file, error->message); + "wired-dhcp-read", "failed to read %s: %s", TEST_IFCFG_WIRED_DHCP, error->message); ASSERT (nm_connection_verify (connection, &error), - "wired-static-verify", "failed to verify %s: %s", file, error->message); + "wired-dhcp-verify", "failed to verify %s: %s", TEST_IFCFG_WIRED_DHCP, error->message); ASSERT (unmanaged == NULL, - "wired-static-verify", "failed to verify %s: unexpected unmanaged value", file); + "wired-dhcp-verify", "failed to verify %s: unexpected unmanaged value", TEST_IFCFG_WIRED_DHCP); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wired-static-verify-connection", "failed to verify %s: missing %s setting", - file, + "wired-dhcp-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ tmp = nm_setting_connection_get_id (s_con); ASSERT (tmp != NULL, - "wired-static-verify-connection", "failed to verify %s: missing %s / %s key", - file, + "wired-dhcp-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); ASSERT (strcmp (tmp, expected_id) == 0, - "wired-static-verify-connection", "failed to verify %s: unexpected %s / %s key value", - file, + "wired-dhcp-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); /* Timestamp */ ASSERT (nm_setting_connection_get_timestamp (s_con) == 0, - "wired-static-verify-connection", "failed to verify %s: unexpected %s /%s key value", - file, + "wired-dhcp-verify-connection", "failed to verify %s: unexpected %s /%s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_TIMESTAMP); /* Autoconnect */ ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, - "wired-static-verify-connection", "failed to verify %s: unexpected %s /%s key value", - file, + "wired-dhcp-verify-connection", "failed to verify %s: unexpected %s /%s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_AUTOCONNECT); @@ -688,232 +625,194 @@ test_read_wired_static (const char *file, const char *expected_id) s_wired = nm_connection_get_setting_wired (connection); ASSERT (s_wired != NULL, - "wired-static-verify-wired", "failed to verify %s: missing %s setting", - file, + "wired-dhcp-verify-wired", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_WIRED_SETTING_NAME); /* MAC address */ array = nm_setting_wired_get_mac_address (s_wired); ASSERT (array != NULL, - "wired-static-verify-wired", "failed to verify %s: missing %s / %s key", - file, + "wired-dhcp-verify-wired", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_MAC_ADDRESS); ASSERT (array->len == ETH_ALEN, - "wired-static-verify-wired", "failed to verify %s: unexpected %s / %s key value length", - file, + "wired-dhcp-verify-wired", "failed to verify %s: unexpected %s / %s key value length", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_MAC_ADDRESS); ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, - "wired-static-verify-wired", "failed to verify %s: unexpected %s / %s key value", - file, + "wired-dhcp-verify-wired", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (nm_setting_wired_get_mtu (s_wired) == 1492, - "wired-static-verify-wired", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MTU); - /* ===== IPv4 SETTING ===== */ s_ip4 = nm_connection_get_setting_ip4_config (connection); ASSERT (s_ip4 != NULL, - "wired-static-verify-ip4", "failed to verify %s: missing %s setting", - file, + "wired-dhcp-verify-ip4", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME); /* Method */ tmp = nm_setting_ip4_config_get_method (s_ip4); - ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_MANUAL) == 0, - "wired-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, + ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, + "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_METHOD); - /* Implicit may-fail */ - ASSERT (nm_setting_ip4_config_get_may_fail (s_ip4) == TRUE, - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - file, + tmp = nm_setting_ip4_config_get_dhcp_hostname (s_ip4); + ASSERT (tmp != NULL, + "wired-dhcp-verify-ip4", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIRED_DHCP, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME); + ASSERT (strcmp (tmp, expected_dhcp_hostname) == 0, + "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_DHCP, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME); + + ASSERT (nm_setting_ip4_config_get_ignore_auto_dns (s_ip4) == TRUE, + "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_MAY_FAIL); + NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS); /* DNS Addresses */ ASSERT (nm_setting_ip4_config_get_num_dns (s_ip4) == 2, - "wired-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, + "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); ASSERT (inet_pton (AF_INET, expected_dns1, &addr) > 0, - "wired-static-verify-ip4", "failed to verify %s: couldn't convert DNS IP address #1", - file, + "wired-dhcp-verify-ip4", "failed to verify %s: couldn't convert DNS IP address #1", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr.s_addr, - "wired-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", - file, + ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr, + "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); ASSERT (inet_pton (AF_INET, expected_dns2, &addr) > 0, - "wired-static-verify-ip4", "failed to verify %s: couldn't convert DNS IP address #2", - file, + "wired-dhcp-verify-ip4", "failed to verify %s: couldn't convert DNS IP address #2", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr.s_addr, - "wired-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", - file, + ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr, + "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", + TEST_IFCFG_WIRED_DHCP, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_num_addresses (s_ip4) == 1, - "wired-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); +} - /* Address #1 */ - ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); - ASSERT (ip4_addr, - "wired-static-verify-ip4", "failed to verify %s: missing IP4 address #1", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); +static void +test_read_wired_dhcp_plus_ip (void) +{ + NMConnection *connection; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + GError *error = NULL; + guint32 addr4; + struct in6_addr addr6; + NMIP4Address *ip4_addr; + NMIP6Address *ip6_addr; + gboolean success; - ASSERT (nm_ip4_address_get_prefix (ip4_addr) == 24, - "wired-static-verify-ip4", "failed to verify %s: unexpected IP4 address #1 prefix", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-dhcp-plus-ip", + NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); - ASSERT (inet_pton (AF_INET, expected_address1, &addr) > 0, - "wired-static-verify-ip4", "failed to verify %s: couldn't convert IP address #1", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, - "wired-static-verify-ip4", "failed to verify %s: unexpected IP4 address #1", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); + /* ===== IPv4 SETTING ===== */ + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip4_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO); + g_assert (nm_setting_ip4_config_get_may_fail (s_ip4)); - ASSERT (inet_pton (AF_INET, expected_address1_gw, &addr) > 0, - "wired-static-verify-ip4", "failed to verify %s: couldn't convert IP address #1 gateway", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); - ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr.s_addr, - "wired-static-verify-ip4", "failed to verify %s: unexpected IP4 address #1 gateway", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); + /* DNS Addresses */ + g_assert_cmpint (nm_setting_ip4_config_get_num_dns (s_ip4), ==, 2); + g_assert_cmpint (inet_pton (AF_INET, "4.2.2.1", &addr4), >, 0); + g_assert_cmpint (nm_setting_ip4_config_get_dns (s_ip4, 0), ==, addr4); + g_assert_cmpint (inet_pton (AF_INET, "4.2.2.2", &addr4), >, 0); + g_assert_cmpint (nm_setting_ip4_config_get_dns (s_ip4, 1), ==, addr4); - if (!strcmp (expected_id, "System test-wired-static")) { - /* ===== IPv6 SETTING ===== */ - - s_ip6 = nm_connection_get_setting_ip6_config (connection); - ASSERT (s_ip6 != NULL, - "wired-static-verify-ip6", "failed to verify %s: missing %s setting", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME); - - /* Method */ - tmp = nm_setting_ip6_config_get_method (s_ip6); - ASSERT (strcmp (tmp, NM_SETTING_IP6_CONFIG_METHOD_MANUAL) == 0, - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_METHOD); - - /* Implicit may-fail */ - ASSERT (nm_setting_ip6_config_get_may_fail (s_ip6) == TRUE, - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_MAY_FAIL); + /* IP addresses */ + g_assert_cmpint (nm_setting_ip4_config_get_num_addresses (s_ip4), ==, 2); + ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); + g_assert (ip4_addr); + g_assert_cmpint (nm_ip4_address_get_prefix (ip4_addr), ==, 24); + g_assert_cmpint (inet_pton (AF_INET, "1.2.3.4", &addr4), >, 0); + g_assert_cmpint (nm_ip4_address_get_address (ip4_addr), ==, addr4); + g_assert_cmpint (inet_pton (AF_INET, "1.1.1.1", &addr4), >, 0); + g_assert_cmpint (nm_ip4_address_get_gateway (ip4_addr), ==, addr4); - /* DNS Addresses */ - ASSERT (nm_setting_ip6_config_get_num_dns (s_ip6) == 2, - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_DNS); - - ASSERT (inet_pton (AF_INET6, expected6_dns1, &addr6) > 0, - "wired-static-verify-ip6", "failed to verify %s: couldn't convert DNS IP address #1", - file); - ASSERT (IN6_ARE_ADDR_EQUAL (nm_setting_ip6_config_get_dns (s_ip6, 0), &addr6), - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value #1", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_DNS); - - ASSERT (inet_pton (AF_INET6, expected6_dns2, &addr6) > 0, - "wired-static-verify-ip6", "failed to verify %s: couldn't convert DNS IP address #2", - file); - ASSERT (IN6_ARE_ADDR_EQUAL (nm_setting_ip6_config_get_dns (s_ip6, 1), &addr6), - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value #2", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_DNS); - - ASSERT (nm_setting_ip6_config_get_num_addresses (s_ip6) == 2, - "wired-static-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_ADDRESSES); - - /* Address #1 */ - ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 0); - ASSERT (ip6_addr, - "wired-static-verify-ip6", "failed to verify %s: missing IP6 address #1", - file); - - ASSERT (nm_ip6_address_get_prefix (ip6_addr) == 64, - "wired-static-verify-ip6", "failed to verify %s: unexpected IP6 address #1 prefix", - file); - - ASSERT (inet_pton (AF_INET6, expected6_address1, &addr6) > 0, - "wired-static-verify-ip6", "failed to verify %s: couldn't convert IP address #1", - file); - ASSERT (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6), - "wired-static-verify-ip6", "failed to verify %s: unexpected IP6 address #1", - file); - - /* Address #2 */ - ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 1); - ASSERT (ip6_addr, - "wired-static-verify-ip6", "failed to verify %s: missing IP6 address #2", - file); - - ASSERT (nm_ip6_address_get_prefix (ip6_addr) == 56, - "wired-static-verify-ip6", "failed to verify %s: unexpected IP6 address #2 prefix", - file); - - ASSERT (inet_pton (AF_INET6, expected6_address2, &addr6) > 0, - "wired-static-verify-ip6", "failed to verify %s: couldn't convert IP address #2", - file); - ASSERT (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6), - "wired-static-verify-ip6", "failed to verify %s: unexpected IP6 address #2", - file); - } + ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 1); + g_assert (ip4_addr); + g_assert_cmpint (nm_ip4_address_get_prefix (ip4_addr), ==, 16); + g_assert_cmpint (inet_pton (AF_INET, "9.8.7.6", &addr4), >, 0); + g_assert_cmpint (nm_ip4_address_get_address (ip4_addr), ==, addr4); + + /* ===== IPv6 SETTING ===== */ + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip6); + g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_AUTO); + g_assert (nm_setting_ip6_config_get_may_fail (s_ip6)); + + /* DNS Addresses */ + g_assert_cmpint (nm_setting_ip6_config_get_num_dns (s_ip6), ==, 2); + g_assert_cmpint (inet_pton (AF_INET6, "1:2:3:4::a", &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_setting_ip6_config_get_dns (s_ip6, 0), &addr6)); + g_assert_cmpint (inet_pton (AF_INET6, "1:2:3:4::b", &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_setting_ip6_config_get_dns (s_ip6, 1), &addr6)); + + /* IP addresses */ + g_assert_cmpint (nm_setting_ip6_config_get_num_addresses (s_ip6), ==, 3); + ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 0); + g_assert (ip6_addr); + g_assert_cmpint (nm_ip6_address_get_prefix (ip6_addr), ==, 56); + g_assert_cmpint (inet_pton (AF_INET6, "1001:abba::1234", &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6)); + + ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 1); + g_assert (ip6_addr); + g_assert_cmpint (nm_ip6_address_get_prefix (ip6_addr), ==, 64); + g_assert_cmpint (inet_pton (AF_INET6, "2001:abba::2234", &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6)); + + ip6_addr = nm_setting_ip6_config_get_address (s_ip6, 2); + g_assert (ip6_addr); + g_assert_cmpint (nm_ip6_address_get_prefix (ip6_addr), ==, 96); + g_assert_cmpint (inet_pton (AF_INET6, "3001:abba::3234", &addr6), >, 0); + g_assert (IN6_ARE_ADDR_EQUAL (nm_ip6_address_get_address (ip6_addr), &addr6)); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); g_object_unref (connection); } -#define TEST_IFCFG_STATIC_NO_PREFIX TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-static-no-prefix" +#define TEST_IFCFG_WIRED_GLOBAL_GATEWAY TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-global-gateway" +#define TEST_NETWORK_WIRED_GLOBAL_GATEWAY TEST_IFCFG_DIR"/network-scripts/network-test-wired-global-gateway" static void -test_read_wired_static_no_prefix (guint32 expected_prefix) +test_read_wired_global_gateway (void) { NMConnection *connection; NMSettingConnection *s_con; + NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; char *unmanaged = NULL; char *keyfile = NULL; @@ -921,20 +820,15 @@ test_read_wired_static_no_prefix (guint32 expected_prefix) char *route6file = NULL; gboolean ignore_error = FALSE; GError *error = NULL; - NMIP4Address *ip4_addr; - char *file, *expected_id; const char *tmp; + const char *expected_id = "System test-wired-global-gateway"; + guint32 addr; + const char *expected_address1 = "192.168.1.5"; + const char *expected_address1_gw = "192.168.1.2"; + NMIP4Address *ip4_addr; - file = g_strdup_printf (TEST_IFCFG_STATIC_NO_PREFIX "-%u", expected_prefix); - ASSERT (file != NULL, - "wired-static-no-prefix-read", "failed to create path to file"); - - expected_id = g_strdup_printf ("System test-wired-static-no-prefix-%u", expected_prefix); - ASSERT (expected_id != NULL, - "wired-static-no-prefix-read", "failed to expected connection ID"); - - connection = connection_from_file (file, - NULL, + connection = connection_from_file (TEST_IFCFG_WIRED_GLOBAL_GATEWAY, + TEST_NETWORK_WIRED_GLOBAL_GATEWAY, TYPE_ETHERNET, NULL, &unmanaged, @@ -944,73 +838,95 @@ test_read_wired_static_no_prefix (guint32 expected_prefix) &error, &ignore_error); ASSERT (connection != NULL, - "wired-static-no-prefix-read", "failed to read %s: %s", file, error->message); + "wired-global-gateway-read", "failed to read %s: %s", TEST_IFCFG_WIRED_GLOBAL_GATEWAY, error->message); ASSERT (nm_connection_verify (connection, &error), - "wired-static-no-prefix-verify", "failed to verify %s: %s", file, error->message); + "wired-global-gateway-verify", "failed to verify %s: %s", TEST_IFCFG_WIRED_GLOBAL_GATEWAY, error->message); ASSERT (unmanaged == NULL, - "wired-static-no-prefix-verify", "failed to verify %s: unexpected unmanaged value", file); + "wired-global-gateway-verify", "failed to verify %s: unexpected unmanaged value", TEST_IFCFG_WIRED_GLOBAL_GATEWAY); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wired-static-no-prefix-verify-connection", "failed to verify %s: missing %s setting", - file, + "wired-global-gateway-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ tmp = nm_setting_connection_get_id (s_con); ASSERT (tmp != NULL, - "wired-static-no-prefix-verify-connection", "failed to verify %s: missing %s / %s key", - file, + "wired-global-gateway-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); ASSERT (strcmp (tmp, expected_id) == 0, - "wired-static-no-prefix-verify-connection", "failed to verify %s: unexpected %s / %s key value", - file, + "wired-global-gateway-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); - g_free (expected_id); + + /* ===== WIRED SETTING ===== */ + + s_wired = nm_connection_get_setting_wired (connection); + ASSERT (s_wired != NULL, + "wired-global-gateway-verify-wired", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, + NM_SETTING_WIRED_SETTING_NAME); /* ===== IPv4 SETTING ===== */ s_ip4 = nm_connection_get_setting_ip4_config (connection); ASSERT (s_ip4 != NULL, - "wired-static-no-prefix-verify-ip4", "failed to verify %s: missing %s setting", - file, + "wired-global-gateway-verify-ip4", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_IP4_CONFIG_SETTING_NAME); /* Method */ tmp = nm_setting_ip4_config_get_method (s_ip4); ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_MANUAL) == 0, - "wired-static-no-prefix-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, + "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_METHOD); - ASSERT (nm_setting_ip4_config_get_num_addresses (s_ip4) == 1, - "wired-static-no-prefix-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - file, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - /* Address #1 */ ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); ASSERT (ip4_addr, - "wired-static-no-prefix-verify-ip4", "failed to verify %s: missing IP4 address #1", - file, + "wired-global-gateway-verify-ip4", "failed to verify %s: missing IP4 address #1", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_ADDRESSES); - ASSERT (nm_ip4_address_get_prefix (ip4_addr) == expected_prefix, - "wired-static-no-prefix-verify-ip4", "failed to verify %s: unexpected IP4 address #1 prefix", - file, + ASSERT (nm_ip4_address_get_prefix (ip4_addr) == 24, + "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected IP4 address #1 prefix", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_ADDRESSES); + + ASSERT (inet_pton (AF_INET, expected_address1, &addr) > 0, + "wired-global-gateway-verify-ip4", "failed to verify %s: couldn't convert IP address #1", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_DNS); + ASSERT (nm_ip4_address_get_address (ip4_addr) == addr, + "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected IP4 address #1", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_ADDRESSES); + + ASSERT (inet_pton (AF_INET, expected_address1_gw, &addr) > 0, + "wired-global-gateway-verify-ip4", "failed to verify %s: couldn't convert IP address #1 gateway", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_ADDRESSES); + ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr, + "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected IP4 address #1 gateway", + TEST_IFCFG_WIRED_GLOBAL_GATEWAY, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_ADDRESSES); - g_free (file); g_free (unmanaged); g_free (keyfile); g_free (routefile); @@ -1018,32 +934,28 @@ test_read_wired_static_no_prefix (guint32 expected_prefix) g_object_unref (connection); } -#define TEST_IFCFG_WIRED_DHCP TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-dhcp" +#define TEST_IFCFG_WIRED_NEVER_DEFAULT TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-never-default" +#define TEST_NETWORK_WIRED_NEVER_DEFAULT TEST_IFCFG_DIR"/network-scripts/network-test-wired-never-default" static void -test_read_wired_dhcp (void) +test_read_wired_never_default (void) { NMConnection *connection; NMSettingConnection *s_con; NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; char *unmanaged = NULL; char *keyfile = NULL; char *routefile = NULL; char *route6file = NULL; gboolean ignore_error = FALSE; GError *error = NULL; - const GByteArray *array; - char expected_mac_address[ETH_ALEN] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0xee }; const char *tmp; - const char *expected_id = "System test-wired-dhcp"; - const char *expected_dns1 = "4.2.2.1"; - const char *expected_dns2 = "4.2.2.2"; - struct in_addr addr; - const char *expected_dhcp_hostname = "foobar"; + const char *expected_id = "System test-wired-never-default"; - connection = connection_from_file (TEST_IFCFG_WIRED_DHCP, - NULL, + connection = connection_from_file (TEST_IFCFG_WIRED_NEVER_DEFAULT, + TEST_NETWORK_WIRED_NEVER_DEFAULT, TYPE_ETHERNET, NULL, &unmanaged, @@ -1053,373 +965,73 @@ test_read_wired_dhcp (void) &error, &ignore_error); ASSERT (connection != NULL, - "wired-dhcp-read", "failed to read %s: %s", TEST_IFCFG_WIRED_DHCP, error->message); + "wired-never-default-read", "failed to read %s: %s", TEST_IFCFG_WIRED_NEVER_DEFAULT, error->message); ASSERT (nm_connection_verify (connection, &error), - "wired-dhcp-verify", "failed to verify %s: %s", TEST_IFCFG_WIRED_DHCP, error->message); + "wired-never-default-verify", "failed to verify %s: %s", TEST_IFCFG_WIRED_NEVER_DEFAULT, error->message); ASSERT (unmanaged == NULL, - "wired-dhcp-verify", "failed to verify %s: unexpected unmanaged value", TEST_IFCFG_WIRED_DHCP); + "wired-never-default-verify", "failed to verify %s: unexpected unmanaged value", TEST_IFCFG_WIRED_NEVER_DEFAULT); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wired-dhcp-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_DHCP, + "wired-never-default-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ tmp = nm_setting_connection_get_id (s_con); ASSERT (tmp != NULL, - "wired-dhcp-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIRED_DHCP, + "wired-never-default-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); ASSERT (strcmp (tmp, expected_id) == 0, - "wired-dhcp-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_DHCP, + "wired-never-default-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); - /* Timestamp */ - ASSERT (nm_setting_connection_get_timestamp (s_con) == 0, - "wired-dhcp-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_TIMESTAMP); - - /* Autoconnect */ - ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, - "wired-dhcp-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_AUTOCONNECT); - /* ===== WIRED SETTING ===== */ s_wired = nm_connection_get_setting_wired (connection); ASSERT (s_wired != NULL, - "wired-dhcp-verify-wired", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_DHCP, + "wired-never-default-verify-wired", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_WIRED_SETTING_NAME); - /* MAC address */ - array = nm_setting_wired_get_mac_address (s_wired); - ASSERT (array != NULL, - "wired-dhcp-verify-wired", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (array->len == ETH_ALEN, - "wired-dhcp-verify-wired", "failed to verify %s: unexpected %s / %s key value length", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, - "wired-dhcp-verify-wired", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_WIRED_SETTING_NAME, - NM_SETTING_WIRED_MAC_ADDRESS); - /* ===== IPv4 SETTING ===== */ s_ip4 = nm_connection_get_setting_ip4_config (connection); ASSERT (s_ip4 != NULL, - "wired-dhcp-verify-ip4", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_DHCP, + "wired-never-default-verify-ip4", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_IP4_CONFIG_SETTING_NAME); /* Method */ tmp = nm_setting_ip4_config_get_method (s_ip4); ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, - "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_DHCP, + "wired-never-default-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_METHOD); - tmp = nm_setting_ip4_config_get_dhcp_hostname (s_ip4); - ASSERT (tmp != NULL, - "wired-dhcp-verify-ip4", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME); - ASSERT (strcmp (tmp, expected_dhcp_hostname) == 0, - "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME); - - ASSERT (nm_setting_ip4_config_get_ignore_auto_dns (s_ip4) == TRUE, - "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_DHCP, + ASSERT (nm_setting_ip4_config_get_never_default (s_ip4) == TRUE, + "wired-never-default-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS); + NM_SETTING_IP4_CONFIG_NEVER_DEFAULT); /* DNS Addresses */ - ASSERT (nm_setting_ip4_config_get_num_dns (s_ip4) == 2, - "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - - ASSERT (inet_pton (AF_INET, expected_dns1, &addr) > 0, - "wired-dhcp-verify-ip4", "failed to verify %s: couldn't convert DNS IP address #1", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr.s_addr, - "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", - TEST_IFCFG_WIRED_DHCP, + ASSERT (nm_setting_ip4_config_get_num_dns (s_ip4) == 0, + "wired-never-default-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_NEVER_DEFAULT, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (inet_pton (AF_INET, expected_dns2, &addr) > 0, - "wired-dhcp-verify-ip4", "failed to verify %s: couldn't convert DNS IP address #2", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr.s_addr, - "wired-dhcp-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", - TEST_IFCFG_WIRED_DHCP, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); - g_object_unref (connection); -} - -#define TEST_IFCFG_WIRED_GLOBAL_GATEWAY TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-global-gateway" -#define TEST_NETWORK_WIRED_GLOBAL_GATEWAY TEST_IFCFG_DIR"/network-scripts/network-test-wired-global-gateway" - -static void -test_read_wired_global_gateway (void) -{ - NMConnection *connection; - NMSettingConnection *s_con; - NMSettingWired *s_wired; - NMSettingIP4Config *s_ip4; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; - GError *error = NULL; - const char *tmp; - const char *expected_id = "System test-wired-global-gateway"; - struct in_addr addr; - const char *expected_address1 = "192.168.1.5"; - const char *expected_address1_gw = "192.168.1.2"; - NMIP4Address *ip4_addr; - - connection = connection_from_file (TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - TEST_NETWORK_WIRED_GLOBAL_GATEWAY, - TYPE_ETHERNET, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection != NULL, - "wired-global-gateway-read", "failed to read %s: %s", TEST_IFCFG_WIRED_GLOBAL_GATEWAY, error->message); - - ASSERT (nm_connection_verify (connection, &error), - "wired-global-gateway-verify", "failed to verify %s: %s", TEST_IFCFG_WIRED_GLOBAL_GATEWAY, error->message); - - ASSERT (unmanaged == NULL, - "wired-global-gateway-verify", "failed to verify %s: unexpected unmanaged value", TEST_IFCFG_WIRED_GLOBAL_GATEWAY); - - /* ===== CONNECTION SETTING ===== */ - - s_con = nm_connection_get_setting_connection (connection); - ASSERT (s_con != NULL, - "wired-global-gateway-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_CONNECTION_SETTING_NAME); - - /* ID */ - tmp = nm_setting_connection_get_id (s_con); - ASSERT (tmp != NULL, - "wired-global-gateway-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - ASSERT (strcmp (tmp, expected_id) == 0, - "wired-global-gateway-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - - /* ===== WIRED SETTING ===== */ - - s_wired = nm_connection_get_setting_wired (connection); - ASSERT (s_wired != NULL, - "wired-global-gateway-verify-wired", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_WIRED_SETTING_NAME); - - /* ===== IPv4 SETTING ===== */ - - s_ip4 = nm_connection_get_setting_ip4_config (connection); - ASSERT (s_ip4 != NULL, - "wired-global-gateway-verify-ip4", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME); - - /* Method */ - tmp = nm_setting_ip4_config_get_method (s_ip4); - ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_MANUAL) == 0, - "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_METHOD); - - /* Address #1 */ - ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); - ASSERT (ip4_addr, - "wired-global-gateway-verify-ip4", "failed to verify %s: missing IP4 address #1", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); - - ASSERT (nm_ip4_address_get_prefix (ip4_addr) == 24, - "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected IP4 address #1 prefix", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); - - ASSERT (inet_pton (AF_INET, expected_address1, &addr) > 0, - "wired-global-gateway-verify-ip4", "failed to verify %s: couldn't convert IP address #1", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, - "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected IP4 address #1", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); - - ASSERT (inet_pton (AF_INET, expected_address1_gw, &addr) > 0, - "wired-global-gateway-verify-ip4", "failed to verify %s: couldn't convert IP address #1 gateway", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); - ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr.s_addr, - "wired-global-gateway-verify-ip4", "failed to verify %s: unexpected IP4 address #1 gateway", - TEST_IFCFG_WIRED_GLOBAL_GATEWAY, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_ADDRESSES); - - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); - g_object_unref (connection); -} - -#define TEST_IFCFG_WIRED_NEVER_DEFAULT TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-never-default" -#define TEST_NETWORK_WIRED_NEVER_DEFAULT TEST_IFCFG_DIR"/network-scripts/network-test-wired-never-default" - -static void -test_read_wired_never_default (void) -{ - NMConnection *connection; - NMSettingConnection *s_con; - NMSettingWired *s_wired; - NMSettingIP4Config *s_ip4; - NMSettingIP6Config *s_ip6; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; - GError *error = NULL; - const char *tmp; - const char *expected_id = "System test-wired-never-default"; - - connection = connection_from_file (TEST_IFCFG_WIRED_NEVER_DEFAULT, - TEST_NETWORK_WIRED_NEVER_DEFAULT, - TYPE_ETHERNET, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection != NULL, - "wired-never-default-read", "failed to read %s: %s", TEST_IFCFG_WIRED_NEVER_DEFAULT, error->message); - - ASSERT (nm_connection_verify (connection, &error), - "wired-never-default-verify", "failed to verify %s: %s", TEST_IFCFG_WIRED_NEVER_DEFAULT, error->message); - - ASSERT (unmanaged == NULL, - "wired-never-default-verify", "failed to verify %s: unexpected unmanaged value", TEST_IFCFG_WIRED_NEVER_DEFAULT); - - /* ===== CONNECTION SETTING ===== */ - - s_con = nm_connection_get_setting_connection (connection); - ASSERT (s_con != NULL, - "wired-never-default-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_CONNECTION_SETTING_NAME); - - /* ID */ - tmp = nm_setting_connection_get_id (s_con); - ASSERT (tmp != NULL, - "wired-never-default-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - ASSERT (strcmp (tmp, expected_id) == 0, - "wired-never-default-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_ID); - - /* ===== WIRED SETTING ===== */ - - s_wired = nm_connection_get_setting_wired (connection); - ASSERT (s_wired != NULL, - "wired-never-default-verify-wired", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_WIRED_SETTING_NAME); - - /* ===== IPv4 SETTING ===== */ - - s_ip4 = nm_connection_get_setting_ip4_config (connection); - ASSERT (s_ip4 != NULL, - "wired-never-default-verify-ip4", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_IP4_CONFIG_SETTING_NAME); - - /* Method */ - tmp = nm_setting_ip4_config_get_method (s_ip4); - ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, - "wired-never-default-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_METHOD); - - ASSERT (nm_setting_ip4_config_get_never_default (s_ip4) == TRUE, - "wired-never-default-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_NEVER_DEFAULT); - - /* DNS Addresses */ - ASSERT (nm_setting_ip4_config_get_num_dns (s_ip4) == 0, - "wired-never-default-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_NEVER_DEFAULT, - NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_SETTING_IP4_CONFIG_DNS); - - /* ===== IPv6 SETTING ===== */ + /* ===== IPv6 SETTING ===== */ s_ip6 = nm_connection_get_setting_ip6_config (connection); ASSERT (s_ip6 != NULL, @@ -1710,7 +1322,7 @@ test_read_wired_static_routes (void) GError *error = NULL; const char *tmp; NMIP4Route *ip4_route; - struct in_addr addr; + guint32 addr; const char *expected_id = "System test-wired-static-routes"; const char *expected_dst1 = "11.22.33.0"; const char *expected_dst2 = "44.55.66.77"; @@ -1802,7 +1414,7 @@ test_read_wired_static_routes (void) ASSERT (inet_pton (AF_INET, expected_dst1, &addr) > 0, "wired-static-routes-verify-ip4", "failed to verify %s: couldn't convert destination IP address #1", TEST_IFCFG_WIRED_STATIC_ROUTES); - ASSERT (nm_ip4_route_get_dest (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_dest (ip4_route) == addr, "wired-static-routes-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", TEST_IFCFG_WIRED_STATIC_ROUTES, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -1815,7 +1427,7 @@ test_read_wired_static_routes (void) ASSERT (inet_pton (AF_INET, expected_gw1, &addr) > 0, "wired-static-routes-verify-ip4", "failed to verify %s: couldn't convert next hop IP address #1", TEST_IFCFG_WIRED_STATIC_ROUTES); - ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr, "wired-static-routes-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", TEST_IFCFG_WIRED_STATIC_ROUTES, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -1829,7 +1441,7 @@ test_read_wired_static_routes (void) ASSERT (inet_pton (AF_INET, expected_dst2, &addr) > 0, "wired-static-routes-verify-ip4", "failed to verify %s: couldn't convert destination IP address #2", TEST_IFCFG_WIRED_STATIC_ROUTES); - ASSERT (nm_ip4_route_get_dest (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_dest (ip4_route) == addr, "wired-static-routes-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", TEST_IFCFG_WIRED_STATIC_ROUTES, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -1842,7 +1454,7 @@ test_read_wired_static_routes (void) ASSERT (inet_pton (AF_INET, expected_gw2, &addr) > 0, "wired-static-routes-verify-ip4", "failed to verify %s: couldn't convert next hop IP address #2", TEST_IFCFG_WIRED_STATIC_ROUTES); - ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr, "wired-static-routes-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", TEST_IFCFG_WIRED_STATIC_ROUTES, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -1875,7 +1487,7 @@ test_read_wired_static_routes_legacy (void) GError *error = NULL; const char *tmp; NMIP4Route *ip4_route; - struct in_addr addr; + guint32 addr; const char *expected_id = "System test-wired-static-routes-legacy"; const char *expected_dst1 = "21.31.41.0"; const char *expected_dst2 = "32.42.52.62"; @@ -1970,7 +1582,7 @@ test_read_wired_static_routes_legacy (void) ASSERT (inet_pton (AF_INET, expected_dst1, &addr) > 0, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: couldn't convert destination IP address #1", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY); - ASSERT (nm_ip4_route_get_dest (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_dest (ip4_route) == addr, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -1983,7 +1595,7 @@ test_read_wired_static_routes_legacy (void) ASSERT (inet_pton (AF_INET, expected_gw1, &addr) > 0, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: couldn't convert next hop IP address #1", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY); - ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -2002,7 +1614,7 @@ test_read_wired_static_routes_legacy (void) ASSERT (inet_pton (AF_INET, expected_dst2, &addr) > 0, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: couldn't convert destination IP address #2", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY); - ASSERT (nm_ip4_route_get_dest (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_dest (ip4_route) == addr, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -2015,7 +1627,7 @@ test_read_wired_static_routes_legacy (void) ASSERT (inet_pton (AF_INET, expected_gw2, &addr) > 0, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: couldn't convert next hop IP address #2", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY); - ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -2034,7 +1646,7 @@ test_read_wired_static_routes_legacy (void) ASSERT (inet_pton (AF_INET, expected_dst3, &addr) > 0, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: couldn't convert destination IP address #3", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY); - ASSERT (nm_ip4_route_get_dest (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_dest (ip4_route) == addr, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: unexpected %s / %s key value #3", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -2047,7 +1659,7 @@ test_read_wired_static_routes_legacy (void) ASSERT (inet_pton (AF_INET, expected_gw3, &addr) > 0, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: couldn't convert next hop IP address #3", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY); - ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr.s_addr, + ASSERT (nm_ip4_route_get_next_hop (ip4_route) == addr, "wired-static-routes-legacy-verify-ip4", "failed to verify %s: unexpected %s / %s key value #3", TEST_IFCFG_WIRED_STATIC_ROUTES_LEGACY, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -2085,7 +1697,7 @@ test_read_wired_ipv4_manual (const char *file, const char *expected_id) guint32 expected_prefix2 = 16; guint32 expected_prefix3 = 8; NMIP4Address *ip4_addr; - struct in_addr addr; + guint32 addr; connection = connection_from_file (file, NULL, @@ -2171,7 +1783,7 @@ test_read_wired_ipv4_manual (const char *file, const char *expected_id) ASSERT (inet_pton (AF_INET, expected_address1, &addr) > 0, "wired-ipv4-manual-verify-ip4", "failed to verify %s: couldn't convert IP address #1", file); - ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, + ASSERT (nm_ip4_address_get_address (ip4_addr) == addr, "wired-ipv4-manual-verify-ip4", "failed to verify %s: unexpected IP4 address #1", file); @@ -2188,7 +1800,7 @@ test_read_wired_ipv4_manual (const char *file, const char *expected_id) ASSERT (inet_pton (AF_INET, expected_address2, &addr) > 0, "wired-ipv4-manual-verify-ip4", "failed to verify %s: couldn't convert IP address #2", file); - ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, + ASSERT (nm_ip4_address_get_address (ip4_addr) == addr, "wired-ipv4-manual-verify-ip4", "failed to verify %s: unexpected IP4 address #2", file); @@ -2205,7 +1817,7 @@ test_read_wired_ipv4_manual (const char *file, const char *expected_id) ASSERT (inet_pton (AF_INET, expected_address3, &addr) > 0, "wired-ipv4-manual-verify-ip4", "failed to verify %s: couldn't convert IP address #3", file); - ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, + ASSERT (nm_ip4_address_get_address (ip4_addr) == addr, "wired-ipv4-manual-verify-ip4", "failed to verify %s: unexpected IP4 address #3", file); @@ -2240,16 +1852,14 @@ test_read_wired_ipv6_manual (void) guint32 expected_prefix1 = 56; guint32 expected_prefix2 = 64; guint32 expected_prefix3 = 96; - const char *expected_route1_dest = "9876::1234"; - guint32 expected_route1_prefix = 96; - const char *expected_route1_nexthop = "9876::7777"; - guint32 expected_route1_metric = 2; const char *expected_dns1 = "1:2:3:4::a"; const char *expected_dns2 = "1:2:3:4::b"; NMIP6Address *ip6_addr; NMIP6Route *ip6_route; struct in6_addr addr; + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*ignoring manual default route*"); connection = connection_from_file (TEST_IFCFG_WIRED_IPV6_MANUAL, NULL, TYPE_ETHERNET, @@ -2260,6 +1870,8 @@ test_read_wired_ipv6_manual (void) &route6file, &error, &ignore_error); + g_test_assert_expected_messages (); + ASSERT (connection != NULL, "wired-ipv6-manual-read", "failed to read %s: %s", TEST_IFCFG_WIRED_IPV6_MANUAL, error->message); @@ -2443,46 +2055,32 @@ test_read_wired_ipv6_manual (void) TEST_IFCFG_WIRED_IPV6_MANUAL); /* Routes */ - ASSERT (nm_setting_ip6_config_get_num_routes (s_ip6) == 1, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_IPV6_MANUAL, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_ROUTES); - + g_assert_cmpint (nm_setting_ip6_config_get_num_routes (s_ip6), ==, 2); /* Route #1 */ ip6_route = nm_setting_ip6_config_get_route (s_ip6, 0); - ASSERT (ip6_route, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: missing IP6 route #1", - TEST_IFCFG_WIRED_IPV6_MANUAL); + g_assert (ip6_route); + g_assert_cmpint (inet_pton (AF_INET6, "9876::1234", &addr), >, 0); + g_assert_cmpint (memcmp (nm_ip6_route_get_dest (ip6_route), &addr, sizeof (struct in6_addr)), ==, 0); + g_assert_cmpint (nm_ip6_route_get_prefix (ip6_route), ==, 96); + g_assert_cmpint (inet_pton (AF_INET6, "9876::7777", &addr), >, 0); + g_assert_cmpint (memcmp (nm_ip6_route_get_next_hop (ip6_route), &addr, sizeof (struct in6_addr)), ==, 0); + g_assert_cmpint (nm_ip6_route_get_metric (ip6_route), ==, 2); + /* Route #2 */ + ip6_route = nm_setting_ip6_config_get_route (s_ip6, 1); + g_assert (ip6_route); + g_assert_cmpint (inet_pton (AF_INET6, "abbe::cafe", &addr), >, 0); + g_assert_cmpint (memcmp (nm_ip6_route_get_dest (ip6_route), &addr, sizeof (struct in6_addr)), ==, 0); + g_assert_cmpint (nm_ip6_route_get_prefix (ip6_route), ==, 64); + g_assert_cmpint (inet_pton (AF_INET6, "::", &addr), >, 0); + g_assert_cmpint (memcmp (nm_ip6_route_get_next_hop (ip6_route), &addr, sizeof (struct in6_addr)), ==, 0); + g_assert_cmpint (nm_ip6_route_get_metric (ip6_route), ==, 777); - ASSERT (inet_pton (AF_INET6, expected_route1_dest, &addr) > 0, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: couldn't convert IP route dest #1", - TEST_IFCFG_WIRED_IPV6_MANUAL); - ASSERT (IN6_ARE_ADDR_EQUAL (nm_ip6_route_get_dest (ip6_route), &addr), - "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected IP6 route dest #1", - TEST_IFCFG_WIRED_IPV6_MANUAL); - - ASSERT (nm_ip6_route_get_prefix (ip6_route) == expected_route1_prefix, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected IP6 route #1 prefix", - TEST_IFCFG_WIRED_IPV6_MANUAL); - - ASSERT (inet_pton (AF_INET6, expected_route1_nexthop, &addr) > 0, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: couldn't convert IP route next_hop #1", - TEST_IFCFG_WIRED_IPV6_MANUAL); - ASSERT (IN6_ARE_ADDR_EQUAL (nm_ip6_route_get_next_hop (ip6_route), &addr), - "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected IP6 route next hop #1", - TEST_IFCFG_WIRED_IPV6_MANUAL); - - ASSERT (nm_ip6_route_get_metric (ip6_route) == expected_route1_metric, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected IP6 route #1 metric", - TEST_IFCFG_WIRED_IPV6_MANUAL); - - /* DNS Addresses */ - ASSERT (nm_setting_ip6_config_get_num_dns (s_ip6) == 2, - "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_IPV6_MANUAL, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_DNS); + /* DNS Addresses */ + ASSERT (nm_setting_ip6_config_get_num_dns (s_ip6) == 2, + "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIRED_IPV6_MANUAL, + NM_SETTING_IP6_CONFIG_SETTING_NAME, + NM_SETTING_IP6_CONFIG_DNS); ASSERT (inet_pton (AF_INET6, expected_dns1, &addr) > 0, "wired-ipv6-manual-verify-ip6", "failed to verify %s: couldn't convert DNS IP address #1", @@ -2507,7 +2105,7 @@ test_read_wired_ipv6_manual (void) "wired-ipv6-manual-verify-ip6", "failed to verify %s: unexpected %s / %s key value", TEST_IFCFG_WIRED_IPV6_MANUAL, NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_DNS); + NM_SETTING_IP6_CONFIG_DNS_SEARCH); g_free (unmanaged); g_free (keyfile); @@ -2660,12 +2258,11 @@ test_read_wired_ipv6_only (void) NM_SETTING_IP6_CONFIG_SETTING_NAME, NM_SETTING_IP6_CONFIG_DNS); - /* DNS domains - none as domains are stuffed to 'ipv4' setting */ - ASSERT (nm_setting_ip6_config_get_num_dns_searches (s_ip6) == 0, - "wired-ipv6-only-verify-ip6", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIRED_IPV6_MANUAL, - NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_SETTING_IP6_CONFIG_DNS); + /* DNS domains should be in IPv6, because IPv4 is disabled */ + g_assert_cmpint (nm_setting_ip6_config_get_num_dns_searches (s_ip6), ==, 3); + g_assert_cmpstr (nm_setting_ip6_config_get_dns_search (s_ip6, 0), ==, "lorem.com"); + g_assert_cmpstr (nm_setting_ip6_config_get_dns_search (s_ip6, 1), ==, "ipsum.org"); + g_assert_cmpstr (nm_setting_ip6_config_get_dns_search (s_ip6, 2), ==, "dolor.edu"); g_free (unmanaged); g_free (keyfile); @@ -2835,6 +2432,52 @@ test_read_onboot_no (void) g_object_unref (connection); } +#define TEST_IFCFG_NOIP TEST_IFCFG_DIR"/network-scripts/ifcfg-test-noip" + +static void +test_read_noip (void) +{ + NMConnection *connection; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GError *error = NULL; + + connection = connection_from_file (TEST_IFCFG_NOIP, + NULL, + TYPE_ETHERNET, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + g_assert (connection); + g_assert (nm_connection_verify (connection, &error)); + g_assert_no_error (error); + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip4_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_DISABLED); + g_assert (nm_setting_ip4_config_get_never_default (s_ip4) == FALSE); + + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip6); + g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_IGNORE); + g_assert (nm_setting_ip6_config_get_never_default (s_ip6) == FALSE); + + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); +} + #define TEST_IFCFG_WIRED_8021x_PEAP_MSCHAPV2 TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-8021x-peap-mschapv2" #define TEST_IFCFG_WIRED_8021x_PEAP_MSCHAPV2_CA_CERT TEST_IFCFG_DIR"/network-scripts/test_ca_cert.pem" @@ -2995,10 +2638,6 @@ test_read_wired_8021x_peap_mschapv2 (void) /* CA Cert */ tmp_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (tmp_8021x != NULL, - "wired-8021x-peap-mschapv2-verify-8021x", "failed to verify %s: could not create temp 802.1x setting", - TEST_IFCFG_WIRED_8021x_PEAP_MSCHAPV2, - NM_SETTING_802_1X_SETTING_NAME); success = nm_setting_802_1x_set_ca_cert (tmp_8021x, TEST_IFCFG_WIRED_8021x_PEAP_MSCHAPV2_CA_CERT, @@ -3106,14 +2745,130 @@ test_read_wired_8021x_tls_secret_flags (const char *ifcfg, NMSettingSecretFlags g_object_unref (connection); } -#define TEST_IFCFG_WIFI_OPEN TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open" +static void +test_read_write_802_1X_subj_matches (void) +{ + NMConnection *connection, *reread; + NMSetting8021x *s_8021x; + char *written = NULL; + GError *error = NULL; + gboolean success = FALSE; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*missing IEEE_8021X_CA_CERT*peap*"); + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-802-1X-subj-matches", + NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + g_assert_no_error (error); + g_assert (connection != NULL); + + /* ===== 802.1x SETTING ===== */ + s_8021x = nm_connection_get_setting_802_1x (connection); + g_assert (s_8021x); + g_assert_cmpint (nm_setting_802_1x_get_num_eap_methods (s_8021x), ==, 1); + g_assert_cmpstr (nm_setting_802_1x_get_eap_method (s_8021x, 0), ==, "peap"); + g_assert_cmpstr (nm_setting_802_1x_get_identity (s_8021x), ==, "Jara Cimrman"); + g_assert_cmpstr (nm_setting_802_1x_get_subject_match (s_8021x), ==, "server1.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_subject_match (s_8021x), ==, "server2.yourdomain.tld"); + g_assert_cmpint (nm_setting_802_1x_get_num_altsubject_matches (s_8021x), ==, 3); + g_assert_cmpstr (nm_setting_802_1x_get_altsubject_match (s_8021x, 0), ==, "a.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_altsubject_match (s_8021x, 1), ==, "b.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_altsubject_match (s_8021x, 2), ==, "c.yourdomain.tld"); + g_assert_cmpint (nm_setting_802_1x_get_num_phase2_altsubject_matches (s_8021x), ==, 2); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_altsubject_match (s_8021x, 0), ==, "x.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_altsubject_match (s_8021x, 1), ==, "y.yourdomain.tld"); + + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &written, + &error); + g_assert (success); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*missing IEEE_8021X_CA_CERT*peap*"); + reread = connection_from_file (written, NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + unlink (written); + g_free (written); + + g_assert_no_error (error); + g_assert (reread != NULL); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + /* Check 802.1X stuff of the re-read connection. */ + s_8021x = nm_connection_get_setting_802_1x (reread); + g_assert (s_8021x); + g_assert_cmpint (nm_setting_802_1x_get_num_eap_methods (s_8021x), ==, 1); + g_assert_cmpstr (nm_setting_802_1x_get_eap_method (s_8021x, 0), ==, "peap"); + g_assert_cmpstr (nm_setting_802_1x_get_identity (s_8021x), ==, "Jara Cimrman"); + g_assert_cmpstr (nm_setting_802_1x_get_subject_match (s_8021x), ==, "server1.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_subject_match (s_8021x), ==, "server2.yourdomain.tld"); + g_assert_cmpint (nm_setting_802_1x_get_num_altsubject_matches (s_8021x), ==, 3); + g_assert_cmpstr (nm_setting_802_1x_get_altsubject_match (s_8021x, 0), ==, "a.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_altsubject_match (s_8021x, 1), ==, "b.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_altsubject_match (s_8021x, 2), ==, "c.yourdomain.tld"); + g_assert_cmpint (nm_setting_802_1x_get_num_phase2_altsubject_matches (s_8021x), ==, 2); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_altsubject_match (s_8021x, 0), ==, "x.yourdomain.tld"); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_altsubject_match (s_8021x, 1), ==, "y.yourdomain.tld"); + + g_object_unref (connection); + g_object_unref (reread); +} static void -test_read_wifi_open (void) +test_read_802_1x_ttls_eapgtc (void) +{ + NMConnection *connection; + NMSetting8021x *s_8021x; + GError *error = NULL; + gboolean success; + + /* Test that EAP-* inner methods are correctly read into the + * NMSetting8021x::autheap property. + */ + + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc", + NULL, TYPE_WIRELESS, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + /* ===== 802.1x SETTING ===== */ + s_8021x = nm_connection_get_setting_802_1x (connection); + g_assert (s_8021x); + + /* EAP methods */ + g_assert_cmpint (nm_setting_802_1x_get_num_eap_methods (s_8021x), ==, 1); + g_assert_cmpstr (nm_setting_802_1x_get_eap_method (s_8021x, 0), ==, "ttls"); + + /* Auth methods */ + g_assert_cmpstr (nm_setting_802_1x_get_phase2_auth (s_8021x), ==, NULL); + g_assert_cmpstr (nm_setting_802_1x_get_phase2_autheap (s_8021x), ==, "gtc"); + + g_object_unref (connection); +} + +#define TEST_IFCFG_ALIASES_GOOD TEST_IFCFG_DIR"/network-scripts/ifcfg-aliasem0" + +static void +test_read_wired_aliases_good (void) { NMConnection *connection; NMSettingConnection *s_con; - NMSettingWireless *s_wireless; NMSettingIP4Config *s_ip4; char *unmanaged = NULL; char *keyfile = NULL; @@ -3122,17 +2877,16 @@ test_read_wifi_open (void) gboolean ignore_error = FALSE; GError *error = NULL; const char *tmp; - const GByteArray *array; - char expected_mac_address[ETH_ALEN] = { 0x00, 0x16, 0x41, 0x11, 0x22, 0x33 }; - const char *expected_id = "System blahblah (test-wifi-open)"; - guint64 expected_timestamp = 0; - const char *expected_ssid = "blahblah"; - const char *expected_mode = "infrastructure"; - const guint32 expected_channel = 1; - - connection = connection_from_file (TEST_IFCFG_WIFI_OPEN, + const char *expected_id = "System aliasem0"; + int expected_num_addresses = 4, expected_prefix = 24; + const char *expected_address[4] = { "192.168.1.5", "192.168.1.6", "192.168.1.9", "192.168.1.99" }; + const char *expected_label[4] = { NULL, "aliasem0:1", "aliasem0:2", "aliasem0:99" }; + const char *expected_gateway[4] = { "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1" }; + int i, j; + + connection = connection_from_file (TEST_IFCFG_ALIASES_GOOD, NULL, - TYPE_WIRELESS, + TYPE_ETHERNET, NULL, &unmanaged, &keyfile, @@ -3141,161 +2895,128 @@ test_read_wifi_open (void) &error, &ignore_error); ASSERT (connection != NULL, - "wifi-open-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN, error->message); + "aliases-good-read", "failed to read %s: %s", TEST_IFCFG_ALIASES_GOOD, error->message); ASSERT (nm_connection_verify (connection, &error), - "wifi-open-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN, error->message); + "aliases-good-verify", "failed to verify %s: %s", TEST_IFCFG_ALIASES_GOOD, error->message); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wifi-open-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN, + "aliases-good-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_ALIASES_GOOD, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ tmp = nm_setting_connection_get_id (s_con); ASSERT (tmp != NULL, - "wifi-open-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN, + "aliases-good-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_ALIASES_GOOD, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); ASSERT (strcmp (tmp, expected_id) == 0, - "wifi-open-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, + "aliases-good-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_ALIASES_GOOD, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); - /* UUID can't be tested if the ifcfg does not contain the UUID key, because - * the UUID is generated on the full path of the ifcfg file, which can change - * depending on where the tests are run. - */ - - /* Timestamp */ - ASSERT (nm_setting_connection_get_timestamp (s_con) == expected_timestamp, - "wifi-open-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_TIMESTAMP); - - /* Autoconnect */ - ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, - "wifi-open-verify-connection", "failed to verify %s: unexpected %s /%s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_CONNECTION_SETTING_NAME, - NM_SETTING_CONNECTION_AUTOCONNECT); - - /* ===== WIRELESS SETTING ===== */ - - s_wireless = nm_connection_get_setting_wireless (connection); - ASSERT (s_wireless != NULL, - "wifi-open-verify-wireless", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME); - - /* MAC address */ - array = nm_setting_wireless_get_mac_address (s_wireless); - ASSERT (array != NULL, - "wifi-open-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MAC_ADDRESS); - ASSERT (array->len == ETH_ALEN, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value length", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MAC_ADDRESS); - ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MAC_ADDRESS); - - ASSERT (nm_setting_wireless_get_mtu (s_wireless) == 0, - "wifi-open-verify-wired", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MTU); - - array = nm_setting_wireless_get_ssid (s_wireless); - ASSERT (array != NULL, - "wifi-open-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SSID); - ASSERT (array->len == strlen (expected_ssid), - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value length", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SSID); - ASSERT (memcmp (array->data, expected_ssid, strlen (expected_ssid)) == 0, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SSID); - - ASSERT (nm_setting_wireless_get_bssid (s_wireless) == NULL, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_BSSID); - - tmp = nm_setting_wireless_get_mode (s_wireless); - ASSERT (tmp != NULL, - "wifi-open-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MODE); - ASSERT (strcmp (tmp, expected_mode) == 0, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MODE); - - ASSERT (nm_setting_wireless_get_security (s_wireless) == NULL, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - - ASSERT (nm_setting_wireless_get_channel (s_wireless) == expected_channel, - "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_CHANNEL); - /* ===== IPv4 SETTING ===== */ s_ip4 = nm_connection_get_setting_ip4_config (connection); ASSERT (s_ip4 != NULL, - "wifi-open-verify-ip4", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN, + "aliases-good-verify-ip4", "failed to verify %s: missing %s setting", + TEST_IFCFG_ALIASES_GOOD, NM_SETTING_IP4_CONFIG_SETTING_NAME); /* Method */ tmp = nm_setting_ip4_config_get_method (s_ip4); - ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, - "wifi-open-verify-ip4", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN, + ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_MANUAL) == 0, + "aliases-good-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_ALIASES_GOOD, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_METHOD); - g_free (unmanaged); + ASSERT (nm_setting_ip4_config_get_num_addresses (s_ip4) == expected_num_addresses, + "aliases-good-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_ALIASES_GOOD, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_ADDRESSES); + + /* Addresses */ + for (i = 0; i < expected_num_addresses; i++) { + NMIP4Address *ip4_addr; + char buf[INET_ADDRSTRLEN]; + struct in_addr addr; + + ip4_addr = nm_setting_ip4_config_get_address (s_ip4, i); + ASSERT (ip4_addr, + "aliases-good-verify-ip4", "failed to verify %s: missing IP4 address #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + + addr.s_addr = nm_ip4_address_get_address (ip4_addr); + ASSERT (inet_ntop (AF_INET, &addr, buf, sizeof (buf)) > 0, + "aliases-good-verify-ip4", "failed to verify %s: couldn't convert IP address #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + + for (j = 0; j < expected_num_addresses; j++) { + if (!g_strcmp0 (buf, expected_address[j])) + break; + } + + ASSERT (j < expected_num_addresses, + "aliases-good-verify-ip4", "failed to verify %s: unexpected IP4 address #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + + ASSERT (nm_ip4_address_get_prefix (ip4_addr) == expected_prefix, + "aliases-good-verify-ip4", "failed to verify %s: unexpected IP4 address prefix #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + + if (expected_gateway[j]) { + ASSERT (inet_pton (AF_INET, expected_gateway[j], &addr) > 0, + "aliases-good-verify-ip4", "failed to verify %s: couldn't convert IP address gateway #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + } else + addr.s_addr = 0; + ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr.s_addr, + "aliases-good-verify-ip4", "failed to verify %s: unexpected IP4 address gateway #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + + ASSERT (g_strcmp0 (NM_UTILS_PRIVATE_CALL (nm_setting_ip4_config_get_address_label (s_ip4, i)), expected_label[j]) == 0, + "aliases-good-verify-ip4", "failed to verify %s: unexpected IP4 address label #%d", + TEST_IFCFG_ALIASES_GOOD, + i); + + expected_address[j] = NULL; + expected_gateway[j] = NULL; + expected_label[j] = NULL; + } + + for (i = 0; i < expected_num_addresses; i++) { + ASSERT (expected_address[i] == NULL, + "aliases-good-verify-ip4", "failed to verify %s: did not find IP4 address %s", + TEST_IFCFG_ALIASES_GOOD, + expected_address[i]); + } + g_free (keyfile); g_free (routefile); g_free (route6file); g_object_unref (connection); } -#define TEST_IFCFG_WIFI_OPEN_AUTO TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-auto" - static void -test_read_wifi_open_auto (void) +test_read_wired_aliases_bad (const char *base, const char *expected_id) { NMConnection *connection; NMSettingConnection *s_con; - NMSettingWireless *s_wireless; + NMSettingIP4Config *s_ip4; char *unmanaged = NULL; char *keyfile = NULL; char *routefile = NULL; @@ -3303,12 +3024,16 @@ test_read_wifi_open_auto (void) gboolean ignore_error = FALSE; GError *error = NULL; const char *tmp; - const char *expected_id = "System blahblah (test-wifi-open-auto)"; - const char *expected_mode = "infrastructure"; + int expected_num_addresses = 1, expected_prefix = 24; + const char *expected_address = "192.168.1.5"; + const char *expected_label = NULL; + const char *expected_gateway = "192.168.1.1"; + NMIP4Address *ip4_addr; + struct in_addr addr; - connection = connection_from_file (TEST_IFCFG_WIFI_OPEN_AUTO, + connection = connection_from_file (base, NULL, - TYPE_WIRELESS, + TYPE_ETHERNET, NULL, &unmanaged, &keyfile, @@ -3316,68 +3041,120 @@ test_read_wifi_open_auto (void) &route6file, &error, &ignore_error); + g_test_assert_expected_messages (); ASSERT (connection != NULL, - "wifi-open-auto-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN_AUTO, error->message); + "aliases-bad-read", "failed to read %s: %s", base, error->message); ASSERT (nm_connection_verify (connection, &error), - "wifi-open-auto-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN_AUTO, error->message); + "aliases-bad-verify", "failed to verify %s: %s", base, error->message); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wifi-open-auto-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN_AUTO, + "aliases-bad-verify-connection", "failed to verify %s: missing %s setting", + base, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ tmp = nm_setting_connection_get_id (s_con); ASSERT (tmp != NULL, - "wifi-open-auto-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN_AUTO, + "aliases-bad-verify-connection", "failed to verify %s: missing %s / %s key", + base, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); ASSERT (strcmp (tmp, expected_id) == 0, - "wifi-open-auto-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN_AUTO, + "aliases-bad-verify-connection", "failed to verify %s: unexpected %s / %s key value", + base, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); - /* ===== WIRELESS SETTING ===== */ + /* ===== IPv4 SETTING ===== */ - s_wireless = nm_connection_get_setting_wireless (connection); - ASSERT (s_wireless != NULL, - "wifi-open-auto-verify-wireless", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN_AUTO, - NM_SETTING_WIRELESS_SETTING_NAME); + s_ip4 = nm_connection_get_setting_ip4_config (connection); + ASSERT (s_ip4 != NULL, + "aliases-bad-verify-ip4", "failed to verify %s: missing %s setting", + base, + NM_SETTING_IP4_CONFIG_SETTING_NAME); - tmp = nm_setting_wireless_get_mode (s_wireless); - ASSERT (tmp != NULL, - "wifi-open-auto-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN_AUTO, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MODE); - ASSERT (strcmp (tmp, expected_mode) == 0, - "wifi-open-auto-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN_AUTO, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_MODE); + /* Method */ + tmp = nm_setting_ip4_config_get_method (s_ip4); + ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_MANUAL) == 0, + "aliases-bad-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + base, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_METHOD); + + ASSERT (nm_setting_ip4_config_get_num_addresses (s_ip4) == expected_num_addresses, + "aliases-bad-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + base, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_ADDRESSES); + + /* Addresses */ + ip4_addr = nm_setting_ip4_config_get_address (s_ip4, 0); + ASSERT (ip4_addr, + "aliases-bad-verify-ip4", "failed to verify %s: missing IP4 address", + base); + + ASSERT (inet_pton (AF_INET, expected_address, &addr) > 0, + "aliases-bad-verify-ip4", "failed to verify %s: couldn't convert IP address", + base); + ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, + "aliases-bad-verify-ip4", "failed to verify %s: unexpected IP4 address", + base); + + ASSERT (nm_ip4_address_get_prefix (ip4_addr) == expected_prefix, + "aliases-bad-verify-ip4", "failed to verify %s: unexpected IP4 address prefix", + base); + + ASSERT (inet_pton (AF_INET, expected_gateway, &addr) > 0, + "aliases-bad-verify-ip4", "failed to verify %s: couldn't convert IP address gateway", + base); + ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr.s_addr, + "aliases-bad-verify-ip4", "failed to verify %s: unexpected IP4 address gateway", + base); + + ASSERT (g_strcmp0 (NM_UTILS_PRIVATE_CALL (nm_setting_ip4_config_get_address_label (s_ip4, 0)), expected_label) == 0, + "aliases-bad-verify-ip4", "failed to verify %s: unexpected IP4 address label", + base); - g_free (unmanaged); g_free (keyfile); g_free (routefile); g_free (route6file); g_object_unref (connection); } -#define TEST_IFCFG_WIFI_OPEN_SSID_HEX TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-hex" +#define TEST_IFCFG_ALIASES_BAD_1 TEST_IFCFG_DIR"/network-scripts/ifcfg-aliasem1" static void -test_read_wifi_open_ssid_hex (void) +test_read_wired_aliases_bad_1 (void) +{ + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*aliasem1:1*has no DEVICE*"); + test_read_wired_aliases_bad (TEST_IFCFG_ALIASES_BAD_1, "System aliasem1"); +} + +#define TEST_IFCFG_ALIASES_BAD_2 TEST_IFCFG_DIR"/network-scripts/ifcfg-aliasem2" + +static void +test_read_wired_aliases_bad_2 (void) +{ + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*aliasem2:1*has invalid DEVICE*"); + test_read_wired_aliases_bad (TEST_IFCFG_ALIASES_BAD_2, "System aliasem2"); +} + +#define TEST_IFCFG_WIFI_OPEN TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open" + +static void +test_read_wifi_open (void) { NMConnection *connection; NMSettingConnection *s_con; NMSettingWireless *s_wireless; + NMSettingWirelessSecurity *s_wsec; + NMSettingIP4Config *s_ip4; char *unmanaged = NULL; char *keyfile = NULL; char *routefile = NULL; @@ -3386,10 +3163,14 @@ test_read_wifi_open_ssid_hex (void) GError *error = NULL; const char *tmp; const GByteArray *array; - const char *expected_id = "System blahblah (test-wifi-open-ssid-hex)"; + char expected_mac_address[ETH_ALEN] = { 0x00, 0x16, 0x41, 0x11, 0x22, 0x33 }; + const char *expected_id = "System blahblah (test-wifi-open)"; + guint64 expected_timestamp = 0; const char *expected_ssid = "blahblah"; + const char *expected_mode = "infrastructure"; + const guint32 expected_channel = 1; - connection = connection_from_file (TEST_IFCFG_WIFI_OPEN_SSID_HEX, + connection = connection_from_file (TEST_IFCFG_WIFI_OPEN, NULL, TYPE_WIRELESS, NULL, @@ -3400,99 +3181,155 @@ test_read_wifi_open_ssid_hex (void) &error, &ignore_error); ASSERT (connection != NULL, - "wifi-open-ssid-hex-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_HEX, error->message); + "wifi-open-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN, error->message); ASSERT (nm_connection_verify (connection, &error), - "wifi-open-ssid-hex-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_HEX, error->message); + "wifi-open-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN, error->message); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wifi-open-ssid-hex-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ tmp = nm_setting_connection_get_id (s_con); ASSERT (tmp != NULL, - "wifi-open-ssid-hex-verify-connection", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); ASSERT (strcmp (tmp, expected_id) == 0, - "wifi-open-ssid-hex-verify-connection", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID); + /* UUID can't be tested if the ifcfg does not contain the UUID key, because + * the UUID is generated on the full path of the ifcfg file, which can change + * depending on where the tests are run. + */ + + /* Timestamp */ + ASSERT (nm_setting_connection_get_timestamp (s_con) == expected_timestamp, + "wifi-open-verify-connection", "failed to verify %s: unexpected %s /%s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_CONNECTION_SETTING_NAME, + NM_SETTING_CONNECTION_TIMESTAMP); + + /* Autoconnect */ + ASSERT (nm_setting_connection_get_autoconnect (s_con) == TRUE, + "wifi-open-verify-connection", "failed to verify %s: unexpected %s /%s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_CONNECTION_SETTING_NAME, + NM_SETTING_CONNECTION_AUTOCONNECT); + /* ===== WIRELESS SETTING ===== */ s_wireless = nm_connection_get_setting_wireless (connection); ASSERT (s_wireless != NULL, - "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-wireless", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_WIRELESS_SETTING_NAME); - /* SSID */ + /* MAC address */ + array = nm_setting_wireless_get_mac_address (s_wireless); + ASSERT (array != NULL, + "wifi-open-verify-wireless", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MAC_ADDRESS); + ASSERT (array->len == ETH_ALEN, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value length", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MAC_ADDRESS); + ASSERT (memcmp (array->data, &expected_mac_address[0], sizeof (expected_mac_address)) == 0, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MAC_ADDRESS); + + ASSERT (nm_setting_wireless_get_mtu (s_wireless) == 0, + "wifi-open-verify-wired", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MTU); + array = nm_setting_wireless_get_ssid (s_wireless); ASSERT (array != NULL, - "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-wireless", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_SSID); ASSERT (array->len == strlen (expected_ssid), - "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: unexpected %s / %s key value length", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value length", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_SSID); ASSERT (memcmp (array->data, expected_ssid, strlen (expected_ssid)) == 0, - "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_OPEN_SSID_HEX, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_SSID); + + ASSERT (nm_setting_wireless_get_bssid (s_wireless) == NULL, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_BSSID); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); - g_object_unref (connection); -} + tmp = nm_setting_wireless_get_mode (s_wireless); + ASSERT (tmp != NULL, + "wifi-open-verify-wireless", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MODE); + ASSERT (strcmp (tmp, expected_mode) == 0, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MODE); -static void -test_read_wifi_open_ssid_bad (const char *file, const char *test) -{ - NMConnection *connection; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; - GError *error = NULL; + ASSERT (nm_setting_wireless_get_channel (s_wireless) == expected_channel, + "wifi-open-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_CHANNEL); - connection = connection_from_file (file, - NULL, - TYPE_WIRELESS, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection == NULL, test, "unexpected success reading %s", file); - g_clear_error (&error); + /* ===== WiFi SECURITY SETTING ===== */ + s_wsec = nm_connection_get_setting_wireless_security (connection); + g_assert (s_wsec == NULL); + + /* ===== IPv4 SETTING ===== */ + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + ASSERT (s_ip4 != NULL, + "wifi-open-verify-ip4", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_IP4_CONFIG_SETTING_NAME); + + /* Method */ + tmp = nm_setting_ip4_config_get_method (s_ip4); + ASSERT (strcmp (tmp, NM_SETTING_IP4_CONFIG_METHOD_AUTO) == 0, + "wifi-open-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_METHOD); g_free (unmanaged); g_free (keyfile); g_free (routefile); g_free (route6file); + g_object_unref (connection); } -#define TEST_IFCFG_WIFI_OPEN_SSID_QUOTED TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-quoted" +#define TEST_IFCFG_WIFI_OPEN_AUTO TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-auto" static void -test_read_wifi_open_ssid_quoted (void) +test_read_wifi_open_auto (void) { NMConnection *connection; NMSettingConnection *s_con; @@ -3504,11 +3341,10 @@ test_read_wifi_open_ssid_quoted (void) gboolean ignore_error = FALSE; GError *error = NULL; const char *tmp; - const GByteArray *array; - const char *expected_id = "System foo\"bar\\ (test-wifi-open-ssid-quoted)"; - const char *expected_ssid = "foo\"bar\\"; + const char *expected_id = "System blahblah (test-wifi-open-auto)"; + const char *expected_mode = "infrastructure"; - connection = connection_from_file (TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, + connection = connection_from_file (TEST_IFCFG_WIFI_OPEN_AUTO, NULL, TYPE_WIRELESS, NULL, @@ -3519,17 +3355,219 @@ test_read_wifi_open_ssid_quoted (void) &error, &ignore_error); ASSERT (connection != NULL, - "wifi-open-ssid-quoted-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, error->message); + "wifi-open-auto-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN_AUTO, error->message); ASSERT (nm_connection_verify (connection, &error), - "wifi-open-ssid-quoted-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, error->message); + "wifi-open-auto-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN_AUTO, error->message); /* ===== CONNECTION SETTING ===== */ s_con = nm_connection_get_setting_connection (connection); ASSERT (s_con != NULL, - "wifi-open-ssid-quoted-verify-connection", "failed to verify %s: missing %s setting", - TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, + "wifi-open-auto-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN_AUTO, + NM_SETTING_CONNECTION_SETTING_NAME); + + /* ID */ + tmp = nm_setting_connection_get_id (s_con); + ASSERT (tmp != NULL, + "wifi-open-auto-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN_AUTO, + NM_SETTING_CONNECTION_SETTING_NAME, + NM_SETTING_CONNECTION_ID); + ASSERT (strcmp (tmp, expected_id) == 0, + "wifi-open-auto-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN_AUTO, + NM_SETTING_CONNECTION_SETTING_NAME, + NM_SETTING_CONNECTION_ID); + + /* ===== WIRELESS SETTING ===== */ + + s_wireless = nm_connection_get_setting_wireless (connection); + ASSERT (s_wireless != NULL, + "wifi-open-auto-verify-wireless", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN_AUTO, + NM_SETTING_WIRELESS_SETTING_NAME); + + tmp = nm_setting_wireless_get_mode (s_wireless); + ASSERT (tmp != NULL, + "wifi-open-auto-verify-wireless", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN_AUTO, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MODE); + ASSERT (strcmp (tmp, expected_mode) == 0, + "wifi-open-auto-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN_AUTO, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MODE); + + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); +} + +#define TEST_IFCFG_WIFI_OPEN_SSID_HEX TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-hex" + +static void +test_read_wifi_open_ssid_hex (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWireless *s_wireless; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GError *error = NULL; + const char *tmp; + const GByteArray *array; + const char *expected_id = "System blahblah (test-wifi-open-ssid-hex)"; + const char *expected_ssid = "blahblah"; + + connection = connection_from_file (TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + ASSERT (connection != NULL, + "wifi-open-ssid-hex-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_HEX, error->message); + + ASSERT (nm_connection_verify (connection, &error), + "wifi-open-ssid-hex-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_HEX, error->message); + + /* ===== CONNECTION SETTING ===== */ + + s_con = nm_connection_get_setting_connection (connection); + ASSERT (s_con != NULL, + "wifi-open-ssid-hex-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_CONNECTION_SETTING_NAME); + + /* ID */ + tmp = nm_setting_connection_get_id (s_con); + ASSERT (tmp != NULL, + "wifi-open-ssid-hex-verify-connection", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_CONNECTION_SETTING_NAME, + NM_SETTING_CONNECTION_ID); + ASSERT (strcmp (tmp, expected_id) == 0, + "wifi-open-ssid-hex-verify-connection", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_CONNECTION_SETTING_NAME, + NM_SETTING_CONNECTION_ID); + + /* ===== WIRELESS SETTING ===== */ + + s_wireless = nm_connection_get_setting_wireless (connection); + ASSERT (s_wireless != NULL, + "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_WIRELESS_SETTING_NAME); + + /* SSID */ + array = nm_setting_wireless_get_ssid (s_wireless); + ASSERT (array != NULL, + "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: missing %s / %s key", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_SSID); + ASSERT (array->len == strlen (expected_ssid), + "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: unexpected %s / %s key value length", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_SSID); + ASSERT (memcmp (array->data, expected_ssid, strlen (expected_ssid)) == 0, + "wifi-open-ssid-hex-verify-wireless", "failed to verify %s: unexpected %s / %s key value", + TEST_IFCFG_WIFI_OPEN_SSID_HEX, + NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_SSID); + + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); +} + +static void +test_read_wifi_open_ssid_bad (const char *file, const char *test) +{ + NMConnection *connection; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GError *error = NULL; + + connection = connection_from_file (file, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + ASSERT (connection == NULL, test, "unexpected success reading %s", file); + g_clear_error (&error); + + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); +} + +#define TEST_IFCFG_WIFI_OPEN_SSID_QUOTED TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-quoted" + +static void +test_read_wifi_open_ssid_quoted (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWireless *s_wireless; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GError *error = NULL; + const char *tmp; + const GByteArray *array; + const char *expected_id = "System foo\"bar\\ (test-wifi-open-ssid-quoted)"; + const char *expected_ssid = "foo\"bar\\"; + + connection = connection_from_file (TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + ASSERT (connection != NULL, + "wifi-open-ssid-quoted-read", "failed to read %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, error->message); + + ASSERT (nm_connection_verify (connection, &error), + "wifi-open-ssid-quoted-verify", "failed to verify %s: %s", TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, error->message); + + /* ===== CONNECTION SETTING ===== */ + + s_con = nm_connection_get_setting_connection (connection); + ASSERT (s_con != NULL, + "wifi-open-ssid-quoted-verify-connection", "failed to verify %s: missing %s setting", + TEST_IFCFG_WIFI_OPEN_SSID_QUOTED, NM_SETTING_CONNECTION_SETTING_NAME); /* ID */ @@ -3739,20 +3777,6 @@ test_read_wifi_wep (void) NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_CHANNEL); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wep-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WEP, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wep-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WEP, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -3877,7 +3901,7 @@ test_read_wifi_wep_adhoc (void) const char *expected_ssid = "blahblah"; const char *expected_mode = "adhoc"; const char *expected_wep_key0 = "0123456789abcdef0123456789"; - struct in_addr addr; + guint32 addr; const char *expected_dns1 = "4.2.2.1"; const char *expected_dns2 = "4.2.2.2"; @@ -3983,20 +4007,6 @@ test_read_wifi_wep_adhoc (void) NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_CHANNEL); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wep-adhoc-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WEP_ADHOC, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wep-adhoc-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WEP_ADHOC, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -4099,7 +4109,7 @@ test_read_wifi_wep_adhoc (void) TEST_IFCFG_WIFI_WEP_ADHOC, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr.s_addr, + ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr, "wifi-wep-adhoc-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", TEST_IFCFG_WIFI_WEP_ADHOC, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -4110,7 +4120,7 @@ test_read_wifi_wep_adhoc (void) TEST_IFCFG_WIFI_WEP_ADHOC, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr.s_addr, + ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr, "wifi-wep-adhoc-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", TEST_IFCFG_WIFI_WEP_ADHOC, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -4176,20 +4186,6 @@ test_read_wifi_wep_passphrase (void) TEST_IFCFG_WIFI_WEP_PASSPHRASE, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wep-passphrase-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WEP_PASSPHRASE, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wep-passphrase-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WEP_PASSPHRASE, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -4314,19 +4310,6 @@ test_read_wifi_wep_40_ascii (void) TEST_IFCFG_WIFI_WEP_40_ASCII, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wep-40-ascii-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WEP_40_ASCII, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wep-40-ascii-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WEP_40_ASCII, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -4451,19 +4434,6 @@ test_read_wifi_wep_104_ascii (void) TEST_IFCFG_WIFI_WEP_104_ASCII, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wep-104-ascii-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WEP_104_ASCII, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wep-104-ascii-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WEP_104_ASCII, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -4602,21 +4572,7 @@ test_read_wifi_leap (void) TEST_IFCFG_WIFI_LEAP, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-leap-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_LEAP, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-leap-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_LEAP, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - - - /* ===== WIRELESS SECURITY SETTING ===== */ + /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); ASSERT (s_wsec != NULL, @@ -4716,8 +4672,6 @@ test_read_wifi_leap_secret_flags (const char *file, NMSettingSecretFlags expecte s_wifi = nm_connection_get_setting_wireless (connection); g_assert (s_wifi); - g_assert (g_strcmp0 (nm_setting_wireless_get_security (s_wifi), NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); g_assert (s_wsec); @@ -4906,19 +4860,6 @@ test_read_wifi_wpa_psk (void) NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_CHANNEL); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wpa-psk-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WPA_PSK, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wpa-psk-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WPA_PSK, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -5119,19 +5060,6 @@ test_read_wifi_wpa_psk_2 (void) TEST_IFCFG_WIFI_WPA_PSK_2, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wpa-psk-2-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WPA_PSK_2, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wpa-psk-2-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WPA_PSK_2, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -5224,19 +5152,6 @@ test_read_wifi_wpa_psk_unquoted (void) TEST_IFCFG_WIFI_WPA_PSK_UNQUOTED, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wpa-psk-unquoted-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WPA_PSK_UNQUOTED, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wpa-psk-unquoted-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WPA_PSK_UNQUOTED, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -5384,19 +5299,6 @@ test_read_wifi_wpa_psk_adhoc (void) NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_MODE); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wpa-psk-adhoc-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WPA_PSK_ADHOC, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wpa-psk-adhoc-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WPA_PSK_ADHOC, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -5580,19 +5482,6 @@ test_read_wifi_wpa_psk_hex (void) NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_SSID); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wpa-psk-hex-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WPA_PSK_HEX, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wpa-psk-hex-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WPA_PSK_HEX, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -5754,21 +5643,15 @@ test_read_wifi_wpa_eap_tls (void) NM_SETTING_802_1X_IDENTITY); /* CA Cert */ - verify_cert_or_key (CK_CA_CERT, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, NULL, - TEST_IFCFG_WIFI_WPA_EAP_TLS, - "wifi-wpa-eap-tls-verify-8021x", NM_SETTING_802_1X_CA_CERT); /* Client Cert */ - verify_cert_or_key (CK_CLIENT_CERT, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, NULL, - TEST_IFCFG_WIFI_WPA_EAP_TLS, - "wifi-wpa-eap-tls-verify-8021x", NM_SETTING_802_1X_CLIENT_CERT); /* Private Key Password */ @@ -5786,12 +5669,9 @@ test_read_wifi_wpa_eap_tls (void) NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD); /* Private key */ - verify_cert_or_key (CK_PRIV_KEY, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, expected_privkey_password, - TEST_IFCFG_WIFI_WPA_EAP_TLS, - "wifi-wpa-eap-tls-verify-8021x", NM_SETTING_802_1X_PRIVATE_KEY); g_free (unmanaged); @@ -5891,12 +5771,9 @@ test_read_wifi_wpa_eap_ttls_tls (void) NM_SETTING_802_1X_EAP); /* CA Cert */ - verify_cert_or_key (CK_CA_CERT, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TTLS_TLS_CA_CERT, NULL, - TEST_IFCFG_WIFI_WPA_EAP_TTLS_TLS, - "wifi-wpa-eap-ttls-tls-verify-8021x", NM_SETTING_802_1X_CA_CERT); /* Inner auth method */ @@ -5913,21 +5790,15 @@ test_read_wifi_wpa_eap_ttls_tls (void) NM_SETTING_802_1X_PHASE2_AUTHEAP); /* Inner CA Cert */ - verify_cert_or_key (CK_CA_CERT, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, NULL, - TEST_IFCFG_WIFI_WPA_EAP_TTLS_TLS, - "wifi-wpa-eap-ttls-tls-verify-8021x", NM_SETTING_802_1X_PHASE2_CA_CERT); /* Inner Client Cert */ - verify_cert_or_key (CK_CLIENT_CERT, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, NULL, - TEST_IFCFG_WIFI_WPA_EAP_TTLS_TLS, - "wifi-wpa-eap-ttls-tls-verify-8021x", NM_SETTING_802_1X_PHASE2_CLIENT_CERT); /* Inner Private Key Password */ @@ -5945,12 +5816,9 @@ test_read_wifi_wpa_eap_ttls_tls (void) NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD); /* Inner private key */ - verify_cert_or_key (CK_PRIV_KEY, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, expected_privkey_password, - TEST_IFCFG_WIFI_WPA_EAP_TTLS_TLS, - "wifi-wpa-eap-ttls-tls-verify-8021x", NM_SETTING_802_1X_PHASE2_PRIVATE_KEY); /* Identity */ @@ -6011,8 +5879,6 @@ test_read_wifi_dynamic_wep_leap (void) s_wifi = nm_connection_get_setting_wireless (connection); g_assert (s_wifi); - g_assert_cmpstr (nm_setting_wireless_get_security (s_wifi), ==, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); - /* ===== WiFi SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); g_assert (s_wsec); @@ -6159,12 +6025,9 @@ test_read_wifi_wep_eap_ttls_chap (void) NM_SETTING_802_1X_EAP); /* CA Cert */ - verify_cert_or_key (CK_CA_CERT, - s_8021x, + verify_cert_or_key (s_8021x, TEST_IFCFG_WIFI_WEP_EAP_TTLS_CHAP_CA_CERT, NULL, - TEST_IFCFG_WIFI_WEP_EAP_TTLS_CHAP, - "wifi-wep-eap-ttls-chap-verify-8021x", NM_SETTING_802_1X_CA_CERT); /* Inner auth method */ @@ -6213,6 +6076,121 @@ test_read_wifi_wep_eap_ttls_chap (void) g_object_unref (connection); } +static void +test_read_wifi_hidden (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + gboolean success; + GError *error = NULL; + + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-hidden", + NULL, TYPE_WIRELESS, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRELESS_SETTING_NAME); + + s_wifi = nm_connection_get_setting_wireless (connection); + g_assert (s_wifi); + g_assert (nm_setting_wireless_get_hidden (s_wifi) == TRUE); + + g_object_unref (connection); +} + +static void +test_write_wifi_hidden (void) +{ + NMConnection *connection, *reread; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + char *uuid, *testfile = NULL, *val; + gboolean success; + GError *error = NULL; + shvarFile *f; + GByteArray *ssid; + const unsigned char ssid_data[] = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x53, 0x49, 0x44 }; + + connection = nm_connection_new (); + + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Test Write WiFi Hidden", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + + /* Wifi setting */ + s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + + ssid = g_byte_array_sized_new (sizeof (ssid_data)); + g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); + + g_object_set (s_wifi, + NM_SETTING_WIRELESS_SSID, ssid, + NM_SETTING_WIRELESS_MODE, "infrastructure", + NM_SETTING_WIRELESS_HIDDEN, TRUE, + NULL); + + g_byte_array_free (ssid, TRUE); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + g_assert_no_error (error); + g_assert (success); + + f = svOpenFile (testfile, &error); + g_assert_no_error (error); + g_assert (f); + + /* re-read the file to check that what key was written. */ + val = svGetValue (f, "SSID_HIDDEN", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, "yes"); + g_free (val); + svCloseFile (f); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, NULL, TYPE_WIRELESS, NULL, + NULL, NULL, NULL, NULL, &error, NULL); + unlink (testfile); + g_assert_no_error (error); + g_assert (reread); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); + + g_free (testfile); + g_object_unref (connection); + g_object_unref (reread); +} + #define TEST_IFCFG_WIRED_QETH_STATIC TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-qeth-static" static void @@ -6531,20 +6509,6 @@ test_read_wifi_wep_no_keys (void) TEST_IFCFG_WIFI_WEP_NO_KEYS, NM_SETTING_WIRELESS_SETTING_NAME); - /* Security */ - tmp = nm_setting_wireless_get_security (s_wireless); - ASSERT (tmp != NULL, - "wifi-wep-no-keys-verify-wireless", "failed to verify %s: missing %s / %s key", - TEST_IFCFG_WIFI_WEP_NO_KEYS, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - ASSERT (strcmp (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0, - "wifi-wep-no-keys-verify-wireless", "failed to verify %s: unexpected %s / %s key value", - TEST_IFCFG_WIFI_WEP_NO_KEYS, - NM_SETTING_WIRELESS_SETTING_NAME, - NM_SETTING_WIRELESS_SEC); - - /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -6677,7 +6641,6 @@ test_read_wifi_wep_agent_keys (void) char *route6file = NULL; gboolean ignore_error = FALSE; GError *error = NULL; - const char *tmp; NMWepKeyType key_type; gboolean success; NMSettingSecretFlags flags; @@ -6705,8 +6668,6 @@ test_read_wifi_wep_agent_keys (void) /* ===== WIRELESS SETTING ===== */ s_wifi = nm_connection_get_setting_wireless (connection); g_assert (s_wifi); - tmp = nm_setting_wireless_get_security (s_wifi); - g_assert (g_strcmp0 (tmp, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0); /* ===== WIRELESS SECURITY SETTING ===== */ s_wsec = nm_connection_get_setting_wireless_security (connection); @@ -6782,14 +6743,9 @@ test_write_wired_static (void) inet_pton (AF_INET6, "cafe:ffff:eeee:dddd:cccc:bbbb:aaaa:feed", &dns6_2); connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-static-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-static-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -6803,9 +6759,6 @@ test_write_wired_static (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-static-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); mac = g_byte_array_sized_new (sizeof (tmpmac)); @@ -6819,9 +6772,6 @@ test_write_wired_static (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-static-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -6851,9 +6801,6 @@ test_write_wired_static (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-static-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -6921,6 +6868,9 @@ test_write_wired_static (void) ASSERT (testfile != NULL, "wired-static-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -6986,14 +6936,9 @@ test_write_wired_dhcp (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-dhcp-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -7007,16 +6952,10 @@ test_write_wired_dhcp (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -7033,9 +6972,6 @@ test_write_wired_dhcp (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -7055,6 +6991,9 @@ test_write_wired_dhcp (void) ASSERT (testfile != NULL, "wired-dhcp-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -7086,6 +7025,118 @@ test_write_wired_dhcp (void) g_object_unref (reread); } +static void +test_write_wired_dhcp_plus_ip (void) +{ + NMConnection *connection, *reread; + char *written = NULL; + GError *error = NULL; + gboolean success = FALSE; + + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-dhcp-plus-ip", + NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection != NULL); + + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &written, + &error); + g_assert (success); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (written, NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + unlink (written); + g_free (written); + + g_assert_no_error (error); + g_assert (reread != NULL); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + g_object_unref (connection); + g_object_unref (reread); +} + +static void +test_read_write_wired_dhcp_send_hostname (void) +{ + NMConnection *connection, *reread; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + const char * dhcp_hostname = "kamil-patka"; + char *written = NULL; + GError *error = NULL; + gboolean success = FALSE; + + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-dhcp-send-hostname", + NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection != NULL); + + /* Check dhcp-hostname and dhcp-send-hostname */ + s_ip4 = nm_connection_get_setting_ip4_config (connection); + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip4); + g_assert (s_ip6); + g_assert (nm_setting_ip4_config_get_dhcp_send_hostname (s_ip4) == TRUE); + g_assert_cmpstr (nm_setting_ip4_config_get_dhcp_hostname (s_ip4), ==, "svata-pulec"); + g_assert_cmpstr (nm_setting_ip6_config_get_dhcp_hostname (s_ip6), ==, "svata-pulec"); + + /* Set dhcp-send-hostname=false dhcp-hostname="kamil-patka" and write the connection. */ + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME, FALSE, NULL); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME, dhcp_hostname, NULL); + g_object_set (s_ip6, NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME, dhcp_hostname, NULL); + + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &written, + &error); + g_assert (success); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (written, NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); + unlink (written); + g_free (written); + + g_assert_no_error (error); + g_assert (reread != NULL); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + /* Check dhcp-hostname and dhcp-send-hostname from the re-read connection. */ + s_ip4 = nm_connection_get_setting_ip4_config (reread); + s_ip6 = nm_connection_get_setting_ip6_config (reread); + g_assert (s_ip4); + g_assert (s_ip6); + g_assert (nm_setting_ip4_config_get_dhcp_send_hostname (s_ip4) == FALSE); + g_assert_cmpstr (nm_setting_ip4_config_get_dhcp_hostname (s_ip4), ==, dhcp_hostname); + g_assert_cmpstr (nm_setting_ip6_config_get_dhcp_hostname (s_ip6), ==, dhcp_hostname); + + g_object_unref (connection); + g_object_unref (reread); +} + static void test_write_wired_static_ip6_only (void) { @@ -7114,14 +7165,9 @@ test_write_wired_static_ip6_only (void) inet_pton (AF_INET6, "fade:0102:0103::face", &dns6); connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-static-ip6-only-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-static-ip6-only-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -7135,9 +7181,6 @@ test_write_wired_static_ip6_only (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-static-ip6-only-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); mac = g_byte_array_sized_new (sizeof (tmpmac)); @@ -7147,9 +7190,6 @@ test_write_wired_static_ip6_only (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-static-ip6-only-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -7158,9 +7198,6 @@ test_write_wired_static_ip6_only (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-static-ip6-only-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -7193,6 +7230,9 @@ test_write_wired_static_ip6_only (void) ASSERT (testfile != NULL, "wired-static-ip6-only-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -7236,7 +7276,7 @@ test_write_wired_static_ip6_only (void) * That way, the gateway actually defaults to "::". */ static void -test_write_wired_static_ip6_only_gw (const char *gateway_addr) +test_write_wired_static_ip6_only_gw (gconstpointer user_data) { NMConnection *connection; NMConnection *reread; @@ -7259,12 +7299,11 @@ test_write_wired_static_ip6_only_gw (const char *gateway_addr) char s_gateway6[INET6_ADDRSTRLEN] = { 0 }; struct in6_addr gateway6_autovar; const struct in6_addr *gateway6 = NULL; - char *unmanaged = NULL, *keyfile = NULL, *routefile = NULL, *route6file = NULL; /* parsing the input argument and set the struct in6_addr "gateway6" to * the gateway address. NULL means "do not set the gateway explicitly". */ - if (gateway_addr) { - g_assert_cmpint (inet_pton (AF_INET6, gateway_addr, &gateway6_autovar), ==, 1); + if (user_data) { + g_assert_cmpint (inet_pton (AF_INET6, user_data, &gateway6_autovar), ==, 1); gateway6 = &gateway6_autovar; } @@ -7338,22 +7377,27 @@ test_write_wired_static_ip6_only_gw (const char *gateway_addr) g_assert (success); g_assert (testfile); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, TYPE_ETHERNET, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, + NULL, NULL, NULL, + NULL, NULL, &error, &ignore_error); + g_assert_no_error (error); + g_assert (reread); + g_assert (nm_connection_verify (reread, &error)); + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); { /* re-read the file to check that what key was written. */ - shvarFile *ifcfg = svNewFile (testfile); + shvarFile *ifcfg = svOpenFile (testfile, &error); + g_assert_no_error (error); g_assert (ifcfg); written_ifcfg_gateway = svGetValue (ifcfg, "IPV6_DEFAULTGW", FALSE); svCloseFile (ifcfg); @@ -7361,17 +7405,6 @@ test_write_wired_static_ip6_only_gw (const char *gateway_addr) unlink (testfile); - g_assert_no_error (error); - g_assert (reread); - - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); - - g_assert (nm_connection_verify (reread, &error)); - g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); - /* access the gateway from the loaded connection. */ s_ip6 = nm_connection_get_setting_ip6_config (reread); g_assert (s_ip6 && nm_setting_ip6_config_get_num_addresses (s_ip6)==1); @@ -7502,6 +7535,9 @@ test_read_write_static_routes_legacy (void) ASSERT (testfile != NULL, "read-write-static-routes-legacy-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -7578,14 +7614,9 @@ test_write_wired_static_routes (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-static-routes-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-static-routes-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -7599,9 +7630,6 @@ test_write_wired_static_routes (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-static-routes-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); mac = g_byte_array_sized_new (sizeof (tmpmac)); @@ -7615,9 +7643,6 @@ test_write_wired_static_routes (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-static-routes-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -7662,9 +7687,6 @@ test_write_wired_static_routes (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -7688,6 +7710,9 @@ test_write_wired_static_routes (void) ASSERT (testfile != NULL, "wired-static-routes-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -7744,14 +7769,9 @@ test_write_wired_dhcp_8021x_peap_mschapv2 (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -7765,25 +7785,16 @@ test_write_wired_dhcp_8021x_peap_mschapv2 (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -7793,9 +7804,6 @@ test_write_wired_dhcp_8021x_peap_mschapv2 (void) /* 802.1x setting */ s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, - "wired-dhcp-8021x-peap-mschapv2write", "failed to allocate new %s setting", - NM_SETTING_802_1X_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_8021x)); g_object_set (s_8021x, @@ -7834,6 +7842,9 @@ test_write_wired_dhcp_8021x_peap_mschapv2 (void) ASSERT (testfile != NULL, "wired-dhcp-8021x-peap-mschapv2write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -7879,10 +7890,8 @@ file_to_byte_array (const char *filename) if (g_file_get_contents (filename, &contents, &length, NULL)) { array = g_byte_array_sized_new (length); - if (array) { - g_byte_array_append (array, (guint8 *) contents, length); - g_assert (array->len == length); - } + g_byte_array_append (array, (guint8 *) contents, length); + g_assert (array->len == length); g_free (contents); } return array; @@ -8018,6 +8027,9 @@ test_write_wired_8021x_tls (NMSetting8021xCKScheme scheme, g_assert (success); g_assert (testfile != NULL); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -8104,16 +8116,23 @@ test_write_wired_8021x_tls (NMSetting8021xCKScheme scheme, g_object_unref (reread); } +#define TEST_SCRATCH_ALIAS_BASE TEST_SCRATCH_DIR "/network-scripts/ifcfg-alias0" + static void -test_write_wifi_open (void) +test_write_wired_aliases (void) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; - NMSettingWireless *s_wifi; + NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; - NMSettingIP6Config *s_ip6; char *uuid; + int num_addresses = 4; + guint32 ip[] = { 0x01010101, 0x01010102, 0x01010103, 0x01010104 }; + const char *label[] = { NULL, "alias0:2", NULL, "alias0:3" }; + const guint32 gw = htonl (0x01010101); + const guint32 prefix = 24; + NMIP4Address *addr; gboolean success; GError *error = NULL; char *testfile = NULL; @@ -8122,105 +8141,101 @@ test_write_wifi_open (void) char *routefile = NULL; char *route6file = NULL; gboolean ignore_error = FALSE; - GByteArray *ssid; - const unsigned char ssid_data[] = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x53, 0x49, 0x44 }; - GByteArray *bssid; - const unsigned char bssid_data[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }; - guint32 channel = 9, mtu = 1345; - GByteArray *mac; - const unsigned char mac_data[] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; shvarFile *ifcfg; - char *tmp; + int i, j; connection = nm_connection_new (); ASSERT (connection != NULL, - "wifi-open-write", "failed to allocate new connection"); + "wired-aliases-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); ASSERT (s_con != NULL, - "wifi-open-write", "failed to allocate new %s setting", + "wired-aliases-write", "failed to allocate new %s setting", NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi Open", + NM_SETTING_CONNECTION_ID, "alias0", NM_SETTING_CONNECTION_UUID, uuid, - NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, - NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, NULL); g_free (uuid); - /* Wifi setting */ - s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-open-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_wifi)); - - ssid = g_byte_array_sized_new (sizeof (ssid_data)); - g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); - bssid = g_byte_array_sized_new (sizeof (bssid_data)); - g_byte_array_append (bssid, bssid_data, sizeof (bssid_data)); - mac = g_byte_array_sized_new (sizeof (mac_data)); - g_byte_array_append (mac, mac_data, sizeof (mac_data)); - - g_object_set (s_wifi, - NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_BSSID, bssid, - NM_SETTING_WIRELESS_MAC_ADDRESS, mac, - NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_BAND, "bg", - NM_SETTING_WIRELESS_CHANNEL, channel, - NM_SETTING_WIRELESS_MTU, mtu, - NULL); - - g_byte_array_free (ssid, TRUE); - g_byte_array_free (bssid, TRUE); - g_byte_array_free (mac, TRUE); + /* Wired setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + ASSERT (s_wired != NULL, + "wired-aliases-write", "failed to allocate new %s setting", + NM_SETTING_WIRED_SETTING_NAME); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); ASSERT (s_ip4 != NULL, - "wifi-open-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); + "wired-aliases-write", "failed to allocate new %s setting", + NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); - - /* IP6 setting */ - s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-open-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_ip6)); - - g_object_set (s_ip6, - NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, - NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, + g_object_set (s_ip4, + NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, + NM_SETTING_IP4_CONFIG_MAY_FAIL, TRUE, NULL); + for (i = 0; i < num_addresses; i++) { + addr = nm_ip4_address_new (); + nm_ip4_address_set_address (addr, ip[i]); + nm_ip4_address_set_prefix (addr, prefix); + nm_ip4_address_set_gateway (addr, gw); + NM_UTILS_PRIVATE_CALL (nm_setting_ip4_config_add_address_with_label (s_ip4, addr, label[i])); + nm_ip4_address_unref (addr); + } + ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-open-write", "failed to verify connection: %s", + "wired-aliases-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); + /* Create some pre-existing alias files, to make sure they get overwritten / deleted. */ + ifcfg = svCreateFile (TEST_SCRATCH_ALIAS_BASE ":2"); + svSetValue (ifcfg, "DEVICE", "alias0:2", FALSE); + svSetValue (ifcfg, "IPADDR", "192.168.1.2", FALSE); + svWriteFile (ifcfg, 0644, NULL); + svCloseFile (ifcfg); + ASSERT (g_file_test (TEST_SCRATCH_ALIAS_BASE ":2", G_FILE_TEST_EXISTS), + "wired-aliases-write", "failed to write extra alias file"); + + ifcfg = svCreateFile (TEST_SCRATCH_ALIAS_BASE ":5"); + svSetValue (ifcfg, "DEVICE", "alias0:5", FALSE); + svSetValue (ifcfg, "IPADDR", "192.168.1.5", FALSE); + svWriteFile (ifcfg, 0644, NULL); + svCloseFile (ifcfg); + ASSERT (g_file_test (TEST_SCRATCH_ALIAS_BASE ":5", G_FILE_TEST_EXISTS), + "wired-aliases-write", "failed to write extra alias file"); + /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); ASSERT (success == TRUE, - "wifi-open-write", "failed to write connection to disk: %s", + "wired-aliases-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-open-write", "didn't get ifcfg file path back after writing connection"); + "wired-aliases-write", "didn't get ifcfg file path back after writing connection"); + + /* Re-check the alias files */ + ASSERT (g_file_test (TEST_SCRATCH_ALIAS_BASE ":2", G_FILE_TEST_EXISTS), + "wired-aliases-write", "saving failed to write ifcfg-alias0:2"); + ASSERT (g_file_test (TEST_SCRATCH_ALIAS_BASE ":3", G_FILE_TEST_EXISTS), + "wired-aliases-write", "saving failed to write ifcfg-alias0:3"); + ASSERT (!g_file_test (TEST_SCRATCH_ALIAS_BASE ":5", G_FILE_TEST_EXISTS), + "wired-aliases-write", "saving failed to delete unused ifcfg-alias0:5"); /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, - TYPE_WIRELESS, + TYPE_ETHERNET, NULL, &unmanaged, &keyfile, @@ -8228,35 +8243,74 @@ test_write_wifi_open (void) &route6file, &error, &ignore_error); + unlink (testfile); + unlink (TEST_SCRATCH_ALIAS_BASE ":2"); + unlink (TEST_SCRATCH_ALIAS_BASE ":3"); - /* Now make sure that the ESSID item isn't double-quoted (rh #606518) */ - ifcfg = svNewFile (testfile); - ASSERT (ifcfg != NULL, - "wifi-open-write-reread", "failed to load %s as shvarfile", testfile); + ASSERT (reread != NULL, + "wired-aliases-write-reread", "failed to read %s: %s", testfile, error->message); - tmp = svGetValue (ifcfg, "ESSID", TRUE); - ASSERT (tmp != NULL, - "wifi-open-write-reread", "failed to read ESSID key from %s", testfile); + ASSERT (nm_connection_verify (reread, &error), + "wired-aliases-write-reread-verify", "failed to verify %s: %s", testfile, error->message); - ASSERT (strncmp (tmp, "\"\"", 2) != 0, - "wifi-open-write-reread", "unexpected ESSID double-quote in %s", testfile); + /* nm_connection_compare() is not guaranteed to succeed, because the + * aliases get read back in essentially random order. So just + * verify the aliases manually. + */ + s_ip4 = nm_connection_get_setting_ip4_config (connection); + ASSERT (nm_setting_ip4_config_get_num_addresses (s_ip4) == num_addresses, + "wired-aliases-write-verify-ip4", "failed to verify %s: unexpected %s / %s key value", + testfile, + NM_SETTING_IP4_CONFIG_SETTING_NAME, + NM_SETTING_IP4_CONFIG_ADDRESSES); - g_free (tmp); - svCloseFile (ifcfg); + /* Addresses */ + for (i = 0; i < num_addresses; i++) { + guint32 addrbytes; - unlink (testfile); + addr = nm_setting_ip4_config_get_address (s_ip4, i); + ASSERT (addr, + "wired-aliases-write-verify-ip4", "failed to verify %s: missing IP4 address #%d", + testfile, + i); - ASSERT (reread != NULL, - "wifi-open-write-reread", "failed to read %s: %s", testfile, error->message); + addrbytes = nm_ip4_address_get_address (addr); + for (j = 0; j < num_addresses; j++) { + if (addrbytes == ip[j]) + break; + } - ASSERT (nm_connection_verify (reread, &error), - "wifi-open-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + ASSERT (j < num_addresses, + "wired-aliases-write-verify-ip4", "failed to verify %s: unexpected IP4 address #%d", + testfile, + i); - ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-open-write", "written and re-read connection weren't the same."); + ASSERT (nm_ip4_address_get_prefix (addr) == prefix, + "wired-aliases-write-verify-ip4", "failed to verify %s: unexpected IP4 address prefix #%d", + testfile, + i); + + ASSERT (nm_ip4_address_get_gateway (addr) == gw, + "wired-aliases-write-verify-ip4", "failed to verify %s: unexpected IP4 address gateway #%d", + testfile, + i); + + ASSERT (g_strcmp0 (NM_UTILS_PRIVATE_CALL (nm_setting_ip4_config_get_address_label (s_ip4, i)), label[j]) == 0, + "wired-aliases-write-verify-ip4", "failed to verify %s: unexpected IP4 address label #%d", + testfile, + i); + + ip[j] = 0; + } + + for (i = 0; i < num_addresses; i++) { + ASSERT (ip[i] == 0, + "wired-aliases-write-verify-ip4", "failed to verify %s: did not find IP4 address 0x%08x", + testfile, + ip[i]); + } g_free (testfile); - g_free (unmanaged); g_free (keyfile); g_free (routefile); g_free (route6file); @@ -8265,139 +8319,158 @@ test_write_wifi_open (void) } static void -test_write_wifi_open_hex_ssid (void) +test_write_gateway (void) { - NMConnection *connection; - NMConnection *reread; + NMConnection *connection, *reread; NMSettingConnection *s_con; - NMSettingWireless *s_wifi; + NMSettingWired *s_wired; NMSettingIP4Config *s_ip4; - NMSettingIP6Config *s_ip6; - char *uuid; + char *uuid, *testfile = NULL, *val; gboolean success; GError *error = NULL; - char *testfile = NULL; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; - GByteArray *ssid; - const unsigned char ssid_data[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd }; + shvarFile *f; + NMIP4Address *addr; + const char *ip1_str = "1.1.1.3"; + const char *ip2_str = "2.2.2.5"; + const char *gw1_str = "1.1.1.254"; + const char *gw2_str = "2.2.2.254"; + struct in_addr ip1, ip2, gw1, gw2; + const guint32 prefix = 24; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-open-hex-ssid-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-open-hex-ssid-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi Open Hex SSID", + NM_SETTING_CONNECTION_ID, "Test Write Static Addresses Gateway", NM_SETTING_CONNECTION_UUID, uuid, - NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, - NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, NULL); g_free (uuid); - /* Wifi setting */ - s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-open-hex-ssid-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_wifi)); - - ssid = g_byte_array_sized_new (sizeof (ssid_data)); - g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); - - g_object_set (s_wifi, - NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_MODE, "infrastructure", - NULL); - - g_byte_array_free (ssid, TRUE); + /* Wired setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-open-hex-ssid-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + g_object_set (s_ip4, + NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, + NM_SETTING_IP4_CONFIG_MAY_FAIL, TRUE, + NULL); - /* IP6 setting */ - s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-open-hex-ssid-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + inet_pton (AF_INET, ip1_str, &ip1); + inet_pton (AF_INET, ip2_str, &ip2); + inet_pton (AF_INET, gw1_str, &gw1); + inet_pton (AF_INET, gw2_str, &gw2); - g_object_set (s_ip6, - NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, - NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, - NULL); + addr = nm_ip4_address_new (); + nm_ip4_address_set_address (addr, ip1.s_addr); + nm_ip4_address_set_prefix (addr, prefix); + nm_ip4_address_set_gateway (addr, gw1.s_addr); + nm_setting_ip4_config_add_address (s_ip4, addr); + nm_ip4_address_unref (addr); - ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-open-hex-ssid-write", "failed to verify connection: %s", - (error && error->message) ? error->message : "(unknown)"); + addr = nm_ip4_address_new (); + nm_ip4_address_set_address (addr, ip2.s_addr); + nm_ip4_address_set_prefix (addr, prefix); + nm_ip4_address_set_gateway (addr, gw2.s_addr); + nm_setting_ip4_config_add_address (s_ip4, addr); + nm_ip4_address_unref (addr); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); - ASSERT (success == TRUE, - "wifi-open-hex-ssid-write", "failed to write connection to disk: %s", - (error && error->message) ? error->message : "(unknown)"); + g_assert_no_error (error); + g_assert (success); - ASSERT (testfile != NULL, - "wifi-open-hex-ssid-write", "didn't get ifcfg file path back after writing connection"); + f = svOpenFile (testfile, &error); + g_assert_no_error (error); + g_assert (f); - /* re-read the connection for comparison */ - reread = connection_from_file (testfile, - NULL, - TYPE_WIRELESS, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - unlink (testfile); + /* re-read the file to check that the keys was written as IPADDR, GATEWAY and IPADDR1, GATEWAY1 */ + val = svGetValue (f, "IPADDR", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, ip1_str); + g_free (val); - ASSERT (reread != NULL, - "wifi-open-hex-ssid-write-reread", "failed to read %s: %s", testfile, error->message); + val = svGetValue (f, "IPADDR1", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, ip2_str); + g_free (val); - ASSERT (nm_connection_verify (reread, &error), - "wifi-open-hex-ssid-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + val = svGetValue (f, "IPADDR0", FALSE); + g_assert (val == NULL); - ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-open-hex-ssid-write", "written and re-read connection weren't the same."); + val = svGetValue (f, "PREFIX", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, "24"); + g_free (val); - g_free (testfile); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); - g_object_unref (connection); + val = svGetValue (f, "PREFIX1", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, "24"); + g_free (val); + + val = svGetValue (f, "PREFIX0", FALSE); + g_assert (val == NULL); + + val = svGetValue (f, "GATEWAY", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, gw1_str); + g_free (val); + + val = svGetValue (f, "GATEWAY1", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, gw2_str); + g_free (val); + + val = svGetValue (f, "GATEWAY0", FALSE); + g_assert (val == NULL); + + + svCloseFile (f); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, NULL, TYPE_WIRELESS, NULL, + NULL, NULL, NULL, NULL, &error, NULL); + unlink (testfile); + g_assert_no_error (error); + g_assert (reread); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); + + g_free (testfile); + g_object_unref (connection); g_object_unref (reread); } + static void -test_write_wifi_wep (void) +test_write_wifi_open (void) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; NMSettingWireless *s_wifi; - NMSettingWirelessSecurity *s_wsec; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; char *uuid; @@ -8410,23 +8483,24 @@ test_write_wifi_wep (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah"; - struct stat statbuf; + const unsigned char ssid_data[] = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x53, 0x49, 0x44 }; + GByteArray *bssid; + const unsigned char bssid_data[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }; + guint32 channel = 9, mtu = 1345; + GByteArray *mac; + const unsigned char mac_data[] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; + shvarFile *ifcfg; + char *tmp; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wep-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wep-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP", + NM_SETTING_CONNECTION_ID, "Test Write Wifi Open", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -8435,53 +8509,37 @@ test_write_wifi_wep (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wep-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); + bssid = g_byte_array_sized_new (sizeof (bssid_data)); + g_byte_array_append (bssid, bssid_data, sizeof (bssid_data)); + mac = g_byte_array_sized_new (sizeof (mac_data)); + g_byte_array_append (mac, mac_data, sizeof (mac_data)); g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, + NM_SETTING_WIRELESS_BSSID, bssid, + NM_SETTING_WIRELESS_MAC_ADDRESS, mac, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + NM_SETTING_WIRELESS_BAND, "bg", + NM_SETTING_WIRELESS_CHANNEL, channel, + NM_SETTING_WIRELESS_MTU, mtu, NULL); g_byte_array_free (ssid, TRUE); - - /* Wireless security setting */ - s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wep-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - - g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", - NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 2, - NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "shared", - NULL); - nm_setting_wireless_security_set_wep_key (s_wsec, 0, "0123456789abcdef0123456789"); - nm_setting_wireless_security_set_wep_key (s_wsec, 1, "11111111111111111111111111"); - nm_setting_wireless_security_set_wep_key (s_wsec, 2, "aaaaaaaaaaaaaaaaaaaaaaaaaa"); - nm_setting_wireless_security_set_wep_key (s_wsec, 3, "BBBBBBBBBBBBBBBBBBBBBBBBBB"); + g_byte_array_free (bssid, TRUE); + g_byte_array_free (mac, TRUE); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wep-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wep-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -8490,7 +8548,7 @@ test_write_wifi_wep (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wep-write", "failed to verify connection: %s", + "wifi-open-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -8499,11 +8557,14 @@ test_write_wifi_wep (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wep-write", "failed to write connection to disk: %s", + "wifi-open-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wep-write", "didn't get ifcfg file path back after writing connection"); + "wifi-open-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -8516,28 +8577,33 @@ test_write_wifi_wep (void) &route6file, &error, &ignore_error); - unlink (testfile); + g_assert_no_error (error); - ASSERT (keyfile != NULL, - "wifi-wep-write-reread", "expected keyfile for '%s'", testfile); + /* Now make sure that the ESSID item isn't double-quoted (rh #606518) */ + ifcfg = svOpenFile (testfile, &error); + g_assert_no_error (error); + g_assert (ifcfg != NULL); - ASSERT (stat (keyfile, &statbuf) == 0, - "wifi-wep-write-reread", "couldn't stat() '%s'", keyfile); - ASSERT (S_ISREG (statbuf.st_mode), - "wifi-wep-write-reread", "keyfile '%s' wasn't a normal file", keyfile); - ASSERT ((statbuf.st_mode & 0077) == 0, - "wifi-wep-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); + tmp = svGetValue (ifcfg, "ESSID", TRUE); + ASSERT (tmp != NULL, + "wifi-open-write-reread", "failed to read ESSID key from %s", testfile); - unlink (keyfile); + ASSERT (strncmp (tmp, "\"\"", 2) != 0, + "wifi-open-write-reread", "unexpected ESSID double-quote in %s", testfile); + + g_free (tmp); + svCloseFile (ifcfg); + + unlink (testfile); ASSERT (reread != NULL, - "wifi-wep-write-reread", "failed to read %s: %s", testfile, error->message); + "wifi-open-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-wep-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-open-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wep-write", "written and re-read connection weren't the same."); + "wifi-open-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -8549,13 +8615,12 @@ test_write_wifi_wep (void) } static void -test_write_wifi_wep_adhoc (void) +test_write_wifi_open_hex_ssid (void) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; NMSettingWireless *s_wifi; - NMSettingWirelessSecurity *s_wsec; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; char *uuid; @@ -8568,28 +8633,17 @@ test_write_wifi_wep_adhoc (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah"; - struct stat statbuf; - NMIP4Address *addr; - const guint32 ip1 = htonl (0x01010103); - const guint32 gw = htonl (0x01010101); - const guint32 dns1 = htonl (0x04020201); - const guint32 prefix = 24; + const unsigned char ssid_data[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd }; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wep-adhoc-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wep-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP AdHoc", + NM_SETTING_CONNECTION_ID, "Test Write Wifi Open Hex SSID", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -8598,9 +8652,6 @@ test_write_wifi_wep_adhoc (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wep-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); @@ -8608,46 +8659,19 @@ test_write_wifi_wep_adhoc (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_MODE, "adhoc", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + NM_SETTING_WIRELESS_MODE, "infrastructure", NULL); g_byte_array_free (ssid, TRUE); - /* Wireless security setting */ - s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wep-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - - g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", NULL); - nm_setting_wireless_security_set_wep_key (s_wsec, 0, "0123456789abcdef0123456789"); - /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wep-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, NULL); - - /* IP Address */ - addr = nm_ip4_address_new (); - nm_ip4_address_set_address (addr, ip1); - nm_ip4_address_set_prefix (addr, prefix); - nm_ip4_address_set_gateway (addr, gw); - nm_setting_ip4_config_add_address (s_ip4, addr); - nm_ip4_address_unref (addr); - - nm_setting_ip4_config_add_dns (s_ip4, dns1); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wep-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -8656,7 +8680,7 @@ test_write_wifi_wep_adhoc (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wep-adhoc-write", "failed to verify connection: %s", + "wifi-open-hex-ssid-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -8665,11 +8689,14 @@ test_write_wifi_wep_adhoc (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wep-adhoc-write", "failed to write connection to disk: %s", + "wifi-open-hex-ssid-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wep-adhoc-write", "didn't get ifcfg file path back after writing connection"); + "wifi-open-hex-ssid-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -8684,26 +8711,14 @@ test_write_wifi_wep_adhoc (void) &ignore_error); unlink (testfile); - ASSERT (keyfile != NULL, - "wifi-wep-adhoc-write-reread", "expected keyfile for '%s'", testfile); - - ASSERT (stat (keyfile, &statbuf) == 0, - "wifi-wep-adhoc-write-reread", "couldn't stat() '%s'", keyfile); - ASSERT (S_ISREG (statbuf.st_mode), - "wifi-wep-adhoc-write-reread", "keyfile '%s' wasn't a normal file", keyfile); - ASSERT ((statbuf.st_mode & 0077) == 0, - "wifi-wep-adhoc-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); - - unlink (keyfile); - ASSERT (reread != NULL, - "wifi-wep-adhoc-write-reread", "failed to read %s: %s", testfile, error->message); + "wifi-open-hex-ssid-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-wep-adhoc-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-open-hex-ssid-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wep-adhoc-write", "written and re-read connection weren't the same."); + "wifi-open-hex-ssid-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -8715,7 +8730,7 @@ test_write_wifi_wep_adhoc (void) } static void -test_write_wifi_wep_passphrase (void) +test_write_wifi_wep (void) { NMConnection *connection; NMConnection *reread; @@ -8738,19 +8753,14 @@ test_write_wifi_wep_passphrase (void) struct stat statbuf; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wep-passphrase-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wep-passphrase-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP Passphrase", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -8759,9 +8769,6 @@ test_write_wifi_wep_passphrase (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wep-passphrase-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); @@ -8770,40 +8777,32 @@ test_write_wifi_wep_passphrase (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wep-passphrase-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", - NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 0, + NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 2, NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "shared", - NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, NM_WEP_KEY_TYPE_PASSPHRASE, NULL); - nm_setting_wireless_security_set_wep_key (s_wsec, 0, "asdfdjaslfjasd;flasjdfl;aksdf"); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "0123456789abcdef0123456789"); + nm_setting_wireless_security_set_wep_key (s_wsec, 1, "11111111111111111111111111"); + nm_setting_wireless_security_set_wep_key (s_wsec, 2, "aaaaaaaaaaaaaaaaaaaaaaaaaa"); + nm_setting_wireless_security_set_wep_key (s_wsec, 3, "BBBBBBBBBBBBBBBBBBBBBBBBBB"); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wep-passphrase-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wep-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -8812,7 +8811,7 @@ test_write_wifi_wep_passphrase (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wep-passphrase-write", "failed to verify connection: %s", + "wifi-wep-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -8821,11 +8820,14 @@ test_write_wifi_wep_passphrase (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wep-passphrase-write", "failed to write connection to disk: %s", + "wifi-wep-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wep-passphrase-write", "didn't get ifcfg file path back after writing connection"); + "wifi-wep-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -8841,25 +8843,25 @@ test_write_wifi_wep_passphrase (void) unlink (testfile); ASSERT (keyfile != NULL, - "wifi-wep-passphrase-write-reread", "expected keyfile for '%s'", testfile); + "wifi-wep-write-reread", "expected keyfile for '%s'", testfile); ASSERT (stat (keyfile, &statbuf) == 0, - "wifi-wep-passphrase-write-reread", "couldn't stat() '%s'", keyfile); + "wifi-wep-write-reread", "couldn't stat() '%s'", keyfile); ASSERT (S_ISREG (statbuf.st_mode), - "wifi-wep-passphrase-write-reread", "keyfile '%s' wasn't a normal file", keyfile); + "wifi-wep-write-reread", "keyfile '%s' wasn't a normal file", keyfile); ASSERT ((statbuf.st_mode & 0077) == 0, - "wifi-wep-passphrase-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); + "wifi-wep-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); unlink (keyfile); ASSERT (reread != NULL, - "wifi-wep-passphrase-write-reread", "failed to read %s: %s", testfile, error->message); + "wifi-wep-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-wep-passphrase-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-wep-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wep-passphrase-write", "written and re-read connection weren't the same."); + "wifi-wep-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -8871,7 +8873,7 @@ test_write_wifi_wep_passphrase (void) } static void -test_write_wifi_wep_40_ascii (void) +test_write_wifi_wep_adhoc (void) { NMConnection *connection; NMConnection *reread; @@ -8890,23 +8892,23 @@ test_write_wifi_wep_40_ascii (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah40"; + const unsigned char ssid_data[] = "blahblah"; struct stat statbuf; + NMIP4Address *addr; + const guint32 ip1 = htonl (0x01010103); + const guint32 gw = htonl (0x01010101); + const guint32 dns1 = htonl (0x04020201); + const guint32 prefix = 24; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wep-40-ascii-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wep-40-ascii-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP 40 ASCII", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP AdHoc", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -8915,9 +8917,6 @@ test_write_wifi_wep_40_ascii (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wep-40-ascii-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); @@ -8925,43 +8924,36 @@ test_write_wifi_wep_40_ascii (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + NM_SETTING_WIRELESS_MODE, "adhoc", NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wep-40-ascii-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", - NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 2, - NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "shared", - NULL); - nm_setting_wireless_security_set_wep_key (s_wsec, 0, "lorem"); - nm_setting_wireless_security_set_wep_key (s_wsec, 1, "ipsum"); - nm_setting_wireless_security_set_wep_key (s_wsec, 2, "dolor"); - nm_setting_wireless_security_set_wep_key (s_wsec, 3, "donec"); + g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", NULL); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "0123456789abcdef0123456789"); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wep-40-ascii-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, NULL); + + /* IP Address */ + addr = nm_ip4_address_new (); + nm_ip4_address_set_address (addr, ip1); + nm_ip4_address_set_prefix (addr, prefix); + nm_ip4_address_set_gateway (addr, gw); + nm_setting_ip4_config_add_address (s_ip4, addr); + nm_ip4_address_unref (addr); + + nm_setting_ip4_config_add_dns (s_ip4, dns1); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wep-40-ascii-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -8970,7 +8962,7 @@ test_write_wifi_wep_40_ascii (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wep-40-ascii-write", "failed to verify connection: %s", + "wifi-wep-adhoc-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -8979,11 +8971,14 @@ test_write_wifi_wep_40_ascii (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wep-40-ascii-write", "failed to write connection to disk: %s", + "wifi-wep-adhoc-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wep-40-ascii-write", "didn't get ifcfg file path back after writing connection"); + "wifi-wep-adhoc-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -8999,25 +8994,25 @@ test_write_wifi_wep_40_ascii (void) unlink (testfile); ASSERT (keyfile != NULL, - "wifi-wep-40-ascii-write-reread", "expected keyfile for '%s'", testfile); + "wifi-wep-adhoc-write-reread", "expected keyfile for '%s'", testfile); ASSERT (stat (keyfile, &statbuf) == 0, - "wifi-wep-40-ascii-write-reread", "couldn't stat() '%s'", keyfile); + "wifi-wep-adhoc-write-reread", "couldn't stat() '%s'", keyfile); ASSERT (S_ISREG (statbuf.st_mode), - "wifi-wep-40-ascii-write-reread", "keyfile '%s' wasn't a normal file", keyfile); + "wifi-wep-adhoc-write-reread", "keyfile '%s' wasn't a normal file", keyfile); ASSERT ((statbuf.st_mode & 0077) == 0, - "wifi-wep-40-ascii-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); + "wifi-wep-adhoc-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); unlink (keyfile); ASSERT (reread != NULL, - "wifi-wep-40-ascii-write-reread", "failed to read %s: %s", testfile, error->message); + "wifi-wep-adhoc-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-wep-40-ascii-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-wep-adhoc-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wep-40-ascii-write", "written and re-read connection weren't the same."); + "wifi-wep-adhoc-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -9029,7 +9024,7 @@ test_write_wifi_wep_40_ascii (void) } static void -test_write_wifi_wep_104_ascii (void) +test_write_wifi_wep_passphrase (void) { NMConnection *connection; NMConnection *reread; @@ -9048,23 +9043,18 @@ test_write_wifi_wep_104_ascii (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah104"; + const unsigned char ssid_data[] = "blahblah"; struct stat statbuf; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wep-104-ascii-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wep-104-ascii-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP 104 ASCII", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP Passphrase", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -9073,9 +9063,6 @@ test_write_wifi_wep_104_ascii (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wep-104-ascii-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); @@ -9084,42 +9071,30 @@ test_write_wifi_wep_104_ascii (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wep-104-ascii-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 0, - NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "open", + NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "shared", + NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, NM_WEP_KEY_TYPE_PASSPHRASE, NULL); - nm_setting_wireless_security_set_wep_key (s_wsec, 0, "LoremIpsumSit"); - nm_setting_wireless_security_set_wep_key (s_wsec, 1, "AlfaBetaGamma"); - nm_setting_wireless_security_set_wep_key (s_wsec, 2, "WEP-104 ASCII"); - nm_setting_wireless_security_set_wep_key (s_wsec, 3, "thisismyascii"); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "asdfdjaslfjasd;flasjdfl;aksdf"); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wep-104-ascii-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wep-104-ascii-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -9128,7 +9103,7 @@ test_write_wifi_wep_104_ascii (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wep-104-ascii-write", "failed to verify connection: %s", + "wifi-wep-passphrase-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -9137,11 +9112,14 @@ test_write_wifi_wep_104_ascii (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wep-104-ascii-write", "failed to write connection to disk: %s", + "wifi-wep-passphrase-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wep-104-ascii-write", "didn't get ifcfg file path back after writing connection"); + "wifi-wep-passphrase-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -9157,25 +9135,25 @@ test_write_wifi_wep_104_ascii (void) unlink (testfile); ASSERT (keyfile != NULL, - "wifi-wep-104-ascii-write-reread", "expected keyfile for '%s'", testfile); + "wifi-wep-passphrase-write-reread", "expected keyfile for '%s'", testfile); ASSERT (stat (keyfile, &statbuf) == 0, - "wifi-wep-104-ascii-write-reread", "couldn't stat() '%s'", keyfile); + "wifi-wep-passphrase-write-reread", "couldn't stat() '%s'", keyfile); ASSERT (S_ISREG (statbuf.st_mode), - "wifi-wep-104-ascii-write-reread", "keyfile '%s' wasn't a normal file", keyfile); + "wifi-wep-passphrase-write-reread", "keyfile '%s' wasn't a normal file", keyfile); ASSERT ((statbuf.st_mode & 0077) == 0, - "wifi-wep-104-ascii-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); + "wifi-wep-passphrase-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); unlink (keyfile); ASSERT (reread != NULL, - "wifi-wep-104-ascii-write-reread", "failed to read %s: %s", testfile, error->message); + "wifi-wep-passphrase-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-wep-104-ascii-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-wep-passphrase-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wep-104-ascii-write", "written and re-read connection weren't the same."); + "wifi-wep-passphrase-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -9187,7 +9165,7 @@ test_write_wifi_wep_104_ascii (void) } static void -test_write_wifi_leap (void) +test_write_wifi_wep_40_ascii (void) { NMConnection *connection; NMConnection *reread; @@ -9206,23 +9184,18 @@ test_write_wifi_leap (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah"; + const unsigned char ssid_data[] = "blahblah40"; struct stat statbuf; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-leap-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-leap-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi LEAP", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP 40 ASCII", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -9231,9 +9204,6 @@ test_write_wifi_leap (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-leap-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); @@ -9242,39 +9212,32 @@ test_write_wifi_leap (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-leap-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", - NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "leap", - NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "Bill Smith", - NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, "foobar22", + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", + NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 2, + NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "shared", NULL); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "lorem"); + nm_setting_wireless_security_set_wep_key (s_wsec, 1, "ipsum"); + nm_setting_wireless_security_set_wep_key (s_wsec, 2, "dolor"); + nm_setting_wireless_security_set_wep_key (s_wsec, 3, "donec"); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-leap-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-leap-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -9283,7 +9246,7 @@ test_write_wifi_leap (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-leap-write", "failed to verify connection: %s", + "wifi-wep-40-ascii-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -9292,11 +9255,14 @@ test_write_wifi_leap (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-leap-write", "failed to write connection to disk: %s", + "wifi-wep-40-ascii-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-leap-write", "didn't get ifcfg file path back after writing connection"); + "wifi-wep-40-ascii-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -9312,25 +9278,25 @@ test_write_wifi_leap (void) unlink (testfile); ASSERT (keyfile != NULL, - "wifi-leap-write-reread", "expected keyfile for '%s'", testfile); + "wifi-wep-40-ascii-write-reread", "expected keyfile for '%s'", testfile); ASSERT (stat (keyfile, &statbuf) == 0, - "wifi-leap-write-reread", "couldn't stat() '%s'", keyfile); + "wifi-wep-40-ascii-write-reread", "couldn't stat() '%s'", keyfile); ASSERT (S_ISREG (statbuf.st_mode), - "wifi-leap-write-reread", "keyfile '%s' wasn't a normal file", keyfile); + "wifi-wep-40-ascii-write-reread", "keyfile '%s' wasn't a normal file", keyfile); ASSERT ((statbuf.st_mode & 0077) == 0, - "wifi-leap-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); + "wifi-wep-40-ascii-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); unlink (keyfile); ASSERT (reread != NULL, - "wifi-leap-write-reread", "failed to read %s: %s", testfile, error->message); + "wifi-wep-40-ascii-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-leap-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-wep-40-ascii-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-leap-write", "written and re-read connection weren't the same."); + "wifi-wep-40-ascii-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -9342,7 +9308,7 @@ test_write_wifi_leap (void) } static void -test_write_wifi_leap_secret_flags (NMSettingSecretFlags flags) +test_write_wifi_wep_104_ascii (void) { NMConnection *connection; NMConnection *reread; @@ -9361,60 +9327,60 @@ test_write_wifi_leap_secret_flags (NMSettingSecretFlags flags) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah"; + const unsigned char ssid_data[] = "blahblah104"; + struct stat statbuf; connection = nm_connection_new (); - g_assert (connection); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - g_assert (s_con); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi LEAP Secret Flags", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WEP 104 ASCII", NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, NULL); g_free (uuid); /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - g_assert (s_wifi); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); + g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); + g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - g_assert (s_wsec); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", - NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "leap", - NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "Bill Smith", - NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, "foobar22", - NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS, flags, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", + NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, 0, + NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "open", NULL); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "LoremIpsumSit"); + nm_setting_wireless_security_set_wep_key (s_wsec, 1, "AlfaBetaGamma"); + nm_setting_wireless_security_set_wep_key (s_wsec, 2, "WEP-104 ASCII"); + nm_setting_wireless_security_set_wep_key (s_wsec, 3, "thisismyascii"); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - g_assert (s_ip4); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - g_assert (s_ip6); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -9422,18 +9388,24 @@ test_write_wifi_leap_secret_flags (NMSettingSecretFlags flags) NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, NULL); - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); + ASSERT (nm_connection_verify (connection, &error) == TRUE, + "wifi-wep-104-ascii-write", "failed to verify connection: %s", + (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); - g_assert_no_error (error); - g_assert (success); - g_assert (testfile); + ASSERT (success == TRUE, + "wifi-wep-104-ascii-write", "failed to write connection to disk: %s", + (error && error->message) ? error->message : "(unknown)"); + + ASSERT (testfile != NULL, + "wifi-wep-104-ascii-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -9448,23 +9420,26 @@ test_write_wifi_leap_secret_flags (NMSettingSecretFlags flags) &ignore_error); unlink (testfile); - g_assert_no_error (error); + ASSERT (keyfile != NULL, + "wifi-wep-104-ascii-write-reread", "expected keyfile for '%s'", testfile); - /* No key should be written out since the secret is not system owned */ - g_assert (keyfile); - g_assert (g_file_test (keyfile, G_FILE_TEST_EXISTS) == FALSE); + ASSERT (stat (keyfile, &statbuf) == 0, + "wifi-wep-104-ascii-write-reread", "couldn't stat() '%s'", keyfile); + ASSERT (S_ISREG (statbuf.st_mode), + "wifi-wep-104-ascii-write-reread", "keyfile '%s' wasn't a normal file", keyfile); + ASSERT ((statbuf.st_mode & 0077) == 0, + "wifi-wep-104-ascii-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); - g_assert (reread); + unlink (keyfile); - success = nm_connection_verify (reread, &error); - g_assert_no_error (error); - g_assert (success); + ASSERT (reread != NULL, + "wifi-wep-104-ascii-write-reread", "failed to read %s: %s", testfile, error->message); - /* Remove the LEAP password from the original connection since it wont' be - * in the reread connection, as the password is not system owned. - */ - g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, NULL, NULL); - g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); + ASSERT (nm_connection_verify (reread, &error), + "wifi-wep-104-ascii-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + + ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, + "wifi-wep-104-ascii-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -9476,12 +9451,7 @@ test_write_wifi_leap_secret_flags (NMSettingSecretFlags flags) } static void -test_write_wifi_wpa_psk (const char *name, - const char *test_name, - gboolean wep_group, - gboolean wpa, - gboolean wpa2, - const char *psk) +test_write_wifi_leap (void) { NMConnection *connection; NMConnection *reread; @@ -9490,7 +9460,7 @@ test_write_wifi_wpa_psk (const char *name, NMSettingWirelessSecurity *s_wsec; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; - char *uuid, *tmp; + char *uuid; gboolean success; GError *error = NULL; char *testfile = NULL; @@ -9501,23 +9471,17 @@ test_write_wifi_wpa_psk (const char *name, gboolean ignore_error = FALSE; GByteArray *ssid; const unsigned char ssid_data[] = "blahblah"; - - g_return_if_fail (psk != NULL); + struct stat statbuf; connection = nm_connection_new (); - ASSERT (connection != NULL, - test_name, "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - test_name, "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, name, + NM_SETTING_CONNECTION_ID, "Test Write Wifi LEAP", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -9526,9 +9490,6 @@ test_write_wifi_wpa_psk (const char *name, /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - test_name, "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); @@ -9537,52 +9498,29 @@ test_write_wifi_wpa_psk (const char *name, g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - test_name, "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", - NM_SETTING_WIRELESS_SECURITY_PSK, psk, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", + NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "leap", + NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "Bill Smith", + NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, "foobar22", NULL); - if (wep_group) { - nm_setting_wireless_security_add_group (s_wsec, "wep40"); - nm_setting_wireless_security_add_group (s_wsec, "wep104"); - } - if (wpa) { - nm_setting_wireless_security_add_proto (s_wsec, "wpa"); - nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); - nm_setting_wireless_security_add_group (s_wsec, "tkip"); - } - if (wpa2) { - nm_setting_wireless_security_add_proto (s_wsec, "rsn"); - nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); - nm_setting_wireless_security_add_group (s_wsec, "ccmp"); - } - /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - test_name, "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - test_name, "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -9591,7 +9529,7 @@ test_write_wifi_wpa_psk (const char *name, NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - test_name, "failed to verify connection: %s", + "wifi-leap-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -9600,11 +9538,14 @@ test_write_wifi_wpa_psk (const char *name, &testfile, &error); ASSERT (success == TRUE, - test_name, "failed to write connection to disk: %s", + "wifi-leap-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - test_name, "didn't get ifcfg file path back after writing connection"); + "wifi-leap-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -9619,20 +9560,26 @@ test_write_wifi_wpa_psk (const char *name, &ignore_error); unlink (testfile); - tmp = g_strdup_printf ("%s-reread", test_name); ASSERT (keyfile != NULL, - tmp, "expected keyfile for '%s'", testfile); + "wifi-leap-write-reread", "expected keyfile for '%s'", testfile); + + ASSERT (stat (keyfile, &statbuf) == 0, + "wifi-leap-write-reread", "couldn't stat() '%s'", keyfile); + ASSERT (S_ISREG (statbuf.st_mode), + "wifi-leap-write-reread", "keyfile '%s' wasn't a normal file", keyfile); + ASSERT ((statbuf.st_mode & 0077) == 0, + "wifi-leap-write-reread", "keyfile '%s' wasn't readable only by its owner", keyfile); + unlink (keyfile); ASSERT (reread != NULL, - tmp, "failed to read %s: %s", testfile, error->message); + "wifi-leap-write-reread", "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - tmp, "failed to verify %s: %s", testfile, error->message); - g_free (tmp); + "wifi-leap-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - test_name, "written and re-read connection weren't the same."); + "wifi-leap-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -9644,7 +9591,7 @@ test_write_wifi_wpa_psk (const char *name, } static void -test_write_wifi_wpa_psk_adhoc (void) +test_write_wifi_leap_secret_flags (NMSettingSecretFlags flags) { NMConnection *connection; NMConnection *reread; @@ -9664,91 +9611,58 @@ test_write_wifi_wpa_psk_adhoc (void) gboolean ignore_error = FALSE; GByteArray *ssid; const unsigned char ssid_data[] = "blahblah"; - NMIP4Address *addr; - const guint32 ip1 = htonl (0x01010103); - const guint32 gw = htonl (0x01010101); - const guint32 dns1 = htonl (0x04020201); - const guint32 prefix = 24; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wpa-psk-adhoc-write", "failed to allocate new connection"); + g_assert (connection); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wpa-psk-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); + g_assert (s_con); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA PSK", + NM_SETTING_CONNECTION_ID, "Test Write Wifi LEAP Secret Flags", NM_SETTING_CONNECTION_UUID, uuid, - NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, NULL); g_free (uuid); /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wpa-psk-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); + g_assert (s_wifi); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (sizeof (ssid_data)); g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); - g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_MODE, "adhoc", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, - NM_SETTING_WIRELESS_CHANNEL, 11, - NM_SETTING_WIRELESS_BAND, "bg", + NM_SETTING_WIRELESS_MODE, "infrastructure", NULL); - g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wpa-psk-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); + g_assert (s_wsec); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-none", - NM_SETTING_WIRELESS_SECURITY_PSK, "7d308b11df1b4243b0f78e5f3fc68cdbb9a264ed0edf4c188edf329ff5b467f0", + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", + NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "leap", + NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "Bill Smith", + NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, "foobar22", + NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS, flags, NULL); - nm_setting_wireless_security_add_proto (s_wsec, "wpa"); - nm_setting_wireless_security_add_group (s_wsec, "tkip"); - /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wpa-psk-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); + g_assert (s_ip4); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, NULL); - - /* IP Address */ - addr = nm_ip4_address_new (); - nm_ip4_address_set_address (addr, ip1); - nm_ip4_address_set_prefix (addr, prefix); - nm_ip4_address_set_gateway (addr, gw); - nm_setting_ip4_config_add_address (s_ip4, addr); - nm_ip4_address_unref (addr); - - nm_setting_ip4_config_add_dns (s_ip4, dns1); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wpa-psk-adhoc-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); + g_assert (s_ip6); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -9756,21 +9670,21 @@ test_write_wifi_wpa_psk_adhoc (void) NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, NULL); - ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wpa-psk-adhoc-write", "failed to verify connection: %s", - (error && error->message) ? error->message : "(unknown)"); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); - ASSERT (success == TRUE, - "wifi-wpa-psk-adhoc-write", "failed to write connection to disk: %s", - (error && error->message) ? error->message : "(unknown)"); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile); - ASSERT (testfile != NULL, - "wifi-wpa-psk-adhoc-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -9785,18 +9699,23 @@ test_write_wifi_wpa_psk_adhoc (void) &ignore_error); unlink (testfile); - ASSERT (keyfile != NULL, - "wifi-wpa-psk-adhoc-write-reread", "expected keyfile for '%s'", testfile); - unlink (keyfile); + g_assert_no_error (error); - ASSERT (reread != NULL, - "wifi-wpa-psk-adhoc-write-reread", "failed to read %s: %s", testfile, error->message); + /* No key should be written out since the secret is not system owned */ + g_assert (keyfile); + g_assert (g_file_test (keyfile, G_FILE_TEST_EXISTS) == FALSE); - ASSERT (nm_connection_verify (reread, &error), - "wifi-wpa-psk-adhoc-write-reread", "failed to verify %s: %s", testfile, error->message); + g_assert (reread); - ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wpa-psk-adhoc-write", "written and re-read connection weren't the same."); + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + /* Remove the LEAP password from the original connection since it wont' be + * in the reread connection, as the password is not system owned. + */ + g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, NULL, NULL); + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); g_free (testfile); g_free (unmanaged); @@ -9808,17 +9727,21 @@ test_write_wifi_wpa_psk_adhoc (void) } static void -test_write_wifi_wpa_eap_tls (void) +test_write_wifi_wpa_psk (const char *name, + const char *test_name, + gboolean wep_group, + gboolean wpa, + gboolean wpa2, + const char *psk) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; NMSettingWireless *s_wifi; NMSettingWirelessSecurity *s_wsec; - NMSetting8021x *s_8021x; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; - char *uuid; + char *uuid, *tmp; gboolean success; GError *error = NULL; char *testfile = NULL; @@ -9828,22 +9751,19 @@ test_write_wifi_wpa_eap_tls (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const char *ssid_data = "blahblah"; + const unsigned char ssid_data[] = "blahblah"; + + g_return_if_fail (psk != NULL); connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA EAP-TLS", + NM_SETTING_CONNECTION_ID, name, NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -9852,87 +9772,50 @@ test_write_wifi_wpa_eap_tls (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); - ssid = g_byte_array_sized_new (strlen (ssid_data)); - g_byte_array_append (ssid, (const unsigned char *) ssid_data, strlen (ssid_data)); + ssid = g_byte_array_sized_new (sizeof (ssid_data)); + g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap", NULL); - nm_setting_wireless_security_add_proto (s_wsec, "wpa"); - nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); - nm_setting_wireless_security_add_group (s_wsec, "tkip"); - - /* Wireless security setting */ - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new %s setting", - NM_SETTING_802_1X_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_8021x)); - - g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, "Bill Smith", NULL); - - nm_setting_802_1x_add_eap_method (s_8021x, "tls"); - - success = nm_setting_802_1x_set_ca_cert (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-tls-write", "failed to set CA certificate '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); - - success = nm_setting_802_1x_set_client_cert (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-tls-write", "failed to set client certificate '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, error->message); + g_object_set (s_wsec, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", + NM_SETTING_WIRELESS_SECURITY_PSK, psk, + NULL); - success = nm_setting_802_1x_set_private_key (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, - "test1", - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-tls-write", "failed to set private key '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, error->message); + if (wep_group) { + nm_setting_wireless_security_add_group (s_wsec, "wep40"); + nm_setting_wireless_security_add_group (s_wsec, "wep104"); + } + if (wpa) { + nm_setting_wireless_security_add_proto (s_wsec, "wpa"); + nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); + nm_setting_wireless_security_add_group (s_wsec, "tkip"); + } + if (wpa2) { + nm_setting_wireless_security_add_proto (s_wsec, "rsn"); + nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); + nm_setting_wireless_security_add_group (s_wsec, "ccmp"); + } /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wpa-eap-tls-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -9941,7 +9824,7 @@ test_write_wifi_wpa_eap_tls (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wpa-eap-tls-write", "failed to verify connection: %s", + test_name, "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -9950,11 +9833,14 @@ test_write_wifi_wpa_eap_tls (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wpa-eap-tls-write", "failed to write connection to disk: %s", + test_name, "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wpa-eap-tls-write", "didn't get ifcfg file path back after writing connection"); + test_name, "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -9969,18 +9855,20 @@ test_write_wifi_wpa_eap_tls (void) &ignore_error); unlink (testfile); + tmp = g_strdup_printf ("%s-reread", test_name); ASSERT (keyfile != NULL, - "wifi-wpa-eap-tls-write-reread", "expected keyfile for '%s'", testfile); + tmp, "expected keyfile for '%s'", testfile); unlink (keyfile); ASSERT (reread != NULL, - "wifi-wpa-eap-tls-write-reread", "failed to read %s: %s", testfile, error->message); + tmp, "failed to read %s: %s", testfile, error->message); ASSERT (nm_connection_verify (reread, &error), - "wifi-wpa-eap-tls-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + tmp, "failed to verify %s: %s", testfile, error->message); + g_free (tmp); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wpa-eap-tls-write", "written and re-read connection weren't the same."); + test_name, "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -9992,14 +9880,13 @@ test_write_wifi_wpa_eap_tls (void) } static void -test_write_wifi_wpa_eap_ttls_tls (void) +test_write_wifi_wpa_psk_adhoc (void) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; NMSettingWireless *s_wifi; NMSettingWirelessSecurity *s_wsec; - NMSetting8021x *s_8021x; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; char *uuid; @@ -10012,22 +9899,22 @@ test_write_wifi_wpa_eap_ttls_tls (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const char *ssid_data = "blahblah"; + const unsigned char ssid_data[] = "blahblah"; + NMIP4Address *addr; + const guint32 ip1 = htonl (0x01010103); + const guint32 gw = htonl (0x01010101); + const guint32 dns1 = htonl (0x04020201); + const guint32 prefix = 24; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA EAP-TTLS (TLS)", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA PSK", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -10036,105 +9923,50 @@ test_write_wifi_wpa_eap_ttls_tls (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); - ssid = g_byte_array_sized_new (strlen (ssid_data)); - g_byte_array_append (ssid, (const unsigned char *) ssid_data, strlen (ssid_data)); + ssid = g_byte_array_sized_new (sizeof (ssid_data)); + g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + NM_SETTING_WIRELESS_MODE, "adhoc", + NM_SETTING_WIRELESS_CHANNEL, 11, + NM_SETTING_WIRELESS_BAND, "bg", NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap", NULL); - nm_setting_wireless_security_add_proto (s_wsec, "rsn"); - nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); - nm_setting_wireless_security_add_group (s_wsec, "ccmp"); - - /* Wireless security setting */ - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new %s setting", - NM_SETTING_802_1X_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_8021x)); - - nm_setting_802_1x_add_eap_method (s_8021x, "ttls"); - - g_object_set (s_8021x, - NM_SETTING_802_1X_IDENTITY, "Bill Smith", - NM_SETTING_802_1X_ANONYMOUS_IDENTITY, "foobar22", - NM_SETTING_802_1X_PHASE2_AUTHEAP, "tls", + g_object_set (s_wsec, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-none", + NM_SETTING_WIRELESS_SECURITY_PSK, "7d308b11df1b4243b0f78e5f3fc68cdbb9a264ed0edf4c188edf329ff5b467f0", NULL); - success = nm_setting_802_1x_set_ca_cert (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-tls-write", "failed to set CA certificate '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); + nm_setting_wireless_security_add_proto (s_wsec, "wpa"); + nm_setting_wireless_security_add_group (s_wsec, "tkip"); - /* Phase 2 TLS stuff */ + /* IP4 setting */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - /* phase2 CA cert */ - success = nm_setting_802_1x_set_phase2_ca_cert (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-tls-write", "failed to set inner CA certificate '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); - - /* phase2 client cert */ - success = nm_setting_802_1x_set_phase2_client_cert (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-tls-write", "failed to set inner client certificate '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, error->message); - - /* phase2 private key */ - success = nm_setting_802_1x_set_phase2_private_key (s_8021x, - TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, - "test1", - NM_SETTING_802_1X_CK_SCHEME_PATH, - NULL, - &error); - ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-tls-write", "failed to set private key '%s': %s", - TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, error->message); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, NULL); - /* IP4 setting */ - s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + /* IP Address */ + addr = nm_ip4_address_new (); + nm_ip4_address_set_address (addr, ip1); + nm_ip4_address_set_prefix (addr, prefix); + nm_ip4_address_set_gateway (addr, gw); + nm_setting_ip4_config_add_address (s_ip4, addr); + nm_ip4_address_unref (addr); - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + nm_setting_ip4_config_add_dns (s_ip4, dns1); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wpa-eap-ttls-tls-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -10143,7 +9975,7 @@ test_write_wifi_wpa_eap_ttls_tls (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wpa-eap-ttls-tls-write", "failed to verify connection: %s", + "wifi-wpa-psk-adhoc-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -10152,11 +9984,14 @@ test_write_wifi_wpa_eap_ttls_tls (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-tls-write", "failed to write connection to disk: %s", + "wifi-wpa-psk-adhoc-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wpa-eap-ttls-tls-write", "didn't get ifcfg file path back after writing connection"); + "wifi-wpa-psk-adhoc-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -10171,18 +10006,18 @@ test_write_wifi_wpa_eap_ttls_tls (void) &ignore_error); unlink (testfile); - ASSERT (reread != NULL, - "wifi-wpa-eap-ttls-tls-write-reread", "failed to read %s: %s", testfile, error->message); - ASSERT (keyfile != NULL, - "wifi-wpa-eap-ttls-tls-write-reread", "expected keyfile for '%s'", testfile); + "wifi-wpa-psk-adhoc-write-reread", "expected keyfile for '%s'", testfile); unlink (keyfile); + ASSERT (reread != NULL, + "wifi-wpa-psk-adhoc-write-reread", "failed to read %s: %s", testfile, error->message); + ASSERT (nm_connection_verify (reread, &error), - "wifi-wpa-eap-ttls-tls-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-wpa-psk-adhoc-write-reread", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wpa-eap-ttls-tls-write", "written and re-read connection weren't the same."); + "wifi-wpa-psk-adhoc-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -10194,7 +10029,7 @@ test_write_wifi_wpa_eap_ttls_tls (void) } static void -test_write_wifi_wpa_eap_ttls_mschapv2 (void) +test_write_wifi_wpa_eap_tls (void) { NMConnection *connection; NMConnection *reread; @@ -10217,19 +10052,14 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) const char *ssid_data = "blahblah"; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA EAP-TTLS (MSCHAPv2)", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA EAP-TLS", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -10238,9 +10068,6 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - ASSERT (s_wifi != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); ssid = g_byte_array_sized_new (strlen (ssid_data)); @@ -10249,41 +10076,26 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new %s setting", - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap", NULL); nm_setting_wireless_security_add_proto (s_wsec, "wpa"); - nm_setting_wireless_security_add_proto (s_wsec, "rsn"); nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); - nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); nm_setting_wireless_security_add_group (s_wsec, "tkip"); - nm_setting_wireless_security_add_group (s_wsec, "ccmp"); /* Wireless security setting */ s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new %s setting", - NM_SETTING_802_1X_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_8021x)); - nm_setting_802_1x_add_eap_method (s_8021x, "ttls"); + g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, "Bill Smith", NULL); - g_object_set (s_8021x, - NM_SETTING_802_1X_IDENTITY, "Bill Smith", - NM_SETTING_802_1X_PASSWORD, ";alkdfja;dslkfjsad;lkfjsadf", - NM_SETTING_802_1X_ANONYMOUS_IDENTITY, "foobar22", - NM_SETTING_802_1X_PHASE2_AUTHEAP, "mschapv2", - NULL); + nm_setting_802_1x_add_eap_method (s_8021x, "tls"); success = nm_setting_802_1x_set_ca_cert (s_8021x, TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, @@ -10291,24 +10103,36 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) NULL, &error); ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to set CA certificate '%s': %s", + "wifi-wpa-eap-tls-write", "failed to set CA certificate '%s': %s", TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); + success = nm_setting_802_1x_set_client_cert (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-tls-write", "failed to set client certificate '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, error->message); + + success = nm_setting_802_1x_set_private_key (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, + "test1", + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-tls-write", "failed to set private key '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, error->message); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -10317,7 +10141,7 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) NULL); ASSERT (nm_connection_verify (connection, &error) == TRUE, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to verify connection: %s", + "wifi-wpa-eap-tls-write", "failed to verify connection: %s", (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ @@ -10326,11 +10150,14 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) &testfile, &error); ASSERT (success == TRUE, - "wifi-wpa-eap-ttls-mschapv2-write", "failed to write connection to disk: %s", + "wifi-wpa-eap-tls-write", "failed to write connection to disk: %s", (error && error->message) ? error->message : "(unknown)"); ASSERT (testfile != NULL, - "wifi-wpa-eap-ttls-mschapv2-write", "didn't get ifcfg file path back after writing connection"); + "wifi-wpa-eap-tls-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -10345,18 +10172,18 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) &ignore_error); unlink (testfile); - ASSERT (reread != NULL, - "wifi-wpa-eap-ttls-mschapv2-write-reread", "failed to read %s: %s", testfile, error->message); - ASSERT (keyfile != NULL, - "wifi-wpa-eap-ttls-mschapv2-write-reread", "expected keyfile for '%s'", testfile); + "wifi-wpa-eap-tls-write-reread", "expected keyfile for '%s'", testfile); unlink (keyfile); + ASSERT (reread != NULL, + "wifi-wpa-eap-tls-write-reread", "failed to read %s: %s", testfile, error->message); + ASSERT (nm_connection_verify (reread, &error), - "wifi-wpa-eap-ttls-mschapv2-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + "wifi-wpa-eap-tls-write-reread-verify", "failed to verify %s: %s", testfile, error->message); ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "wifi-wpa-eap-ttls-mschapv2-write", "written and re-read connection weren't the same."); + "wifi-wpa-eap-tls-write", "written and re-read connection weren't the same."); g_free (testfile); g_free (unmanaged); @@ -10368,13 +10195,14 @@ test_write_wifi_wpa_eap_ttls_mschapv2 (void) } static void -test_write_wifi_wpa_then_open (void) +test_write_wifi_wpa_eap_ttls_tls (void) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; NMSettingWireless *s_wifi; NMSettingWirelessSecurity *s_wsec; + NMSetting8021x *s_8021x; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; char *uuid; @@ -10387,23 +10215,17 @@ test_write_wifi_wpa_then_open (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const unsigned char ssid_data[] = "blahblah"; - - /* Test that writing out a WPA config then changing that to an open - * config doesn't leave various WPA-related keys lying around in the ifcfg. - */ + const char *ssid_data = "blahblah"; connection = nm_connection_new (); - g_assert (connection); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - g_assert (s_con); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "random wifi connection", + NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA EAP-TTLS (TLS)", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, @@ -10412,48 +10234,89 @@ test_write_wifi_wpa_then_open (void) /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - g_assert (s_wifi); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); - ssid = g_byte_array_sized_new (sizeof (ssid_data)); - g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); + ssid = g_byte_array_sized_new (strlen (ssid_data)); + g_byte_array_append (ssid, (const unsigned char *) ssid_data, strlen (ssid_data)); g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); /* Wireless security setting */ s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - g_assert (s_wsec); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", - NM_SETTING_WIRELESS_SECURITY_PSK, "some cool PSK", - NULL); - - nm_setting_wireless_security_add_proto (s_wsec, "wpa"); - nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); - nm_setting_wireless_security_add_group (s_wsec, "tkip"); - + g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap", NULL); nm_setting_wireless_security_add_proto (s_wsec, "rsn"); nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); nm_setting_wireless_security_add_group (s_wsec, "ccmp"); + /* Wireless security setting */ + s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); + nm_connection_add_setting (connection, NM_SETTING (s_8021x)); + + nm_setting_802_1x_add_eap_method (s_8021x, "ttls"); + + g_object_set (s_8021x, + NM_SETTING_802_1X_IDENTITY, "Bill Smith", + NM_SETTING_802_1X_ANONYMOUS_IDENTITY, "foobar22", + NM_SETTING_802_1X_PHASE2_AUTHEAP, "tls", + NULL); + + success = nm_setting_802_1x_set_ca_cert (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-tls-write", "failed to set CA certificate '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); + + /* Phase 2 TLS stuff */ + + /* phase2 CA cert */ + success = nm_setting_802_1x_set_phase2_ca_cert (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-tls-write", "failed to set inner CA certificate '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); + + /* phase2 client cert */ + success = nm_setting_802_1x_set_phase2_client_cert (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-tls-write", "failed to set inner client certificate '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_CLIENT_CERT, error->message); + + /* phase2 private key */ + success = nm_setting_802_1x_set_phase2_private_key (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, + "test1", + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-tls-write", "failed to set private key '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_PRIVATE_KEY, error->message); + /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - g_assert (s_ip4); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - g_assert (s_ip6); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -10461,18 +10324,24 @@ test_write_wifi_wpa_then_open (void) NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, NULL); - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); + ASSERT (nm_connection_verify (connection, &error) == TRUE, + "wifi-wpa-eap-ttls-tls-write", "failed to verify connection: %s", + (error && error->message) ? error->message : "(unknown)"); /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); - g_assert_no_error (error); - g_assert (success); - g_assert (testfile); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-tls-write", "failed to write connection to disk: %s", + (error && error->message) ? error->message : "(unknown)"); + + ASSERT (testfile != NULL, + "wifi-wpa-eap-ttls-tls-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ reread = connection_from_file (testfile, @@ -10485,43 +10354,152 @@ test_write_wifi_wpa_then_open (void) &route6file, &error, &ignore_error); - g_assert_no_error (error); - g_assert (reread); + unlink (testfile); - success = nm_connection_verify (reread, &error); - g_assert_no_error (error); + ASSERT (reread != NULL, + "wifi-wpa-eap-ttls-tls-write-reread", "failed to read %s: %s", testfile, error->message); - success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); - g_assert (success); + ASSERT (keyfile != NULL, + "wifi-wpa-eap-ttls-tls-write-reread", "expected keyfile for '%s'", testfile); + unlink (keyfile); + + ASSERT (nm_connection_verify (reread, &error), + "wifi-wpa-eap-ttls-tls-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, + "wifi-wpa-eap-ttls-tls-write", "written and re-read connection weren't the same."); + + g_free (testfile); g_free (unmanaged); - unmanaged = NULL; + g_free (keyfile); g_free (routefile); - routefile = NULL; g_free (route6file); - route6file = NULL; + g_object_unref (connection); g_object_unref (reread); +} - /* Now change the connection to open and recheck */ - s_wifi = nm_connection_get_setting_wireless (connection); - g_assert (s_wifi); - g_object_set (s_wifi, NM_SETTING_WIRELESS_SEC, NULL, NULL); - nm_connection_remove_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY); +static void +test_write_wifi_wpa_eap_ttls_mschapv2 (void) +{ + NMConnection *connection; + NMConnection *reread; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + NMSettingWirelessSecurity *s_wsec; + NMSetting8021x *s_8021x; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + char *uuid; + gboolean success; + GError *error = NULL; + char *testfile = NULL; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GByteArray *ssid; + const char *ssid_data = "blahblah"; - /* Write it back out */ - success = writer_update_connection (connection, - TEST_SCRATCH_DIR "/network-scripts/", - testfile, - keyfile, - &error); - g_assert_no_error (error); - g_assert (success); + connection = nm_connection_new (); - unlink (keyfile); - g_free (keyfile); - keyfile = NULL; + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + nm_connection_add_setting (connection, NM_SETTING (s_con)); - /* re-read it for comparison */ + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Test Write Wifi WPA EAP-TTLS (MSCHAPv2)", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + + /* Wifi setting */ + s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + + ssid = g_byte_array_sized_new (strlen (ssid_data)); + g_byte_array_append (ssid, (const unsigned char *) ssid_data, strlen (ssid_data)); + + g_object_set (s_wifi, + NM_SETTING_WIRELESS_SSID, ssid, + NM_SETTING_WIRELESS_MODE, "infrastructure", + NULL); + + g_byte_array_free (ssid, TRUE); + + /* Wireless security setting */ + s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wsec)); + + g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap", NULL); + nm_setting_wireless_security_add_proto (s_wsec, "wpa"); + nm_setting_wireless_security_add_proto (s_wsec, "rsn"); + nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); + nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); + nm_setting_wireless_security_add_group (s_wsec, "tkip"); + nm_setting_wireless_security_add_group (s_wsec, "ccmp"); + + /* Wireless security setting */ + s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); + nm_connection_add_setting (connection, NM_SETTING (s_8021x)); + + nm_setting_802_1x_add_eap_method (s_8021x, "ttls"); + + g_object_set (s_8021x, + NM_SETTING_802_1X_IDENTITY, "Bill Smith", + NM_SETTING_802_1X_PASSWORD, ";alkdfja;dslkfjsad;lkfjsadf", + NM_SETTING_802_1X_ANONYMOUS_IDENTITY, "foobar22", + NM_SETTING_802_1X_PHASE2_AUTHEAP, "mschapv2", + NULL); + + success = nm_setting_802_1x_set_ca_cert (s_8021x, + TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, + NM_SETTING_802_1X_CK_SCHEME_PATH, + NULL, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-mschapv2-write", "failed to set CA certificate '%s': %s", + TEST_IFCFG_WIFI_WPA_EAP_TLS_CA_CERT, error->message); + + + /* IP4 setting */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + + /* IP6 setting */ + s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); + nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + + g_object_set (s_ip6, + NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, + NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, + NULL); + + ASSERT (nm_connection_verify (connection, &error) == TRUE, + "wifi-wpa-eap-ttls-mschapv2-write", "failed to verify connection: %s", + (error && error->message) ? error->message : "(unknown)"); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + ASSERT (success == TRUE, + "wifi-wpa-eap-ttls-mschapv2-write", "failed to write connection to disk: %s", + (error && error->message) ? error->message : "(unknown)"); + + ASSERT (testfile != NULL, + "wifi-wpa-eap-ttls-mschapv2-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, TYPE_WIRELESS, @@ -10533,33 +10511,31 @@ test_write_wifi_wpa_then_open (void) &error, &ignore_error); unlink (testfile); - g_assert_no_error (error); - g_assert (reread); + ASSERT (reread != NULL, + "wifi-wpa-eap-ttls-mschapv2-write-reread", "failed to read %s: %s", testfile, error->message); - /* No keyfile since it's an open connection this time */ - g_assert (keyfile); - g_assert (g_file_test (keyfile, G_FILE_TEST_EXISTS) == FALSE); + ASSERT (keyfile != NULL, + "wifi-wpa-eap-ttls-mschapv2-write-reread", "expected keyfile for '%s'", testfile); + unlink (keyfile); - success = nm_connection_verify (reread, &error); - g_assert_no_error (error); + ASSERT (nm_connection_verify (reread, &error), + "wifi-wpa-eap-ttls-mschapv2-write-reread-verify", "failed to verify %s: %s", testfile, error->message); - success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); - g_assert (success); + ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, + "wifi-wpa-eap-ttls-mschapv2-write", "written and re-read connection weren't the same."); - unlink (testfile); g_free (testfile); g_free (unmanaged); g_free (keyfile); g_free (routefile); g_free (route6file); - g_object_unref (reread); - g_object_unref (connection); + g_object_unref (reread); } static void -test_write_wifi_wpa_then_wep_with_perms (void) +test_write_wifi_wpa_then_open (void) { NMConnection *connection; NMConnection *reread; @@ -10578,11 +10554,10 @@ test_write_wifi_wpa_then_wep_with_perms (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - GSList *perm_list = NULL; - const unsigned char ssid_data[] = "SomeSSID"; + const unsigned char ssid_data[] = "blahblah"; - /* Test that writing out a WPA config then changing that to a WEP - * config works and doesn't cause infinite loop or other issues. + /* Test that writing out a WPA config then changing that to an open + * config doesn't leave various WPA-related keys lying around in the ifcfg. */ connection = nm_connection_new (); @@ -10594,18 +10569,13 @@ test_write_wifi_wpa_then_wep_with_perms (void) nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); - perm_list = g_slist_append (perm_list, "user:superman:"); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "random wifi connection 2", + NM_SETTING_CONNECTION_ID, "random wifi connection", NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, - NM_SETTING_CONNECTION_PERMISSIONS, perm_list, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, NULL); g_free (uuid); - g_slist_free (perm_list); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 1, - "test_write_wifi_wpa_then_wep_with_perms", "unexpected failure adding valid user permisson"); /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); @@ -10618,7 +10588,6 @@ test_write_wifi_wpa_then_wep_with_perms (void) g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); @@ -10630,7 +10599,7 @@ test_write_wifi_wpa_then_wep_with_perms (void) g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", - NM_SETTING_WIRELESS_SECURITY_PSK, "My cool PSK", + NM_SETTING_WIRELESS_SECURITY_PSK, "some cool PSK", NULL); nm_setting_wireless_security_add_proto (s_wsec, "wpa"); @@ -10671,6 +10640,9 @@ test_write_wifi_wpa_then_wep_with_perms (void) g_assert (success); g_assert (testfile); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -10699,15 +10671,8 @@ test_write_wifi_wpa_then_wep_with_perms (void) route6file = NULL; g_object_unref (reread); - /* Now change the connection to WEP and recheck */ - s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - g_assert (s_wsec); - nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - - g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", - NULL); - nm_setting_wireless_security_set_wep_key (s_wsec, 0, "abraka dabra"); + /* Now change the connection to open and recheck */ + nm_connection_remove_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY); /* Write it back out */ success = writer_update_connection (connection, @@ -10718,9 +10683,13 @@ test_write_wifi_wpa_then_wep_with_perms (void) g_assert_no_error (error); g_assert (success); + unlink (keyfile); g_free (keyfile); keyfile = NULL; + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read it for comparison */ reread = connection_from_file (testfile, NULL, @@ -10732,23 +10701,22 @@ test_write_wifi_wpa_then_wep_with_perms (void) &route6file, &error, &ignore_error); + unlink (testfile); g_assert_no_error (error); g_assert (reread); + /* No keyfile since it's an open connection this time */ + g_assert (keyfile); + g_assert (g_file_test (keyfile, G_FILE_TEST_EXISTS) == FALSE); + success = nm_connection_verify (reread, &error); g_assert_no_error (error); - success = nm_connection_compare (connection, reread, - NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS | - NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS); - - ASSERT (success, - "test_write_wifi_wpa_then_wep_with_perms", "failed to compare connections"); + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); - unlink (keyfile); unlink (testfile); - g_free (testfile); g_free (unmanaged); g_free (keyfile); @@ -10760,14 +10728,13 @@ test_write_wifi_wpa_then_wep_with_perms (void) } static void -test_write_wifi_dynamic_wep_leap (void) +test_write_wifi_wpa_then_wep_with_perms (void) { NMConnection *connection; NMConnection *reread; NMSettingConnection *s_con; NMSettingWireless *s_wifi; NMSettingWirelessSecurity *s_wsec; - NMSetting8021x *s_8021x; NMSettingIP4Config *s_ip4; NMSettingIP6Config *s_ip6; char *uuid; @@ -10780,9 +10747,12 @@ test_write_wifi_dynamic_wep_leap (void) char *route6file = NULL; gboolean ignore_error = FALSE; GByteArray *ssid; - const char *ssid_data = "blahblah"; - shvarFile *ifcfg; - char *tmp; + GSList *perm_list = NULL; + const unsigned char ssid_data[] = "SomeSSID"; + + /* Test that writing out a WPA config then changing that to a WEP + * config works and doesn't cause infinite loop or other issues. + */ connection = nm_connection_new (); g_assert (connection); @@ -10793,25 +10763,30 @@ test_write_wifi_dynamic_wep_leap (void) nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); + perm_list = g_slist_append (perm_list, "user:superman:"); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Wifi Dynamic WEP LEAP", + NM_SETTING_CONNECTION_ID, "random wifi connection 2", NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, + NM_SETTING_CONNECTION_PERMISSIONS, perm_list, NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, NULL); g_free (uuid); + g_slist_free (perm_list); + ASSERT (nm_setting_connection_get_num_permissions (s_con) == 1, + "test_write_wifi_wpa_then_wep_with_perms", "unexpected failure adding valid user permisson"); /* Wifi setting */ s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); g_assert (s_wifi); nm_connection_add_setting (connection, NM_SETTING (s_wifi)); - ssid = g_byte_array_sized_new (strlen (ssid_data)); - g_byte_array_append (ssid, (const unsigned char *) ssid_data, strlen (ssid_data)); + ssid = g_byte_array_sized_new (sizeof (ssid_data)); + g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NM_SETTING_WIRELESS_MODE, "infrastructure", - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NULL); g_byte_array_free (ssid, TRUE); @@ -10821,26 +10796,26 @@ test_write_wifi_dynamic_wep_leap (void) g_assert (s_wsec); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", NULL); - - /* Wireless security setting */ - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - g_assert (s_8021x); - nm_connection_add_setting (connection, NM_SETTING (s_8021x)); + g_object_set (s_wsec, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", + NM_SETTING_WIRELESS_SECURITY_PSK, "My cool PSK", + NULL); - nm_setting_802_1x_add_eap_method (s_8021x, "leap"); + nm_setting_wireless_security_add_proto (s_wsec, "wpa"); + nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); + nm_setting_wireless_security_add_group (s_wsec, "tkip"); - g_object_set (s_8021x, - NM_SETTING_802_1X_IDENTITY, "Bill Smith", - NM_SETTING_802_1X_PASSWORD, ";alkdfja;dslkfjsad;lkfjsadf", - NULL); + nm_setting_wireless_security_add_proto (s_wsec, "rsn"); + nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); + nm_setting_wireless_security_add_group (s_wsec, "ccmp"); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); g_assert (s_ip4); - g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); g_assert (s_ip6); @@ -10864,6 +10839,9 @@ test_write_wifi_dynamic_wep_leap (void) g_assert (success); g_assert (testfile); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -10877,21 +10855,220 @@ test_write_wifi_dynamic_wep_leap (void) &ignore_error); g_assert_no_error (error); g_assert (reread); - g_assert (keyfile); - unlink (keyfile); success = nm_connection_verify (reread, &error); g_assert_no_error (error); - g_assert (success); success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); g_assert (success); - /* Check and make sure that an "old-school" LEAP (Network EAP) connection - * did not get written. Check first that the auth alg is not set to "LEAP" - * and next that the only IEEE 802.1x EAP method is "LEAP". - */ - ifcfg = svNewFile (testfile); + g_free (unmanaged); + unmanaged = NULL; + g_free (routefile); + routefile = NULL; + g_free (route6file); + route6file = NULL; + g_object_unref (reread); + + /* Now change the connection to WEP and recheck */ + s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); + g_assert (s_wsec); + nm_connection_add_setting (connection, NM_SETTING (s_wsec)); + + g_object_set (s_wsec, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", + NULL); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "abraka dabra"); + + /* Write it back out */ + success = writer_update_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + testfile, + keyfile, + &error); + g_assert_no_error (error); + g_assert (success); + + g_free (keyfile); + keyfile = NULL; + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read it for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + g_assert_no_error (error); + + g_assert (reread); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + + success = nm_connection_compare (connection, reread, + NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS | + NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS); + + ASSERT (success, + "test_write_wifi_wpa_then_wep_with_perms", "failed to compare connections"); + + unlink (keyfile); + unlink (testfile); + + g_free (testfile); + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (reread); + + g_object_unref (connection); +} + +static void +test_write_wifi_dynamic_wep_leap (void) +{ + NMConnection *connection; + NMConnection *reread; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + NMSettingWirelessSecurity *s_wsec; + NMSetting8021x *s_8021x; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + char *uuid; + gboolean success; + GError *error = NULL; + char *testfile = NULL; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GByteArray *ssid; + const char *ssid_data = "blahblah"; + shvarFile *ifcfg; + char *tmp; + + connection = nm_connection_new (); + g_assert (connection); + + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + g_assert (s_con); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Test Write Wifi Dynamic WEP LEAP", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + + /* Wifi setting */ + s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); + g_assert (s_wifi); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + + ssid = g_byte_array_sized_new (strlen (ssid_data)); + g_byte_array_append (ssid, (const unsigned char *) ssid_data, strlen (ssid_data)); + + g_object_set (s_wifi, + NM_SETTING_WIRELESS_SSID, ssid, + NM_SETTING_WIRELESS_MODE, "infrastructure", + NULL); + + g_byte_array_free (ssid, TRUE); + + /* Wireless security setting */ + s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); + g_assert (s_wsec); + nm_connection_add_setting (connection, NM_SETTING (s_wsec)); + + g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", NULL); + + /* Wireless security setting */ + s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); + g_assert (s_8021x); + nm_connection_add_setting (connection, NM_SETTING (s_8021x)); + + nm_setting_802_1x_add_eap_method (s_8021x, "leap"); + + g_object_set (s_8021x, + NM_SETTING_802_1X_IDENTITY, "Bill Smith", + NM_SETTING_802_1X_PASSWORD, ";alkdfja;dslkfjsad;lkfjsadf", + NULL); + + /* IP4 setting */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + g_assert (s_ip4); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + + /* IP6 setting */ + s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); + g_assert (s_ip6); + nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + + g_object_set (s_ip6, + NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, + NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, + NULL); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + g_assert_no_error (error); + g_assert (reread); + g_assert (keyfile); + unlink (keyfile); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + /* Check and make sure that an "old-school" LEAP (Network EAP) connection + * did not get written. Check first that the auth alg is not set to "LEAP" + * and next that the only IEEE 802.1x EAP method is "LEAP". + */ + ifcfg = svOpenFile (testfile, &error); + g_assert_no_error (error); g_assert (ifcfg); tmp = svGetValue (ifcfg, "SECURITYMODE", FALSE); g_assert_cmpstr (tmp, ==, NULL); @@ -11074,7 +11251,7 @@ test_read_ibft_static (void) guint64 expected_timestamp = 0; const char *expected_dns1 = "10.16.255.2"; const char *expected_dns2 = "10.16.255.3"; - struct in_addr addr; + guint32 addr; const char *expected_address1 = "192.168.32.72"; const char *expected_address1_gw = "192.168.35.254"; NMIP4Address *ip4_addr; @@ -11202,7 +11379,7 @@ test_read_ibft_static (void) TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr.s_addr, + ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 0) == addr, "ibft-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value #1", TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -11213,7 +11390,7 @@ test_read_ibft_static (void) TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr.s_addr, + ASSERT (nm_setting_ip4_config_get_dns (s_ip4, 1) == addr, "ibft-static-verify-ip4", "failed to verify %s: unexpected %s / %s key value #2", TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -11244,7 +11421,7 @@ test_read_ibft_static (void) TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_DNS); - ASSERT (nm_ip4_address_get_address (ip4_addr) == addr.s_addr, + ASSERT (nm_ip4_address_get_address (ip4_addr) == addr, "ibft-static-verify-ip4", "failed to verify %s: unexpected IP4 address #1", TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -11255,7 +11432,7 @@ test_read_ibft_static (void) TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP4_CONFIG_ADDRESSES); - ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr.s_addr, + ASSERT (nm_ip4_address_get_gateway (ip4_addr) == addr, "ibft-static-verify-ip4", "failed to verify %s: unexpected IP4 address #1 gateway", TEST_IFCFG_IBFT_STATIC, NM_SETTING_IP4_CONFIG_SETTING_NAME, @@ -11269,7 +11446,7 @@ test_read_ibft_static (void) } static void -test_read_ibft_malformed (const char *name, const char *iscsiadm_path) +test_read_ibft_malformed (const char *name, const char *iscsiadm_path, gboolean expect_warning) { NMConnection *connection; char *unmanaged = NULL; @@ -11281,6 +11458,10 @@ test_read_ibft_malformed (const char *name, const char *iscsiadm_path) g_assert (g_file_test (iscsiadm_path, G_FILE_TEST_EXISTS)); + if (expect_warning) { + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*malformed iscsiadm record*"); + } connection = connection_from_file (TEST_IFCFG_IBFT_STATIC, NULL, TYPE_ETHERNET, @@ -11291,6 +11472,8 @@ test_read_ibft_malformed (const char *name, const char *iscsiadm_path) &route6file, &error, &ignore_error); + if (expect_warning) + g_test_assert_expected_messages (); ASSERT (connection == NULL, name, "unexpectedly able to read %s", TEST_IFCFG_IBFT_STATIC); @@ -11321,14 +11504,9 @@ test_write_wired_qeth_dhcp (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-qeth-dhcp-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-qeth-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -11342,9 +11520,6 @@ test_write_wired_qeth_dhcp (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-qeth-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); subchans = g_ptr_array_sized_new (3); @@ -11364,9 +11539,6 @@ test_write_wired_qeth_dhcp (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-qeth-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -11375,9 +11547,6 @@ test_write_wired_qeth_dhcp (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-qeth-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -11402,6 +11571,9 @@ test_write_wired_qeth_dhcp (void) ASSERT (testfile != NULL, "wired-qeth-dhcp-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -11520,7 +11692,8 @@ test_write_wired_ctc_dhcp (void) g_assert (testfile != NULL); /* Ensure the CTCPROT item gets written out as it's own option */ - ifcfg = svNewFile (testfile); + ifcfg = svOpenFile (testfile, &error); + g_assert_no_error (error); g_assert (ifcfg); tmp = svGetValue (ifcfg, "CTCPROT", TRUE); @@ -11535,6 +11708,9 @@ test_write_wired_ctc_dhcp (void) svCloseFile (ifcfg); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -11588,14 +11764,9 @@ test_write_permissions (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "permissions-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "permissions-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -11613,16 +11784,10 @@ test_write_permissions (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "permissions-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "permissions-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -11631,9 +11796,6 @@ test_write_permissions (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-qeth-dhcp-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -11658,6 +11820,9 @@ test_write_permissions (void) ASSERT (testfile != NULL, "permissions-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -11755,7 +11920,6 @@ test_write_wifi_wep_agent_keys (void) g_byte_array_append (ssid, (guint8 *) str_ssid, strlen (str_ssid)); g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NM_SETTING_WIRELESS_MODE, "infrastructure", NULL); g_byte_array_free (ssid, TRUE); @@ -11786,6 +11950,9 @@ test_write_wifi_wep_agent_keys (void) g_assert (success); g_assert (testfile != NULL); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -11847,14 +12014,9 @@ test_write_wired_pppoe (void) char *testfile = NULL; connection = nm_connection_new (); - ASSERT (connection != NULL, - "wired-pppoe-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "wired-pppoe-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -11868,16 +12030,10 @@ test_write_wired_pppoe (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "wired-pppoe-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "wired-pppoe-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -11886,9 +12042,6 @@ test_write_wired_pppoe (void) /* PPPoE setting */ s_pppoe = (NMSettingPPPOE *) nm_setting_pppoe_new (); - ASSERT (s_pppoe != NULL, - "wired-pppoe-write", "failed to allocate new %s setting", - NM_SETTING_PPPOE_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_pppoe)); g_object_set (G_OBJECT (s_pppoe), @@ -11899,9 +12052,6 @@ test_write_wired_pppoe (void) /* PPP setting */ s_ppp = (NMSettingPPP *) nm_setting_ppp_new (); - ASSERT (s_ppp != NULL, - "wired-pppoe-write", "failed to allocate new %s setting", - NM_SETTING_PPP_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ppp)); ASSERT (nm_connection_verify (connection, &error) == TRUE, @@ -11932,14 +12082,9 @@ test_write_vpn (void) char *testfile = NULL; connection = nm_connection_new (); - ASSERT (connection != NULL, - "vpn-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "vpn-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -11953,9 +12098,6 @@ test_write_vpn (void) /* VPN setting */ s_vpn = (NMSettingVPN *) nm_setting_vpn_new (); - ASSERT (s_vpn != NULL, - "vpn-write", "failed to allocate new %s setting", - NM_SETTING_VPN_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_vpn)); g_object_set (s_vpn, @@ -11968,9 +12110,6 @@ test_write_vpn (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "vpn-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -12008,14 +12147,9 @@ test_write_mobile_broadband (gboolean gsm) char *testfile = NULL; connection = nm_connection_new (); - ASSERT (connection != NULL, - "mobile-broadband-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "mobile-broadband-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -12030,18 +12164,12 @@ test_write_mobile_broadband (gboolean gsm) if (gsm) { /* GSM setting */ s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); - ASSERT (s_gsm != NULL, - "mobile-broadband-write", "failed to allocate new %s setting", - NM_SETTING_GSM_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_gsm)); g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, "*99#", NULL); } else { /* CDMA setting */ s_cdma = (NMSettingCdma *) nm_setting_cdma_new (); - ASSERT (s_cdma != NULL, - "mobile-broadband-write", "failed to allocate new %s setting", - NM_SETTING_CDMA_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_cdma)); g_object_set (s_cdma, NM_SETTING_CDMA_NUMBER, "#777", NULL); @@ -12049,9 +12177,6 @@ test_write_mobile_broadband (gboolean gsm) /* Serial setting */ s_serial = (NMSettingSerial *) nm_setting_serial_new (); - ASSERT (s_serial != NULL, - "mobile-broadband-write", "failed to allocate new %s setting", - NM_SETTING_SERIAL_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_serial)); g_object_set (s_serial, @@ -12063,9 +12188,6 @@ test_write_mobile_broadband (gboolean gsm) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "mobile-broadband-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -12074,9 +12196,6 @@ test_write_mobile_broadband (gboolean gsm) /* PPP setting */ s_ppp = (NMSettingPPP *) nm_setting_ppp_new (); - ASSERT (s_ppp != NULL, - "mobile-broadband-write", "failed to allocate new %s setting", - NM_SETTING_PPP_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ppp)); ASSERT (nm_connection_verify (connection, &error) == TRUE, @@ -12101,6 +12220,8 @@ test_read_bridge_main (void) { NMConnection *connection; NMSettingBridge *s_bridge; + const GByteArray *array; + char expected_mac_address[ETH_ALEN] = { 0x00, 0x16, 0x41, 0x11, 0x22, 0x33 }; char *unmanaged = NULL; char *keyfile = NULL; char *routefile = NULL; @@ -12128,11 +12249,16 @@ test_read_bridge_main (void) g_assert (s_bridge); g_assert_cmpstr (nm_setting_bridge_get_interface_name (s_bridge), ==, "br0"); g_assert_cmpuint (nm_setting_bridge_get_forward_delay (s_bridge), ==, 0); - g_assert_cmpuint (nm_setting_bridge_get_stp (s_bridge), ==, TRUE); + g_assert (nm_setting_bridge_get_stp (s_bridge)); g_assert_cmpuint (nm_setting_bridge_get_priority (s_bridge), ==, 32744); g_assert_cmpuint (nm_setting_bridge_get_hello_time (s_bridge), ==, 7); g_assert_cmpuint (nm_setting_bridge_get_max_age (s_bridge), ==, 39); g_assert_cmpuint (nm_setting_bridge_get_ageing_time (s_bridge), ==, 235352); + /* MAC address */ + array = nm_setting_bridge_get_mac_address (s_bridge); + g_assert (array); + g_assert_cmpint (array->len, ==, ETH_ALEN); + g_assert (memcmp (array->data, &expected_mac_address[0], ETH_ALEN) == 0); g_free (unmanaged); g_free (keyfile); @@ -12155,6 +12281,8 @@ test_write_bridge_main (void) const guint32 gw = htonl (0x01010101); const guint32 prefix = 24; NMIP4Address *addr; + static unsigned char bridge_mac[] = { 0x31, 0x33, 0x33, 0x37, 0xbe, 0xcd }; + GByteArray *mac_array; gboolean success; GError *error = NULL; char *testfile = NULL; @@ -12186,9 +12314,13 @@ test_write_bridge_main (void) g_assert (s_bridge); nm_connection_add_setting (connection, NM_SETTING (s_bridge)); + mac_array = g_byte_array_sized_new (sizeof (bridge_mac)); + g_byte_array_append (mac_array, bridge_mac, sizeof (bridge_mac)); g_object_set (s_bridge, NM_SETTING_BRIDGE_INTERFACE_NAME, "br0", + NM_SETTING_BRIDGE_MAC_ADDRESS, mac_array, NULL); + g_byte_array_free (mac_array, TRUE); /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); @@ -12227,6 +12359,9 @@ test_write_bridge_main (void) g_assert (success); g_assert_cmpstr (testfile, !=, NULL); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -12379,6 +12514,9 @@ test_write_bridge_component (void) g_assert (success); g_assert (testfile); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -12442,7 +12580,7 @@ test_read_bridge_missing_stp (void) s_bridge = nm_connection_get_setting_bridge (connection); g_assert (s_bridge); g_assert_cmpstr (nm_setting_bridge_get_interface_name (s_bridge), ==, "br0"); - g_assert_cmpuint (nm_setting_bridge_get_stp (s_bridge), ==, FALSE); + g_assert (nm_setting_bridge_get_stp (s_bridge) == FALSE); g_free (unmanaged); g_free (keyfile); @@ -12612,15 +12750,10 @@ test_read_vlan_physdev (void) NMConnection *connection; GError *error = NULL; NMSettingVlan *s_vlan; - char *unmanaged = NULL, *keyfile = NULL, *routefile = NULL, *route6file = NULL; connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-vlan-physdev", - NULL, TYPE_ETHERNET, NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, NULL); + NULL, TYPE_ETHERNET, NULL, NULL, + NULL, NULL, NULL, &error, NULL); g_assert_no_error (error); g_assert (connection); g_assert (nm_connection_verify (connection, &error)); @@ -12633,11 +12766,6 @@ test_read_vlan_physdev (void) g_assert_cmpint (nm_setting_vlan_get_id (s_vlan), ==, 3); g_object_unref (connection); - - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); } static void @@ -12721,6 +12849,9 @@ test_write_vlan_only_vlanid (void) &error); g_assert (success); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (written, NULL, @@ -12827,6 +12958,9 @@ test_write_ethernet_missing_ipv6 (void) ASSERT (testfile != NULL, "ethernet-missing-ipv6", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -12949,14 +13083,9 @@ test_write_bond_main (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "bond-main-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -12970,16 +13099,10 @@ test_write_bond_main (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); /* bond setting */ s_bond = (NMSettingBond *) nm_setting_bond_new (); - ASSERT (s_bond != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_BOND_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_bond)); g_object_set (s_bond, @@ -12988,9 +13111,6 @@ test_write_bond_main (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); g_object_set (s_ip4, @@ -13007,9 +13127,6 @@ test_write_bond_main (void) /* IP6 setting */ s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip6)); g_object_set (s_ip6, @@ -13032,6 +13149,9 @@ test_write_bond_main (void) ASSERT (testfile != NULL, "bond-main-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -13077,6 +13197,8 @@ test_read_bond_slave (void) gboolean ignore_error = FALSE; GError *error = NULL; + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*ignoring IP4 config on slave*"); connection = connection_from_file (TEST_IFCFG_BOND_SLAVE, NULL, TYPE_ETHERNET, @@ -13087,6 +13209,8 @@ test_read_bond_slave (void) &route6file, &error, &ignore_error); + g_test_assert_expected_messages (); + ASSERT (connection != NULL, "bond-slave-read", "unexpected failure reading %s", TEST_IFCFG_BOND_SLAVE); @@ -13134,14 +13258,9 @@ test_write_bond_slave (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "bond-slave-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "bond-slave-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -13157,9 +13276,6 @@ test_write_bond_slave (void) /* Wired setting */ s_wired = (NMSettingWired *) nm_setting_wired_new (); - ASSERT (s_wired != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_WIRED_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_wired)); mac = g_byte_array_sized_new (sizeof (tmpmac)); @@ -13187,6 +13303,9 @@ test_write_bond_slave (void) ASSERT (testfile != NULL, "bond-slave-write", "didn't get ifcfg file path back after writing connection"); + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + /* re-read the connection for comparison */ reread = connection_from_file (testfile, NULL, @@ -13330,14 +13449,9 @@ test_write_infiniband (void) gboolean ignore_error = FALSE; connection = nm_connection_new (); - ASSERT (connection != NULL, - "infiniband-write", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "infiniband-write", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); @@ -13351,9 +13465,6 @@ test_write_infiniband (void) /* InfiniBand setting */ s_infiniband = (NMSettingInfiniband *) nm_setting_infiniband_new (); - ASSERT (s_infiniband != NULL, - "infiniband-write", "failed to allocate new %s setting", - NM_SETTING_INFINIBAND_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_infiniband)); mac = g_byte_array_sized_new (sizeof (tmpmac)); @@ -13368,242 +13479,1051 @@ test_write_infiniband (void) /* IP4 setting */ s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); - ASSERT (s_ip4 != NULL, - "infiniband-write", "failed to allocate new %s setting", - NM_SETTING_IP4_CONFIG_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_ip4)); - g_object_set (s_ip4, - NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, - NM_SETTING_IP4_CONFIG_MAY_FAIL, TRUE, - NULL); + g_object_set (s_ip4, + NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL, + NM_SETTING_IP4_CONFIG_MAY_FAIL, TRUE, + NULL); + + addr = nm_ip4_address_new (); + nm_ip4_address_set_address (addr, ip1); + nm_ip4_address_set_prefix (addr, prefix); + nm_ip4_address_set_gateway (addr, gw); + nm_setting_ip4_config_add_address (s_ip4, addr); + nm_ip4_address_unref (addr); + + /* IP6 setting */ + s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); + nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + + g_object_set (s_ip6, + NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, + NULL); + + ASSERT (nm_connection_verify (connection, &error) == TRUE, + "infiniband-write", "failed to verify connection: %s", + (error && error->message) ? error->message : "(unknown)"); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + ASSERT (success == TRUE, + "infiniband-write", "failed to write connection to disk: %s", + (error && error->message) ? error->message : "(unknown)"); + + ASSERT (testfile != NULL, + "infiniband-write", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_INFINIBAND, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + unlink (testfile); + + ASSERT (reread != NULL, + "infiniband-write-reread", "failed to read %s: %s", testfile, error->message); + + ASSERT (nm_connection_verify (reread, &error), + "infiniband-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + + ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, + "infiniband-write", "written and re-read connection weren't the same."); + + g_free (testfile); + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); + g_object_unref (reread); +} + +#define TEST_IFCFG_BOND_SLAVE_IB TEST_IFCFG_DIR"/network-scripts/ifcfg-test-bond-slave-ib" + +static void +test_read_bond_slave_ib (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*ignoring IP4 config on slave*"); + connection = connection_from_file (TEST_IFCFG_BOND_SLAVE_IB, + NULL, + NULL, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + g_test_assert_expected_messages(); + + ASSERT (connection != NULL, + "bond-slave-read-ib", "unexpected failure reading %s", TEST_IFCFG_BOND_SLAVE_IB); + + ASSERT (nm_connection_verify (connection, &error), + "bond-slave-read-ib", "failed to verify %s: %s", TEST_IFCFG_BOND_SLAVE_IB, error->message); + + s_con = nm_connection_get_setting_connection (connection); + ASSERT (s_con != NULL, + "bond-slave-read-ib", "failed to verify %s: missing %s setting", + TEST_IFCFG_BOND_SLAVE_IB, NM_SETTING_CONNECTION_SETTING_NAME); + + ASSERT (g_strcmp0 (nm_setting_connection_get_master (s_con), "bond0") == 0, + "bond-slave-read-ib", "failed to verify %s: master is not bond0", + TEST_IFCFG_BOND_SLAVE_IB); + + ASSERT (g_strcmp0 (nm_setting_connection_get_slave_type (s_con), NM_SETTING_BOND_SETTING_NAME) == 0, + "bond-slave-read-ib", "failed to verify %s: slave-type is not bond", + TEST_IFCFG_BOND_SLAVE_IB); + + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); +} + +static void +test_write_bond_slave_ib (void) +{ + NMConnection *connection; + NMConnection *reread; + NMSettingConnection *s_con; + NMSettingInfiniband *s_infiniband; + static unsigned char tmpmac[] = { + 0x80, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, + 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22 + }; + GByteArray *mac; + char *uuid; + gboolean success; + GError *error = NULL; + char *testfile = NULL; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + + connection = nm_connection_new (); + + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Test Write Bond Slave InfiniBand", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_INFINIBAND_SETTING_NAME, + NM_SETTING_CONNECTION_MASTER, "bond0", + NM_SETTING_CONNECTION_SLAVE_TYPE, NM_SETTING_BOND_SETTING_NAME, + NULL); + g_free (uuid); + + /* InfiniBand setting */ + s_infiniband = (NMSettingInfiniband *) nm_setting_infiniband_new (); + nm_connection_add_setting (connection, NM_SETTING (s_infiniband)); + + mac = g_byte_array_sized_new (sizeof (tmpmac)); + g_byte_array_append (mac, &tmpmac[0], sizeof (tmpmac)); + + g_object_set (s_infiniband, + NM_SETTING_INFINIBAND_MAC_ADDRESS, mac, + NM_SETTING_INFINIBAND_MTU, 2044, + NM_SETTING_INFINIBAND_TRANSPORT_MODE, "datagram", + NULL); + g_byte_array_free (mac, TRUE); + + ASSERT (nm_connection_verify (connection, &error) == TRUE, + "bond-slave-write-ib", "failed to verify connection: %s", + (error && error->message) ? error->message : "(unknown)"); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + ASSERT (success == TRUE, + "bond-slave-write-ib", "failed to write connection to disk: %s", + (error && error->message) ? error->message : "(unknown)"); + + ASSERT (testfile != NULL, + "bond-slave-write-ib", "didn't get ifcfg file path back after writing connection"); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, + NULL, + NULL, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + unlink (testfile); + + ASSERT (reread != NULL, + "bond-slave-write-ib-reread", "failed to read %s: %s", testfile, error->message); + + ASSERT (nm_connection_verify (reread, &error), + "bond-slave-write-ib-reread-verify", "failed to verify %s: %s", testfile, error->message); + + ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, + "bond-slave-write-ib", "written and re-read connection weren't the same."); + + if (route6file) + unlink (route6file); + + g_free (testfile); + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (connection); + g_object_unref (reread); +} + +#define DCB_ALL_FLAGS (NM_SETTING_DCB_FLAG_ENABLE | \ + NM_SETTING_DCB_FLAG_ADVERTISE | \ + NM_SETTING_DCB_FLAG_WILLING) + +static void +test_read_dcb_basic (void) +{ + NMConnection *connection; + GError *error = NULL; + NMSettingDcb *s_dcb; + gboolean success; + guint i; + guint expected_group_ids[8] = { 0, 0, 0, 0, 1, 1, 1, 0xF }; + guint expected_group_bandwidths[8] = { 25, 0, 0, 75, 0, 0, 0, 0 }; + guint expected_bandwidths[8] = { 5, 10, 30, 25, 10, 50, 5, 0 }; + gboolean expected_strict[8] = { FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE }; + guint expected_traffic_classes[8] = { 7, 6, 5, 4, 3, 2, 1, 0 }; + gboolean expected_pfcs[8] = { TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE }; + + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + s_dcb = nm_connection_get_setting_dcb (connection); + g_assert (s_dcb); + + g_assert_cmpint (nm_setting_dcb_get_app_fcoe_flags (s_dcb), ==, DCB_ALL_FLAGS); + g_assert_cmpint (nm_setting_dcb_get_app_fcoe_priority (s_dcb), ==, 7); + + g_assert_cmpint (nm_setting_dcb_get_app_iscsi_flags (s_dcb), ==, DCB_ALL_FLAGS); + g_assert_cmpint (nm_setting_dcb_get_app_iscsi_priority (s_dcb), ==, 6); + + g_assert_cmpint (nm_setting_dcb_get_app_fip_flags (s_dcb), ==, DCB_ALL_FLAGS); + g_assert_cmpint (nm_setting_dcb_get_app_fip_priority (s_dcb), ==, 2); + + g_assert_cmpint (nm_setting_dcb_get_priority_flow_control_flags (s_dcb), ==, (NM_SETTING_DCB_FLAG_ENABLE | NM_SETTING_DCB_FLAG_ADVERTISE)); + for (i = 0; i < 8; i++) + g_assert_cmpint (nm_setting_dcb_get_priority_flow_control (s_dcb, i), ==, expected_pfcs[i]); + + g_assert_cmpint (nm_setting_dcb_get_priority_group_flags (s_dcb), ==, DCB_ALL_FLAGS); + + /* Group IDs */ + for (i = 0; i < 8; i++) + g_assert_cmpint (nm_setting_dcb_get_priority_group_id (s_dcb, i), ==, expected_group_ids[i]); + + /* Group bandwidth */ + for (i = 0; i < 8; i++) + g_assert_cmpint (nm_setting_dcb_get_priority_group_bandwidth (s_dcb, i), ==, expected_group_bandwidths[i]); + + /* User priority bandwidth */ + for (i = 0; i < 8; i++) + g_assert_cmpint (nm_setting_dcb_get_priority_bandwidth (s_dcb, i), ==, expected_bandwidths[i]); + + /* Strict bandwidth */ + for (i = 0; i < 8; i++) + g_assert_cmpint (nm_setting_dcb_get_priority_strict_bandwidth (s_dcb, i), ==, expected_strict[i]); + + /* Traffic class */ + for (i = 0; i < 8; i++) + g_assert_cmpint (nm_setting_dcb_get_priority_traffic_class (s_dcb, i), ==, expected_traffic_classes[i]); + + g_object_unref (connection); +} + +static void +test_write_dcb_basic (void) +{ + NMConnection *connection, *reread; + GError *error = NULL; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingDcb *s_dcb; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + gboolean success, ignore_error; + guint i; + char *uuid, *testfile; + const guint group_ids[8] = { 4, 0xF, 6, 0xF, 1, 7, 3, 0xF }; + const guint group_bandwidths[8] = { 10, 20, 15, 10, 2, 3, 35, 5 }; + const guint bandwidths[8] = { 10, 20, 30, 40, 50, 10, 0, 25 }; + const gboolean strict[8] = { TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE }; + const guint traffic_classes[8] = { 3, 4, 7, 2, 1, 0, 5, 6 }; + const gboolean pfcs[8] = { TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE }; + + connection = nm_connection_new (); + + s_con = (NMSettingConnection *) nm_setting_connection_new (); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + uuid = nm_utils_uuid_generate (); + g_object_set (G_OBJECT (s_con), + NM_SETTING_CONNECTION_ID, "dcb-test", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, + NM_SETTING_CONNECTION_INTERFACE_NAME, "eth0", + NULL); + g_free (uuid); + + /* Wired setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); + + /* IP stuff */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + g_object_set (G_OBJECT (s_ip4), NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + + s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); + g_object_set (G_OBJECT (s_ip6), NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL); + nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + + /* DCB */ + s_dcb = (NMSettingDcb *) nm_setting_dcb_new (); + nm_connection_add_setting (connection, NM_SETTING (s_dcb)); + + g_object_set (G_OBJECT (s_dcb), + NM_SETTING_DCB_APP_FCOE_FLAGS, DCB_ALL_FLAGS, + NM_SETTING_DCB_APP_FCOE_PRIORITY, 5, + NM_SETTING_DCB_APP_ISCSI_FLAGS, DCB_ALL_FLAGS, + NM_SETTING_DCB_APP_ISCSI_PRIORITY, 1, + NM_SETTING_DCB_APP_FIP_FLAGS, DCB_ALL_FLAGS, + NM_SETTING_DCB_APP_FIP_PRIORITY, 3, + NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS, DCB_ALL_FLAGS, + NM_SETTING_DCB_PRIORITY_GROUP_FLAGS, DCB_ALL_FLAGS, + NULL); + + for (i = 0; i < 8; i++) { + nm_setting_dcb_set_priority_flow_control (s_dcb, i, pfcs[i]); + nm_setting_dcb_set_priority_group_id (s_dcb, i, group_ids[i]); + nm_setting_dcb_set_priority_group_bandwidth (s_dcb, i, group_bandwidths[i]); + nm_setting_dcb_set_priority_bandwidth (s_dcb, i, bandwidths[i]); + nm_setting_dcb_set_priority_strict_bandwidth (s_dcb, i, strict[i]); + nm_setting_dcb_set_priority_traffic_class (s_dcb, i, traffic_classes[i]); + } + + g_assert (nm_connection_verify (connection, &error)); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_ETHERNET, + NULL, NULL, NULL, + NULL, NULL, + &error, + &ignore_error); + unlink (testfile); + + g_assert_no_error (error); + g_assert (reread); + g_assert (nm_connection_verify (reread, &error)); + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); + + g_object_unref (connection); + g_object_unref (reread); + g_free (testfile); +} + +static void +test_read_dcb_default_app_priorities (void) +{ + NMConnection *connection; + GError *error = NULL; + NMSettingDcb *s_dcb; + gboolean success; + + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-default-app-priorities", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + s_dcb = nm_connection_get_setting_dcb (connection); + g_assert (s_dcb); + + g_assert_cmpint (nm_setting_dcb_get_app_fcoe_flags (s_dcb), ==, NM_SETTING_DCB_FLAG_ENABLE); + g_assert_cmpint (nm_setting_dcb_get_app_fcoe_priority (s_dcb), ==, -1); + + g_assert_cmpint (nm_setting_dcb_get_app_iscsi_flags (s_dcb), ==, NM_SETTING_DCB_FLAG_ENABLE); + g_assert_cmpint (nm_setting_dcb_get_app_iscsi_priority (s_dcb), ==, -1); + + g_assert_cmpint (nm_setting_dcb_get_app_fip_flags (s_dcb), ==, NM_SETTING_DCB_FLAG_ENABLE); + g_assert_cmpint (nm_setting_dcb_get_app_fip_priority (s_dcb), ==, -1); + + g_object_unref (connection); +} + +static void +test_read_dcb_bad_booleans (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*invalid DCB_PG_STRICT value*not all 0s and 1s*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-bad-booleans", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "invalid boolean digit")); + g_assert (connection == NULL); +} + +static void +test_read_dcb_short_booleans (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*DCB_PG_STRICT value*8 characters*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-short-booleans", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "boolean array must be 8 characters")); + g_assert (connection == NULL); +} + +static void +test_read_dcb_bad_uints (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*invalid DCB_PG_UP2TC value*not 0 - 7*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-bad-uints", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "invalid uint digit")); + g_assert (connection == NULL); +} + +static void +test_read_dcb_short_uints (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*DCB_PG_UP2TC value*8 characters*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-short-uints", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "uint array must be 8 characters")); + g_assert (connection == NULL); +} + +static void +test_read_dcb_bad_percent (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*invalid DCB_PG_PCT percentage value*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-bad-percent", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "invalid percent element")); + g_assert (connection == NULL); +} + +static void +test_read_dcb_short_percent (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*invalid DCB_PG_PCT percentage list value*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-short-percent", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "percent array must be 8 elements")); + g_assert (connection == NULL); +} + +static void +test_read_dcb_pgpct_not_100 (void) +{ + NMConnection *connection; + GError *error = NULL; + + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, + "*DCB_PG_PCT percentages do not equal 100*"); + connection = connection_from_file (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-dcb-pgpct-not-100", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_test_assert_expected_messages (); + + g_assert_error (error, IFCFG_PLUGIN_ERROR, 0); + g_assert (strstr (error->message, "invalid percentage sum")); + g_assert (connection == NULL); +} + +static void +test_read_fcoe_mode (gconstpointer user_data) +{ + const char *expected_mode = user_data; + NMConnection *connection; + GError *error = NULL; + NMSettingDcb *s_dcb; + gboolean success; + char *file; + + file = g_strdup_printf (TEST_IFCFG_DIR "/network-scripts/ifcfg-test-fcoe-%s", expected_mode); + connection = connection_from_file (file, NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_free (file); + g_assert_no_error (error); + g_assert (connection); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + s_dcb = nm_connection_get_setting_dcb (connection); + g_assert (s_dcb); + + g_assert_cmpint (nm_setting_dcb_get_app_fcoe_flags (s_dcb), ==, NM_SETTING_DCB_FLAG_ENABLE); + g_assert_cmpstr (nm_setting_dcb_get_app_fcoe_mode (s_dcb), ==, expected_mode); + + g_object_unref (connection); +} + +static void +test_write_fcoe_mode (gconstpointer user_data) +{ + const char *expected_mode = user_data; + NMConnection *connection, *reread; + GError *error = NULL; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingDcb *s_dcb; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + gboolean success, ignore_error; + char *uuid, *testfile; + + connection = nm_connection_new (); + + s_con = (NMSettingConnection *) nm_setting_connection_new (); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + uuid = nm_utils_uuid_generate (); + g_object_set (G_OBJECT (s_con), + NM_SETTING_CONNECTION_ID, "fcoe-test", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, + NM_SETTING_CONNECTION_INTERFACE_NAME, "eth0", + NULL); + g_free (uuid); + + /* Wired setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); + + /* IP stuff */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + g_object_set (G_OBJECT (s_ip4), NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + + s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); + g_object_set (G_OBJECT (s_ip6), NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL); + nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + + /* DCB */ + s_dcb = (NMSettingDcb *) nm_setting_dcb_new (); + nm_connection_add_setting (connection, NM_SETTING (s_dcb)); + + g_object_set (G_OBJECT (s_dcb), + NM_SETTING_DCB_APP_FCOE_FLAGS, NM_SETTING_DCB_FLAG_ENABLE, + NM_SETTING_DCB_APP_FCOE_MODE, expected_mode, + NULL); + + g_assert (nm_connection_verify (connection, &error)); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile); + + { + shvarFile *ifcfg = svOpenFile (testfile, &error); + char *written_mode; + + g_assert_no_error (error); + g_assert (ifcfg); + written_mode = svGetValue (ifcfg, "DCB_APP_FCOE_MODE", FALSE); + svCloseFile (ifcfg); + g_assert_cmpstr (written_mode, ==, expected_mode); + g_free (written_mode); + } + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_ETHERNET, + NULL, NULL, NULL, + NULL, NULL, + &error, + &ignore_error); + unlink (testfile); + + g_assert_no_error (error); + g_assert (reread); + g_assert (nm_connection_verify (reread, &error)); + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); + + g_object_unref (connection); + g_object_unref (reread); + g_free (testfile); +} + +static void +test_read_team_master (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingTeam *s_team; + gboolean success; + GError *error = NULL; + const char *expected_config = "{ \"device\": \"team0\", \"link_watch\": { \"name\": \"ethtool\" } }"; + + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-team-master", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_TEAM_SETTING_NAME); + + s_team = nm_connection_get_setting_team (connection); + g_assert (s_team); + g_assert_cmpstr (nm_setting_team_get_interface_name (s_team), ==, "team0"); + g_assert_cmpstr (nm_setting_team_get_config (s_team), ==, expected_config); + + g_object_unref (connection); +} + +static void +test_write_team_master (void) +{ + NMConnection *connection, *reread; + NMSettingConnection *s_con; + NMSettingTeam *s_team; + NMSettingWired *s_wired; + char *uuid, *testfile = NULL, *val; + gboolean success; + GError *error = NULL; + const char *expected_config = "{ \"device\": \"team0\", \"link_watch\": { \"name\": \"ethtool\" } }"; + const char *escaped_expected_config = "\"{ \\\"device\\\": \\\"team0\\\", \\\"link_watch\\\": { \\\"name\\\": \\\"ethtool\\\" } }\""; + shvarFile *f; + + connection = nm_connection_new (); + + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + nm_connection_add_setting (connection, NM_SETTING (s_con)); - addr = nm_ip4_address_new (); - nm_ip4_address_set_address (addr, ip1); - nm_ip4_address_set_prefix (addr, prefix); - nm_ip4_address_set_gateway (addr, gw); - nm_setting_ip4_config_add_address (s_ip4, addr); - nm_ip4_address_unref (addr); + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Test Write Team Master", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_TEAM_SETTING_NAME, + NULL); + g_free (uuid); - /* IP6 setting */ - s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); - ASSERT (s_ip6 != NULL, - "wired-static-write", "failed to allocate new %s setting", - NM_SETTING_IP6_CONFIG_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + /* Team setting */ + s_team = (NMSettingTeam *) nm_setting_team_new (); + nm_connection_add_setting (connection, NM_SETTING (s_team)); - g_object_set (s_ip6, - NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, + g_object_set (s_team, + NM_SETTING_TEAM_INTERFACE_NAME, "team0", + NM_SETTING_TEAM_CONFIG, expected_config, NULL); - ASSERT (nm_connection_verify (connection, &error) == TRUE, - "infiniband-write", "failed to verify connection: %s", - (error && error->message) ? error->message : "(unknown)"); + /* Wired setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); - ASSERT (success == TRUE, - "infiniband-write", "failed to write connection to disk: %s", - (error && error->message) ? error->message : "(unknown)"); + g_assert_no_error (error); + g_assert (success); - ASSERT (testfile != NULL, - "infiniband-write", "didn't get ifcfg file path back after writing connection"); + f = svOpenFile (testfile, &error); + g_assert_no_error (error); + g_assert (f); + + /* re-read the file to check that what key was written. */ + val = svGetValue (f, "DEVICETYPE", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, "Team"); + g_free (val); + val = svGetValue (f, "TEAM_CONFIG", TRUE); + g_assert (val); + g_assert_cmpstr (val, ==, escaped_expected_config); + g_free (val); + svCloseFile (f); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ - reread = connection_from_file (testfile, - NULL, - TYPE_INFINIBAND, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); + reread = connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL, + NULL, NULL, NULL, NULL, &error, NULL); unlink (testfile); + g_assert_no_error (error); + g_assert (reread); - ASSERT (reread != NULL, - "infiniband-write-reread", "failed to read %s: %s", testfile, error->message); - - ASSERT (nm_connection_verify (reread, &error), - "infiniband-write-reread-verify", "failed to verify %s: %s", testfile, error->message); + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); - ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "infiniband-write", "written and re-read connection weren't the same."); + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); g_free (testfile); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); g_object_unref (connection); g_object_unref (reread); } -#define TEST_IFCFG_BOND_SLAVE_IB TEST_IFCFG_DIR"/network-scripts/ifcfg-test-bond-slave-ib" - static void -test_read_bond_slave_ib (void) +test_read_team_port (void) { NMConnection *connection; NMSettingConnection *s_con; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; + NMSettingTeamPort *s_team_port; + gboolean success; GError *error = NULL; + const char *expected_config = "{ \"p4p1\": { \"prio\": -10, \"sticky\": true } }"; - connection = connection_from_file (TEST_IFCFG_BOND_SLAVE_IB, - NULL, - NULL, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); - ASSERT (connection != NULL, - "bond-slave-read-ib", "unexpected failure reading %s", TEST_IFCFG_BOND_SLAVE_IB); + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-team-port", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); - ASSERT (nm_connection_verify (connection, &error), - "bond-slave-read-ib", "failed to verify %s: %s", TEST_IFCFG_BOND_SLAVE_IB, error->message); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); s_con = nm_connection_get_setting_connection (connection); - ASSERT (s_con != NULL, - "bond-slave-read-ib", "failed to verify %s: missing %s setting", - TEST_IFCFG_BOND_SLAVE_IB, NM_SETTING_CONNECTION_SETTING_NAME); - - ASSERT (g_strcmp0 (nm_setting_connection_get_master (s_con), "bond0") == 0, - "bond-slave-read-ib", "failed to verify %s: master is not bond0", - TEST_IFCFG_BOND_SLAVE_IB); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME); + g_assert_cmpstr (nm_setting_connection_get_master (s_con), ==, "team0"); - ASSERT (g_strcmp0 (nm_setting_connection_get_slave_type (s_con), NM_SETTING_BOND_SETTING_NAME) == 0, - "bond-slave-read-ib", "failed to verify %s: slave-type is not bond", - TEST_IFCFG_BOND_SLAVE_IB); + s_team_port = nm_connection_get_setting_team_port (connection); + g_assert (s_team_port); + g_assert_cmpstr (nm_setting_team_port_get_config (s_team_port), ==, expected_config); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); g_object_unref (connection); } static void -test_write_bond_slave_ib (void) +test_write_team_port (void) { - NMConnection *connection; - NMConnection *reread; + NMConnection *connection, *reread; NMSettingConnection *s_con; - NMSettingInfiniband *s_infiniband; - static unsigned char tmpmac[] = { - 0x80, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, - 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22 - }; - GByteArray *mac; - char *uuid; + NMSettingTeamPort *s_team_port; + NMSettingWired *s_wired; + char *uuid, *testfile = NULL, *val; gboolean success; GError *error = NULL; - char *testfile = NULL; - char *unmanaged = NULL; - char *keyfile = NULL; - char *routefile = NULL; - char *route6file = NULL; - gboolean ignore_error = FALSE; + const char *expected_config = "{ \"p4p1\": { \"prio\": -10, \"sticky\": true } }"; + const char *escaped_expected_config = "\"{ \\\"p4p1\\\": { \\\"prio\\\": -10, \\\"sticky\\\": true } }\""; + shvarFile *f; connection = nm_connection_new (); - ASSERT (connection != NULL, - "bond-slave-write-ib", "failed to allocate new connection"); /* Connection setting */ s_con = (NMSettingConnection *) nm_setting_connection_new (); - ASSERT (s_con != NULL, - "bond-slave-write-ib", "failed to allocate new %s setting", - NM_SETTING_CONNECTION_SETTING_NAME); nm_connection_add_setting (connection, NM_SETTING (s_con)); uuid = nm_utils_uuid_generate (); g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Write Bond Slave InfiniBand", + NM_SETTING_CONNECTION_ID, "Test Write Team Port", NM_SETTING_CONNECTION_UUID, uuid, - NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, - NM_SETTING_CONNECTION_TYPE, NM_SETTING_INFINIBAND_SETTING_NAME, - NM_SETTING_CONNECTION_MASTER, "bond0", - NM_SETTING_CONNECTION_SLAVE_TYPE, NM_SETTING_BOND_SETTING_NAME, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, + NM_SETTING_CONNECTION_MASTER, "team0", + NM_SETTING_CONNECTION_SLAVE_TYPE, NM_SETTING_TEAM_SETTING_NAME, NULL); g_free (uuid); - /* InfiniBand setting */ - s_infiniband = (NMSettingInfiniband *) nm_setting_infiniband_new (); - ASSERT (s_infiniband != NULL, - "bond-main-write", "failed to allocate new %s setting", - NM_SETTING_INFINIBAND_SETTING_NAME); - nm_connection_add_setting (connection, NM_SETTING (s_infiniband)); - - mac = g_byte_array_sized_new (sizeof (tmpmac)); - g_byte_array_append (mac, &tmpmac[0], sizeof (tmpmac)); + /* Team setting */ + s_team_port = (NMSettingTeamPort *) nm_setting_team_port_new (); + nm_connection_add_setting (connection, NM_SETTING (s_team_port)); + g_object_set (s_team_port, NM_SETTING_TEAM_PORT_CONFIG, expected_config, NULL); - g_object_set (s_infiniband, - NM_SETTING_INFINIBAND_MAC_ADDRESS, mac, - NM_SETTING_INFINIBAND_MTU, 2044, - NM_SETTING_INFINIBAND_TRANSPORT_MODE, "datagram", - NULL); - g_byte_array_free (mac, TRUE); + /* Wired setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); - ASSERT (nm_connection_verify (connection, &error) == TRUE, - "bond-slave-write-ib", "failed to verify connection: %s", - (error && error->message) ? error->message : "(unknown)"); + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); /* Save the ifcfg */ success = writer_new_connection (connection, TEST_SCRATCH_DIR "/network-scripts/", &testfile, &error); - ASSERT (success == TRUE, - "bond-slave-write-ib", "failed to write connection to disk: %s", - (error && error->message) ? error->message : "(unknown)"); + g_assert_no_error (error); + g_assert (success); - ASSERT (testfile != NULL, - "bond-slave-write-ib", "didn't get ifcfg file path back after writing connection"); + f = svOpenFile (testfile, &error); + g_assert_no_error (error); + g_assert (f); + + /* re-read the file to check that what key was written. */ + val = svGetValue (f, "TYPE", FALSE); + g_assert (!val); + val = svGetValue (f, "DEVICETYPE", FALSE); + g_assert (val); + g_assert_cmpstr (val, ==, "TeamPort"); + g_free (val); + val = svGetValue (f, "TEAM_PORT_CONFIG", TRUE); + g_assert (val); + g_assert_cmpstr (val, ==, escaped_expected_config); + val = svGetValue (f, "TEAM_MASTER", TRUE); + g_assert (val); + g_assert_cmpstr (val, ==, "team0"); + g_free (val); + svCloseFile (f); + + /* reread will be normalized, so we must normalize connection too. */ + nm_utils_normalize_connection (connection, TRUE); /* re-read the connection for comparison */ - reread = connection_from_file (testfile, - NULL, - NULL, - NULL, - &unmanaged, - &keyfile, - &routefile, - &route6file, - &error, - &ignore_error); + reread = connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL, + NULL, NULL, NULL, NULL, &error, NULL); unlink (testfile); + g_assert_no_error (error); + g_assert (reread); - ASSERT (reread != NULL, - "bond-slave-write-ib-reread", "failed to read %s: %s", testfile, error->message); - - ASSERT (nm_connection_verify (reread, &error), - "bond-slave-write-ib-reread-verify", "failed to verify %s: %s", testfile, error->message); - - ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE, - "bond-slave-write-ib", "written and re-read connection weren't the same."); + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + g_assert (success); - if (route6file) - unlink (route6file); + g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT)); g_free (testfile); - g_free (unmanaged); - g_free (keyfile); - g_free (routefile); - g_free (route6file); g_object_unref (connection); g_object_unref (reread); } +static void +test_read_team_port_empty_config (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + gboolean success; + GError *error = NULL; + + connection = connection_from_file (TEST_IFCFG_DIR"/network-scripts/ifcfg-test-team-port-empty-config", + NULL, TYPE_ETHERNET, NULL, NULL, NULL, NULL, NULL, &error, NULL); + g_assert_no_error (error); + g_assert (connection); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME); + g_assert_cmpstr (nm_setting_connection_get_master (s_con), ==, "team0"); + + /* Empty TEAM_PORT_CONFIG means no team-port setting */ + g_assert (nm_connection_get_setting_team_port (connection) == NULL); + + g_object_unref (connection); +} + +/* Old algorithm for "remove escaped characters in place". + * + * This function is obsolete because it has O(n^2) runtime + * complexity and got replaced. Keep it here for testing, + * that both functions behave identical. + **/ +static void +svUnescape_On2 (char *s) +{ + int len, i; + + len = strlen(s); + if (len >= 2 && (s[0] == '"' || s[0] == '\'') && s[0] == s[len-1]) { + i = len - 2; + if (i == 0) + s[0] = '\0'; + else { + memmove(s, s+1, i); + s[i+1] = '\0'; + len = i; + } + } + for (i = 0; i < len; i++) { + if (s[i] == '\\') { + memmove(s+i, s+i+1, len-(i+1)); + len--; + } + s[len] = '\0'; + } +} + +static void +test_svUnescape_assert (const char *str) +{ + char *s1 = g_strdup (str); + char *s2 = g_strdup (str); + + svUnescape (s1); + svUnescape_On2 (s2); + + g_assert_cmpstr (s1, ==, s2); + + g_free (s1); + g_free (s2); +} + +static void +test_svUnescape () +{ + int len, repeat, i, k; + GRand *rand = g_rand_new (); + guint32 seed = g_random_int (); + + g_rand_set_seed (rand, seed); + + test_svUnescape_assert (""); + test_svUnescape_assert ("'"); + test_svUnescape_assert ("\""); + test_svUnescape_assert ("\\"); + test_svUnescape_assert ("x"); + test_svUnescape_assert (" "); + test_svUnescape_assert ("' '"); + test_svUnescape_assert ("'x'"); + test_svUnescape_assert ("\'some string\'"); + test_svUnescape_assert ("Bob outside LAN"); + test_svUnescape_assert ("{ \"device\": \"team0\", \"link_watch\": { \"name\": \"ethtool\" } }"); + + for (len = 1; len < 25; len++) { + char *s = g_new0 (char, len+1); + + for (repeat = 0; repeat < MAX (4*len, 20); repeat++) { + + /* fill the entire string with random. */ + for (i = 0; i < len; i++) + s[i] = g_rand_int (rand); + + /* randomly place escape characters into the string */ + k = g_rand_int (rand) % (len); + while (k-- > 0) + s[g_rand_int (rand) % len] = '\\'; + + if (len > 1) { + /* quote the string. */ + k = g_rand_int (rand) % (10); + if (k < 4) { + char quote = k < 2 ? '"' : '\''; + + s[0] = quote; + s[len-1] = quote; + } + } + + /*g_message (">>%s<<", s);*/ + test_svUnescape_assert (s); + } + + g_free (s); + } + + g_rand_free (rand); +} + + #define TEST_IFCFG_WIFI_OPEN_SSID_BAD_HEX TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-bad-hex" #define TEST_IFCFG_WIFI_OPEN_SSID_LONG_QUOTED TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-long-quoted" #define TEST_IFCFG_WIFI_OPEN_SSID_LONG_HEX TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wifi-open-ssid-long-hex" @@ -13619,34 +14539,34 @@ test_write_bond_slave_ib (void) #define DEFAULT_HEX_PSK "7d308b11df1b4243b0f78e5f3fc68cdbb9a264ed0edf4c188edf329ff5b467f0" -#define TEST_IFCFG_VARIABLES_CORNER_CASES_1 TEST_IFCFG_DIR"/network-scripts/ifcfg-test-variables-corner-cases-1" +#define TPATH "/settings/plugins/ifcfg-rh/" + +NMTST_DEFINE (); int main (int argc, char **argv) { - GError *error = NULL; - char *base; - - g_type_init (); - - if (!nm_utils_init (&error)) - FAIL ("nm-utils-init", "failed to initialize libnm-util: %s", error->message); - - /* The tests */ - test_read_unmanaged (); - test_read_minimal (); - test_read_variables_corner_cases (TEST_IFCFG_VARIABLES_CORNER_CASES_1, "\""); - test_read_wired_static (TEST_IFCFG_WIRED_STATIC, "System test-wired-static"); - test_read_wired_static (TEST_IFCFG_WIRED_STATIC_BOOTPROTO, "System test-wired-static-bootproto"); - test_read_wired_static_no_prefix (8); - test_read_wired_static_no_prefix (16); - test_read_wired_static_no_prefix (24); - - test_write_wired_static_ip6_only_gw (NULL); - test_write_wired_static_ip6_only_gw ("::"); - test_write_wired_static_ip6_only_gw ("2001:db8:8:4::2"); - test_write_wired_static_ip6_only_gw ("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"); - + nmtst_init_assert_logging (&argc, &argv); + + g_test_add_func (TPATH "svUnescape", test_svUnescape); + + g_test_add_func (TPATH "unmanaged", test_read_unmanaged); + g_test_add_func (TPATH "unmanaged-unrecognized", test_read_unmanaged_unrecognized); + g_test_add_func (TPATH "unrecognized", test_read_unrecognized); + g_test_add_func (TPATH "basic", test_read_basic); + g_test_add_func (TPATH "variables-corner-cases", test_read_variables_corner_cases); + g_test_add_data_func (TPATH "no-prefix/8", GUINT_TO_POINTER (8), test_read_wired_static_no_prefix); + g_test_add_data_func (TPATH "no-prefix/16", GUINT_TO_POINTER (16), test_read_wired_static_no_prefix); + g_test_add_data_func (TPATH "no-prefix/24", GUINT_TO_POINTER (24), test_read_wired_static_no_prefix); + g_test_add_data_func (TPATH "static-ip6-only-gw/_NULL_", NULL, test_write_wired_static_ip6_only_gw); + g_test_add_data_func (TPATH "static-ip6-only-gw/::", "::", test_write_wired_static_ip6_only_gw); + g_test_add_data_func (TPATH "static-ip6-only-gw/2001:db8:8:4::2", "2001:db8:8:4::2", test_write_wired_static_ip6_only_gw); + g_test_add_data_func (TPATH "static-ip6-only-gw/ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255", "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255", test_write_wired_static_ip6_only_gw); + + test_read_wired_static (TEST_IFCFG_WIRED_STATIC, "System test-wired-static", TRUE); + test_read_wired_static (TEST_IFCFG_WIRED_STATIC_BOOTPROTO, "System test-wired-static-bootproto", FALSE); test_read_wired_dhcp (); + g_test_add_func (TPATH "dhcp-plus-ip", test_read_wired_dhcp_plus_ip); + g_test_add_func (TPATH "dhcp-send-hostname", test_read_write_wired_dhcp_send_hostname); test_read_wired_global_gateway (); test_read_wired_never_default (); test_read_wired_defroute_no (); @@ -13661,10 +14581,16 @@ int main (int argc, char **argv) test_read_wired_ipv6_only (); test_read_wired_dhcp6_only (); test_read_onboot_no (); + test_read_noip (); test_read_wired_8021x_peap_mschapv2 (); test_read_wired_8021x_tls_secret_flags (TEST_IFCFG_WIRED_8021X_TLS_AGENT, NM_SETTING_SECRET_FLAG_AGENT_OWNED); test_read_wired_8021x_tls_secret_flags (TEST_IFCFG_WIRED_8021X_TLS_ALWAYS, NM_SETTING_SECRET_FLAG_AGENT_OWNED | NM_SETTING_SECRET_FLAG_NOT_SAVED); + g_test_add_func (TPATH "802-1x/subj-matches", test_read_write_802_1X_subj_matches); + g_test_add_func (TPATH "802-1x/ttls-eapgtc", test_read_802_1x_ttls_eapgtc); + test_read_wired_aliases_good (); + test_read_wired_aliases_bad_1 (); + test_read_wired_aliases_bad_2 (); test_read_wifi_open (); test_read_wifi_open_auto (); test_read_wifi_open_ssid_hex (); @@ -13691,6 +14617,7 @@ int main (int argc, char **argv) test_read_wifi_wpa_eap_tls (); test_read_wifi_wpa_eap_ttls_tls (); test_read_wifi_wep_eap_ttls_chap (); + g_test_add_func (TPATH "wifi/read-hidden", test_read_wifi_hidden); test_read_wired_qeth_static (); test_read_wired_ctc_static (); test_read_wifi_wep_no_keys (); @@ -13700,18 +14627,21 @@ int main (int argc, char **argv) test_read_vlan_interface (); test_read_vlan_only_vlan_id (); test_read_vlan_only_device (); - test_read_vlan_physdev (); + g_test_add_func (TPATH "vlan/physdev", test_read_vlan_physdev); test_write_wired_static (); test_write_wired_static_ip6_only (); test_write_wired_static_routes (); test_read_write_static_routes_legacy (); test_write_wired_dhcp (); + g_test_add_func (TPATH "dhcp-plus-ip", test_write_wired_dhcp_plus_ip); test_write_wired_dhcp_8021x_peap_mschapv2 (); test_write_wired_8021x_tls (NM_SETTING_802_1X_CK_SCHEME_PATH, NM_SETTING_SECRET_FLAG_AGENT_OWNED); test_write_wired_8021x_tls (NM_SETTING_802_1X_CK_SCHEME_PATH, NM_SETTING_SECRET_FLAG_NOT_SAVED); test_write_wired_8021x_tls (NM_SETTING_802_1X_CK_SCHEME_PATH, NM_SETTING_SECRET_FLAG_AGENT_OWNED | NM_SETTING_SECRET_FLAG_NOT_SAVED); test_write_wired_8021x_tls (NM_SETTING_802_1X_CK_SCHEME_BLOB, NM_SETTING_SECRET_FLAG_NONE); + test_write_wired_aliases (); + g_test_add_func (TPATH "ipv4/write-static-addresses-GATEWAY", test_write_gateway); test_write_wifi_open (); test_write_wifi_open_hex_ssid (); test_write_wifi_wep (); @@ -13766,6 +14696,7 @@ int main (int argc, char **argv) test_write_wifi_dynamic_wep_leap (); test_write_wifi_wpa_then_open (); test_write_wifi_wpa_then_wep_with_perms (); + g_test_add_func (TPATH "wifi/write-hidden", test_write_wifi_hidden); test_write_wired_qeth_dhcp (); test_write_wired_ctc_dhcp (); test_write_permissions (); @@ -13778,12 +14709,26 @@ int main (int argc, char **argv) /* iSCSI / ibft */ test_read_ibft_dhcp (); test_read_ibft_static (); - test_read_ibft_malformed ("ibft-bad-record-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-record"); - test_read_ibft_malformed ("ibft-bad-entry-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-entry"); - test_read_ibft_malformed ("ibft-bad-ipaddr-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-ipaddr"); - test_read_ibft_malformed ("ibft-bad-gateway-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-gateway"); - test_read_ibft_malformed ("ibft-bad-dns1-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-dns1"); - test_read_ibft_malformed ("ibft-bad-dns2-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-dns2"); + test_read_ibft_malformed ("ibft-bad-record-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-record", FALSE); + test_read_ibft_malformed ("ibft-bad-entry-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-entry", TRUE); + test_read_ibft_malformed ("ibft-bad-ipaddr-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-ipaddr", TRUE); + test_read_ibft_malformed ("ibft-bad-gateway-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-gateway", TRUE); + test_read_ibft_malformed ("ibft-bad-dns1-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-dns1", TRUE); + test_read_ibft_malformed ("ibft-bad-dns2-read", TEST_IFCFG_DIR "/iscsiadm-test-bad-dns2", TRUE); + g_test_add_func (TPATH "dcb/read-basic", test_read_dcb_basic); + g_test_add_func (TPATH "dcb/write-basic", test_write_dcb_basic); + g_test_add_func (TPATH "dcb/default-app-priorities", test_read_dcb_default_app_priorities); + g_test_add_func (TPATH "dcb/bad-booleans", test_read_dcb_bad_booleans); + g_test_add_func (TPATH "dcb/short-booleans", test_read_dcb_short_booleans); + g_test_add_func (TPATH "dcb/bad-uints", test_read_dcb_bad_uints); + g_test_add_func (TPATH "dcb/short-uints", test_read_dcb_short_uints); + g_test_add_func (TPATH "dcb/bad-percent", test_read_dcb_bad_percent); + g_test_add_func (TPATH "dcb/short-percent", test_read_dcb_short_percent); + g_test_add_func (TPATH "dcb/pgpct-not-100", test_read_dcb_pgpct_not_100); + g_test_add_data_func (TPATH "fcoe/fabric", (gpointer) NM_SETTING_DCB_FCOE_MODE_FABRIC, test_read_fcoe_mode); + g_test_add_data_func (TPATH "fcoe/vn2vn", (gpointer) NM_SETTING_DCB_FCOE_MODE_VN2VN, test_read_fcoe_mode); + g_test_add_data_func (TPATH "fcoe/write-fabric", (gpointer) NM_SETTING_DCB_FCOE_MODE_FABRIC, test_write_fcoe_mode); + g_test_add_data_func (TPATH "fcoe/write-vn2vn", (gpointer) NM_SETTING_DCB_FCOE_MODE_VN2VN, test_write_fcoe_mode); /* bonding */ test_read_bond_main (); @@ -13800,15 +14745,19 @@ int main (int argc, char **argv) test_write_bridge_component (); test_read_bridge_missing_stp (); + /* Team */ + g_test_add_func (TPATH "team/read-master", test_read_team_master); + g_test_add_func (TPATH "team/write-master", test_write_team_master); + g_test_add_func (TPATH "team/read-port", test_read_team_port); + g_test_add_func (TPATH "team/write-port", test_write_team_port); + g_test_add_func (TPATH "team/read-port-empty-config", test_read_team_port_empty_config); + /* Stuff we expect to fail for now */ test_write_wired_pppoe (); test_write_vpn (); test_write_mobile_broadband (TRUE); test_write_mobile_broadband (FALSE); - base = g_path_get_basename (argv[0]); - fprintf (stdout, "%s: SUCCESS\n", base); - g_free (base); - return 0; + return g_test_run (); } -- cgit 1.3.0-6-gf8a5