diff options
| author | Michael Biebl <biebl@debian.org> | 2013-02-03 14:49:22 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2013-02-03 14:49:22 +0100 |
| commit | 9c202e3e860b3be9e1f8882630b69affbb130102 (patch) | |
| tree | 8202bf39f2129486971fa7d5ae0dee61a561aa53 /libnm-util | |
| parent | 36cb2f364a821e1be50b23e03a18891ec55adb06 (diff) | |
Imported Upstream version 0.9.7.995 upstream/0.9.7.995
Diffstat (limited to 'libnm-util')
43 files changed, 2024 insertions, 567 deletions
diff --git a/libnm-util/Makefile.am b/libnm-util/Makefile.am index 76acd99f..bd1b3fc0 100644 --- a/libnm-util/Makefile.am +++ b/libnm-util/Makefile.am @@ -1,6 +1,6 @@ include $(GLIB_MAKEFILE) -SUBDIRS=. tests +SUBDIRS = . tests INCLUDES = -I${top_srcdir} -I${top_srcdir}/include -I${top_builddir}/include @@ -9,8 +9,7 @@ lib_LTLIBRARIES=libnm-util.la libnm_util_la_CPPFLAGS = \ $(GLIB_CFLAGS) \ $(DBUS_CFLAGS) \ - $(UUID_CFLAGS) \ - -DG_DISABLE_DEPRECATED + $(UUID_CFLAGS) libnm_util_include_HEADERS = \ nm-connection.h \ @@ -19,6 +18,8 @@ libnm_util_include_HEADERS = \ nm-setting-adsl.h \ nm-setting-bluetooth.h \ nm-setting-bond.h \ + nm-setting-bridge.h \ + nm-setting-bridge-port.h \ nm-setting-connection.h \ nm-setting-infiniband.h \ nm-setting-ip4-config.h \ @@ -53,6 +54,8 @@ libnm_util_la_csources = \ nm-setting-adsl.c \ nm-setting-bluetooth.c \ nm-setting-bond.c \ + nm-setting-bridge.c \ + nm-setting-bridge-port.c \ nm-setting-connection.c \ nm-setting-infiniband.c \ nm-setting-ip4-config.c \ @@ -165,7 +168,7 @@ typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) CLEANFILES += $(gir_DATA) $(typelib_DATA) endif -if WITH_TESTS +if ENABLE_TESTS check-local: $(top_srcdir)/tools/check-exports.sh $(builddir)/.libs/libnm-util.so $(SYMBOL_VIS_FILE) diff --git a/libnm-util/Makefile.in b/libnm-util/Makefile.in index ec767a82..0e8d8891 100644 --- a/libnm-util/Makefile.in +++ b/libnm-util/Makefile.in @@ -72,16 +72,18 @@ DIST_COMMON = $(libnm_util_include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/libnm-util.pc.in COPYING ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnome-code-coverage.m4 \ + $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/vapigen.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -129,6 +131,7 @@ libnm_util_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ am__libnm_util_la_SOURCES_DIST = crypto.c nm-connection.c \ nm-param-spec-specialized.c nm-setting.c nm-setting-8021x.c \ nm-setting-adsl.c nm-setting-bluetooth.c nm-setting-bond.c \ + nm-setting-bridge.c nm-setting-bridge-port.c \ nm-setting-connection.c nm-setting-infiniband.c \ nm-setting-ip4-config.c nm-setting-vlan.c \ nm-setting-ip6-config.c nm-setting-ppp.c nm-setting-pppoe.c \ @@ -144,6 +147,8 @@ am__objects_1 = libnm_util_la-crypto.lo libnm_util_la-nm-connection.lo \ libnm_util_la-nm-setting-adsl.lo \ libnm_util_la-nm-setting-bluetooth.lo \ libnm_util_la-nm-setting-bond.lo \ + libnm_util_la-nm-setting-bridge.lo \ + libnm_util_la-nm-setting-bridge-port.lo \ libnm_util_la-nm-setting-connection.lo \ libnm_util_la-nm-setting-infiniband.lo \ libnm_util_la-nm-setting-ip4-config.lo \ @@ -271,6 +276,10 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CKDB_PATH = @CKDB_PATH@ +CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ +CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ +CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ @@ -285,9 +294,7 @@ DBUS_SYS_DIR = @DBUS_SYS_DIR@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ -DHCLIENT_VERSION = @DHCLIENT_VERSION@ DHCPCD_PATH = @DHCPCD_PATH@ -DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ @@ -297,17 +304,14 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GIO_CFLAGS = @GIO_CFLAGS@ -GIO_LIBS = @GIO_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MAKEFILE = @GLIB_MAKEFILE@ GLIB_MKENUMS = @GLIB_MKENUMS@ -GMODULE_CFLAGS = @GMODULE_CFLAGS@ -GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ @@ -348,6 +352,7 @@ IPTABLES_PATH = @IPTABLES_PATH@ IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@ IWMX_SDK_LIBS = @IWMX_SDK_LIBS@ KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ +LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDL = @LIBDL@ @@ -364,11 +369,7 @@ LIBNL2_LIBS = @LIBNL2_LIBS@ LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ -LIBNL_GENL3_CFLAGS = @LIBNL_GENL3_CFLAGS@ -LIBNL_GENL3_LIBS = @LIBNL_GENL3_LIBS@ LIBNL_LIBS = @LIBNL_LIBS@ -LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ -LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ @@ -383,6 +384,8 @@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MM_GLIB_CFLAGS = @MM_GLIB_CFLAGS@ +MM_GLIB_LIBS = @MM_GLIB_LIBS@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -392,6 +395,7 @@ NMEDIT = @NMEDIT@ NM_MAJOR_VERSION = @NM_MAJOR_VERSION@ NM_MICRO_VERSION = @NM_MICRO_VERSION@ NM_MINOR_VERSION = @NM_MINOR_VERSION@ +NM_MODIFY_SYSTEM_POLICY = @NM_MODIFY_SYSTEM_POLICY@ NM_VERSION = @NM_VERSION@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ @@ -418,13 +422,14 @@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ QT_CFLAGS = @QT_CFLAGS@ QT_LIBS = @QT_LIBS@ RANLIB = @RANLIB@ -RESOLVCONF_PATH = @RESOLVCONF_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ -SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@ -SYSTEMD_LIBS = @SYSTEMD_LIBS@ +SYSTEMD_INHIBIT_CFLAGS = @SYSTEMD_INHIBIT_CFLAGS@ +SYSTEMD_INHIBIT_LIBS = @SYSTEMD_INHIBIT_LIBS@ +SYSTEMD_LOGIN_CFLAGS = @SYSTEMD_LOGIN_CFLAGS@ +SYSTEMD_LOGIN_LIBS = @SYSTEMD_LOGIN_LIBS@ SYSTEM_CA_PATH = @SYSTEM_CA_PATH@ UDEV_BASE_DIR = @UDEV_BASE_DIR@ USE_NLS = @USE_NLS@ @@ -479,6 +484,11 @@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ +nmbinary = @nmbinary@ +nmconfdir = @nmconfdir@ +nmdatadir = @nmdatadir@ +nmrundir = @nmrundir@ +nmstatedir = @nmstatedir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ @@ -493,11 +503,15 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +with_dhclient = @with_dhclient@ +with_dhcpcd = @with_dhcpcd@ +with_netconfig = @with_netconfig@ +with_resolvconf = @with_resolvconf@ SUBDIRS = . tests INCLUDES = -I${top_srcdir} -I${top_srcdir}/include -I${top_builddir}/include lib_LTLIBRARIES = libnm-util.la libnm_util_la_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_CFLAGS) $(UUID_CFLAGS) \ - -DG_DISABLE_DEPRECATED $(am__append_2) $(am__append_5) + $(am__append_2) $(am__append_5) libnm_util_include_HEADERS = \ nm-connection.h \ nm-setting.h \ @@ -505,6 +519,8 @@ libnm_util_include_HEADERS = \ nm-setting-adsl.h \ nm-setting-bluetooth.h \ nm-setting-bond.h \ + nm-setting-bridge.h \ + nm-setting-bridge-port.h \ nm-setting-connection.h \ nm-setting-infiniband.h \ nm-setting-ip4-config.h \ @@ -539,6 +555,8 @@ libnm_util_la_csources = \ nm-setting-adsl.c \ nm-setting-bluetooth.c \ nm-setting-bond.c \ + nm-setting-bridge.c \ + nm-setting-bridge-port.c \ nm-setting-connection.c \ nm-setting-infiniband.c \ nm-setting-ip4-config.c \ @@ -701,6 +719,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-adsl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-bluetooth.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-bond.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-bridge-port.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-bridge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-cdma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-connection.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-gsm.Plo@am__quote@ @@ -725,25 +745,22 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtest_crypto_la-crypto_nss.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -804,6 +821,20 @@ libnm_util_la-nm-setting-bond.lo: nm-setting-bond.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_util_la-nm-setting-bond.lo `test -f 'nm-setting-bond.c' || echo '$(srcdir)/'`nm-setting-bond.c +libnm_util_la-nm-setting-bridge.lo: nm-setting-bridge.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_util_la-nm-setting-bridge.lo -MD -MP -MF $(DEPDIR)/libnm_util_la-nm-setting-bridge.Tpo -c -o libnm_util_la-nm-setting-bridge.lo `test -f 'nm-setting-bridge.c' || echo '$(srcdir)/'`nm-setting-bridge.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnm_util_la-nm-setting-bridge.Tpo $(DEPDIR)/libnm_util_la-nm-setting-bridge.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nm-setting-bridge.c' object='libnm_util_la-nm-setting-bridge.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_util_la-nm-setting-bridge.lo `test -f 'nm-setting-bridge.c' || echo '$(srcdir)/'`nm-setting-bridge.c + +libnm_util_la-nm-setting-bridge-port.lo: nm-setting-bridge-port.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_util_la-nm-setting-bridge-port.lo -MD -MP -MF $(DEPDIR)/libnm_util_la-nm-setting-bridge-port.Tpo -c -o libnm_util_la-nm-setting-bridge-port.lo `test -f 'nm-setting-bridge-port.c' || echo '$(srcdir)/'`nm-setting-bridge-port.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnm_util_la-nm-setting-bridge-port.Tpo $(DEPDIR)/libnm_util_la-nm-setting-bridge-port.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nm-setting-bridge-port.c' object='libnm_util_la-nm-setting-bridge-port.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_util_la-nm-setting-bridge-port.lo `test -f 'nm-setting-bridge-port.c' || echo '$(srcdir)/'`nm-setting-bridge-port.c + libnm_util_la-nm-setting-connection.lo: nm-setting-connection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_util_la-nm-setting-connection.lo -MD -MP -MF $(DEPDIR)/libnm_util_la-nm-setting-connection.Tpo -c -o libnm_util_la-nm-setting-connection.lo `test -f 'nm-setting-connection.c' || echo '$(srcdir)/'`nm-setting-connection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnm_util_la-nm-setting-connection.Tpo $(DEPDIR)/libnm_util_la-nm-setting-connection.Plo @@ -1245,7 +1276,7 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done -@WITH_TESTS_FALSE@check-local: +@ENABLE_TESTS_FALSE@check-local: check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: $(BUILT_SOURCES) @@ -1394,8 +1425,8 @@ include $(GLIB_MAKEFILE) @HAVE_INTROSPECTION_TRUE@NetworkManager-1.0.gir: libnm-util.la -@WITH_TESTS_TRUE@check-local: -@WITH_TESTS_TRUE@ $(top_srcdir)/tools/check-exports.sh $(builddir)/.libs/libnm-util.so $(SYMBOL_VIS_FILE) +@ENABLE_TESTS_TRUE@check-local: +@ENABLE_TESTS_TRUE@ $(top_srcdir)/tools/check-exports.sh $(builddir)/.libs/libnm-util.so $(SYMBOL_VIS_FILE) # 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/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver index 4f0c27c5..e40531ea 100644 --- a/libnm-util/libnm-util.ver +++ b/libnm-util/libnm-util.ver @@ -18,6 +18,8 @@ global: nm_connection_get_setting_adsl; nm_connection_get_setting_bluetooth; nm_connection_get_setting_bond; + nm_connection_get_setting_bridge; + nm_connection_get_setting_bridge_port; nm_connection_get_setting_by_name; nm_connection_get_setting_cdma; nm_connection_get_setting_connection; @@ -201,6 +203,24 @@ global: nm_setting_bond_get_valid_options; nm_setting_bond_new; nm_setting_bond_remove_option; + nm_setting_bridge_error_get_type; + nm_setting_bridge_error_quark; + nm_setting_bridge_get_ageing_time; + nm_setting_bridge_get_forward_delay; + nm_setting_bridge_get_hello_time; + nm_setting_bridge_get_interface_name; + nm_setting_bridge_get_max_age; + nm_setting_bridge_get_priority; + nm_setting_bridge_get_stp; + nm_setting_bridge_get_type; + nm_setting_bridge_new; + nm_setting_bridge_port_error_get_type; + nm_setting_bridge_port_error_quark; + nm_setting_bridge_port_get_hairpin_mode; + nm_setting_bridge_port_get_path_cost; + nm_setting_bridge_port_get_priority; + nm_setting_bridge_port_get_type; + nm_setting_bridge_port_new; nm_setting_cdma_error_get_type; nm_setting_cdma_error_quark; nm_setting_cdma_get_number; @@ -214,6 +234,7 @@ global: nm_setting_compare; nm_setting_compare_flags_get_type; nm_setting_connection_add_permission; + nm_setting_connection_add_secondary; nm_setting_connection_error_get_type; nm_setting_connection_error_quark; nm_setting_connection_get_autoconnect; @@ -221,8 +242,10 @@ global: nm_setting_connection_get_id; nm_setting_connection_get_master; nm_setting_connection_get_num_permissions; + nm_setting_connection_get_num_secondaries; nm_setting_connection_get_permission; nm_setting_connection_get_read_only; + nm_setting_connection_get_secondary; nm_setting_connection_get_slave_type; nm_setting_connection_get_timestamp; nm_setting_connection_get_type; @@ -232,6 +255,7 @@ global: nm_setting_connection_new; nm_setting_connection_permissions_user_allowed; nm_setting_connection_remove_permission; + nm_setting_connection_remove_secondary; nm_setting_diff; nm_setting_diff_result_get_type; nm_setting_duplicate; @@ -310,6 +334,7 @@ global: nm_setting_ip6_config_error_get_type; nm_setting_ip6_config_error_quark; nm_setting_ip6_config_get_address; + nm_setting_ip6_config_get_dhcp_hostname; nm_setting_ip6_config_get_dns; nm_setting_ip6_config_get_dns_search; nm_setting_ip6_config_get_ignore_auto_dns; @@ -491,6 +516,7 @@ global: nm_setting_wireless_security_remove_pairwise; nm_setting_wireless_security_remove_proto; nm_setting_wireless_security_set_wep_key; + nm_utils_ap_mode_security_valid; nm_utils_deinit; nm_utils_escape_ssid; nm_utils_file_is_pkcs12; @@ -500,6 +526,7 @@ global: nm_utils_hwaddr_len; nm_utils_hwaddr_ntoa; nm_utils_hwaddr_type; + nm_utils_iface_valid_name; nm_utils_init; nm_utils_ip4_addresses_from_gvalue; nm_utils_ip4_addresses_to_gvalue; @@ -515,6 +542,7 @@ global: nm_utils_ip6_routes_from_gvalue; nm_utils_ip6_routes_to_gvalue; nm_utils_is_empty_ssid; + nm_utils_is_uuid; nm_utils_rsa_key_encrypt; nm_utils_same_ssid; nm_utils_security_type_get_type; diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c index 66df511f..47a9ec09 100644 --- a/libnm-util/nm-connection.c +++ b/libnm-util/nm-connection.c @@ -30,6 +30,7 @@ #include "nm-utils.h" #include "nm-utils-private.h" #include "nm-dbus-glib-types.h" +#include "nm-setting-private.h" #include "nm-setting-8021x.h" #include "nm-setting-bluetooth.h" @@ -48,6 +49,8 @@ #include "nm-setting-vpn.h" #include "nm-setting-olpc-mesh.h" #include "nm-setting-bond.h" +#include "nm-setting-bridge.h" +#include "nm-setting-bridge-port.h" #include "nm-setting-vlan.h" #include "nm-setting-serial.h" #include "nm-setting-gsm.h" @@ -116,203 +119,116 @@ enum { static guint signals[LAST_SIGNAL] = { 0 }; +/*************************************************************/ + static GHashTable *registered_settings = NULL; -#define DEFAULT_MAP_SIZE 20 +static void __attribute__((constructor)) +_ensure_registered (void) +{ + g_type_init (); + _nm_utils_register_value_transformations (); + if (G_UNLIKELY (registered_settings == NULL)) + registered_settings = g_hash_table_new (g_str_hash, g_str_equal); +} -static struct SettingInfo { - const char *name; +typedef struct { GType type; guint32 priority; - gboolean base_type; GQuark error_quark; -} default_map[DEFAULT_MAP_SIZE] = { { NULL } }; - -static void -setting_register (const char *name, GType type) -{ - g_return_if_fail (name != NULL); - g_return_if_fail (G_TYPE_IS_INSTANTIATABLE (type)); - - if (G_UNLIKELY (!registered_settings)) { - registered_settings = g_hash_table_new_full (g_str_hash, g_str_equal, - (GDestroyNotify) g_free, - (GDestroyNotify) g_free); - } - - if (g_hash_table_lookup (registered_settings, name)) - g_warning ("Already have a creator function for '%s', overriding", name); - - g_hash_table_insert (registered_settings, g_strdup (name), g_strdup (g_type_name (type))); -} +} SettingInfo; -#if 0 -static void -setting_unregister (const char *name) -{ - if (registered_settings) - g_hash_table_remove (registered_settings, name); -} -#endif - -static void -register_one_setting (const char *name, - GType type, - GQuark error_quark, - guint32 priority, - gboolean base_type) +/* + * _nm_register_setting: + * @name: the name of the #NMSetting object to register + * @type: the #GType of the #NMSetting + * @priority: the sort priority of the setting, see below + * @error_quark: the setting's error quark + * + * INTERNAL ONLY: registers a setting's internal properties, like its priority + * and its error quark type, with libnm-util. + * + * A setting's priority should roughly follow the OSI layer model, but it also + * controls which settings get asked for secrets first. Thus settings which + * relate to things that must be working first, like hardware, should get a + * higher priority than things which layer on top of the hardware. For example, + * the GSM/CDMA settings should provide secrets before the PPP setting does, + * because a PIN is required to unlock the device before PPP can even start. + * Even settings without secrets should be assigned the right priority. + * + * 0: reserved for the Connection setting + * + * 1: hardware-related settings like Ethernet, WiFi, Infiniband, Bridge, etc. + * These priority 1 settings are also "base types", which means that at least + * one of them is required for the connection to be valid, and their name is + * valid in the 'type' property of the Connection setting. + * + * 2: hardware-related auxiliary settings that require a base setting to be + * successful first, like WiFi security, 802.1x, etc. + * + * 3: hardware-independent settings that are required before IP connectivity + * can be established, like PPP, PPPoE, etc. + * + * 4: IP-level stuff + */ +void +_nm_register_setting (const char *name, + const GType type, + const guint32 priority, + const GQuark error_quark) { - static guint32 i = 0; - - g_return_if_fail (i < DEFAULT_MAP_SIZE); - g_return_if_fail (default_map[i].name == NULL); + SettingInfo *info; - default_map[i].name = name; - default_map[i].type = type; - default_map[i].error_quark = error_quark; - default_map[i].priority = priority; - default_map[i].base_type = base_type; - i++; - - setting_register (name, type); -} + g_return_if_fail (name != NULL); + g_return_if_fail (type != G_TYPE_INVALID); + g_return_if_fail (type != G_TYPE_NONE); + g_return_if_fail (error_quark != 0); + g_return_if_fail (priority <= 4); -static void -register_default_settings (void) -{ - _nm_utils_register_value_transformations (); + _ensure_registered (); - if (G_LIKELY (default_map[0].name)) + if (G_LIKELY (g_hash_table_lookup (registered_settings, name))) return; - register_one_setting (NM_SETTING_CONNECTION_SETTING_NAME, - NM_TYPE_SETTING_CONNECTION, - NM_SETTING_CONNECTION_ERROR, - 0, FALSE); - - register_one_setting (NM_SETTING_WIRED_SETTING_NAME, - NM_TYPE_SETTING_WIRED, - NM_SETTING_WIRED_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_WIRELESS_SETTING_NAME, - NM_TYPE_SETTING_WIRELESS, - NM_SETTING_WIRELESS_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_OLPC_MESH_SETTING_NAME, - NM_TYPE_SETTING_OLPC_MESH, - NM_SETTING_OLPC_MESH_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_GSM_SETTING_NAME, - NM_TYPE_SETTING_GSM, - NM_SETTING_GSM_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_CDMA_SETTING_NAME, - NM_TYPE_SETTING_CDMA, - NM_SETTING_CDMA_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_BLUETOOTH_SETTING_NAME, - NM_TYPE_SETTING_BLUETOOTH, - NM_SETTING_BLUETOOTH_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_WIMAX_SETTING_NAME, - NM_TYPE_SETTING_WIMAX, - NM_SETTING_WIMAX_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_BOND_SETTING_NAME, - NM_TYPE_SETTING_BOND, - NM_SETTING_BOND_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_INFINIBAND_SETTING_NAME, - NM_TYPE_SETTING_INFINIBAND, - NM_SETTING_INFINIBAND_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_VLAN_SETTING_NAME, - NM_TYPE_SETTING_VLAN, - NM_SETTING_VLAN_ERROR, - 1, TRUE); - - register_one_setting (NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, - NM_TYPE_SETTING_WIRELESS_SECURITY, - NM_SETTING_WIRELESS_SECURITY_ERROR, - 2, FALSE); - - register_one_setting (NM_SETTING_SERIAL_SETTING_NAME, - NM_TYPE_SETTING_SERIAL, - NM_SETTING_SERIAL_ERROR, - 2, FALSE); - - register_one_setting (NM_SETTING_PPP_SETTING_NAME, - NM_TYPE_SETTING_PPP, - NM_SETTING_PPP_ERROR, - 3, FALSE); - - register_one_setting (NM_SETTING_PPPOE_SETTING_NAME, - NM_TYPE_SETTING_PPPOE, - NM_SETTING_PPPOE_ERROR, - 3, TRUE); - - register_one_setting (NM_SETTING_ADSL_SETTING_NAME, - NM_TYPE_SETTING_ADSL, - NM_SETTING_ADSL_ERROR, - 3, TRUE); - - register_one_setting (NM_SETTING_802_1X_SETTING_NAME, - NM_TYPE_SETTING_802_1X, - NM_SETTING_802_1X_ERROR, - 3, FALSE); - - register_one_setting (NM_SETTING_VPN_SETTING_NAME, - NM_TYPE_SETTING_VPN, - NM_SETTING_VPN_ERROR, - 4, TRUE); - - register_one_setting (NM_SETTING_IP4_CONFIG_SETTING_NAME, - NM_TYPE_SETTING_IP4_CONFIG, - NM_SETTING_IP4_CONFIG_ERROR, - 6, FALSE); - - register_one_setting (NM_SETTING_IP6_CONFIG_SETTING_NAME, - NM_TYPE_SETTING_IP6_CONFIG, - NM_SETTING_IP6_CONFIG_ERROR, - 6, FALSE); - - /* Be sure to update DEFAULT_MAP_SIZE if you add another setting!! */ + if (priority == 0) + g_assert_cmpstr (name, ==, NM_SETTING_CONNECTION_SETTING_NAME); + + info = g_slice_new0 (SettingInfo); + info->type = type; + info->priority = priority; + info->error_quark = error_quark; + g_hash_table_insert (registered_settings, (gpointer) name, info); } static guint32 -get_priority_for_setting_type (GType type) +_get_setting_priority (NMSetting *setting) { - int i; + GHashTableIter iter; + SettingInfo *info; - for (i = 0; default_map[i].name; i++) { - if (default_map[i].type == type) - return default_map[i].priority; - } + _ensure_registered (); + g_hash_table_iter_init (&iter, registered_settings); + while (g_hash_table_iter_next (&iter, NULL, (gpointer) &info)) { + if (G_OBJECT_TYPE (setting) == info->type) + return info->priority; + } return G_MAXUINT32; } static gboolean -get_base_type_for_setting_type (GType type) +_is_setting_base_type (NMSetting *setting) { - int i; - - for (i = 0; default_map[i].name; i++) { - if (default_map[i].type == type) - return default_map[i].base_type; - } - return FALSE; + /* Historical oddity: PPPoE is a base-type even though it's not + * priority 1. It needs to be sorted *after* lower-level stuff like + * WiFi security or 802.1x for secrets, but it's still allowed as a + * base type. + */ + return _get_setting_priority (setting) == 1 || NM_IS_SETTING_PPPOE (setting); } +/*************************************************************/ + /** * nm_connection_lookup_setting_type: * @name: a setting name @@ -324,25 +240,18 @@ get_base_type_for_setting_type (GType type) GType nm_connection_lookup_setting_type (const char *name) { - char *type_name; - GType type; + SettingInfo *info; g_return_val_if_fail (name != NULL, G_TYPE_NONE); - if (!registered_settings) - register_default_settings (); + _ensure_registered (); - type_name = (char *) g_hash_table_lookup (registered_settings, name); - if (type_name) { - type = g_type_from_name (type_name); - if (!type) - g_warning ("Can not get type for '%s'.", type_name); - } else { - type = 0; - g_warning ("Unknown setting '%s'", name); - } + info = g_hash_table_lookup (registered_settings, name); + if (info) + return info->type; - return type; + g_warning ("Unknown setting '%s'", name); + return G_TYPE_INVALID; } /** @@ -357,13 +266,16 @@ nm_connection_lookup_setting_type (const char *name) GType nm_connection_lookup_setting_type_by_quark (GQuark error_quark) { - int i; + SettingInfo *info; + GHashTableIter iter; - for (i = 0; default_map[i].name; i++) { - if (default_map[i].error_quark == error_quark) - return default_map[i].type; - } + _ensure_registered (); + g_hash_table_iter_init (&iter, registered_settings); + while (g_hash_table_iter_next (&iter, NULL, (gpointer) &info)) { + if (info->error_quark == error_quark) + return info->type; + } return G_TYPE_INVALID; } @@ -739,8 +651,8 @@ nm_connection_verify (NMConnection *connection, GError **error) gpointer value; GSList *all_settings = NULL; gboolean success = TRUE; + NMSetting *base; const char *ctype; - GType base_type; if (error) g_return_val_if_fail (*error == NULL, FALSE); @@ -791,8 +703,8 @@ nm_connection_verify (NMConnection *connection, GError **error) return FALSE; } - base_type = nm_connection_lookup_setting_type (ctype); - if (base_type == 0) { + base = nm_connection_get_setting_by_name (connection, ctype); + if (!base) { g_set_error_literal (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID, @@ -800,7 +712,7 @@ nm_connection_verify (NMConnection *connection, GError **error) return FALSE; } - if (!get_base_type_for_setting_type (base_type)) { + if (!_is_setting_base_type (base)) { g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID, @@ -896,8 +808,8 @@ setting_priority_compare (gconstpointer a, gconstpointer b) { guint32 prio_a, prio_b; - prio_a = get_priority_for_setting_type (G_OBJECT_TYPE (NM_SETTING (a))); - prio_b = get_priority_for_setting_type (G_OBJECT_TYPE (NM_SETTING (b))); + prio_a = _get_setting_priority (NM_SETTING (a)); + prio_b = _get_setting_priority (NM_SETTING (b)); if (prio_a < prio_b) return -1; @@ -906,14 +818,6 @@ setting_priority_compare (gconstpointer a, gconstpointer b) return 1; } -static void -add_setting_to_list (gpointer key, gpointer data, gpointer user_data) -{ - GSList **list = (GSList **) user_data; - - *list = g_slist_insert_sorted (*list, NM_SETTING (data), setting_priority_compare); -} - /** * nm_connection_need_secrets: * @connection: the #NMConnection @@ -938,9 +842,11 @@ nm_connection_need_secrets (NMConnection *connection, GPtrArray **hints) { NMConnectionPrivate *priv; + GHashTableIter hiter; GSList *settings = NULL; GSList *iter; const char *name = NULL; + NMSetting *setting; g_return_val_if_fail (connection != NULL, NULL); g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); @@ -950,15 +856,14 @@ nm_connection_need_secrets (NMConnection *connection, priv = NM_CONNECTION_GET_PRIVATE (connection); /* Get list of settings in priority order */ - g_hash_table_foreach (priv->settings, add_setting_to_list, &settings); + g_hash_table_iter_init (&hiter, priv->settings); + while (g_hash_table_iter_next (&hiter, NULL, (gpointer) &setting)) + settings = g_slist_insert_sorted (settings, setting, setting_priority_compare); for (iter = settings; iter; iter = g_slist_next (iter)) { - NMSetting *setting = NM_SETTING (iter->data); GPtrArray *secrets; - // FIXME: do something with requested secrets rather than asking for - // all of them. Maybe make secrets a hash table mapping - // settings name :: [list of secrets key names]. + setting = NM_SETTING (iter->data); secrets = nm_setting_need_secrets (setting); if (secrets) { if (hints) @@ -1234,14 +1139,7 @@ nm_connection_get_virtual_iface_name (NMConnection *connection) NMConnection * nm_connection_new (void) { - GObject *object; - - if (!registered_settings) - register_default_settings (); - - object = g_object_new (NM_TYPE_CONNECTION, NULL); - - return NM_CONNECTION (object); + return (NMConnection *) g_object_new (NM_TYPE_CONNECTION, NULL); } /** @@ -1405,6 +1303,23 @@ nm_connection_get_setting_bond (NMConnection *connection) } /** + * nm_connection_get_setting_bridge: + * @connection: the #NMConnection + * + * A shortcut to return any #NMSettingBridge the connection might contain. + * + * Returns: (transfer none): an #NMSettingBridge if the connection contains one, otherwise NULL + **/ +NMSettingBridge * +nm_connection_get_setting_bridge (NMConnection *connection) +{ + g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); + + return (NMSettingBridge *) nm_connection_get_setting (connection, NM_TYPE_SETTING_BRIDGE); +} + +/** * nm_connection_get_setting_cdma: * @connection: the #NMConnection * @@ -1677,6 +1592,23 @@ nm_connection_get_setting_wireless_security (NMConnection *connection) } /** + * nm_connection_get_setting_bridge_port: + * @connection: the #NMConnection + * + * A shortcut to return any #NMSettingBridgePort the connection might contain. + * + * Returns: (transfer none): an #NMSettingBridgePort if the connection contains one, otherwise NULL + **/ +NMSettingBridgePort * +nm_connection_get_setting_bridge_port (NMConnection *connection) +{ + g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); + + return (NMSettingBridgePort *) nm_connection_get_setting (connection, NM_TYPE_SETTING_BRIDGE_PORT); +} + +/** * nm_connection_get_setting_vlan: * @connection: the #NMConnection * diff --git a/libnm-util/nm-connection.h b/libnm-util/nm-connection.h index 0fd878c3..4d060cc9 100644 --- a/libnm-util/nm-connection.h +++ b/libnm-util/nm-connection.h @@ -33,6 +33,8 @@ #include <nm-setting-8021x.h> #include <nm-setting-bluetooth.h> #include <nm-setting-bond.h> +#include <nm-setting-bridge.h> +#include <nm-setting-bridge-port.h> #include <nm-setting-cdma.h> #include <nm-setting-connection.h> #include <nm-setting-gsm.h> @@ -188,6 +190,8 @@ const char * nm_connection_get_id (NMConnection *connection); NMSetting8021x * nm_connection_get_setting_802_1x (NMConnection *connection); NMSettingBluetooth * nm_connection_get_setting_bluetooth (NMConnection *connection); NMSettingBond * nm_connection_get_setting_bond (NMConnection *connection); +NMSettingBridge * nm_connection_get_setting_bridge (NMConnection *connection); +NMSettingBridgePort * nm_connection_get_setting_bridge_port (NMConnection *connection); NMSettingCdma * nm_connection_get_setting_cdma (NMConnection *connection); NMSettingConnection * nm_connection_get_setting_connection (NMConnection *connection); NMSettingGsm * nm_connection_get_setting_gsm (NMConnection *connection); diff --git a/libnm-util/nm-setting-8021x.c b/libnm-util/nm-setting-8021x.c index 28c0d3f9..32eda889 100644 --- a/libnm-util/nm-setting-8021x.c +++ b/libnm-util/nm-setting-8021x.c @@ -24,7 +24,6 @@ */ #include <string.h> -#include <ctype.h> #include <dbus/dbus-glib.h> #include "nm-setting-8021x.h" #include "nm-param-spec-specialized.h" @@ -82,7 +81,12 @@ nm_setting_802_1x_error_quark (void) return quark; } -G_DEFINE_TYPE (NMSetting8021x, nm_setting_802_1x, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSetting8021x, nm_setting_802_1x, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_802_1X_SETTING_NAME, + g_define_type_id, + 2, + NM_SETTING_802_1X_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_802_1X) #define NM_SETTING_802_1X_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_802_1X, NMSetting8021xPrivate)) diff --git a/libnm-util/nm-setting-adsl.c b/libnm-util/nm-setting-adsl.c index 6103c715..de0850e6 100644 --- a/libnm-util/nm-setting-adsl.c +++ b/libnm-util/nm-setting-adsl.c @@ -55,7 +55,12 @@ nm_setting_adsl_error_quark (void) return quark; } -G_DEFINE_TYPE (NMSettingAdsl, nm_setting_adsl, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingAdsl, nm_setting_adsl, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_ADSL_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_ADSL_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_ADSL) #define NM_SETTING_ADSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_ADSL, NMSettingAdslPrivate)) diff --git a/libnm-util/nm-setting-bluetooth.c b/libnm-util/nm-setting-bluetooth.c index 52f0b81e..161b3715 100644 --- a/libnm-util/nm-setting-bluetooth.c +++ b/libnm-util/nm-setting-bluetooth.c @@ -25,7 +25,6 @@ */ #include <string.h> -#include <ctype.h> #include <net/ethernet.h> #include "nm-param-spec-specialized.h" @@ -33,6 +32,7 @@ #include "nm-setting-bluetooth.h" #include "nm-setting-cdma.h" #include "nm-setting-gsm.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-bluetooth @@ -63,7 +63,12 @@ nm_setting_bluetooth_error_quark (void) } -G_DEFINE_TYPE (NMSettingBluetooth, nm_setting_bluetooth, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingBluetooth, nm_setting_bluetooth, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_BLUETOOTH_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_BLUETOOTH_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_BLUETOOTH) #define NM_SETTING_BLUETOOTH_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_BLUETOOTH, NMSettingBluetoothPrivate)) diff --git a/libnm-util/nm-setting-bond.c b/libnm-util/nm-setting-bond.c index b7994f4a..a3dbd766 100644 --- a/libnm-util/nm-setting-bond.c +++ b/libnm-util/nm-setting-bond.c @@ -22,7 +22,6 @@ */ #include <string.h> -#include <ctype.h> #include <stdlib.h> #include <dbus/dbus-glib.h> @@ -31,6 +30,7 @@ #include "nm-utils.h" #include "nm-utils-private.h" #include "nm-dbus-glib-types.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-bond @@ -59,7 +59,12 @@ nm_setting_bond_error_quark (void) } -G_DEFINE_TYPE (NMSettingBond, nm_setting_bond, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingBond, nm_setting_bond, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_BOND_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_BOND_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_BOND) #define NM_SETTING_BOND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_BOND, NMSettingBondPrivate)) @@ -329,31 +334,6 @@ nm_setting_bond_get_option_default (NMSettingBond *setting, const char *name) g_assert_not_reached (); } -/* - * This function is a 1:1 copy of the kernel's - * dev_valid_name() in net/core/dev.c - */ -static gboolean -dev_valid_name(const char *name) -{ - if (*name == '\0') - return FALSE; - - if (strlen (name) >= 16) - return FALSE; - - if (!strcmp (name, ".") || !strcmp (name, "..")) - return FALSE; - - while (*name) { - if (*name == '/' || isspace (*name)) - return FALSE; - name++; - } - - return TRUE; -} - static gint find_setting_by_name (gconstpointer a, gconstpointer b) { @@ -388,7 +368,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (!dev_valid_name (priv->interface_name)) { + if (!nm_utils_iface_valid_name (priv->interface_name)) { g_set_error (error, NM_SETTING_BOND_ERROR, NM_SETTING_BOND_ERROR_INVALID_PROPERTY, diff --git a/libnm-util/nm-setting-bridge-port.c b/libnm-util/nm-setting-bridge-port.c new file mode 100644 index 00000000..d7f3dd59 --- /dev/null +++ b/libnm-util/nm-setting-bridge-port.c @@ -0,0 +1,281 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ + +/* + * Dan Williams <dcbw@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * (C) Copyright 2012 Red Hat, Inc. + */ + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <dbus/dbus-glib.h> + +#include "nm-setting-bridge-port.h" +#include "nm-utils.h" +#include "nm-utils-private.h" +#include "nm-setting-private.h" + +/** + * SECTION:nm-setting-bridge-port + * @short_description: Describes connection properties for bridge ports + * @include: nm-setting-bridge-port.h + * + * The #NMSettingBridgePort object is a #NMSetting subclass that describes + * optional properties that apply to bridge ports. + **/ + +/** + * nm_setting_bridge_port_error_quark: + * + * Registers an error quark for #NMSettingBridgePort if necessary. + * + * Returns: the error quark used for #NMSettingBridgePort errors. + **/ +GQuark +nm_setting_bridge_port_error_quark (void) +{ + static GQuark quark; + + if (G_UNLIKELY (!quark)) + quark = g_quark_from_static_string ("nm-setting-bridge-port-error-quark"); + return quark; +} + +G_DEFINE_TYPE_WITH_CODE (NMSettingBridgePort, nm_setting_bridge_port, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_BRIDGE_PORT_SETTING_NAME, + g_define_type_id, + 3, + NM_SETTING_BRIDGE_PORT_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_BRIDGE_PORT) + +#define NM_SETTING_BRIDGE_PORT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_BRIDGE_PORT, NMSettingBridgePortPrivate)) + +typedef struct { + guint16 priority; + guint16 path_cost; + gboolean hairpin_mode; +} NMSettingBridgePortPrivate; + +enum { + PROP_0, + PROP_PRIORITY, + PROP_PATH_COST, + PROP_HAIRPIN_MODE, + LAST_PROP +}; + +/**************************************************************************/ + +/** + * nm_setting_bridge_port_get_priority: + * @setting: the #NMSettingBridgePort + * + * Returns: the #NMSettingBridgePort:priority property of the setting + **/ +guint16 +nm_setting_bridge_port_get_priority (NMSettingBridgePort *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE_PORT (setting), 0); + + return NM_SETTING_BRIDGE_PORT_GET_PRIVATE (setting)->priority; +} + +/** + * nm_setting_bridge_port_get_path_cost: + * @setting: the #NMSettingBridgePort + * + * Returns: the #NMSettingBridgePort:path-cost property of the setting + **/ +guint16 +nm_setting_bridge_port_get_path_cost (NMSettingBridgePort *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE_PORT (setting), 0); + + return NM_SETTING_BRIDGE_PORT_GET_PRIVATE (setting)->path_cost; +} + +/** + * nm_setting_bridge_port_get_hairpin_mode: + * @setting: the #NMSettingBridgePort + * + * Returns: the #NMSettingBridgePort:hairpin-mode property of the setting + **/ +gboolean +nm_setting_bridge_port_get_hairpin_mode (NMSettingBridgePort *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE_PORT (setting), FALSE); + + return NM_SETTING_BRIDGE_PORT_GET_PRIVATE (setting)->hairpin_mode; +} + +/**************************************************************************/ + +#define BR_MAX_PORT_PRIORITY 63 +#define BR_DEF_PRIORITY 32 + +#define BR_MIN_PATH_COST 1 +#define BR_MAX_PATH_COST 65535 + +static gboolean +verify (NMSetting *setting, GSList *all_settings, GError **error) +{ + NMSettingBridgePortPrivate *priv = NM_SETTING_BRIDGE_PORT_GET_PRIVATE (setting); + + if (priv->priority > BR_MAX_PORT_PRIORITY) { + g_set_error (error, + NM_SETTING_BRIDGE_PORT_ERROR, + NM_SETTING_BRIDGE_PORT_ERROR_INVALID_PROPERTY, + NM_SETTING_BRIDGE_PORT_PRIORITY); + return FALSE; + } + + if (priv->path_cost > BR_MAX_PATH_COST) { + g_set_error (error, + NM_SETTING_BRIDGE_PORT_ERROR, + NM_SETTING_BRIDGE_PORT_ERROR_INVALID_PROPERTY, + NM_SETTING_BRIDGE_PORT_PATH_COST); + return FALSE; + } + + return TRUE; +} + +/**************************************************************************/ + +/** + * nm_setting_bridge_port_new: + * + * Creates a new #NMSettingBridgePort object with default values. + * + * Returns: (transfer full): the new empty #NMSettingBridgePort object + **/ +NMSetting * +nm_setting_bridge_port_new (void) +{ + return (NMSetting *) g_object_new (NM_TYPE_SETTING_BRIDGE_PORT, NULL); +} + +static void +nm_setting_bridge_port_init (NMSettingBridgePort *setting) +{ + g_object_set (setting, NM_SETTING_NAME, NM_SETTING_BRIDGE_PORT_SETTING_NAME, NULL); +} + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMSettingBridgePortPrivate *priv = NM_SETTING_BRIDGE_PORT_GET_PRIVATE (object); + + switch (prop_id) { + case PROP_PRIORITY: + priv->priority = (guint16) (g_value_get_uint (value) & 0xFFFF); + break; + case PROP_PATH_COST: + priv->path_cost = (guint16) (g_value_get_uint (value) & 0xFFFF); + break; + case PROP_HAIRPIN_MODE: + priv->hairpin_mode = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMSettingBridgePortPrivate *priv = NM_SETTING_BRIDGE_PORT_GET_PRIVATE (object); + + switch (prop_id) { + case PROP_PRIORITY: + g_value_set_uint (value, priv->priority); + break; + case PROP_PATH_COST: + g_value_set_uint (value, priv->path_cost); + break; + case PROP_HAIRPIN_MODE: + g_value_set_boolean (value, priv->hairpin_mode); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +nm_setting_bridge_port_class_init (NMSettingBridgePortClass *setting_class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (setting_class); + NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class); + + g_type_class_add_private (setting_class, sizeof (NMSettingBridgePortPrivate)); + + /* virtual methods */ + object_class->set_property = set_property; + object_class->get_property = get_property; + parent_class->verify = verify; + + /* Properties */ + /** + * NMSettingBridgePort:priority: + * + * The Spanning Tree Protocol (STP) priority of this bridge port. + **/ + g_object_class_install_property + (object_class, PROP_PRIORITY, + g_param_spec_uint (NM_SETTING_BRIDGE_PORT_PRIORITY, + "Priority", + "The Spanning Tree Protocol (STP) priority of this bridge port", + 0, BR_MAX_PORT_PRIORITY, BR_DEF_PRIORITY, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridgePort:path-cost: + * + * The Spanning Tree Protocol (STP) port cost for destinations via this port. + **/ + g_object_class_install_property + (object_class, PROP_PATH_COST, + g_param_spec_uint (NM_SETTING_BRIDGE_PORT_PATH_COST, + "Path Cost", + "The Spanning Tree Protocol (STP) port cost for " + "destinations via this port.", + 0, BR_MAX_PATH_COST, 100, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridgePort:hairpin-mode: + * + * Enables or disabled 'hairpin mode' for the port, which allows frames to + * be sent back out through the port the frame was received on. + **/ + g_object_class_install_property + (object_class, PROP_HAIRPIN_MODE, + g_param_spec_boolean (NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE, + "Hairpin Mode", + "Enables or disabled 'hairpin mode' for the " + "port, which allows frames to be sent back out " + "through the port the frame was received on.", + FALSE, + G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE)); + +} diff --git a/libnm-util/nm-setting-bridge-port.h b/libnm-util/nm-setting-bridge-port.h new file mode 100644 index 00000000..5123f0a7 --- /dev/null +++ b/libnm-util/nm-setting-bridge-port.h @@ -0,0 +1,86 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ + +/* + * Dan Williams <dcbw@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * (C) Copyright 2012 Red Hat, Inc. + */ + +#ifndef NM_SETTING_BRIDGE_PORT_H +#define NM_SETTING_BRIDGE_PORT_H + +#include <nm-setting.h> + +G_BEGIN_DECLS + +#define NM_TYPE_SETTING_BRIDGE_PORT (nm_setting_bridge_port_get_type ()) +#define NM_SETTING_BRIDGE_PORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTING_BRIDGE_PORT, NMSettingBridgePort)) +#define NM_SETTING_BRIDGE_PORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTING_BRIDGE_PORT, NMSettingBridgePortClass)) +#define NM_IS_SETTING_BRIDGE_PORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTING_BRIDGE_PORT)) +#define NM_IS_SETTING_BRIDGE_PORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_SETTING_BRIDGE_PORT)) +#define NM_SETTING_BRIDGE_PORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTING_BRIDGE_PORT, NMSettingBridgePortClass)) + +#define NM_SETTING_BRIDGE_PORT_SETTING_NAME "bridge-port" + +/** + * NMSettingBridgePortError: + * @NM_SETTING_BRIDGE_PORT_ERROR_UNKNOWN: unknown or unclassified error + * @NM_SETTING_BRIDGE_PORT_ERROR_INVALID_PROPERTY: the property was invalid + * @NM_SETTING_BRIDGE_PORT_ERROR_MISSING_PROPERTY: the property was missing and + * is required + */ +typedef enum { + NM_SETTING_BRIDGE_PORT_ERROR_UNKNOWN = 0, /*< nick=UnknownError >*/ + NM_SETTING_BRIDGE_PORT_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/ + NM_SETTING_BRIDGE_PORT_ERROR_MISSING_PROPERTY, /*< nick=MissingProperty >*/ +} NMSettingBridgePortError; + +#define NM_SETTING_BRIDGE_PORT_ERROR nm_setting_bridge_port_error_quark () +GQuark nm_setting_bridge_port_error_quark (void); + +#define NM_SETTING_BRIDGE_PORT_PRIORITY "priority" +#define NM_SETTING_BRIDGE_PORT_PATH_COST "path-cost" +#define NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE "hairpin-mode" + +typedef struct { + NMSetting parent; +} NMSettingBridgePort; + +typedef struct { + NMSettingClass parent; + + /* Padding for future expansion */ + void (*_reserved1) (void); + void (*_reserved2) (void); + void (*_reserved3) (void); + void (*_reserved4) (void); +} NMSettingBridgePortClass; + +GType nm_setting_bridge_port_get_type (void); + +NMSetting * nm_setting_bridge_port_new (void); + +guint16 nm_setting_bridge_port_get_priority (NMSettingBridgePort *setting); + +guint16 nm_setting_bridge_port_get_path_cost (NMSettingBridgePort *setting); + +gboolean nm_setting_bridge_port_get_hairpin_mode (NMSettingBridgePort *setting); + +G_END_DECLS + +#endif /* NM_SETTING_BRIDGE_PORT_H */ diff --git a/libnm-util/nm-setting-bridge.c b/libnm-util/nm-setting-bridge.c new file mode 100644 index 00000000..3363ffd4 --- /dev/null +++ b/libnm-util/nm-setting-bridge.c @@ -0,0 +1,498 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ + +/* + * Thomas Graf <tgraf@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * (C) Copyright 2011 - 2012 Red Hat, Inc. + */ + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <dbus/dbus-glib.h> + +#include "nm-setting-bridge.h" +#include "nm-param-spec-specialized.h" +#include "nm-setting-private.h" +#include "nm-utils.h" +#include "nm-utils-private.h" +#include "nm-dbus-glib-types.h" + +/** + * SECTION:nm-setting-bridge + * @short_description: Describes connection properties for bridges + * @include: nm-setting-bridge.h + * + * The #NMSettingBridge object is a #NMSetting subclass that describes properties + * necessary for bridging connections. + **/ + +/** + * nm_setting_bridge_error_quark: + * + * Registers an error quark for #NMSettingBridge if necessary. + * + * Returns: the error quark used for #NMSettingBridge errors. + **/ +GQuark +nm_setting_bridge_error_quark (void) +{ + static GQuark quark; + + if (G_UNLIKELY (!quark)) + quark = g_quark_from_static_string ("nm-setting-bridge-error-quark"); + return quark; +} + + +G_DEFINE_TYPE_WITH_CODE (NMSettingBridge, nm_setting_bridge, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_BRIDGE_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_BRIDGE_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_BRIDGE) + +#define NM_SETTING_BRIDGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_BRIDGE, NMSettingBridgePrivate)) + +typedef struct { + char * interface_name; + gboolean stp; + guint16 priority; + guint16 forward_delay; + guint16 hello_time; + guint16 max_age; + guint32 ageing_time; +} NMSettingBridgePrivate; + +enum { + PROP_0, + PROP_INTERFACE_NAME, + PROP_STP, + PROP_PRIORITY, + PROP_FORWARD_DELAY, + PROP_HELLO_TIME, + PROP_MAX_AGE, + PROP_AGEING_TIME, + LAST_PROP +}; + +/** + * nm_setting_bridge_new: + * + * Creates a new #NMSettingBridge object with default values. + * + * Returns: (transfer full): the new empty #NMSettingBridge object + **/ +NMSetting * +nm_setting_bridge_new (void) +{ + return (NMSetting *) g_object_new (NM_TYPE_SETTING_BRIDGE, NULL); +} + +/** + * nm_setting_bridge_get_interface_name: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:interface-name property of the setting + **/ +const char * +nm_setting_bridge_get_interface_name (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->interface_name; +} + +/** + * nm_setting_bridge_get_stp: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:stp property of the setting + **/ +gboolean +nm_setting_bridge_get_stp (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), FALSE); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->stp; +} + +/** + * nm_setting_bridge_get_priority: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:priority property of the setting + **/ +guint16 +nm_setting_bridge_get_priority (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->priority; +} + +/** + * nm_setting_bridge_get_forward_delay: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:forward-delay property of the setting + **/ +guint16 +nm_setting_bridge_get_forward_delay (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->forward_delay; +} + +/** + * nm_setting_bridge_get_hello_time: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:hello-time property of the setting + **/ +guint16 +nm_setting_bridge_get_hello_time (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->hello_time; +} + +/** + * nm_setting_bridge_get_max_age: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:max-age property of the setting + **/ +guint16 +nm_setting_bridge_get_max_age (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->max_age; +} + +/** + * nm_setting_bridge_get_ageing_time: + * @setting: the #NMSettingBridge + * + * Returns: the #NMSettingBridge:ageing-time property of the setting + **/ +guint +nm_setting_bridge_get_ageing_time (NMSettingBridge *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0); + + return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->ageing_time; +} + +/* IEEE 802.1D-1998 timer values */ +#define BR_MIN_HELLO_TIME 1 +#define BR_MAX_HELLO_TIME 10 + +#define BR_MIN_FORWARD_DELAY 2 +#define BR_MAX_FORWARD_DELAY 30 + +#define BR_MIN_MAX_AGE 6 +#define BR_MAX_MAX_AGE 40 + +/* IEEE 802.1D-1998 Table 7.4 */ +#define BR_MIN_AGEING_TIME 0 +#define BR_MAX_AGEING_TIME 1000000 + +static inline gboolean +check_range (guint32 val, + guint32 min, + guint32 max, + const char *prop, + GError **error) +{ + if ((val != 0) && (val < min || val > max)) { + g_set_error_literal (error, + NM_SETTING_BRIDGE_ERROR, + NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY, + prop); + return FALSE; + } + return TRUE; +} + +static gboolean +verify (NMSetting *setting, GSList *all_settings, GError **error) +{ + NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (setting); + + if (!priv->interface_name || !strlen(priv->interface_name)) { + g_set_error (error, + NM_SETTING_BRIDGE_ERROR, + NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY, + NM_SETTING_BRIDGE_INTERFACE_NAME); + return FALSE; + } + + if (!nm_utils_iface_valid_name (priv->interface_name)) { + g_set_error (error, + NM_SETTING_BRIDGE_ERROR, + NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY, + NM_SETTING_BRIDGE_INTERFACE_NAME); + return FALSE; + } + + if (!check_range (priv->forward_delay, + BR_MIN_FORWARD_DELAY, + BR_MAX_FORWARD_DELAY, + NM_SETTING_BRIDGE_FORWARD_DELAY, + error)) + return FALSE; + + if (!check_range (priv->hello_time, + BR_MIN_HELLO_TIME, + BR_MAX_HELLO_TIME, + NM_SETTING_BRIDGE_HELLO_TIME, + error)) + return FALSE; + + if (!check_range (priv->max_age, + BR_MIN_MAX_AGE, + BR_MAX_MAX_AGE, + NM_SETTING_BRIDGE_MAX_AGE, + error)) + return FALSE; + + if (!check_range (priv->ageing_time, + BR_MIN_AGEING_TIME, + BR_MAX_AGEING_TIME, + NM_SETTING_BRIDGE_AGEING_TIME, + error)) + return FALSE; + + return TRUE; +} + +static const char * +get_virtual_iface_name (NMSetting *setting) +{ + NMSettingBridge *self = NM_SETTING_BRIDGE (setting); + + return nm_setting_bridge_get_interface_name (self); +} + +static void +nm_setting_bridge_init (NMSettingBridge *setting) +{ + g_object_set (setting, NM_SETTING_NAME, NM_SETTING_BRIDGE_SETTING_NAME, NULL); +} + +static void +finalize (GObject *object) +{ + NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (object); + + g_free (priv->interface_name); + + G_OBJECT_CLASS (nm_setting_bridge_parent_class)->finalize (object); +} + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (object); + + switch (prop_id) { + case PROP_INTERFACE_NAME: + g_free (priv->interface_name); + priv->interface_name = g_value_dup_string (value); + break; + case PROP_STP: + priv->stp = g_value_get_boolean (value); + break; + case PROP_PRIORITY: + priv->priority = (guint16) g_value_get_uint (value); + break; + case PROP_FORWARD_DELAY: + priv->forward_delay = (guint16) g_value_get_uint (value); + break; + case PROP_HELLO_TIME: + priv->hello_time = (guint16) g_value_get_uint (value); + break; + case PROP_MAX_AGE: + priv->max_age = (guint16) g_value_get_uint (value); + break; + case PROP_AGEING_TIME: + priv->ageing_time = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (object); + NMSettingBridge *setting = NM_SETTING_BRIDGE (object); + + switch (prop_id) { + case PROP_INTERFACE_NAME: + g_value_set_string (value, nm_setting_bridge_get_interface_name (setting)); + break; + case PROP_STP: + g_value_set_boolean (value, priv->stp); + break; + case PROP_PRIORITY: + g_value_set_uint (value, priv->priority); + break; + case PROP_FORWARD_DELAY: + g_value_set_uint (value, priv->forward_delay); + break; + case PROP_HELLO_TIME: + g_value_set_uint (value, priv->hello_time); + break; + case PROP_MAX_AGE: + g_value_set_uint (value, priv->max_age); + break; + case PROP_AGEING_TIME: + g_value_set_uint (value, priv->ageing_time); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +nm_setting_bridge_class_init (NMSettingBridgeClass *setting_class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (setting_class); + NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class); + + g_type_class_add_private (setting_class, sizeof (NMSettingBridgePrivate)); + + /* virtual methods */ + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->finalize = finalize; + parent_class->verify = verify; + parent_class->get_virtual_iface_name = get_virtual_iface_name; + + /* Properties */ + /** + * NMSettingBridge:interface-name: + * + * The name of the virtual in-kernel briding network interface + **/ + g_object_class_install_property + (object_class, PROP_INTERFACE_NAME, + g_param_spec_string (NM_SETTING_BRIDGE_INTERFACE_NAME, + "InterfaceName", + "The name of the virtual in-kernel bridging network interface", + NULL, + G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridge:stp: + * + * Controls whether Spanning Tree Protocol (STP) is enabled for this bridge. + **/ + g_object_class_install_property + (object_class, PROP_STP, + g_param_spec_boolean (NM_SETTING_BRIDGE_STP, + "STP", + "Controls whether Spanning Tree Protocol (STP) " + "is enabled for this bridge.", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridge:priority: + * + * Sets the Spanning Tree Protocol (STP) priority for this bridge. Lower + * values are "better"; the lowest priority bridge will be elected the root + * bridge. + **/ + g_object_class_install_property + (object_class, PROP_PRIORITY, + g_param_spec_uint (NM_SETTING_BRIDGE_PRIORITY, + "Priority", + "Sets the Spanning Tree Protocol (STP) priority " + "for this bridge. Lower values are 'better'; the " + "lowest priority bridge will be elected the root " + "bridge.", + 0, G_MAXUINT16, 0x80, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridge:forward-delay: + * + * The Spanning Tree Protocol (STP) forwarding delay, in seconds. + **/ + g_object_class_install_property + (object_class, PROP_FORWARD_DELAY, + g_param_spec_uint (NM_SETTING_BRIDGE_FORWARD_DELAY, + "ForwardDelay", + "The Spanning Tree Protocol (STP) forwarding " + "delay, in seconds.", + 0, BR_MAX_FORWARD_DELAY, 15, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridge:hello-time: + * + * The Spanning Tree Protocol (STP) hello time, in seconds. + **/ + g_object_class_install_property + (object_class, PROP_HELLO_TIME, + g_param_spec_uint (NM_SETTING_BRIDGE_HELLO_TIME, + "HelloTime", + "The Spanning Tree Protocol (STP) hello time, in " + "seconds.", + 0, BR_MAX_HELLO_TIME, 2, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridge:max-age: + * + * The Spanning Tree Protocol (STP) maximum message age, in seconds. + **/ + g_object_class_install_property + (object_class, PROP_MAX_AGE, + g_param_spec_uint (NM_SETTING_BRIDGE_MAX_AGE, + "MaxAge", + "The Spanning Tree Protocol (STP) maximum message " + "age, in seconds.", + 0, BR_MAX_MAX_AGE, 20, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); + + /** + * NMSettingBridge:ageing-time: + * + * The ethernet MAC address aging time, in seconds. + **/ + g_object_class_install_property + (object_class, PROP_AGEING_TIME, + g_param_spec_uint (NM_SETTING_BRIDGE_AGEING_TIME, + "AgeingTime", + "The ethernet MAC address aging time, in seconds.", + 0, BR_MAX_AGEING_TIME, 300, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); +} + diff --git a/libnm-util/nm-setting-bridge.h b/libnm-util/nm-setting-bridge.h new file mode 100644 index 00000000..7b9f92be --- /dev/null +++ b/libnm-util/nm-setting-bridge.h @@ -0,0 +1,98 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ + +/* + * Thomas Graf <tgraf@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * (C) Copyright 2011 - 2012 Red Hat, Inc. + */ + +#ifndef NM_SETTING_BRIDGE_H +#define NM_SETTING_BRIDGE_H + +#include <nm-setting.h> + +G_BEGIN_DECLS + +#define NM_TYPE_SETTING_BRIDGE (nm_setting_bridge_get_type ()) +#define NM_SETTING_BRIDGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTING_BRIDGE, NMSettingBridge)) +#define NM_SETTING_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTING_BRIDGE, NMSettingBridgeClass)) +#define NM_IS_SETTING_BRIDGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTING_BRIDGE)) +#define NM_IS_SETTING_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_SETTING_BRIDGE)) +#define NM_SETTING_BRIDGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTING_BRIDGE, NMSettingBridgeClass)) + +#define NM_SETTING_BRIDGE_SETTING_NAME "bridge" + +/** + * NMSettingBridgeError: + * @NM_SETTING_BRIDGE_ERROR_UNKNOWN: unknown or unclassified error + * @NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY: the property was invalid + * @NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY: the property was missing and is + * required + */ +typedef enum { + NM_SETTING_BRIDGE_ERROR_UNKNOWN = 0, /*< nick=UnknownError >*/ + NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/ + NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY, /*< nick=MissingProperty >*/ +} NMSettingBridgeError; + +#define NM_SETTING_BRIDGE_ERROR nm_setting_bridge_error_quark () +GQuark nm_setting_bridge_error_quark (void); + +#define NM_SETTING_BRIDGE_INTERFACE_NAME "interface-name" +#define NM_SETTING_BRIDGE_STP "stp" +#define NM_SETTING_BRIDGE_PRIORITY "priority" +#define NM_SETTING_BRIDGE_FORWARD_DELAY "forward-delay" +#define NM_SETTING_BRIDGE_HELLO_TIME "hello-time" +#define NM_SETTING_BRIDGE_MAX_AGE "max-age" +#define NM_SETTING_BRIDGE_AGEING_TIME "ageing-time" + +typedef struct { + NMSetting parent; +} NMSettingBridge; + +typedef struct { + NMSettingClass parent; + + /* Padding for future expansion */ + void (*_reserved1) (void); + void (*_reserved2) (void); + void (*_reserved3) (void); + void (*_reserved4) (void); +} NMSettingBridgeClass; + +GType nm_setting_bridge_get_type (void); + +NMSetting * nm_setting_bridge_new (void); + +const char * nm_setting_bridge_get_interface_name (NMSettingBridge *setting); + +gboolean nm_setting_bridge_get_stp (NMSettingBridge *setting); + +guint16 nm_setting_bridge_get_priority (NMSettingBridge *setting); + +guint16 nm_setting_bridge_get_forward_delay (NMSettingBridge *setting); + +guint16 nm_setting_bridge_get_hello_time (NMSettingBridge *setting); + +guint16 nm_setting_bridge_get_max_age (NMSettingBridge *setting); + +guint32 nm_setting_bridge_get_ageing_time (NMSettingBridge *setting); + +G_END_DECLS + +#endif /* NM_SETTING_BRIDGE_H */ diff --git a/libnm-util/nm-setting-cdma.c b/libnm-util/nm-setting-cdma.c index 43bf93b1..d68531a6 100644 --- a/libnm-util/nm-setting-cdma.c +++ b/libnm-util/nm-setting-cdma.c @@ -54,7 +54,12 @@ nm_setting_cdma_error_quark (void) } -G_DEFINE_TYPE (NMSettingCdma, nm_setting_cdma, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingCdma, nm_setting_cdma, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_CDMA_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_CDMA_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_CDMA) #define NM_SETTING_CDMA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_CDMA, NMSettingCdmaPrivate)) diff --git a/libnm-util/nm-setting-connection.c b/libnm-util/nm-setting-connection.c index 80380f3c..1222f976 100644 --- a/libnm-util/nm-setting-connection.c +++ b/libnm-util/nm-setting-connection.c @@ -19,16 +19,16 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * (C) Copyright 2007 - 2011 Red Hat, Inc. + * (C) Copyright 2007 - 2012 Red Hat, Inc. * (C) Copyright 2007 - 2008 Novell, Inc. */ #include <string.h> -#include <ctype.h> #include "nm-utils.h" #include "nm-dbus-glib-types.h" #include "nm-param-spec-specialized.h" #include "nm-setting-connection.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-connection @@ -59,7 +59,12 @@ nm_setting_connection_error_quark (void) } -G_DEFINE_TYPE (NMSettingConnection, nm_setting_connection, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingConnection, nm_setting_connection, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_CONNECTION_SETTING_NAME, + g_define_type_id, + 0, + NM_SETTING_CONNECTION_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_CONNECTION) #define NM_SETTING_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_CONNECTION, NMSettingConnectionPrivate)) @@ -83,6 +88,7 @@ typedef struct { guint64 timestamp; gboolean read_only; char *zone; + GSList *secondaries; /* secondary connections to activate with the base connection */ } NMSettingConnectionPrivate; enum { @@ -97,6 +103,7 @@ enum { PROP_ZONE, PROP_MASTER, PROP_SLAVE_TYPE, + PROP_SECONDARIES, LAST_PROP }; @@ -529,31 +536,103 @@ nm_setting_connection_is_slave_type (NMSettingConnection *setting, return !g_strcmp0 (NM_SETTING_CONNECTION_GET_PRIVATE (setting)->slave_type, type); } -static gint -find_setting_by_name (gconstpointer a, gconstpointer b) +/** + * nm_setting_connection_get_num_secondaries: + * @setting: the #NMSettingConnection + * + * Returns: the number of configured secondary connection UUIDs + **/ +guint32 +nm_setting_connection_get_num_secondaries (NMSettingConnection *setting) { - NMSetting *setting = NM_SETTING (a); - const char *str = (const char *) b; + g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), 0); - return strcmp (nm_setting_get_name (setting), str); + return g_slist_length (NM_SETTING_CONNECTION_GET_PRIVATE (setting)->secondaries); } -static gboolean -validate_uuid (const char *uuid) +/** + * nm_setting_connection_get_secondary: + * @setting: the #NMSettingConnection + * @idx: the zero-based index of the secondary connection UUID entry + * + * Returns: the secondary connection UUID at index @idx + **/ +const char * +nm_setting_connection_get_secondary (NMSettingConnection *setting, guint32 idx) { - int i; + NMSettingConnectionPrivate *priv; - if (!uuid || !strlen (uuid)) - return FALSE; + g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL); + + priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting); + g_return_val_if_fail (idx <= g_slist_length (priv->secondaries), NULL); + + return (const char *) g_slist_nth_data (priv->secondaries, idx); +} + +/** + * nm_setting_connection_add_secondary: + * @setting: the #NMSettingConnection + * @sec_uuid: the secondary connection UUID to add + * + * Adds a new secondary connetion UUID to the setting. + * + * Returns: %TRUE if the secondary connection UUID was added; %FALSE if the UUID + * was already present + **/ +gboolean +nm_setting_connection_add_secondary (NMSettingConnection *setting, + const char *sec_uuid) +{ + NMSettingConnectionPrivate *priv; + GSList *iter; - for (i = 0; i < strlen (uuid); i++) { - if (!isxdigit (uuid[i]) && (uuid[i] != '-')) + g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE); + g_return_val_if_fail (sec_uuid != NULL, FALSE); + g_return_val_if_fail (sec_uuid[0] != '\0', FALSE); + + priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting); + for (iter = priv->secondaries; iter; iter = g_slist_next (iter)) { + if (!strcmp (sec_uuid, (char *) iter->data)) return FALSE; } + priv->secondaries = g_slist_append (priv->secondaries, g_strdup (sec_uuid)); return TRUE; } +/** + * nm_setting_connection_remove_secondary: + * @setting: the #NMSettingConnection + * @idx: index number of the secondary connection UUID + * + * Removes the secondary coonnection UUID at index @idx. + **/ +void +nm_setting_connection_remove_secondary (NMSettingConnection *setting, guint32 idx) +{ + NMSettingConnectionPrivate *priv; + GSList *elt; + + g_return_if_fail (NM_IS_SETTING_CONNECTION (setting)); + + priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting); + elt = g_slist_nth (priv->secondaries, idx); + g_return_if_fail (elt != NULL); + + g_free (elt->data); + priv->secondaries = g_slist_delete_link (priv->secondaries, elt); +} + +static gint +find_setting_by_name (gconstpointer a, gconstpointer b) +{ + NMSetting *setting = NM_SETTING (a); + const char *str = (const char *) b; + + return strcmp (nm_setting_get_name (setting), str); +} + static gboolean verify (NMSetting *setting, GSList *all_settings, GError **error) { @@ -579,7 +658,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) NM_SETTING_CONNECTION_ERROR_MISSING_PROPERTY, NM_SETTING_CONNECTION_UUID); return FALSE; - } else if (!validate_uuid (priv->uuid)) { + } else if (!nm_utils_is_uuid (priv->uuid)) { g_set_error (error, NM_SETTING_CONNECTION_ERROR, NM_SETTING_CONNECTION_ERROR_INVALID_PROPERTY, @@ -750,6 +829,10 @@ set_property (GObject *object, guint prop_id, g_free (priv->slave_type); priv->slave_type = g_value_dup_string (value); break; + case PROP_SECONDARIES: + nm_utils_slist_free (priv->secondaries, g_free); + priv->secondaries = g_value_dup_boxed (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -804,6 +887,9 @@ get_property (GObject *object, guint prop_id, case PROP_SLAVE_TYPE: g_value_set_string (value, nm_setting_connection_get_slave_type (setting)); break; + case PROP_SECONDARIES: + g_value_set_boxed (value, priv->secondaries); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1042,4 +1128,19 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class) "connection is not a slave.", NULL, G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_FUZZY_IGNORE)); + + /** + * NMSettingConnection:secondaries: + * + * List of connection UUIDs that should be activated when the base connection + * itself is activated. + **/ + g_object_class_install_property + (object_class, PROP_SECONDARIES, + _nm_param_spec_specialized (NM_SETTING_CONNECTION_SECONDARIES, + "Secondaries", + "List of connection UUIDs that should be activated " + "when the base connection itself is activated.", + DBUS_TYPE_G_LIST_OF_STRING, + G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_FUZZY_IGNORE)); } diff --git a/libnm-util/nm-setting-connection.h b/libnm-util/nm-setting-connection.h index 44b0f845..73c598cb 100644 --- a/libnm-util/nm-setting-connection.h +++ b/libnm-util/nm-setting-connection.h @@ -19,7 +19,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * (C) Copyright 2007 - 2010 Red Hat, Inc. + * (C) Copyright 2007 - 2012 Red Hat, Inc. * (C) Copyright 2007 - 2008 Novell, Inc. */ @@ -78,6 +78,7 @@ GQuark nm_setting_connection_error_quark (void); #define NM_SETTING_CONNECTION_ZONE "zone" #define NM_SETTING_CONNECTION_MASTER "master" #define NM_SETTING_CONNECTION_SLAVE_TYPE "slave-type" +#define NM_SETTING_CONNECTION_SECONDARIES "secondaries" /** * NMSettingConnection: @@ -127,6 +128,10 @@ const char *nm_setting_connection_get_master (NMSettingConnection *set gboolean nm_setting_connection_is_slave_type (NMSettingConnection *setting, const char *type); const char *nm_setting_connection_get_slave_type (NMSettingConnection *setting); +guint32 nm_setting_connection_get_num_secondaries (NMSettingConnection *setting); +const char *nm_setting_connection_get_secondary (NMSettingConnection *setting, guint32 idx); +gboolean nm_setting_connection_add_secondary (NMSettingConnection *setting, const char *sec_uuid); +void nm_setting_connection_remove_secondary (NMSettingConnection *setting, guint32 idx); G_END_DECLS diff --git a/libnm-util/nm-setting-gsm.c b/libnm-util/nm-setting-gsm.c index 2264d008..ea83c73c 100644 --- a/libnm-util/nm-setting-gsm.c +++ b/libnm-util/nm-setting-gsm.c @@ -24,7 +24,6 @@ */ #include <string.h> -#include <ctype.h> #include "nm-setting-gsm.h" #include "nm-utils.h" #include "nm-setting-private.h" @@ -57,7 +56,12 @@ nm_setting_gsm_error_quark (void) } -G_DEFINE_TYPE (NMSettingGsm, nm_setting_gsm, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingGsm, nm_setting_gsm, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_GSM_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_GSM_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_GSM) #define NM_SETTING_GSM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_GSM, NMSettingGsmPrivate)) @@ -306,7 +310,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) * like space ( ) and such. */ for (i = 0; i < apn_len; i++) { - if ( !isalnum (priv->apn[i]) + if ( !g_ascii_isalnum (priv->apn[i]) && (priv->apn[i] != '.') && (priv->apn[i] != '_') && (priv->apn[i] != '-')) { @@ -349,7 +353,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) } for (i = 0; i < nid_len; i++) { - if (!isdigit (priv->network_id[i])) { + if (!g_ascii_isdigit (priv->network_id[i])) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, @@ -658,10 +662,10 @@ nm_setting_gsm_class_init (NMSettingGsmClass *setting_class) "Network preference to force the device to only use " "specific network technologies. The permitted values " "are: -1: any, 0: 3G only, 1: GPRS/EDGE only, " - "2: prefer 3G, and 3: prefer 2G. Note that not all " - "devices allow network preference control.", + "2: prefer 3G, 3: prefer 2G, 4: prefer 4G/LTE, 5: 4G/LTE only. " + "Note that not all devices allow network preference control.", NM_SETTING_GSM_NETWORK_TYPE_ANY, - NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE, + NM_SETTING_GSM_NETWORK_TYPE_4G, NM_SETTING_GSM_NETWORK_TYPE_ANY, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE)); diff --git a/libnm-util/nm-setting-gsm.h b/libnm-util/nm-setting-gsm.h index 12114e32..2303f762 100644 --- a/libnm-util/nm-setting-gsm.h +++ b/libnm-util/nm-setting-gsm.h @@ -81,6 +81,10 @@ GQuark nm_setting_gsm_error_quark (void); * preferred but 2G-type technologies may be used as a fallback * @NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE: 2G-type technologies are * preferred but 3G-type technologies may be used as a fallback + * @NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G: 4G/LTE-type technologies are + * preferred but 3G/2/-type technologies may be used as a fallback + * @NM_SETTING_GSM_NETWORK_TYPE_4G: only 4G/LTE type + * technologies may be used * * #NMSettingGsmNetworkType values indicate the allowed access technologies * the device may use when connecting to this network. @@ -90,7 +94,9 @@ typedef enum { NM_SETTING_GSM_NETWORK_TYPE_UMTS_HSPA = 0, NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE = 1, NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA = 2, - NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE = 3 + NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE = 3, + NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G = 4, + NM_SETTING_GSM_NETWORK_TYPE_4G = 5 } NMSettingGsmNetworkType; /** diff --git a/libnm-util/nm-setting-infiniband.c b/libnm-util/nm-setting-infiniband.c index dbef5b8a..ee40aa0e 100644 --- a/libnm-util/nm-setting-infiniband.c +++ b/libnm-util/nm-setting-infiniband.c @@ -25,6 +25,7 @@ #include "nm-setting-infiniband.h" #include "nm-param-spec-specialized.h" #include "nm-utils-private.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-infiniband @@ -52,7 +53,12 @@ nm_setting_infiniband_error_quark (void) return quark; } -G_DEFINE_TYPE (NMSettingInfiniband, nm_setting_infiniband, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingInfiniband, nm_setting_infiniband, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_INFINIBAND_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_INFINIBAND_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_INFINIBAND) #define NM_SETTING_INFINIBAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_INFINIBAND, NMSettingInfinibandPrivate)) diff --git a/libnm-util/nm-setting-ip4-config.c b/libnm-util/nm-setting-ip4-config.c index 5dc9199b..c6becefb 100644 --- a/libnm-util/nm-setting-ip4-config.c +++ b/libnm-util/nm-setting-ip4-config.c @@ -31,7 +31,7 @@ #include "nm-utils.h" #include "nm-dbus-glib-types.h" #include "nm-glib-compat.h" - +#include "nm-setting-private.h" /** @@ -63,7 +63,12 @@ nm_setting_ip4_config_error_quark (void) G_DEFINE_BOXED_TYPE (NMIP4Address, nm_ip4_address, nm_ip4_address_dup, nm_ip4_address_unref) G_DEFINE_BOXED_TYPE (NMIP4Route, nm_ip4_route, nm_ip4_route_dup, nm_ip4_route_unref) -G_DEFINE_TYPE (NMSettingIP4Config, nm_setting_ip4_config, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingIP4Config, nm_setting_ip4_config, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_IP4_CONFIG_SETTING_NAME, + g_define_type_id, + 4, + NM_SETTING_IP4_CONFIG_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_IP4_CONFIG) #define NM_SETTING_IP4_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_IP4_CONFIG, NMSettingIP4ConfigPrivate)) @@ -996,7 +1001,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class) * List of DNS servers (network byte order). For the 'auto' method, these * DNS servers are appended to those (if any) returned by automatic * configuration. DNS servers cannot be used with the 'shared', 'link-local', - * or 'disabled' methods as there is no usptream network. In all other + * or 'disabled' methods as there is no upstream network. In all other * methods, these DNS servers are used as the only DNS servers for this * connection. **/ @@ -1009,7 +1014,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class) "appended to those (if any) returned by automatic " "configuration. DNS servers cannot be used with " "the 'shared', 'link-local', or 'disabled' " - "methods as there is no usptream network. In all " + "methods as there is no upstream network. In all " "other methods, these DNS servers are used as the " "only DNS servers for this connection.", DBUS_TYPE_G_UINT_ARRAY, @@ -1143,7 +1148,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class) * NMSettingIP4Config:dhcp-client-id: * * A string sent to the DHCP server to identify the local machine which the - * DHCP server may use to cusomize the DHCP lease and options. + * DHCP server may use to customize the DHCP lease and options. **/ g_object_class_install_property (object_class, PROP_DHCP_CLIENT_ID, @@ -1151,7 +1156,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class) "DHCP Client ID", "A string sent to the DHCP server to identify the " "local machine which the DHCP server may use to " - "cusomize the DHCP lease and options.", + "customize the DHCP lease and options.", NULL, G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE)); diff --git a/libnm-util/nm-setting-ip6-config.c b/libnm-util/nm-setting-ip6-config.c index c6a84f8e..00e27aea 100644 --- a/libnm-util/nm-setting-ip6-config.c +++ b/libnm-util/nm-setting-ip6-config.c @@ -30,6 +30,7 @@ #include "nm-utils.h" #include "nm-dbus-glib-types.h" #include "nm-glib-compat.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-ip6-config @@ -60,12 +61,18 @@ nm_setting_ip6_config_error_quark (void) G_DEFINE_BOXED_TYPE (NMIP6Address, nm_ip6_address, nm_ip6_address_dup, nm_ip6_address_unref) G_DEFINE_BOXED_TYPE (NMIP6Route, nm_ip6_route, nm_ip6_route_dup, nm_ip6_route_unref) -G_DEFINE_TYPE (NMSettingIP6Config, nm_setting_ip6_config, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingIP6Config, nm_setting_ip6_config, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_IP6_CONFIG_SETTING_NAME, + g_define_type_id, + 4, + NM_SETTING_IP6_CONFIG_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_IP6_CONFIG) #define NM_SETTING_IP6_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_IP6_CONFIG, NMSettingIP6ConfigPrivate)) typedef struct { char *method; + char *dhcp_hostname; GSList *dns; /* array of struct in6_addr */ GSList *dns_search; /* list of strings */ GSList *addresses; /* array of NMIP6Address */ @@ -81,6 +88,7 @@ typedef struct { enum { PROP_0, PROP_METHOD, + PROP_DHCP_HOSTNAME, PROP_DNS, PROP_DNS_SEARCH, PROP_ADDRESSES, @@ -122,6 +130,23 @@ nm_setting_ip6_config_get_method (NMSettingIP6Config *setting) } /** + * nm_setting_ip6_config_get_dhcp_hostname: + * @setting: the #NMSettingIP6Config + * + * Returns the value contained in the #NMSettingIP6Config:dhcp-hostname + * property. + * + * Returns: the configured hostname to send to the DHCP server + **/ +const char * +nm_setting_ip6_config_get_dhcp_hostname (NMSettingIP6Config *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), NULL); + + return NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting)->dhcp_hostname; +} + +/** * nm_setting_ip6_config_get_num_dns: * @setting: the #NMSettingIP6Config * @@ -693,6 +718,14 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } + if (priv->dhcp_hostname && !strlen (priv->dhcp_hostname)) { + g_set_error (error, + NM_SETTING_IP6_CONFIG_ERROR, + NM_SETTING_IP6_CONFIG_ERROR_INVALID_PROPERTY, + NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME); + return FALSE; + } + return TRUE; } @@ -751,6 +784,10 @@ set_property (GObject *object, guint prop_id, case PROP_IGNORE_AUTO_DNS: priv->ignore_auto_dns = g_value_get_boolean (value); break; + case PROP_DHCP_HOSTNAME: + g_free (priv->dhcp_hostname); + priv->dhcp_hostname = g_value_dup_string (value); + break; case PROP_NEVER_DEFAULT: priv->never_default = g_value_get_boolean (value); break; @@ -794,6 +831,9 @@ get_property (GObject *object, guint prop_id, case PROP_IGNORE_AUTO_DNS: g_value_set_boolean (value, priv->ignore_auto_dns); break; + case PROP_DHCP_HOSTNAME: + g_value_set_string (value, priv->dhcp_hostname); + break; case PROP_NEVER_DEFAULT: g_value_set_boolean (value, priv->never_default); break; @@ -860,6 +900,20 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class) G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE)); /** + * NMSettingIP6Config:dhcp-hostname: + * + * The specified name will be sent to the DHCP server when acquiring a lease. + **/ + g_object_class_install_property + (object_class, PROP_DHCP_HOSTNAME, + g_param_spec_string (NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME, + "DHCP Hostname", + "The specified name will be sent to the DHCP server " + "when acquiring a lease.", + NULL, + G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE)); + + /** * NMSettingIP6Config:dns: * * Array of DNS servers, where each member of the array is a byte array diff --git a/libnm-util/nm-setting-ip6-config.h b/libnm-util/nm-setting-ip6-config.h index 05c16668..29650486 100644 --- a/libnm-util/nm-setting-ip6-config.h +++ b/libnm-util/nm-setting-ip6-config.h @@ -69,6 +69,8 @@ GQuark nm_setting_ip6_config_error_quark (void); #define NM_SETTING_IP6_CONFIG_NEVER_DEFAULT "never-default" #define NM_SETTING_IP6_CONFIG_MAY_FAIL "may-fail" #define NM_SETTING_IP6_CONFIG_IP6_PRIVACY "ip6-privacy" +#define NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME "dhcp-hostname" + /** * NM_SETTING_IP6_CONFIG_METHOD_IGNORE: @@ -239,6 +241,7 @@ void nm_setting_ip6_config_clear_routes (NMSettingIP gboolean nm_setting_ip6_config_get_ignore_auto_routes (NMSettingIP6Config *setting); gboolean nm_setting_ip6_config_get_ignore_auto_dns (NMSettingIP6Config *setting); +const char * nm_setting_ip6_config_get_dhcp_hostname (NMSettingIP6Config *setting); gboolean nm_setting_ip6_config_get_never_default (NMSettingIP6Config *setting); gboolean nm_setting_ip6_config_get_may_fail (NMSettingIP6Config *setting); NMSettingIP6ConfigPrivacy nm_setting_ip6_config_get_ip6_privacy (NMSettingIP6Config *setting); diff --git a/libnm-util/nm-setting-olpc-mesh.c b/libnm-util/nm-setting-olpc-mesh.c index 96770e4f..bf87aa57 100644 --- a/libnm-util/nm-setting-olpc-mesh.c +++ b/libnm-util/nm-setting-olpc-mesh.c @@ -35,6 +35,7 @@ #include "nm-utils.h" #include "nm-dbus-glib-types.h" #include "nm-utils-private.h" +#include "nm-setting-private.h" GQuark nm_setting_olpc_mesh_error_quark (void) @@ -48,7 +49,12 @@ nm_setting_olpc_mesh_error_quark (void) static void nm_setting_olpc_mesh_init (NMSettingOlpcMesh *setting); -G_DEFINE_TYPE (NMSettingOlpcMesh, nm_setting_olpc_mesh, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingOlpcMesh, nm_setting_olpc_mesh, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_OLPC_MESH_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_OLPC_MESH_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_OLPC_MESH) #define NM_SETTING_OLPC_MESH_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_OLPC_MESH, NMSettingOlpcMeshPrivate)) diff --git a/libnm-util/nm-setting-ppp.c b/libnm-util/nm-setting-ppp.c index ee9b5f59..09cf3de6 100644 --- a/libnm-util/nm-setting-ppp.c +++ b/libnm-util/nm-setting-ppp.c @@ -24,6 +24,7 @@ */ #include "nm-setting-ppp.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-ppp @@ -54,7 +55,12 @@ nm_setting_ppp_error_quark (void) } -G_DEFINE_TYPE (NMSettingPPP, nm_setting_ppp, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingPPP, nm_setting_ppp, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_PPP_SETTING_NAME, + g_define_type_id, + 3, + NM_SETTING_PPP_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_PPP) #define NM_SETTING_PPP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_PPP, NMSettingPPPPrivate)) diff --git a/libnm-util/nm-setting-pppoe.c b/libnm-util/nm-setting-pppoe.c index 62c42f01..2785dfa9 100644 --- a/libnm-util/nm-setting-pppoe.c +++ b/libnm-util/nm-setting-pppoe.c @@ -56,7 +56,12 @@ nm_setting_pppoe_error_quark (void) } -G_DEFINE_TYPE (NMSettingPPPOE, nm_setting_pppoe, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingPPPOE, nm_setting_pppoe, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_PPPOE_SETTING_NAME, + g_define_type_id, + 3, + NM_SETTING_PPPOE_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_PPPOE) #define NM_SETTING_PPPOE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_PPPOE, NMSettingPPPOEPrivate)) diff --git a/libnm-util/nm-setting-private.h b/libnm-util/nm-setting-private.h index 5c4e0a5e..1460841c 100644 --- a/libnm-util/nm-setting-private.h +++ b/libnm-util/nm-setting-private.h @@ -21,11 +21,23 @@ #ifndef NM_SETTING_PRIVATE_H #define NM_SETTING_PRIVATE_H +#include "nm-glib-compat.h" + #define NM_SETTING_SECRET_FLAGS_ALL \ (NM_SETTING_SECRET_FLAG_NONE | \ NM_SETTING_SECRET_FLAG_AGENT_OWNED | \ NM_SETTING_SECRET_FLAG_NOT_SAVED | \ NM_SETTING_SECRET_FLAG_NOT_REQUIRED) +void _nm_register_setting (const char *name, + const GType type, + const guint32 priority, + const GQuark error_quark); + +/* Ensure the setting's GType is registered at library load time */ +#define NM_SETTING_REGISTER_TYPE(x) \ +static void __attribute__((constructor)) register_setting (void) \ +{ g_type_init (); g_type_ensure (x); } + #endif /* NM_SETTING_PRIVATE_H */ diff --git a/libnm-util/nm-setting-serial.c b/libnm-util/nm-setting-serial.c index 44f14986..203f5748 100644 --- a/libnm-util/nm-setting-serial.c +++ b/libnm-util/nm-setting-serial.c @@ -27,6 +27,7 @@ #include "nm-setting-serial.h" #include "nm-glib-compat.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-serial @@ -57,7 +58,12 @@ nm_setting_serial_error_quark (void) } -G_DEFINE_TYPE (NMSettingSerial, nm_setting_serial, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingSerial, nm_setting_serial, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_SERIAL_SETTING_NAME, + g_define_type_id, + 2, + NM_SETTING_SERIAL_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_SERIAL) #define NM_SETTING_SERIAL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_SERIAL, NMSettingSerialPrivate)) diff --git a/libnm-util/nm-setting-vlan.c b/libnm-util/nm-setting-vlan.c index f69e0d85..df7f0702 100644 --- a/libnm-util/nm-setting-vlan.c +++ b/libnm-util/nm-setting-vlan.c @@ -21,12 +21,16 @@ * (C) Copyright 2011 - 2012 Red Hat, Inc. */ +#include <stdlib.h> +#include <string.h> #include <dbus/dbus-glib.h> + #include "nm-setting-vlan.h" #include "nm-param-spec-specialized.h" #include "nm-utils.h" #include "nm-dbus-glib-types.h" #include "nm-setting-connection.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-vlan @@ -54,7 +58,12 @@ nm_setting_vlan_error_quark (void) return quark; } -G_DEFINE_TYPE (NMSettingVlan, nm_setting_vlan, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingVlan, nm_setting_vlan, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_VLAN_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_VLAN_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_VLAN) #define NM_SETTING_VLAN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_VLAN, NMSettingVlanPrivate)) @@ -436,29 +445,68 @@ static gboolean verify (NMSetting *setting, GSList *all_settings, GError **error) { NMSettingVlanPrivate *priv = NM_SETTING_VLAN_GET_PRIVATE (setting); - - if (priv->iface_name && !priv->iface_name[0]) { - g_set_error (error, - NM_SETTING_VLAN_ERROR, - NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, - NM_SETTING_VLAN_INTERFACE_NAME); - return FALSE; + NMSettingConnection *s_con = NULL; + NMSettingWired *s_wired = NULL; + GSList *iter; + + for (iter = all_settings; iter; iter = iter->next) { + if (NM_IS_SETTING_CONNECTION (iter->data)) + s_con = iter->data; + else if (NM_IS_SETTING_WIRED (iter->data)) + s_wired = iter->data; } - if (priv->parent && !priv->parent[0]) { + /* If iface_name is specified, it must be a valid interface name. We + * don't check that it matches parent and/or id, because we allowing + * renaming vlans to arbitrary names. + */ + if (priv->iface_name && !nm_utils_iface_valid_name (priv->iface_name)) { g_set_error (error, NM_SETTING_VLAN_ERROR, NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, - NM_SETTING_VLAN_PARENT); + NM_SETTING_VLAN_INTERFACE_NAME); return FALSE; } - if (priv->id > 4095) { - g_set_error (error, - NM_SETTING_VLAN_ERROR, - NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, - NM_SETTING_VLAN_ID); - return FALSE; + if (priv->parent) { + if (nm_utils_is_uuid (priv->parent)) { + /* If we have an NMSettingConnection:master with slave-type="vlan", + * then it must be the same UUID. + */ + if (s_con) { + const char *master = NULL, *slave_type = NULL; + + slave_type = nm_setting_connection_get_slave_type (s_con); + if (!g_strcmp0 (slave_type, NM_SETTING_VLAN_SETTING_NAME)) + master = nm_setting_connection_get_master (s_con); + + if (master && g_strcmp0 (priv->parent, master) != 0) { + g_set_error (error, + NM_SETTING_VLAN_ERROR, + NM_SETTING_VLAN_ERROR_INVALID_PARENT, + NM_SETTING_CONNECTION_MASTER); + return FALSE; + } + } + } else if (!nm_utils_iface_valid_name (priv->parent)) { + /* parent must be either a UUID or an interface name */ + g_set_error (error, + NM_SETTING_VLAN_ERROR, + NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, + NM_SETTING_VLAN_PARENT); + return FALSE; + } + } else { + /* If parent is NULL, the parent must be specified via + * NMSettingWired:mac-address. + */ + if (!s_wired || !nm_setting_wired_get_mac_address (s_wired)) { + g_set_error (error, + NM_SETTING_VLAN_ERROR, + NM_SETTING_VLAN_ERROR_MISSING_PROPERTY, + NM_SETTING_VLAN_PARENT); + return FALSE; + } } if (priv->flags & ~(NM_VLAN_FLAG_REORDER_HEADERS | diff --git a/libnm-util/nm-setting-vlan.h b/libnm-util/nm-setting-vlan.h index 9d2d728b..019c6da0 100644 --- a/libnm-util/nm-setting-vlan.h +++ b/libnm-util/nm-setting-vlan.h @@ -43,12 +43,15 @@ G_BEGIN_DECLS * @NM_SETTING_VLAN_ERROR_UNKNOWN: unknown or unclassified error * @NM_SETTING_VLAN_ERROR_INVALID_PROPERTY: the property was invalid * @NM_SETTING_VLAN_ERROR_MISSING_PROPERTY: the property was missing and is - * required + * required + * @NM_SETTING_VLAN_ERROR_INVALID_PARENT: the VLAN parent was specified + * inconsistently */ typedef enum { NM_SETTING_VLAN_ERROR_UNKNOWN = 0, /*< nick=Unknown >*/ NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/ - NM_SETTING_VLAN_ERROR_MISSING_PROPERTY /*< nick=MissingProperty >*/ + NM_SETTING_VLAN_ERROR_MISSING_PROPERTY, /*< nick=MissingProperty >*/ + NM_SETTING_VLAN_ERROR_INVALID_PARENT /*< nick=InvalidParent >*/ } NMSettingVlanError; #define NM_SETTING_VLAN_ERROR nm_setting_vlan_error_quark () diff --git a/libnm-util/nm-setting-vpn.c b/libnm-util/nm-setting-vpn.c index d1fc8b76..0acd9a52 100644 --- a/libnm-util/nm-setting-vpn.c +++ b/libnm-util/nm-setting-vpn.c @@ -64,7 +64,12 @@ nm_setting_vpn_error_quark (void) } -G_DEFINE_TYPE (NMSettingVPN, nm_setting_vpn, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingVPN, nm_setting_vpn, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_VPN_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_VPN_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_VPN) #define NM_SETTING_VPN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_VPN, NMSettingVPNPrivate)) diff --git a/libnm-util/nm-setting-wimax.c b/libnm-util/nm-setting-wimax.c index a099cad2..b4a0d418 100644 --- a/libnm-util/nm-setting-wimax.c +++ b/libnm-util/nm-setting-wimax.c @@ -26,6 +26,7 @@ #include "nm-setting-wimax.h" #include "nm-param-spec-specialized.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-wimax @@ -54,7 +55,12 @@ nm_setting_wimax_error_quark (void) } -G_DEFINE_TYPE (NMSettingWimax, nm_setting_wimax, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingWimax, nm_setting_wimax, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_WIMAX_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_WIMAX_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_WIMAX) #define NM_SETTING_WIMAX_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_WIMAX, NMSettingWimaxPrivate)) diff --git a/libnm-util/nm-setting-wired.c b/libnm-util/nm-setting-wired.c index fb21711d..f44d6df6 100644 --- a/libnm-util/nm-setting-wired.c +++ b/libnm-util/nm-setting-wired.c @@ -24,7 +24,6 @@ */ #include <string.h> -#include <ctype.h> #include <net/ethernet.h> #include <dbus/dbus-glib.h> #include <netinet/ether.h> @@ -34,6 +33,7 @@ #include "nm-utils.h" #include "nm-utils-private.h" #include "nm-dbus-glib-types.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-wired @@ -62,7 +62,12 @@ nm_setting_wired_error_quark (void) } -G_DEFINE_TYPE (NMSettingWired, nm_setting_wired, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingWired, nm_setting_wired, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_WIRED_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_WIRED_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_WIRED) #define NM_SETTING_WIRED_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_WIRED, NMSettingWiredPrivate)) diff --git a/libnm-util/nm-setting-wireless-security.c b/libnm-util/nm-setting-wireless-security.c index 336773c8..404a38ad 100644 --- a/libnm-util/nm-setting-wireless-security.c +++ b/libnm-util/nm-setting-wireless-security.c @@ -25,7 +25,6 @@ #include <config.h> #include <string.h> -#include <ctype.h> #include <dbus/dbus-glib.h> #include "nm-setting-wireless-security.h" #include "nm-setting-8021x.h" @@ -76,7 +75,12 @@ nm_setting_wireless_security_error_quark (void) } -G_DEFINE_TYPE (NMSettingWirelessSecurity, nm_setting_wireless_security, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingWirelessSecurity, nm_setting_wireless_security, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + g_define_type_id, + 2, + NM_SETTING_WIRELESS_SECURITY_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_WIRELESS_SECURITY) #define NM_SETTING_WIRELESS_SECURITY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_WIRELESS_SECURITY, NMSettingWirelessSecurityPrivate)) @@ -704,13 +708,13 @@ verify_wep_key (const char *key, NMWepKeyType wep_type) if (keylen == 10 || keylen == 26) { /* Hex key */ for (i = 0; i < keylen; i++) { - if (!isxdigit (key[i])) + if (!g_ascii_isxdigit (key[i])) return FALSE; } } else if (keylen == 5 || keylen == 13) { /* ASCII key */ for (i = 0; i < keylen; i++) { - if (!isascii (key[i])) + if (!g_ascii_isprint (key[i])) return FALSE; } } else @@ -739,7 +743,7 @@ verify_wpa_psk (const char *psk) if (psklen == 64) { /* Hex PSK */ for (i = 0; i < psklen; i++) { - if (!isxdigit (psk[i])) + if (!g_ascii_isxdigit (psk[i])) return FALSE; } } diff --git a/libnm-util/nm-setting-wireless.c b/libnm-util/nm-setting-wireless.c index f9ed3108..ace22cbc 100644 --- a/libnm-util/nm-setting-wireless.c +++ b/libnm-util/nm-setting-wireless.c @@ -34,6 +34,7 @@ #include "nm-utils.h" #include "nm-dbus-glib-types.h" #include "nm-utils-private.h" +#include "nm-setting-private.h" /** * SECTION:nm-setting-wireless @@ -62,7 +63,12 @@ nm_setting_wireless_error_quark (void) } -G_DEFINE_TYPE (NMSettingWireless, nm_setting_wireless, NM_TYPE_SETTING) +G_DEFINE_TYPE_WITH_CODE (NMSettingWireless, nm_setting_wireless, NM_TYPE_SETTING, + _nm_register_setting (NM_SETTING_WIRELESS_SETTING_NAME, + g_define_type_id, + 1, + NM_SETTING_WIRELESS_ERROR)) +NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_WIRELESS) #define NM_SETTING_WIRELESS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_WIRELESS, NMSettingWirelessPrivate)) @@ -187,14 +193,21 @@ nm_setting_wireless_ap_security_compatible (NMSettingWireless *s_wireless, if (!strcmp (key_mgmt, "wpa-none")) { if (ap_mode != NM_802_11_MODE_ADHOC) return FALSE; - // FIXME: validate ciphers if the BSSID actually puts WPA/RSN IE in - // it's beacon + /* FIXME: validate ciphers if they're in the beacon */ return TRUE; } - /* Stuff after this point requires infrastructure */ - if (ap_mode != NM_802_11_MODE_INFRA) - return FALSE; + /* Adhoc WPA2 (ie, RSN IBSS) */ + if (ap_mode == NM_802_11_MODE_ADHOC) { + if (strcmp (key_mgmt, "wpa-psk")) + return FALSE; + + /* Ensure the AP has RSN PSK capability */ + if (!(ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_PSK)) + return FALSE; + + /* Fall through and check ciphers in generic WPA-PSK code */ + } /* Dynamic WEP or LEAP */ if (!strcmp (key_mgmt, "ieee8021x")) { @@ -502,15 +515,16 @@ nm_setting_wireless_get_hidden (NMSettingWireless *setting) * @setting: the #NMSettingWireless * @bssid: the new BSSID to add to the list * - * Adds a new WiFi AP's BSSID to the previously seen BSSID list of the setting. - * NetworkManager tracks previously seen BSSIDs internally so this function - * no longer has much use. + * Adds a new Wi-Fi AP's BSSID to the previously seen BSSID list of the setting. + * NetworkManager now tracks previously seen BSSIDs internally so this function + * no longer has much use. Actually, changes you make using this function will + * not be preserved. * * Returns: %TRUE if @bssid was already known, %FALSE if not **/ gboolean nm_setting_wireless_add_seen_bssid (NMSettingWireless *setting, - const char *bssid) + const char *bssid) { NMSettingWirelessPrivate *priv; char *lower_bssid; @@ -584,7 +598,7 @@ static gboolean verify (NMSetting *setting, GSList *all_settings, GError **error) { NMSettingWirelessPrivate *priv = NM_SETTING_WIRELESS_GET_PRIVATE (setting); - const char *valid_modes[] = { NM_SETTING_WIRELESS_MODE_INFRA, NM_SETTING_WIRELESS_MODE_ADHOC, NULL }; + const char *valid_modes[] = { NM_SETTING_WIRELESS_MODE_INFRA, NM_SETTING_WIRELESS_MODE_ADHOC, NM_SETTING_WIRELESS_MODE_AP, NULL }; const char *valid_bands[] = { "a", "bg", NULL }; GSList *iter; @@ -881,15 +895,15 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class) /** * NMSettingWireless:mode: * - * WiFi network mode; one of 'infrastructure' or 'adhoc'. If blank, + * WiFi network mode; one of 'infrastructure', 'adhoc' or 'ap'. If blank, * infrastructure is assumed. **/ g_object_class_install_property (object_class, PROP_MODE, g_param_spec_string (NM_SETTING_WIRELESS_MODE, "Mode", - "WiFi network mode; one of 'infrastructure' or " - "'adhoc'. If blank, infrastructure is assumed.", + "WiFi network mode; one of 'infrastructure', " + "'adhoc' or 'ap'. If blank, infrastructure is assumed.", NULL, G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE)); @@ -1054,21 +1068,25 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class) * NMSettingWireless:seen-bssids: * * A list of BSSIDs (each BSSID formatted as a MAC address like - * '00:11:22:33:44:55') that have been detected as part of the WiFI network. - * NetworkManager internally tracks previously seen BSSIDs so this property - * is no longer of much use. + * '00:11:22:33:44:55') that have been detected as part of the Wi-FI network. + * NetworkManager internally tracks previously seen BSSIDs. The property is only + * meant for reading and reflects the BBSID list of NetworkManager. The changes you + * make to this property will not be preserved. **/ g_object_class_install_property (object_class, PROP_SEEN_BSSIDS, _nm_param_spec_specialized (NM_SETTING_WIRELESS_SEEN_BSSIDS, - "Seen BSSIDS", - "A list of BSSIDs (each BSSID formatted as a MAC " - "address like 00:11:22:33:44:55') that have been " - "detected as part of the WiFI network. " - "NetworkManager internally tracks previously seen " - "BSSIDs so this property is no longer of much use.", - DBUS_TYPE_G_LIST_OF_STRING, - G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_FUZZY_IGNORE)); + "Seen BSSIDS", + "A list of BSSIDs (each BSSID formatted as a MAC " + "address like 00:11:22:33:44:55') that have been " + "detected as part of the WiFI network. " + "NetworkManager internally tracks previously seen " + "BSSIDs. The property is only meant for reading " + "and reflects the BBSID list of NetworkManager. " + "The changes you make to this property will not be " + "preserved.", + DBUS_TYPE_G_LIST_OF_STRING, + G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_FUZZY_IGNORE)); /** * NMSettingWireless:mtu: diff --git a/libnm-util/nm-setting-wireless.h b/libnm-util/nm-setting-wireless.h index e54e8353..6e9c4d68 100644 --- a/libnm-util/nm-setting-wireless.h +++ b/libnm-util/nm-setting-wireless.h @@ -86,6 +86,14 @@ GQuark nm_setting_wireless_error_quark (void); #define NM_SETTING_WIRELESS_MODE_ADHOC "adhoc" /** + * NM_SETTING_WIRELESS_MODE_AP: + * + * Indicates AP/master mode where the wireless device is started as an access + * point/hotspot. + */ +#define NM_SETTING_WIRELESS_MODE_AP "ap" + +/** * NM_SETTING_WIRELESS_MODE_INFRA: * * Indicates infrastructure mode where an access point is expected to be present diff --git a/libnm-util/nm-utils-enum-types.c b/libnm-util/nm-utils-enum-types.c index 332eb98b..7df362be 100644 --- a/libnm-util/nm-utils-enum-types.c +++ b/libnm-util/nm-utils-enum-types.c @@ -11,6 +11,8 @@ #include "nm-setting-adsl.h" #include "nm-setting-bluetooth.h" #include "nm-setting-bond.h" +#include "nm-setting-bridge.h" +#include "nm-setting-bridge-port.h" #include "nm-setting-connection.h" #include "nm-setting-infiniband.h" #include "nm-setting-ip4-config.h" @@ -280,6 +282,46 @@ nm_setting_bond_error_get_type (void) return g_define_type_id__volatile; } GType +nm_setting_bridge_error_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { NM_SETTING_BRIDGE_ERROR_UNKNOWN, "NM_SETTING_BRIDGE_ERROR_UNKNOWN", "UnknownError" }, + { NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY, "NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY", "InvalidProperty" }, + { NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY, "NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY", "MissingProperty" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("NMSettingBridgeError"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} +GType +nm_setting_bridge_port_error_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { NM_SETTING_BRIDGE_PORT_ERROR_UNKNOWN, "NM_SETTING_BRIDGE_PORT_ERROR_UNKNOWN", "UnknownError" }, + { NM_SETTING_BRIDGE_PORT_ERROR_INVALID_PROPERTY, "NM_SETTING_BRIDGE_PORT_ERROR_INVALID_PROPERTY", "InvalidProperty" }, + { NM_SETTING_BRIDGE_PORT_ERROR_MISSING_PROPERTY, "NM_SETTING_BRIDGE_PORT_ERROR_MISSING_PROPERTY", "MissingProperty" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("NMSettingBridgePortError"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} +GType nm_setting_connection_error_get_type (void) { static volatile gsize g_define_type_id__volatile = 0; @@ -353,6 +395,7 @@ nm_setting_vlan_error_get_type (void) { NM_SETTING_VLAN_ERROR_UNKNOWN, "NM_SETTING_VLAN_ERROR_UNKNOWN", "Unknown" }, { NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, "NM_SETTING_VLAN_ERROR_INVALID_PROPERTY", "InvalidProperty" }, { NM_SETTING_VLAN_ERROR_MISSING_PROPERTY, "NM_SETTING_VLAN_ERROR_MISSING_PROPERTY", "MissingProperty" }, + { NM_SETTING_VLAN_ERROR_INVALID_PARENT, "NM_SETTING_VLAN_ERROR_INVALID_PARENT", "InvalidParent" }, { 0, NULL, NULL } }; GType g_define_type_id = @@ -540,6 +583,8 @@ nm_setting_gsm_network_type_get_type (void) { NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE, "NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE", "gprs-edge" }, { NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA, "NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA", "prefer-umts-hspa" }, { NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE, "NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE", "prefer-gprs-edge" }, + { NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G, "NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G", "prefer-4g" }, + { NM_SETTING_GSM_NETWORK_TYPE_4G, "NM_SETTING_GSM_NETWORK_TYPE_4G", "4g" }, { 0, NULL, NULL } }; GType g_define_type_id = diff --git a/libnm-util/nm-utils-enum-types.h b/libnm-util/nm-utils-enum-types.h index d88fda24..44737b92 100644 --- a/libnm-util/nm-utils-enum-types.h +++ b/libnm-util/nm-utils-enum-types.h @@ -33,6 +33,10 @@ GType nm_setting_bluetooth_error_get_type (void) G_GNUC_CONST; #define NM_TYPE_SETTING_BLUETOOTH_ERROR (nm_setting_bluetooth_error_get_type ()) GType nm_setting_bond_error_get_type (void) G_GNUC_CONST; #define NM_TYPE_SETTING_BOND_ERROR (nm_setting_bond_error_get_type ()) +GType nm_setting_bridge_error_get_type (void) G_GNUC_CONST; +#define NM_TYPE_SETTING_BRIDGE_ERROR (nm_setting_bridge_error_get_type ()) +GType nm_setting_bridge_port_error_get_type (void) G_GNUC_CONST; +#define NM_TYPE_SETTING_BRIDGE_PORT_ERROR (nm_setting_bridge_port_error_get_type ()) GType nm_setting_connection_error_get_type (void) G_GNUC_CONST; #define NM_TYPE_SETTING_CONNECTION_ERROR (nm_setting_connection_error_get_type ()) GType nm_setting_infiniband_error_get_type (void) G_GNUC_CONST; diff --git a/libnm-util/nm-utils.c b/libnm-util/nm-utils.c index ad966c25..51ddfeb8 100644 --- a/libnm-util/nm-utils.c +++ b/libnm-util/nm-utils.c @@ -25,7 +25,6 @@ */ #include "config.h" -#include <ctype.h> #include <string.h> #include <stdio.h> #include <stdlib.h> @@ -1204,6 +1203,42 @@ device_supports_ap_ciphers (guint32 dev_caps, } /** + * nm_utils_ap_mode_security_valid: + * @type: the security type to check device capabilties against, + * e.g. #NMU_SEC_STATIC_WEP + * @wifi_caps: bitfield of the capabilities of the specific WiFi device, e.g. + * #NM_WIFI_DEVICE_CAP_CIPHER_WEP40 + * + * Given a set of device capabilities, and a desired security type to check + * against, determines whether the combination of device capabilities and + * desired security type are valid for AP/Hotspot connections. + * + * Returns: TRUE if the device capabilities are compatible with the desired + * @type, FALSE if they are not. + **/ +gboolean +nm_utils_ap_mode_security_valid (NMUtilsSecurityType type, + NMDeviceWifiCapabilities wifi_caps) +{ + if (!(wifi_caps & NM_WIFI_DEVICE_CAP_AP)) + return FALSE; + + /* Return TRUE for any security that wpa_supplicant's lightweight AP + * mode can handle: which is open, WEP, and WPA/WPA2 PSK. + */ + switch (type) { + case NMU_SEC_NONE: + case NMU_SEC_STATIC_WEP: + case NMU_SEC_WPA_PSK: + case NMU_SEC_WPA2_PSK: + return TRUE; + default: + break; + } + return FALSE; +} + +/** * nm_utils_security_valid: * @type: the security type to check AP flags and device capabilties against, * e.g. #NMU_SEC_STATIC_WEP @@ -1221,6 +1256,9 @@ device_supports_ap_ciphers (guint32 dev_caps, * against, determines whether the combination of device, desired security * type, and AP capabilities intersect. * + * NOTE: this function cannot handle checking security for AP/Hotspot mode; + * use nm_utils_ap_mode_security_valid() instead. + * * Returns: TRUE if the device capabilities and AP capabilties intersect and are * compatible with the desired @type, FALSE if they are not **/ @@ -2504,11 +2542,11 @@ nm_utils_hwaddr_aton (const char *asc, int type, gpointer buffer) while (left && *in) { guint8 d1 = in[0], d2 = in[1]; - if (!isxdigit (d1)) + if (!g_ascii_isxdigit (d1)) return NULL; /* If there's no leading zero (ie "aa:b:cc") then fake it */ - if (d2 && isxdigit (d2)) { + if (d2 && g_ascii_isxdigit (d2)) { *out++ = (HEXVAL (d1) << 4) + HEXVAL (d2); in += 2; } else { @@ -2582,3 +2620,60 @@ nm_utils_hwaddr_ntoa (gconstpointer addr, int type) return g_string_free (out, FALSE); } + +/** + * nm_utils_iface_valid_name: + * @name: Name of interface + * + * This function is a 1:1 copy of the kernel's interface validation + * function in net/core/dev.c. + * + * Returns: %TRUE if interface name is valid, otherwise %FALSE is returned. + */ +gboolean +nm_utils_iface_valid_name (const char *name) +{ + g_return_val_if_fail (name != NULL, FALSE); + + if (*name == '\0') + return FALSE; + + if (strlen (name) >= 16) + return FALSE; + + if (!strcmp (name, ".") || !strcmp (name, "..")) + return FALSE; + + while (*name) { + if (*name == '/' || g_ascii_isspace (*name)) + return FALSE; + name++; + } + + return TRUE; +} + +/** + * nm_utils_is_uuid: + * @str: a string that might be a UUID + * + * Checks if @str is a UUID + * + * Returns: %TRUE if @str is a UUID, %FALSE if not + */ +gboolean +nm_utils_is_uuid (const char *str) +{ + const char *p = str; + int num_dashes = 0; + + while (*p) { + if (*p == '-') + num_dashes++; + else if (!g_ascii_isxdigit (*p)) + return FALSE; + p++; + } + + return (num_dashes == 4) && (p - str == 36); +} diff --git a/libnm-util/nm-utils.h b/libnm-util/nm-utils.h index dd29230b..203d83b5 100644 --- a/libnm-util/nm-utils.h +++ b/libnm-util/nm-utils.h @@ -87,6 +87,9 @@ gboolean nm_utils_security_valid (NMUtilsSecurityType type, NM80211ApSecurityFlags ap_wpa, NM80211ApSecurityFlags ap_rsn); +gboolean nm_utils_ap_mode_security_valid (NMUtilsSecurityType type, + NMDeviceWifiCapabilities wifi_caps); + GSList *nm_utils_ip4_addresses_from_gvalue (const GValue *value); void nm_utils_ip4_addresses_to_gvalue (GSList *list, GValue *value); @@ -135,6 +138,10 @@ char *nm_utils_hwaddr_ntoa (gconstpointer addr, int type); GByteArray *nm_utils_hwaddr_atoba (const char *asc, int type); guint8 *nm_utils_hwaddr_aton (const char *asc, int type, gpointer buffer); +gboolean nm_utils_iface_valid_name(const char *name); + +gboolean nm_utils_is_uuid (const char *str); + G_END_DECLS #endif /* NM_UTILS_H */ diff --git a/libnm-util/tests/Makefile.am b/libnm-util/tests/Makefile.am index 46a4d142..98f8aad8 100644 --- a/libnm-util/tests/Makefile.am +++ b/libnm-util/tests/Makefile.am @@ -1,3 +1,5 @@ +if ENABLE_TESTS + SUBDIRS=certs INCLUDES = \ @@ -73,8 +75,6 @@ test_setting_8021x_LDADD = \ $(GLIB_LIBS) \ $(DBUS_LIBS) -if WITH_TESTS - check-local: test-settings-defaults test-crypto test-secrets $(abs_builddir)/test-settings-defaults $(abs_builddir)/test-secrets @@ -137,4 +137,3 @@ check-local: test-settings-defaults test-crypto test-secrets "1234567890" endif - diff --git a/libnm-util/tests/Makefile.in b/libnm-util/tests/Makefile.in index 4d7b082e..4a1731f9 100644 --- a/libnm-util/tests/Makefile.in +++ b/libnm-util/tests/Makefile.in @@ -51,23 +51,26 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = test-settings-defaults$(EXEEXT) test-crypto$(EXEEXT) \ - test-secrets$(EXEEXT) test-general$(EXEEXT) \ - test-setting-8021x$(EXEEXT) +@ENABLE_TESTS_TRUE@noinst_PROGRAMS = test-settings-defaults$(EXEEXT) \ +@ENABLE_TESTS_TRUE@ test-crypto$(EXEEXT) test-secrets$(EXEEXT) \ +@ENABLE_TESTS_TRUE@ test-general$(EXEEXT) \ +@ENABLE_TESTS_TRUE@ test-setting-8021x$(EXEEXT) subdir = libnm-util/tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnome-code-coverage.m4 \ + $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/vapigen.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -75,35 +78,43 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) -am_test_crypto_OBJECTS = test_crypto-test-crypto.$(OBJEXT) +am__test_crypto_SOURCES_DIST = test-crypto.c +@ENABLE_TESTS_TRUE@am_test_crypto_OBJECTS = \ +@ENABLE_TESTS_TRUE@ test_crypto-test-crypto.$(OBJEXT) test_crypto_OBJECTS = $(am_test_crypto_OBJECTS) am__DEPENDENCIES_1 = -test_crypto_DEPENDENCIES = \ - $(top_builddir)/libnm-util/libtest-crypto.la \ - $(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) +@ENABLE_TESTS_TRUE@test_crypto_DEPENDENCIES = $(top_builddir)/libnm-util/libtest-crypto.la \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent -am_test_general_OBJECTS = test_general-test-general.$(OBJEXT) +am__test_general_SOURCES_DIST = test-general.c +@ENABLE_TESTS_TRUE@am_test_general_OBJECTS = \ +@ENABLE_TESTS_TRUE@ test_general-test-general.$(OBJEXT) test_general_OBJECTS = $(am_test_general_OBJECTS) -test_general_DEPENDENCIES = $(top_builddir)/libnm-util/libnm-util.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_test_secrets_OBJECTS = test_secrets-test-secrets.$(OBJEXT) +@ENABLE_TESTS_TRUE@test_general_DEPENDENCIES = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__test_secrets_SOURCES_DIST = test-secrets.c +@ENABLE_TESTS_TRUE@am_test_secrets_OBJECTS = \ +@ENABLE_TESTS_TRUE@ test_secrets-test-secrets.$(OBJEXT) test_secrets_OBJECTS = $(am_test_secrets_OBJECTS) -test_secrets_DEPENDENCIES = $(top_builddir)/libnm-util/libnm-util.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_test_setting_8021x_OBJECTS = \ - test_setting_8021x-test-setting-8021x.$(OBJEXT) +@ENABLE_TESTS_TRUE@test_secrets_DEPENDENCIES = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__test_setting_8021x_SOURCES_DIST = test-setting-8021x.c +@ENABLE_TESTS_TRUE@am_test_setting_8021x_OBJECTS = test_setting_8021x-test-setting-8021x.$(OBJEXT) test_setting_8021x_OBJECTS = $(am_test_setting_8021x_OBJECTS) -test_setting_8021x_DEPENDENCIES = \ - $(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) -am_test_settings_defaults_OBJECTS = \ - test_settings_defaults-test-settings-defaults.$(OBJEXT) +@ENABLE_TESTS_TRUE@test_setting_8021x_DEPENDENCIES = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__test_settings_defaults_SOURCES_DIST = test-settings-defaults.c +@ENABLE_TESTS_TRUE@am_test_settings_defaults_OBJECTS = test_settings_defaults-test-settings-defaults.$(OBJEXT) test_settings_defaults_OBJECTS = $(am_test_settings_defaults_OBJECTS) -test_settings_defaults_DEPENDENCIES = \ - $(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) +@ENABLE_TESTS_TRUE@test_settings_defaults_DEPENDENCIES = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles @@ -133,9 +144,11 @@ am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(test_crypto_SOURCES) $(test_general_SOURCES) \ $(test_secrets_SOURCES) $(test_setting_8021x_SOURCES) \ $(test_settings_defaults_SOURCES) -DIST_SOURCES = $(test_crypto_SOURCES) $(test_general_SOURCES) \ - $(test_secrets_SOURCES) $(test_setting_8021x_SOURCES) \ - $(test_settings_defaults_SOURCES) +DIST_SOURCES = $(am__test_crypto_SOURCES_DIST) \ + $(am__test_general_SOURCES_DIST) \ + $(am__test_secrets_SOURCES_DIST) \ + $(am__test_setting_8021x_SOURCES_DIST) \ + $(am__test_settings_defaults_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ @@ -155,7 +168,7 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ distdir ETAGS = etags CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) +DIST_SUBDIRS = certs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -194,6 +207,10 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CKDB_PATH = @CKDB_PATH@ +CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ +CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ +CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ @@ -208,9 +225,7 @@ DBUS_SYS_DIR = @DBUS_SYS_DIR@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ -DHCLIENT_VERSION = @DHCLIENT_VERSION@ DHCPCD_PATH = @DHCPCD_PATH@ -DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ @@ -220,17 +235,14 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GIO_CFLAGS = @GIO_CFLAGS@ -GIO_LIBS = @GIO_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MAKEFILE = @GLIB_MAKEFILE@ GLIB_MKENUMS = @GLIB_MKENUMS@ -GMODULE_CFLAGS = @GMODULE_CFLAGS@ -GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ @@ -271,6 +283,7 @@ IPTABLES_PATH = @IPTABLES_PATH@ IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@ IWMX_SDK_LIBS = @IWMX_SDK_LIBS@ KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ +LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDL = @LIBDL@ @@ -287,11 +300,7 @@ LIBNL2_LIBS = @LIBNL2_LIBS@ LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ -LIBNL_GENL3_CFLAGS = @LIBNL_GENL3_CFLAGS@ -LIBNL_GENL3_LIBS = @LIBNL_GENL3_LIBS@ LIBNL_LIBS = @LIBNL_LIBS@ -LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ -LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ @@ -306,6 +315,8 @@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MM_GLIB_CFLAGS = @MM_GLIB_CFLAGS@ +MM_GLIB_LIBS = @MM_GLIB_LIBS@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -315,6 +326,7 @@ NMEDIT = @NMEDIT@ NM_MAJOR_VERSION = @NM_MAJOR_VERSION@ NM_MICRO_VERSION = @NM_MICRO_VERSION@ NM_MINOR_VERSION = @NM_MINOR_VERSION@ +NM_MODIFY_SYSTEM_POLICY = @NM_MODIFY_SYSTEM_POLICY@ NM_VERSION = @NM_VERSION@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ @@ -341,13 +353,14 @@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ QT_CFLAGS = @QT_CFLAGS@ QT_LIBS = @QT_LIBS@ RANLIB = @RANLIB@ -RESOLVCONF_PATH = @RESOLVCONF_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ -SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@ -SYSTEMD_LIBS = @SYSTEMD_LIBS@ +SYSTEMD_INHIBIT_CFLAGS = @SYSTEMD_INHIBIT_CFLAGS@ +SYSTEMD_INHIBIT_LIBS = @SYSTEMD_INHIBIT_LIBS@ +SYSTEMD_LOGIN_CFLAGS = @SYSTEMD_LOGIN_CFLAGS@ +SYSTEMD_LOGIN_LIBS = @SYSTEMD_LOGIN_LIBS@ SYSTEM_CA_PATH = @SYSTEM_CA_PATH@ UDEV_BASE_DIR = @UDEV_BASE_DIR@ USE_NLS = @USE_NLS@ @@ -402,6 +415,11 @@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ +nmbinary = @nmbinary@ +nmconfdir = @nmconfdir@ +nmdatadir = @nmdatadir@ +nmrundir = @nmrundir@ +nmstatedir = @nmstatedir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ @@ -416,72 +434,76 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = certs -INCLUDES = \ - -I$(top_srcdir)/include \ - -I$(top_builddir)/include \ - -I$(top_srcdir)/libnm-util \ - -I$(top_builddir)/libnm-util - -test_settings_defaults_SOURCES = \ - test-settings-defaults.c - -test_settings_defaults_CPPFLAGS = \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) - -test_settings_defaults_LDADD = \ - $(top_builddir)/libnm-util/libnm-util.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) - -test_crypto_SOURCES = \ - test-crypto.c - -test_crypto_CPPFLAGS = \ - $(GLIB_CFLAGS) - -test_crypto_LDADD = \ - $(top_builddir)/libnm-util/libtest-crypto.la \ - $(top_builddir)/libnm-util/libnm-util.la \ - $(GLIB_LIBS) - -test_secrets_SOURCES = \ - test-secrets.c - -test_secrets_CPPFLAGS = \ - -DTEST_CERT_DIR=\"$(top_srcdir)/libnm-util/tests/certs/\" \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) - -test_secrets_LDADD = \ - $(top_builddir)/libnm-util/libnm-util.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) - -test_general_SOURCES = \ - test-general.c - -test_general_CPPFLAGS = \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) - -test_general_LDADD = \ - $(top_builddir)/libnm-util/libnm-util.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) - -test_setting_8021x_SOURCES = \ - test-setting-8021x.c - -test_setting_8021x_CPPFLAGS = \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) - -test_setting_8021x_LDADD = \ - $(top_builddir)/libnm-util/libnm-util.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) +with_dhclient = @with_dhclient@ +with_dhcpcd = @with_dhcpcd@ +with_netconfig = @with_netconfig@ +with_resolvconf = @with_resolvconf@ +@ENABLE_TESTS_TRUE@SUBDIRS = certs +@ENABLE_TESTS_TRUE@INCLUDES = \ +@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@test_settings_defaults_SOURCES = \ +@ENABLE_TESTS_TRUE@ test-settings-defaults.c + +@ENABLE_TESTS_TRUE@test_settings_defaults_CPPFLAGS = \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_CFLAGS) + +@ENABLE_TESTS_TRUE@test_settings_defaults_LDADD = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_LIBS) + +@ENABLE_TESTS_TRUE@test_crypto_SOURCES = \ +@ENABLE_TESTS_TRUE@ test-crypto.c + +@ENABLE_TESTS_TRUE@test_crypto_CPPFLAGS = \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) + +@ENABLE_TESTS_TRUE@test_crypto_LDADD = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libtest-crypto.la \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) + +@ENABLE_TESTS_TRUE@test_secrets_SOURCES = \ +@ENABLE_TESTS_TRUE@ test-secrets.c + +@ENABLE_TESTS_TRUE@test_secrets_CPPFLAGS = \ +@ENABLE_TESTS_TRUE@ -DTEST_CERT_DIR=\"$(top_srcdir)/libnm-util/tests/certs/\" \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_CFLAGS) + +@ENABLE_TESTS_TRUE@test_secrets_LDADD = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_LIBS) + +@ENABLE_TESTS_TRUE@test_general_SOURCES = \ +@ENABLE_TESTS_TRUE@ test-general.c + +@ENABLE_TESTS_TRUE@test_general_CPPFLAGS = \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_CFLAGS) + +@ENABLE_TESTS_TRUE@test_general_LDADD = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_LIBS) + +@ENABLE_TESTS_TRUE@test_setting_8021x_SOURCES = \ +@ENABLE_TESTS_TRUE@ test-setting-8021x.c + +@ENABLE_TESTS_TRUE@test_setting_8021x_CPPFLAGS = \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_CFLAGS) + +@ENABLE_TESTS_TRUE@test_setting_8021x_LDADD = \ +@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm-util/libnm-util.la \ +@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) \ +@ENABLE_TESTS_TRUE@ $(DBUS_LIBS) all: all-recursive @@ -555,25 +577,22 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_settings_defaults-test-settings-defaults.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -844,7 +863,7 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done -@WITH_TESTS_FALSE@check-local: +@ENABLE_TESTS_FALSE@check-local: check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-recursive @@ -971,66 +990,66 @@ uninstall-am: tags tags-recursive uninstall uninstall-am -@WITH_TESTS_TRUE@check-local: test-settings-defaults test-crypto test-secrets -@WITH_TESTS_TRUE@ $(abs_builddir)/test-settings-defaults -@WITH_TESTS_TRUE@ $(abs_builddir)/test-secrets -@WITH_TESTS_TRUE@ $(abs_builddir)/test-general +@ENABLE_TESTS_TRUE@check-local: test-settings-defaults test-crypto test-secrets +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-settings-defaults +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-secrets +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-general # Private key and CA certificate in the same file (PEM) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test_key_and_cert.pem "test" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test_key_and_cert.pem "test" # Private key by itself (PEM) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-key-only.pem "test" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-key-only.pem "test" # PKCS#8 private key by itself (PEM) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/pkcs8-enc-key.pem "1234567890" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/pkcs8-enc-key.pem "1234567890" # Private key and CA certificate in the same file (pkcs12) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-cert.p12 "test" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-cert.p12 "test" # Normal CA certificate -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_ca_cert.pem +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_ca_cert.pem # Another CA certificate -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_ca_cert.pem +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_ca_cert.pem # Normal CA certificate (DER format) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_ca_cert.der +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_ca_cert.der # CA certificate without an ending newline -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/ca-no-ending-newline.pem +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/ca-no-ending-newline.pem # Combined user cert and private key -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_key_and_cert.pem +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_key_and_cert.pem # Another combined user cert and private key -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_key_and_cert.pem +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_key_and_cert.pem # Private key with 8 bytes of tail padding -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test_key_and_cert.pem \ -@WITH_TESTS_TRUE@ "test" \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test-key-only-decrypted.der +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ +@ENABLE_TESTS_TRUE@ $(srcdir)/certs/test_key_and_cert.pem \ +@ENABLE_TESTS_TRUE@ "test" \ +@ENABLE_TESTS_TRUE@ $(srcdir)/certs/test-key-only-decrypted.der # Private key only (not combined with a cert) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test-key-only.pem \ -@WITH_TESTS_TRUE@ "test" \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test-key-only-decrypted.der +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ +@ENABLE_TESTS_TRUE@ $(srcdir)/certs/test-key-only.pem \ +@ENABLE_TESTS_TRUE@ "test" \ +@ENABLE_TESTS_TRUE@ $(srcdir)/certs/test-key-only-decrypted.der # Private key with 6 bytes of tail padding -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key $(srcdir)/certs/test2_key_and_cert.pem "12345testing" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --key $(srcdir)/certs/test2_key_and_cert.pem "12345testing" # PKCS#12 file -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test-cert.p12 "test" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test-cert.p12 "test" # Another PKCS#12 file -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test2-cert.p12 "12345testing" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test2-cert.p12 "12345testing" # PKCS#8 encrypted private key -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --pkcs8 \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/pkcs8-enc-key.pem \ -@WITH_TESTS_TRUE@ "1234567890" +@ENABLE_TESTS_TRUE@ $(abs_builddir)/test-crypto --pkcs8 \ +@ENABLE_TESTS_TRUE@ $(srcdir)/certs/pkcs8-enc-key.pem \ +@ENABLE_TESTS_TRUE@ "1234567890" # 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/libnm-util/tests/certs/Makefile.in b/libnm-util/tests/certs/Makefile.in index 400042f9..0e60e300 100644 --- a/libnm-util/tests/certs/Makefile.in +++ b/libnm-util/tests/certs/Makefile.in @@ -63,16 +63,18 @@ subdir = libnm-util/tests/certs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnome-code-coverage.m4 \ + $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/vapigen.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -105,6 +107,10 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CKDB_PATH = @CKDB_PATH@ +CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ +CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ +CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ @@ -119,9 +125,7 @@ DBUS_SYS_DIR = @DBUS_SYS_DIR@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ -DHCLIENT_VERSION = @DHCLIENT_VERSION@ DHCPCD_PATH = @DHCPCD_PATH@ -DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ @@ -131,17 +135,14 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GIO_CFLAGS = @GIO_CFLAGS@ -GIO_LIBS = @GIO_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MAKEFILE = @GLIB_MAKEFILE@ GLIB_MKENUMS = @GLIB_MKENUMS@ -GMODULE_CFLAGS = @GMODULE_CFLAGS@ -GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ @@ -182,6 +183,7 @@ IPTABLES_PATH = @IPTABLES_PATH@ IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@ IWMX_SDK_LIBS = @IWMX_SDK_LIBS@ KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ +LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDL = @LIBDL@ @@ -198,11 +200,7 @@ LIBNL2_LIBS = @LIBNL2_LIBS@ LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ -LIBNL_GENL3_CFLAGS = @LIBNL_GENL3_CFLAGS@ -LIBNL_GENL3_LIBS = @LIBNL_GENL3_LIBS@ LIBNL_LIBS = @LIBNL_LIBS@ -LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ -LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ @@ -217,6 +215,8 @@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MM_GLIB_CFLAGS = @MM_GLIB_CFLAGS@ +MM_GLIB_LIBS = @MM_GLIB_LIBS@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -226,6 +226,7 @@ NMEDIT = @NMEDIT@ NM_MAJOR_VERSION = @NM_MAJOR_VERSION@ NM_MICRO_VERSION = @NM_MICRO_VERSION@ NM_MINOR_VERSION = @NM_MINOR_VERSION@ +NM_MODIFY_SYSTEM_POLICY = @NM_MODIFY_SYSTEM_POLICY@ NM_VERSION = @NM_VERSION@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ @@ -252,13 +253,14 @@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ QT_CFLAGS = @QT_CFLAGS@ QT_LIBS = @QT_LIBS@ RANLIB = @RANLIB@ -RESOLVCONF_PATH = @RESOLVCONF_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ -SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@ -SYSTEMD_LIBS = @SYSTEMD_LIBS@ +SYSTEMD_INHIBIT_CFLAGS = @SYSTEMD_INHIBIT_CFLAGS@ +SYSTEMD_INHIBIT_LIBS = @SYSTEMD_INHIBIT_LIBS@ +SYSTEMD_LOGIN_CFLAGS = @SYSTEMD_LOGIN_CFLAGS@ +SYSTEMD_LOGIN_LIBS = @SYSTEMD_LOGIN_LIBS@ SYSTEM_CA_PATH = @SYSTEM_CA_PATH@ UDEV_BASE_DIR = @UDEV_BASE_DIR@ USE_NLS = @USE_NLS@ @@ -313,6 +315,11 @@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ +nmbinary = @nmbinary@ +nmconfdir = @nmconfdir@ +nmdatadir = @nmdatadir@ +nmrundir = @nmrundir@ +nmstatedir = @nmstatedir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ @@ -327,6 +334,10 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +with_dhclient = @with_dhclient@ +with_dhcpcd = @with_dhcpcd@ +with_netconfig = @with_netconfig@ +with_resolvconf = @with_resolvconf@ EXTRA_DIST = \ test_ca_cert.pem \ test_ca_cert.der \ diff --git a/libnm-util/tests/test-general.c b/libnm-util/tests/test-general.c index 2acb31b3..7c5399df 100644 --- a/libnm-util/tests/test-general.c +++ b/libnm-util/tests/test-general.c @@ -874,6 +874,7 @@ test_connection_diff_a_only (void) { NM_SETTING_CONNECTION_ZONE, NM_SETTING_DIFF_RESULT_IN_A }, { NM_SETTING_CONNECTION_MASTER, NM_SETTING_DIFF_RESULT_IN_A }, { NM_SETTING_CONNECTION_SLAVE_TYPE, NM_SETTING_DIFF_RESULT_IN_A }, + { NM_SETTING_CONNECTION_SECONDARIES, NM_SETTING_DIFF_RESULT_IN_A }, { NULL, NM_SETTING_DIFF_RESULT_UNKNOWN } } }, { NM_SETTING_WIRED_SETTING_NAME, { |