diff options
Diffstat (limited to 'callouts')
| -rw-r--r-- | callouts/Makefile.am | 105 | ||||
| -rw-r--r-- | callouts/Makefile.in | 1133 | ||||
| -rw-r--r-- | callouts/nm-dispatcher-utils.c | 492 | ||||
| -rw-r--r-- | callouts/nm-dispatcher-utils.h | 41 | ||||
| -rw-r--r-- | callouts/nm-dispatcher.c | 971 | ||||
| -rw-r--r-- | callouts/nm-dispatcher.conf | 14 | ||||
| -rw-r--r-- | callouts/nm-dispatcher.xml | 42 | ||||
| -rw-r--r-- | callouts/org.freedesktop.nm_dispatcher.service.in | 6 | ||||
| -rw-r--r-- | callouts/tests/Makefile.am | 41 | ||||
| -rw-r--r-- | callouts/tests/Makefile.in | 1159 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-connectivity-full | 23 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-connectivity-unknown | 22 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-down | 22 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-external | 33 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-up | 59 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-vpn-down | 58 | ||||
| -rw-r--r-- | callouts/tests/dispatcher-vpn-up | 58 | ||||
| -rw-r--r-- | callouts/tests/test-dispatcher-envp.c | 629 |
18 files changed, 0 insertions, 4908 deletions
diff --git a/callouts/Makefile.am b/callouts/Makefile.am deleted file mode 100644 index 82d7e755..00000000 --- a/callouts/Makefile.am +++ /dev/null @@ -1,105 +0,0 @@ -SUBDIRS = . tests - -AM_CPPFLAGS = \ - -I${top_srcdir}/shared \ - -I${top_builddir}/shared \ - -I${top_srcdir}/libnm-core \ - -I${top_builddir}/libnm-core \ - $(GLIB_CFLAGS) \ - -DNETWORKMANAGER_COMPILATION \ - -DNMCONFDIR=\"$(nmconfdir)\" \ - -DSYSCONFDIR=\"$(sysconfdir)\" \ - -DLIBEXECDIR=\"$(libexecdir)\" - -########################################### -# Test libraries -########################################### - -noinst_LTLIBRARIES = \ - libtest-dispatcher-envp.la - - -dbusservicedir = $(DBUS_SYS_DIR) -dbusservice_DATA = \ - nm-dispatcher.conf - -libexec_PROGRAMS = \ - nm-dispatcher - - -nm_dispatcher_SOURCES = \ - $(top_srcdir)/shared/nm-dispatcher-api.h \ - nm-dispatcher.c \ - nm-dispatcher-utils.c \ - nm-dispatcher-utils.h - -nm_dispatcher_LDADD = \ - $(top_builddir)/libnm/libnm.la \ - libnmdbus-dispatcher.la \ - $(GLIB_LIBS) - -# See note about gdbus-codegen in introspection/Makefile.am - -noinst_LTLIBRARIES += libnmdbus-dispatcher.la - -nodist_libnmdbus_dispatcher_la_SOURCES = \ - nmdbus-dispatcher.c \ - nmdbus-dispatcher.h - -libnmdbus_dispatcher_la_CPPFLAGS = $(filter-out -DGLIB_VERSION_MAX_ALLOWED%,$(AM_CPPFLAGS)) - -nmdbus-dispatcher.h: nm-dispatcher.xml - $(AM_V_GEN) gdbus-codegen \ - --generate-c-code $(basename $@) \ - --c-namespace NMDBus \ - --interface-prefix org.freedesktop \ - $< - -nmdbus-dispatcher.c: nmdbus-dispatcher.h - @true - -BUILT_SOURCES = nmdbus-dispatcher.h nmdbus-dispatcher.c - -########################################### -# dispatcher envp -########################################### - -libtest_dispatcher_envp_la_SOURCES = \ - nm-dispatcher-utils.c \ - nm-dispatcher-utils.h - -libtest_dispatcher_envp_la_CPPFLAGS = \ - $(AM_CPPFLAGS) - -libtest_dispatcher_envp_la_LIBADD = \ - $(top_builddir)/libnm/libnm.la \ - $(GLIB_LIBS) - - -dbusactivationdir = $(datadir)/dbus-1/system-services -dbusactivation_in_files = org.freedesktop.nm_dispatcher.service.in -dbusactivation_DATA = $(dbusactivation_in_files:.service.in=.service) - -%.service: %.service.in - $(edit) $< >$@ - -edit = @sed \ - -e 's|@sbindir[@]|$(sbindir)|g' \ - -e 's|@sysconfdir[@]|$(sysconfdir)|g' \ - -e 's|@localstatedir[@]|$(localstatedir)|g' \ - -e 's|@libexecdir[@]|$(libexecdir)|g' - -dispatcherdir=$(sysconfdir)/NetworkManager/dispatcher.d -install-data-hook: - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir) - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir)/pre-down.d - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir)/pre-up.d - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir)/no-wait.d - -CLEANFILES = $(nodist_libnmdbus_dispatcher_la_SOURCES) $(dbusactivation_DATA) - -EXTRA_DIST = \ - $(dbusservice_DATA) \ - $(dbusactivation_in_files) \ - nm-dispatcher.xml - diff --git a/callouts/Makefile.in b/callouts/Makefile.in deleted file mode 100644 index c8587ac8..00000000 --- a/callouts/Makefile.in +++ /dev/null @@ -1,1133 +0,0 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -libexec_PROGRAMS = nm-dispatcher$(EXEEXT) -subdir = callouts -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/ax_lib_readline.m4 \ - $(top_srcdir)/m4/compiler_options.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/git-sha-record.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/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) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libnmdbus_dispatcher_la_LIBADD = -nodist_libnmdbus_dispatcher_la_OBJECTS = \ - libnmdbus_dispatcher_la-nmdbus-dispatcher.lo -libnmdbus_dispatcher_la_OBJECTS = \ - $(nodist_libnmdbus_dispatcher_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am__DEPENDENCIES_1 = -libtest_dispatcher_envp_la_DEPENDENCIES = \ - $(top_builddir)/libnm/libnm.la $(am__DEPENDENCIES_1) -am_libtest_dispatcher_envp_la_OBJECTS = \ - libtest_dispatcher_envp_la-nm-dispatcher-utils.lo -libtest_dispatcher_envp_la_OBJECTS = \ - $(am_libtest_dispatcher_envp_la_OBJECTS) -am__installdirs = "$(DESTDIR)$(libexecdir)" \ - "$(DESTDIR)$(dbusactivationdir)" "$(DESTDIR)$(dbusservicedir)" -PROGRAMS = $(libexec_PROGRAMS) -am_nm_dispatcher_OBJECTS = nm-dispatcher.$(OBJEXT) \ - nm-dispatcher-utils.$(OBJEXT) -nm_dispatcher_OBJECTS = $(am_nm_dispatcher_OBJECTS) -nm_dispatcher_DEPENDENCIES = $(top_builddir)/libnm/libnm.la \ - libnmdbus-dispatcher.la $(am__DEPENDENCIES_1) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(nodist_libnmdbus_dispatcher_la_SOURCES) \ - $(libtest_dispatcher_envp_la_SOURCES) $(nm_dispatcher_SOURCES) -DIST_SOURCES = $(libtest_dispatcher_envp_la_SOURCES) \ - $(nm_dispatcher_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -DATA = $(dbusactivation_DATA) $(dbusservice_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/build-aux/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALL_LINGUAS = @ALL_LINGUAS@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_TESTS_FD_REDIRECT = @AM_TESTS_FD_REDIRECT@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BLUEZ5_CFLAGS = @BLUEZ5_CFLAGS@ -BLUEZ5_LIBS = @BLUEZ5_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ -CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ -CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DBUS_SYS_DIR = @DBUS_SYS_DIR@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DHCLIENT_PATH = @DHCLIENT_PATH@ -DHCPCD_PATH = @DHCPCD_PATH@ -DISTRO_NETWORK_SERVICE = @DISTRO_NETWORK_SERVICE@ -DLLTOOL = @DLLTOOL@ -DL_LIBS = @DL_LIBS@ -DNSMASQ_PATH = @DNSMASQ_PATH@ -DNSSEC_TRIGGER_SCRIPT = @DNSSEC_TRIGGER_SCRIPT@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GENHTML = @GENHTML@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MAKEFILE = @GLIB_MAKEFILE@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ -GNUTLS_LIBS = @GNUTLS_LIBS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -GUDEV_CFLAGS = @GUDEV_CFLAGS@ -GUDEV_LIBS = @GUDEV_LIBS@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_PERL = @INTLTOOL_PERL@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ -INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ -INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ -INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -IPTABLES_PATH = @IPTABLES_PATH@ -JANSSON_CFLAGS = @JANSSON_CFLAGS@ -JANSSON_LIBS = @JANSSON_LIBS@ -KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBAUDIT_CFLAGS = @LIBAUDIT_CFLAGS@ -LIBAUDIT_LIBS = @LIBAUDIT_LIBS@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBM = @LIBM@ -LIBNDP_CFLAGS = @LIBNDP_CFLAGS@ -LIBNDP_LIBS = @LIBNDP_LIBS@ -LIBNL_CFLAGS = @LIBNL_CFLAGS@ -LIBNL_LIBS = @LIBNL_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ -LIBSOUP_LIBS = @LIBSOUP_LIBS@ -LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@ -LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@ -LIBTEAMDCTL_CFLAGS = @LIBTEAMDCTL_CFLAGS@ -LIBTEAMDCTL_LIBS = @LIBTEAMDCTL_LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LOG_DRIVER = @LOG_DRIVER@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -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@ -MSGMERGE = @MSGMERGE@ -NEWT_CFLAGS = @NEWT_CFLAGS@ -NEWT_LIBS = @NEWT_LIBS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT = @NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT@ -NM_CONFIG_DEFAULT_DNS_RC_MANAGER = @NM_CONFIG_DEFAULT_DNS_RC_MANAGER@ -NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT = @NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT@ -NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT = @NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT@ -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@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POLKIT_CFLAGS = @POLKIT_CFLAGS@ -POLKIT_LIBS = @POLKIT_LIBS@ -POSUB = @POSUB@ -PPPD_PATH = @PPPD_PATH@ -PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ -QT_CFLAGS = @QT_CFLAGS@ -QT_LIBS = @QT_LIBS@ -RANLIB = @RANLIB@ -READLINE_LIBS = @READLINE_LIBS@ -SANITIZERS = @SANITIZERS@ -SANITIZER_ENV = @SANITIZER_ENV@ -SED = @SED@ -SELINUX_CFLAGS = @SELINUX_CFLAGS@ -SELINUX_LIBS = @SELINUX_LIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -SYSTEMD_200_CFLAGS = @SYSTEMD_200_CFLAGS@ -SYSTEMD_200_LIBS = @SYSTEMD_200_LIBS@ -SYSTEMD_INHIBIT_CFLAGS = @SYSTEMD_INHIBIT_CFLAGS@ -SYSTEMD_INHIBIT_LIBS = @SYSTEMD_INHIBIT_LIBS@ -SYSTEMD_JOURNAL_CFLAGS = @SYSTEMD_JOURNAL_CFLAGS@ -SYSTEMD_JOURNAL_LIBS = @SYSTEMD_JOURNAL_LIBS@ -SYSTEMD_LOGIN_CFLAGS = @SYSTEMD_LOGIN_CFLAGS@ -SYSTEMD_LOGIN_LIBS = @SYSTEMD_LOGIN_LIBS@ -SYSTEM_CA_PATH = @SYSTEM_CA_PATH@ -UDEV_DIR = @UDEV_DIR@ -USE_NLS = @USE_NLS@ -UUID_CFLAGS = @UUID_CFLAGS@ -UUID_LIBS = @UUID_LIBS@ -VALGRIND_RULES = @VALGRIND_RULES@ -VAPIGEN = @VAPIGEN@ -VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ -VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -intltool__v_merge_options_ = @intltool__v_merge_options_@ -intltool__v_merge_options_0 = @intltool__v_merge_options_0@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -nmbinary = @nmbinary@ -nmconfdir = @nmconfdir@ -nmdatadir = @nmdatadir@ -nmlibdir = @nmlibdir@ -nmrundir = @nmrundir@ -nmstatedir = @nmstatedir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -systemdsystemunitdir = @systemdsystemunitdir@ -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@ -with_valgrind = @with_valgrind@ -SUBDIRS = . tests -AM_CPPFLAGS = \ - -I${top_srcdir}/shared \ - -I${top_builddir}/shared \ - -I${top_srcdir}/libnm-core \ - -I${top_builddir}/libnm-core \ - $(GLIB_CFLAGS) \ - -DNETWORKMANAGER_COMPILATION \ - -DNMCONFDIR=\"$(nmconfdir)\" \ - -DSYSCONFDIR=\"$(sysconfdir)\" \ - -DLIBEXECDIR=\"$(libexecdir)\" - - -########################################### -# Test libraries -########################################### - -# See note about gdbus-codegen in introspection/Makefile.am -noinst_LTLIBRARIES = libtest-dispatcher-envp.la \ - libnmdbus-dispatcher.la -dbusservicedir = $(DBUS_SYS_DIR) -dbusservice_DATA = \ - nm-dispatcher.conf - -nm_dispatcher_SOURCES = \ - $(top_srcdir)/shared/nm-dispatcher-api.h \ - nm-dispatcher.c \ - nm-dispatcher-utils.c \ - nm-dispatcher-utils.h - -nm_dispatcher_LDADD = \ - $(top_builddir)/libnm/libnm.la \ - libnmdbus-dispatcher.la \ - $(GLIB_LIBS) - -nodist_libnmdbus_dispatcher_la_SOURCES = \ - nmdbus-dispatcher.c \ - nmdbus-dispatcher.h - -libnmdbus_dispatcher_la_CPPFLAGS = $(filter-out -DGLIB_VERSION_MAX_ALLOWED%,$(AM_CPPFLAGS)) -BUILT_SOURCES = nmdbus-dispatcher.h nmdbus-dispatcher.c - -########################################### -# dispatcher envp -########################################### -libtest_dispatcher_envp_la_SOURCES = \ - nm-dispatcher-utils.c \ - nm-dispatcher-utils.h - -libtest_dispatcher_envp_la_CPPFLAGS = \ - $(AM_CPPFLAGS) - -libtest_dispatcher_envp_la_LIBADD = \ - $(top_builddir)/libnm/libnm.la \ - $(GLIB_LIBS) - -dbusactivationdir = $(datadir)/dbus-1/system-services -dbusactivation_in_files = org.freedesktop.nm_dispatcher.service.in -dbusactivation_DATA = $(dbusactivation_in_files:.service.in=.service) -edit = @sed \ - -e 's|@sbindir[@]|$(sbindir)|g' \ - -e 's|@sysconfdir[@]|$(sysconfdir)|g' \ - -e 's|@localstatedir[@]|$(localstatedir)|g' \ - -e 's|@libexecdir[@]|$(libexecdir)|g' - -dispatcherdir = $(sysconfdir)/NetworkManager/dispatcher.d -CLEANFILES = $(nodist_libnmdbus_dispatcher_la_SOURCES) $(dbusactivation_DATA) -EXTRA_DIST = \ - $(dbusservice_DATA) \ - $(dbusactivation_in_files) \ - nm-dispatcher.xml - -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu callouts/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu callouts/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libnmdbus-dispatcher.la: $(libnmdbus_dispatcher_la_OBJECTS) $(libnmdbus_dispatcher_la_DEPENDENCIES) $(EXTRA_libnmdbus_dispatcher_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libnmdbus_dispatcher_la_OBJECTS) $(libnmdbus_dispatcher_la_LIBADD) $(LIBS) - -libtest-dispatcher-envp.la: $(libtest_dispatcher_envp_la_OBJECTS) $(libtest_dispatcher_envp_la_DEPENDENCIES) $(EXTRA_libtest_dispatcher_envp_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libtest_dispatcher_envp_la_OBJECTS) $(libtest_dispatcher_envp_la_LIBADD) $(LIBS) -install-libexecPROGRAMS: $(libexec_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-libexecPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(libexecdir)" && rm -f $$files - -clean-libexecPROGRAMS: - @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -nm-dispatcher$(EXEEXT): $(nm_dispatcher_OBJECTS) $(nm_dispatcher_DEPENDENCIES) $(EXTRA_nm_dispatcher_DEPENDENCIES) - @rm -f nm-dispatcher$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(nm_dispatcher_OBJECTS) $(nm_dispatcher_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnmdbus_dispatcher_la-nmdbus-dispatcher.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtest_dispatcher_envp_la-nm-dispatcher-utils.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nm-dispatcher-utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nm-dispatcher.Po@am__quote@ - -.c.o: -@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 $@ $< - -.c.obj: -@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) '$<'` - -.c.lo: -@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 $@ $< - -libnmdbus_dispatcher_la-nmdbus-dispatcher.lo: nmdbus-dispatcher.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnmdbus_dispatcher_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnmdbus_dispatcher_la-nmdbus-dispatcher.lo -MD -MP -MF $(DEPDIR)/libnmdbus_dispatcher_la-nmdbus-dispatcher.Tpo -c -o libnmdbus_dispatcher_la-nmdbus-dispatcher.lo `test -f 'nmdbus-dispatcher.c' || echo '$(srcdir)/'`nmdbus-dispatcher.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnmdbus_dispatcher_la-nmdbus-dispatcher.Tpo $(DEPDIR)/libnmdbus_dispatcher_la-nmdbus-dispatcher.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nmdbus-dispatcher.c' object='libnmdbus_dispatcher_la-nmdbus-dispatcher.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) $(libnmdbus_dispatcher_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnmdbus_dispatcher_la-nmdbus-dispatcher.lo `test -f 'nmdbus-dispatcher.c' || echo '$(srcdir)/'`nmdbus-dispatcher.c - -libtest_dispatcher_envp_la-nm-dispatcher-utils.lo: nm-dispatcher-utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtest_dispatcher_envp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtest_dispatcher_envp_la-nm-dispatcher-utils.lo -MD -MP -MF $(DEPDIR)/libtest_dispatcher_envp_la-nm-dispatcher-utils.Tpo -c -o libtest_dispatcher_envp_la-nm-dispatcher-utils.lo `test -f 'nm-dispatcher-utils.c' || echo '$(srcdir)/'`nm-dispatcher-utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtest_dispatcher_envp_la-nm-dispatcher-utils.Tpo $(DEPDIR)/libtest_dispatcher_envp_la-nm-dispatcher-utils.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nm-dispatcher-utils.c' object='libtest_dispatcher_envp_la-nm-dispatcher-utils.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) $(libtest_dispatcher_envp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtest_dispatcher_envp_la-nm-dispatcher-utils.lo `test -f 'nm-dispatcher-utils.c' || echo '$(srcdir)/'`nm-dispatcher-utils.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-dbusactivationDATA: $(dbusactivation_DATA) - @$(NORMAL_INSTALL) - @list='$(dbusactivation_DATA)'; test -n "$(dbusactivationdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(dbusactivationdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(dbusactivationdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dbusactivationdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(dbusactivationdir)" || exit $$?; \ - done - -uninstall-dbusactivationDATA: - @$(NORMAL_UNINSTALL) - @list='$(dbusactivation_DATA)'; test -n "$(dbusactivationdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(dbusactivationdir)'; $(am__uninstall_files_from_dir) -install-dbusserviceDATA: $(dbusservice_DATA) - @$(NORMAL_INSTALL) - @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(dbusservicedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(dbusservicedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dbusservicedir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(dbusservicedir)" || exit $$?; \ - done - -uninstall-dbusserviceDATA: - @$(NORMAL_UNINSTALL) - @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(dbusservicedir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-recursive -all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(dbusactivationdir)" "$(DESTDIR)$(dbusservicedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-recursive - -clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ - clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-dbusactivationDATA install-dbusserviceDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libexecPROGRAMS - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-dbusactivationDATA uninstall-dbusserviceDATA \ - uninstall-libexecPROGRAMS - -.MAKE: $(am__recursive_targets) all check install install-am \ - install-data-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libexecPROGRAMS \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-data-hook install-dbusactivationDATA \ - install-dbusserviceDATA install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-libexecPROGRAMS \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am \ - uninstall-dbusactivationDATA uninstall-dbusserviceDATA \ - uninstall-libexecPROGRAMS - -.PRECIOUS: Makefile - - -nmdbus-dispatcher.h: nm-dispatcher.xml - $(AM_V_GEN) gdbus-codegen \ - --generate-c-code $(basename $@) \ - --c-namespace NMDBus \ - --interface-prefix org.freedesktop \ - $< - -nmdbus-dispatcher.c: nmdbus-dispatcher.h - @true - -%.service: %.service.in - $(edit) $< >$@ -install-data-hook: - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir) - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir)/pre-down.d - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir)/pre-up.d - $(mkinstalldirs) -m 0755 $(DESTDIR)$(dispatcherdir)/no-wait.d - -# 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. -.NOEXPORT: diff --git a/callouts/nm-dispatcher-utils.c b/callouts/nm-dispatcher-utils.c deleted file mode 100644 index 78ef8dd2..00000000 --- a/callouts/nm-dispatcher-utils.c +++ /dev/null @@ -1,492 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2008 - 2011 Red Hat, Inc. - */ - -#include "nm-default.h" - -#include <string.h> - -#include "nm-dbus-interface.h" -#include "nm-connection.h" -#include "nm-setting-ip4-config.h" -#include "nm-setting-ip6-config.h" -#include "nm-setting-connection.h" - -#include "nm-dispatcher-api.h" -#include "nm-utils.h" - -#include "nm-dispatcher-utils.h" - -static GSList * -construct_basic_items (GSList *list, - const char *uuid, - const char *id, - const char *iface, - const char *ip_iface) -{ - if (uuid) - list = g_slist_prepend (list, g_strdup_printf ("CONNECTION_UUID=%s", uuid)); - if (id) - list = g_slist_prepend (list, g_strdup_printf ("CONNECTION_ID=%s", id)); - if (iface) - list = g_slist_prepend (list, g_strdup_printf ("DEVICE_IFACE=%s", iface)); - if (ip_iface) - list = g_slist_prepend (list, g_strdup_printf ("DEVICE_IP_IFACE=%s", ip_iface)); - return list; -} - -static GSList *_list_append_val_strv (GSList *items, char **values, const char *format, ...) G_GNUC_PRINTF(3, 4); - -static GSList * -_list_append_val_strv (GSList *items, char **values, const char *format, ...) -{ - if (!values) - g_return_val_if_reached (items); - - /* Only add an item if the list of @values is not empty */ - if (values[0]) { - va_list args; - guint i; - GString *str = g_string_new (NULL); - - va_start (args, format); - g_string_append_vprintf (str, format, args); - va_end (args); - - g_string_append (str, values[0]); - for (i = 1; values[i]; i++) { - g_string_append_c (str, ' '); - g_string_append (str, values[i]); - } - items = g_slist_prepend (items, g_string_free (str, FALSE)); - } - - /* we take ownership of the values array and free it. */ - g_strfreev (values); - return items; -} - -static GSList * -add_domains (GSList *items, - GVariant *dict, - const char *prefix, - const char four_or_six) -{ - GVariant *val; - - /* Search domains */ - val = g_variant_lookup_value (dict, "domains", G_VARIANT_TYPE_STRING_ARRAY); - if (val) { - items = _list_append_val_strv (items, g_variant_dup_strv (val, NULL), - "%sIP%c_DOMAINS=", prefix, four_or_six); - g_variant_unref (val); - } - return items; -} - -static GSList * -construct_ip4_items (GSList *items, GVariant *ip4_config, const char *prefix) -{ - GPtrArray *addresses, *routes; - char *gateway; - GVariant *val; - int i; - - if (ip4_config == NULL) - return items; - - if (prefix == NULL) - prefix = ""; - - /* IP addresses */ - val = g_variant_lookup_value (ip4_config, "addresses", G_VARIANT_TYPE ("aau")); - if (val) { - addresses = nm_utils_ip4_addresses_from_variant (val, &gateway); - if (!gateway) - gateway = g_strdup ("0.0.0.0"); - - for (i = 0; i < addresses->len; i++) { - NMIPAddress *addr = addresses->pdata[i]; - char *addrtmp; - - addrtmp = g_strdup_printf ("%sIP4_ADDRESS_%d=%s/%d %s", prefix, i, - nm_ip_address_get_address (addr), - nm_ip_address_get_prefix (addr), - gateway); - items = g_slist_prepend (items, addrtmp); - } - if (addresses->len) - items = g_slist_prepend (items, g_strdup_printf ("%sIP4_NUM_ADDRESSES=%d", prefix, addresses->len)); - - /* Write gateway to a separate variable, too. */ - items = g_slist_prepend (items, g_strdup_printf ("%sIP4_GATEWAY=%s", prefix, gateway)); - - g_ptr_array_unref (addresses); - g_free (gateway); - g_variant_unref (val); - } - - /* DNS servers */ - val = g_variant_lookup_value (ip4_config, "nameservers", G_VARIANT_TYPE ("au")); - if (val) { - items = _list_append_val_strv (items, nm_utils_ip4_dns_from_variant (val), - "%sIP4_NAMESERVERS=", prefix); - g_variant_unref (val); - } - - /* Search domains */ - items = add_domains (items, ip4_config, prefix, '4'); - - /* WINS servers */ - val = g_variant_lookup_value (ip4_config, "wins-servers", G_VARIANT_TYPE ("au")); - if (val) { - items = _list_append_val_strv (items, nm_utils_ip4_dns_from_variant (val), - "%sIP4_WINS_SERVERS=", prefix); - g_variant_unref (val); - } - - /* Static routes */ - val = g_variant_lookup_value (ip4_config, "routes", G_VARIANT_TYPE ("aau")); - if (val) { - routes = nm_utils_ip4_routes_from_variant (val); - - for (i = 0; i < routes->len; i++) { - NMIPRoute *route = routes->pdata[i]; - const char *next_hop; - char *routetmp; - - next_hop = nm_ip_route_get_next_hop (route); - if (!next_hop) - next_hop = "0.0.0.0"; - - routetmp = g_strdup_printf ("%sIP4_ROUTE_%d=%s/%d %s %u", prefix, i, - nm_ip_route_get_dest (route), - nm_ip_route_get_prefix (route), - next_hop, - (guint32) MAX (0, nm_ip_route_get_metric (route))); - items = g_slist_prepend (items, routetmp); - } - items = g_slist_prepend (items, g_strdup_printf ("%sIP4_NUM_ROUTES=%d", prefix, routes->len)); - g_ptr_array_unref (routes); - g_variant_unref (val); - } else - items = g_slist_prepend (items, g_strdup_printf ("%sIP4_NUM_ROUTES=0", prefix)); - - return items; -} - -static GSList * -construct_device_dhcp4_items (GSList *items, GVariant *dhcp4_config) -{ - GVariantIter iter; - const char *key, *tmp; - GVariant *val; - char *ucased; - - if (dhcp4_config == NULL) - return items; - - g_variant_iter_init (&iter, dhcp4_config); - while (g_variant_iter_next (&iter, "{&sv}", &key, &val)) { - ucased = g_ascii_strup (key, -1); - tmp = g_variant_get_string (val, NULL); - items = g_slist_prepend (items, g_strdup_printf ("DHCP4_%s=%s", ucased, tmp)); - g_free (ucased); - g_variant_unref (val); - } - return items; -} - -static GSList * -construct_ip6_items (GSList *items, GVariant *ip6_config, const char *prefix) -{ - GPtrArray *addresses, *routes; - char *gateway = NULL; - GVariant *val; - int i; - - if (ip6_config == NULL) - return items; - - if (prefix == NULL) - prefix = ""; - - /* IP addresses */ - val = g_variant_lookup_value (ip6_config, "addresses", G_VARIANT_TYPE ("a(ayuay)")); - if (val) { - addresses = nm_utils_ip6_addresses_from_variant (val, &gateway); - if (!gateway) - gateway = g_strdup ("::"); - - for (i = 0; i < addresses->len; i++) { - NMIPAddress *addr = addresses->pdata[i]; - char *addrtmp; - - addrtmp = g_strdup_printf ("%sIP6_ADDRESS_%d=%s/%d %s", prefix, i, - nm_ip_address_get_address (addr), - nm_ip_address_get_prefix (addr), - gateway); - items = g_slist_prepend (items, addrtmp); - } - if (addresses->len) - items = g_slist_prepend (items, g_strdup_printf ("%sIP6_NUM_ADDRESSES=%d", prefix, addresses->len)); - - /* Write gateway to a separate variable, too. */ - items = g_slist_prepend (items, g_strdup_printf ("%sIP6_GATEWAY=%s", prefix, gateway)); - - g_ptr_array_unref (addresses); - g_free (gateway); - g_variant_unref (val); - } - - /* DNS servers */ - val = g_variant_lookup_value (ip6_config, "nameservers", G_VARIANT_TYPE ("aay")); - if (val) { - items = _list_append_val_strv (items, nm_utils_ip6_dns_from_variant (val), - "%sIP6_NAMESERVERS=", prefix); - g_variant_unref (val); - } - - /* Search domains */ - items = add_domains (items, ip6_config, prefix, '6'); - - /* Static routes */ - val = g_variant_lookup_value (ip6_config, "routes", G_VARIANT_TYPE ("a(ayuayu)")); - if (val) { - routes = nm_utils_ip6_routes_from_variant (val); - - for (i = 0; i < routes->len; i++) { - NMIPRoute *route = routes->pdata[i]; - const char *next_hop; - char *routetmp; - - next_hop = nm_ip_route_get_next_hop (route); - if (!next_hop) - next_hop = "::"; - - routetmp = g_strdup_printf ("%sIP6_ROUTE_%d=%s/%d %s %u", prefix, i, - nm_ip_route_get_dest (route), - nm_ip_route_get_prefix (route), - next_hop, - (guint32) MAX (0, nm_ip_route_get_metric (route))); - items = g_slist_prepend (items, routetmp); - } - if (routes->len) - items = g_slist_prepend (items, g_strdup_printf ("%sIP6_NUM_ROUTES=%d", prefix, routes->len)); - g_ptr_array_unref (routes); - g_variant_unref (val); - } - - return items; -} - -static GSList * -construct_device_dhcp6_items (GSList *items, GVariant *dhcp6_config) -{ - GVariantIter iter; - const char *key, *tmp; - GVariant *val; - char *ucased; - - if (dhcp6_config == NULL) - return items; - - g_variant_iter_init (&iter, dhcp6_config); - while (g_variant_iter_next (&iter, "{&sv}", &key, &val)) { - ucased = g_ascii_strup (key, -1); - tmp = g_variant_get_string (val, NULL); - items = g_slist_prepend (items, g_strdup_printf ("DHCP6_%s=%s", ucased, tmp)); - g_free (ucased); - g_variant_unref (val); - } - return items; -} - -char ** -nm_dispatcher_utils_construct_envp (const char *action, - GVariant *connection_dict, - GVariant *connection_props, - GVariant *device_props, - GVariant *device_ip4_props, - GVariant *device_ip6_props, - GVariant *device_dhcp4_props, - GVariant *device_dhcp6_props, - const char *connectivity_state, - const char *vpn_ip_iface, - GVariant *vpn_ip4_props, - GVariant *vpn_ip6_props, - char **out_iface, - const char **out_error_message) -{ - const char *iface = NULL, *ip_iface = NULL; - const char *uuid = NULL, *id = NULL, *path = NULL; - const char *filename = NULL; - gboolean external; - NMDeviceState dev_state = NM_DEVICE_STATE_UNKNOWN; - GVariant *value; - char **envp = NULL, *path_item; - GSList *items = NULL, *iter; - guint i; - GVariant *con_setting; - const char *error_message_backup; - - if (!out_error_message) - out_error_message = &error_message_backup; - - g_return_val_if_fail (action != NULL, NULL); - g_return_val_if_fail (out_iface != NULL, NULL); - g_return_val_if_fail (*out_iface == NULL, NULL); - - /* Hostname and connectivity changes don't require a device nor contain a connection */ - if ( !strcmp (action, NMD_ACTION_HOSTNAME) - || !strcmp (action, NMD_ACTION_CONNECTIVITY_CHANGE)) { - goto done; - } - - /* Connection properties */ - if (!g_variant_lookup (connection_props, NMD_CONNECTION_PROPS_PATH, "&o", &path)) { - *out_error_message = "Missing or invalid required value " NMD_CONNECTION_PROPS_PATH "!"; - return NULL; - } - items = g_slist_prepend (items, g_strdup_printf ("CONNECTION_DBUS_PATH=%s", path)); - - if (g_variant_lookup (connection_props, NMD_CONNECTION_PROPS_EXTERNAL, "b", &external) && external) - items = g_slist_prepend (items, g_strdup ("CONNECTION_EXTERNAL=1")); - - if (g_variant_lookup (connection_props, NMD_CONNECTION_PROPS_FILENAME, "&s", &filename)) - items = g_slist_prepend (items, g_strdup_printf ("CONNECTION_FILENAME=%s", filename)); - - - /* Canonicalize the VPN interface name; "" is used when passing it through - * D-Bus so make sure that's fixed up here. - */ - if (vpn_ip_iface && !strlen (vpn_ip_iface)) - vpn_ip_iface = NULL; - - /* interface name */ - if (!g_variant_lookup (device_props, NMD_DEVICE_PROPS_INTERFACE, "&s", &iface)) { - *out_error_message = "Missing or invalid required value " NMD_DEVICE_PROPS_INTERFACE "!"; - return NULL; - } - if (!*iface) - iface = NULL; - - /* IP interface name */ - value = g_variant_lookup_value (device_props, NMD_DEVICE_PROPS_IP_INTERFACE, NULL); - if (value) { - if (!g_variant_is_of_type (value, G_VARIANT_TYPE_STRING)) { - *out_error_message = "Invalid value " NMD_DEVICE_PROPS_IP_INTERFACE "!"; - return NULL; - } - g_variant_unref (value); - (void) g_variant_lookup (device_props, NMD_DEVICE_PROPS_IP_INTERFACE, "&s", &ip_iface); - } - - /* Device type */ - if (!g_variant_lookup (device_props, NMD_DEVICE_PROPS_TYPE, "u", NULL)) { - *out_error_message = "Missing or invalid required value " NMD_DEVICE_PROPS_TYPE "!"; - return NULL; - } - - /* Device state */ - value = g_variant_lookup_value (device_props, NMD_DEVICE_PROPS_STATE, G_VARIANT_TYPE_UINT32); - if (!value) { - *out_error_message = "Missing or invalid required value " NMD_DEVICE_PROPS_STATE "!"; - return NULL; - } - dev_state = g_variant_get_uint32 (value); - g_variant_unref (value); - - /* device itself */ - if (!g_variant_lookup (device_props, NMD_DEVICE_PROPS_PATH, "o", NULL)) { - *out_error_message = "Missing or invalid required value " NMD_DEVICE_PROPS_PATH "!"; - return NULL; - } - - /* UUID and ID */ - con_setting = g_variant_lookup_value (connection_dict, NM_SETTING_CONNECTION_SETTING_NAME, NM_VARIANT_TYPE_SETTING); - if (!con_setting) { - *out_error_message = "Failed to read connection setting"; - return NULL; - } - - if (!g_variant_lookup (con_setting, NM_SETTING_CONNECTION_UUID, "&s", &uuid)) { - *out_error_message = "Connection hash did not contain the UUID"; - g_variant_unref (con_setting); - return NULL; - } - - if (!g_variant_lookup (con_setting, NM_SETTING_CONNECTION_ID, "&s", &id)) { - *out_error_message = "Connection hash did not contain the ID"; - g_variant_unref (con_setting); - return NULL; - } - - items = construct_basic_items (items, uuid, id, iface, ip_iface); - g_variant_unref (con_setting); - - /* Device it's aren't valid if the device isn't activated */ - if (iface && (dev_state == NM_DEVICE_STATE_ACTIVATED)) { - items = construct_ip4_items (items, device_ip4_props, NULL); - items = construct_ip6_items (items, device_ip6_props, NULL); - items = construct_device_dhcp4_items (items, device_dhcp4_props); - items = construct_device_dhcp6_items (items, device_dhcp6_props); - } - - if (vpn_ip_iface) { - items = g_slist_prepend (items, g_strdup_printf ("VPN_IP_IFACE=%s", vpn_ip_iface)); - items = construct_ip4_items (items, vpn_ip4_props, "VPN_"); - items = construct_ip6_items (items, vpn_ip6_props, "VPN_"); - } - - /* Backwards compat: 'iface' is set in this order: - * 1) VPN interface name - * 2) Device IP interface name - * 3) Device interface anme - */ - if (vpn_ip_iface) - *out_iface = g_strdup (vpn_ip_iface); - else if (ip_iface) - *out_iface = g_strdup (ip_iface); - else - *out_iface = g_strdup (iface); - - done: - /* The connectivity_state value will only be meaningful for 'connectivity-change' events - * (otherwise it will be "UNKNOWN"), so we only set the environment variable in those cases. - */ - if (connectivity_state && strcmp(connectivity_state, "UNKNOWN")) - items = g_slist_prepend (items, g_strdup_printf ("CONNECTIVITY_STATE=%s", connectivity_state)); - - path = g_getenv ("PATH"); - if (path) { - path_item = g_strdup_printf ("PATH=%s", path); - items = g_slist_prepend (items, path_item); - } - - /* Convert the list to an environment pointer */ - envp = g_new0 (char *, g_slist_length (items) + 1); - for (iter = items, i = 0; iter; iter = g_slist_next (iter), i++) - envp[i] = (char *) iter->data; - g_slist_free (items); - - *out_error_message = NULL; - return envp; -} - diff --git a/callouts/nm-dispatcher-utils.h b/callouts/nm-dispatcher-utils.h deleted file mode 100644 index 6a10d4c3..00000000 --- a/callouts/nm-dispatcher-utils.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2008 - 2011 Red Hat, Inc. - */ - -#ifndef __NETWORKMANAGER_DISPATCHER_UTILS_H__ -#define __NETWORKMANAGER_DISPATCHER_UTILS_H__ - -char ** -nm_dispatcher_utils_construct_envp (const char *action, - GVariant *connection_dict, - GVariant *connection_props, - GVariant *device_props, - GVariant *device_ip4_props, - GVariant *device_ip6_props, - GVariant *device_dhcp4_props, - GVariant *device_dhcp6_props, - const char *connectivity_state, - const char *vpn_ip_iface, - GVariant *vpn_ip4_props, - GVariant *vpn_ip6_props, - char **out_iface, - const char **out_error_message); - -#endif /* __NETWORKMANAGER_DISPATCHER_UTILS_H__ */ - diff --git a/callouts/nm-dispatcher.c b/callouts/nm-dispatcher.c deleted file mode 100644 index 94bd1324..00000000 --- a/callouts/nm-dispatcher.c +++ /dev/null @@ -1,971 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2008 - 2012 Red Hat, Inc. - */ - -#include "nm-default.h" - -#include <syslog.h> -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <signal.h> -#include <sys/stat.h> -#include <sys/wait.h> -#include <errno.h> -#include <arpa/inet.h> -#include <glib-unix.h> - -#include "nm-dispatcher-api.h" -#include "nm-dispatcher-utils.h" - -#include "nmdbus-dispatcher.h" - -static GMainLoop *loop = NULL; -static gboolean debug = FALSE; -static gboolean persist = FALSE; -static guint quit_id; -static guint request_id_counter = 0; - -typedef struct Request Request; - -typedef struct { - GObject parent; - - /* Private data */ - NMDBusDispatcher *dbus_dispatcher; - - Request *current_request; - GQueue *requests_waiting; - gint num_requests_pending; -} Handler; - -typedef struct { - GObjectClass parent; -} HandlerClass; - -GType handler_get_type (void); - -#define HANDLER_TYPE (handler_get_type ()) -#define HANDLER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HANDLER_TYPE, Handler)) -#define HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HANDLER_TYPE, HandlerClass)) - -G_DEFINE_TYPE(Handler, handler, G_TYPE_OBJECT) - -static gboolean -handle_action (NMDBusDispatcher *dbus_dispatcher, - GDBusMethodInvocation *context, - const char *str_action, - GVariant *connection_dict, - GVariant *connection_props, - GVariant *device_props, - GVariant *device_ip4_props, - GVariant *device_ip6_props, - GVariant *device_dhcp4_props, - GVariant *device_dhcp6_props, - const char *connectivity_state, - const char *vpn_ip_iface, - GVariant *vpn_ip4_props, - GVariant *vpn_ip6_props, - gboolean request_debug, - gpointer user_data); - -static void -handler_init (Handler *h) -{ - h->requests_waiting = g_queue_new (); - h->dbus_dispatcher = nmdbus_dispatcher_skeleton_new (); - g_signal_connect (h->dbus_dispatcher, "handle-action", - G_CALLBACK (handle_action), h); -} - -static void -handler_class_init (HandlerClass *h_class) -{ -} - -static gboolean dispatch_one_script (Request *request); - -typedef struct { - Request *request; - - char *script; - GPid pid; - DispatchResult result; - char *error; - gboolean wait; - gboolean dispatched; - guint watch_id; - guint timeout_id; -} ScriptInfo; - -struct Request { - Handler *handler; - - guint request_id; - - GDBusMethodInvocation *context; - char *action; - char *iface; - char **envp; - gboolean debug; - - GPtrArray *scripts; /* list of ScriptInfo */ - guint idx; - gint num_scripts_done; - gint num_scripts_nowait; -}; - -/*****************************************************************************/ - -#define __LOG_print(print_cmd, _request, _script, ...) \ - G_STMT_START { \ - nm_assert ((_request) && (!(_script) || (_script)->request == (_request))); \ - print_cmd ("req:%u '%s'%s%s%s%s%s%s: " _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ - (_request)->request_id, \ - (_request)->action, \ - (_request)->iface ? " [" : "", \ - (_request)->iface ? (_request)->iface : "", \ - (_request)->iface ? "]" : "", \ - (_script) ? ", \"" : "", \ - (_script) ? (_script)->script : "", \ - (_script) ? "\"" : "" \ - _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ - } G_STMT_END - -#define _LOG(_request, _script, log_always, print_cmd, ...) \ - G_STMT_START { \ - const Request *__request = (_request); \ - const ScriptInfo *__script = (_script); \ - \ - if (!__request) \ - __request = __script->request; \ - nm_assert (__request && (!__script || __script->request == __request)); \ - if ((log_always) || _LOG_R_D_enabled (__request)) { \ - if (FALSE) { \ - /* g_message() alone does not warn about invalid format. Add a dummy printf() statement to - * get a compiler warning about wrong format. */ \ - __LOG_print (printf, __request, __script, __VA_ARGS__); \ - } \ - __LOG_print (print_cmd, __request, __script, __VA_ARGS__); \ - } \ - } G_STMT_END - -static gboolean -_LOG_R_D_enabled (const Request *request) -{ - return request->debug; -} - -#define _LOG_R_D(_request, ...) _LOG(_request, NULL, FALSE, g_debug, __VA_ARGS__) -#define _LOG_R_I(_request, ...) _LOG(_request, NULL, TRUE, g_info, __VA_ARGS__) -#define _LOG_R_W(_request, ...) _LOG(_request, NULL, TRUE, g_warning, __VA_ARGS__) - -#define _LOG_S_D(_script, ...) _LOG(NULL, _script, FALSE, g_debug, __VA_ARGS__) -#define _LOG_S_I(_script, ...) _LOG(NULL, _script, TRUE, g_info, __VA_ARGS__) -#define _LOG_S_W(_script, ...) _LOG(NULL, _script, TRUE, g_warning, __VA_ARGS__) - -/*****************************************************************************/ - -static void -script_info_free (gpointer ptr) -{ - ScriptInfo *info = ptr; - - g_free (info->script); - g_free (info->error); - g_slice_free (ScriptInfo, info); -} - -static void -request_free (Request *request) -{ - g_assert_cmpuint (request->num_scripts_done, ==, request->scripts->len); - g_assert_cmpuint (request->num_scripts_nowait, ==, 0); - - g_free (request->action); - g_free (request->iface); - g_strfreev (request->envp); - g_ptr_array_free (request->scripts, TRUE); - - g_slice_free (Request, request); -} - -static gboolean -quit_timeout_cb (gpointer user_data) -{ - g_main_loop_quit (loop); - return FALSE; -} - -static void -quit_timeout_reschedule (void) -{ - if (!persist) { - nm_clear_g_source (&quit_id); - quit_id = g_timeout_add_seconds (10, quit_timeout_cb, NULL); - } -} - -/** - * next_request: - * - * @h: the handler - * @request: (allow-none): the request to set as next. If %NULL, dequeue the next - * waiting request. Otherwise, try to set the given request. - * - * Sets the currently active request (@current_request). The current request - * is a request that has at least on "wait" script, because requests that only - * consist of "no-wait" scripts are handled right away and not enqueued to - * @requests_waiting nor set as @current_request. - * - * Returns: %TRUE, if there was currently not request in process and it set - * a new request as current. - */ -static gboolean -next_request (Handler *h, Request *request) -{ - if (request) { - if (h->current_request) { - g_queue_push_tail (h->requests_waiting, request); - return FALSE; - } - } else { - /* when calling next_request() without explicit @request, we always - * forcefully clear @current_request. That one is certainly - * handled already. */ - h->current_request = NULL; - - request = g_queue_pop_head (h->requests_waiting); - if (!request) - return FALSE; - } - - _LOG_R_I (request, "start running ordered scripts..."); - - h->current_request = request; - - return TRUE; -} - -/** - * complete_request: - * @request: the request - * - * Checks if all the scripts for the request have terminated and in such case - * it sends the D-Bus response and releases the request resources. - * - * It also decreases @num_requests_pending and possibly does quit_timeout_reschedule(). - */ -static void -complete_request (Request *request) -{ - GVariantBuilder results; - GVariant *ret; - guint i; - Handler *handler = request->handler; - - nm_assert (request); - - /* Are there still pending scripts? Then do nothing (for now). */ - if (request->num_scripts_done < request->scripts->len) - return; - - g_variant_builder_init (&results, G_VARIANT_TYPE ("a(sus)")); - for (i = 0; i < request->scripts->len; i++) { - ScriptInfo *script = g_ptr_array_index (request->scripts, i); - - g_variant_builder_add (&results, "(sus)", - script->script, - script->result, - script->error ? script->error : ""); - } - - ret = g_variant_new ("(a(sus))", &results); - g_dbus_method_invocation_return_value (request->context, ret); - - _LOG_R_D (request, "completed (%u scripts)", request->scripts->len); - - if (handler->current_request == request) - handler->current_request = NULL; - - request_free (request); - - g_assert_cmpuint (handler->num_requests_pending, >, 0); - if (--handler->num_requests_pending <= 0) { - nm_assert (!handler->current_request && !g_queue_peek_head (handler->requests_waiting)); - quit_timeout_reschedule (); - } -} - -static void -complete_script (ScriptInfo *script) -{ - Handler *handler; - Request *request; - gboolean wait = script->wait; - - request = script->request; - - if (wait) { - /* for "wait" scripts, try to schedule the next blocking script. - * If that is successful, return (as we must wait for its completion). */ - if (dispatch_one_script (request)) - return; - } - - handler = request->handler; - - nm_assert (!wait || handler->current_request == request); - - /* Try to complete the request. @request will be possibly free'd, - * making @script and @request a dangling pointer. */ - complete_request (request); - - if (!wait) { - /* this was a "no-wait" script. We either completed the request, - * or there is nothing to do. Especially, there is no need to - * queue the next_request() -- because no-wait scripts don't block - * requests. However, if this was the last "no-wait" script and - * there are "wait" scripts ready to run, launch them. - */ - if ( handler->current_request == request - && handler->current_request->num_scripts_nowait == 0) { - - if (dispatch_one_script (handler->current_request)) - return; - - complete_request (handler->current_request); - } else - return; - } else { - /* if the script is a "wait" script, we already tried above to - * dispatch the next script. As we didn't do that, it means we - * just completed the last script of @request and we can continue - * with the next request... - * - * Also, it cannot be that there is another request currently being - * processed because only requests with "wait" scripts can become - * @current_request. As there can only be one "wait" script running - * at any time, it means complete_request() above completed @request. */ - nm_assert (!handler->current_request); - } - - while (next_request (handler, NULL)) { - request = handler->current_request; - - if (dispatch_one_script (request)) - return; - - /* Try to complete the request. It will be either completed - * now, or when all pending "no-wait" scripts return. */ - complete_request (request); - - /* We can immediately start next_request(), because our current - * @request has obviously no more "wait" scripts either. - * Repeat... */ - } -} - -static void -script_watch_cb (GPid pid, gint status, gpointer user_data) -{ - ScriptInfo *script = user_data; - guint err; - - g_assert (pid == script->pid); - - script->watch_id = 0; - nm_clear_g_source (&script->timeout_id); - script->request->num_scripts_done++; - if (!script->wait) - script->request->num_scripts_nowait--; - - if (WIFEXITED (status)) { - err = WEXITSTATUS (status); - if (err == 0) - script->result = DISPATCH_RESULT_SUCCESS; - else { - script->error = g_strdup_printf ("Script '%s' exited with error status %d.", - script->script, err); - } - } else if (WIFSTOPPED (status)) { - script->error = g_strdup_printf ("Script '%s' stopped unexpectedly with signal %d.", - script->script, WSTOPSIG (status)); - } else if (WIFSIGNALED (status)) { - script->error = g_strdup_printf ("Script '%s' died with signal %d", - script->script, WTERMSIG (status)); - } else { - script->error = g_strdup_printf ("Script '%s' died from an unknown cause", - script->script); - } - - if (script->result == DISPATCH_RESULT_SUCCESS) { - _LOG_S_D (script, "complete"); - } else { - script->result = DISPATCH_RESULT_FAILED; - _LOG_S_W (script, "complete: failed with %s", script->error); - } - - g_spawn_close_pid (script->pid); - - complete_script (script); -} - -static gboolean -script_timeout_cb (gpointer user_data) -{ - ScriptInfo *script = user_data; - - script->timeout_id = 0; - nm_clear_g_source (&script->watch_id); - script->request->num_scripts_done++; - if (!script->wait) - script->request->num_scripts_nowait--; - - _LOG_S_W (script, "complete: timeout (kill script)"); - - kill (script->pid, SIGKILL); -again: - if (waitpid (script->pid, NULL, 0) == -1) { - if (errno == EINTR) - goto again; - } - - script->error = g_strdup_printf ("Script '%s' timed out.", script->script); - script->result = DISPATCH_RESULT_TIMEOUT; - - g_spawn_close_pid (script->pid); - - complete_script (script); - - return FALSE; -} - -static inline gboolean -check_permissions (struct stat *s, const char **out_error_msg) -{ - g_return_val_if_fail (s != NULL, FALSE); - g_return_val_if_fail (out_error_msg != NULL, FALSE); - g_return_val_if_fail (*out_error_msg == NULL, FALSE); - - /* Only accept regular files */ - if (!S_ISREG (s->st_mode)) { - *out_error_msg = "not a regular file."; - return FALSE; - } - - /* Only accept files owned by root */ - if (s->st_uid != 0) { - *out_error_msg = "not owned by root."; - return FALSE; - } - - /* Only accept files not writable by group or other, and not SUID */ - if (s->st_mode & (S_IWGRP | S_IWOTH | S_ISUID)) { - *out_error_msg = "writable by group or other, or set-UID."; - return FALSE; - } - - /* Only accept files executable by the owner */ - if (!(s->st_mode & S_IXUSR)) { - *out_error_msg = "not executable by owner."; - return FALSE; - } - - return TRUE; -} - -static gboolean -check_filename (const char *file_name) -{ - static const char *bad_suffixes[] = { - "~", - ".rpmsave", - ".rpmorig", - ".rpmnew", - ".swp", - }; - char *tmp; - guint i; - - /* File must not be a backup file, package management file, or start with '.' */ - - if (file_name[0] == '.') - return FALSE; - for (i = 0; i < G_N_ELEMENTS (bad_suffixes); i++) { - if (g_str_has_suffix (file_name, bad_suffixes[i])) - return FALSE; - } - tmp = g_strrstr (file_name, ".dpkg-"); - if (tmp && !strchr (&tmp[1], '.')) - return FALSE; - return TRUE; -} - -#define SCRIPT_TIMEOUT 600 /* 10 minutes */ - -static gboolean -script_dispatch (ScriptInfo *script) -{ - GError *error = NULL; - gchar *argv[4]; - Request *request = script->request; - - if (script->dispatched) - return FALSE; - - script->dispatched = TRUE; - - argv[0] = script->script; - argv[1] = request->iface - ? request->iface - : (!strcmp (request->action, NMD_ACTION_HOSTNAME) ? "none" : ""); - argv[2] = request->action; - argv[3] = NULL; - - _LOG_S_D (script, "run script%s", script->wait ? "" : " (no-wait)"); - - if (g_spawn_async ("/", argv, request->envp, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &script->pid, &error)) { - script->watch_id = g_child_watch_add (script->pid, (GChildWatchFunc) script_watch_cb, script); - script->timeout_id = g_timeout_add_seconds (SCRIPT_TIMEOUT, script_timeout_cb, script); - if (!script->wait) - request->num_scripts_nowait++; - return TRUE; - } else { - _LOG_S_W (script, "complete: failed to execute script: %s", error->message); - script->result = DISPATCH_RESULT_EXEC_FAILED; - script->error = g_strdup (error->message); - request->num_scripts_done++; - g_clear_error (&error); - return FALSE; - } -} - -static gboolean -dispatch_one_script (Request *request) -{ - if (request->num_scripts_nowait > 0) - return TRUE; - - while (request->idx < request->scripts->len) { - ScriptInfo *script; - - script = g_ptr_array_index (request->scripts, request->idx++); - if (script_dispatch (script)) - return TRUE; - } - return FALSE; -} - -static GSList * -find_scripts (const char *str_action) -{ - GDir *dir; - const char *filename; - GSList *sorted = NULL; - GError *error = NULL; - const char *dirname; - - if ( strcmp (str_action, NMD_ACTION_PRE_UP) == 0 - || strcmp (str_action, NMD_ACTION_VPN_PRE_UP) == 0) - dirname = NMD_SCRIPT_DIR_PRE_UP; - else if ( strcmp (str_action, NMD_ACTION_PRE_DOWN) == 0 - || strcmp (str_action, NMD_ACTION_VPN_PRE_DOWN) == 0) - dirname = NMD_SCRIPT_DIR_PRE_DOWN; - else - dirname = NMD_SCRIPT_DIR_DEFAULT; - - if (!(dir = g_dir_open (dirname, 0, &error))) { - g_message ("find-scripts: Failed to open dispatcher directory '%s': %s", - dirname, error->message); - g_error_free (error); - return NULL; - } - - while ((filename = g_dir_read_name (dir))) { - char *path; - struct stat st; - int err; - const char *err_msg = NULL; - - if (!check_filename (filename)) - continue; - - path = g_build_filename (dirname, filename, NULL); - - err = stat (path, &st); - if (err) - g_warning ("find-scripts: Failed to stat '%s': %d", path, err); - else if (S_ISDIR (st.st_mode)) - ; /* silently skip. */ - else if (!check_permissions (&st, &err_msg)) - g_warning ("find-scripts: Cannot execute '%s': %s", path, err_msg); - else { - /* success */ - sorted = g_slist_insert_sorted (sorted, path, (GCompareFunc) g_strcmp0); - path = NULL; - } - g_free (path); - } - g_dir_close (dir); - - return sorted; -} - -static gboolean -script_must_wait (const char *path) -{ - gs_free char *link = NULL; - gs_free char *dir = NULL; - gs_free char *real = NULL; - char *tmp; - - link = g_file_read_link (path, NULL); - if (link) { - if (!g_path_is_absolute (link)) { - dir = g_path_get_dirname (path); - tmp = g_build_path ("/", dir, link, NULL); - g_free (link); - g_free (dir); - link = tmp; - } - - dir = g_path_get_dirname (link); - real = realpath (dir, NULL); - - if (real && !strcmp (real, NMD_SCRIPT_DIR_NO_WAIT)) - return FALSE; - } - - return TRUE; -} - -static gboolean -handle_action (NMDBusDispatcher *dbus_dispatcher, - GDBusMethodInvocation *context, - const char *str_action, - GVariant *connection_dict, - GVariant *connection_props, - GVariant *device_props, - GVariant *device_ip4_props, - GVariant *device_ip6_props, - GVariant *device_dhcp4_props, - GVariant *device_dhcp6_props, - const char *connectivity_state, - const char *vpn_ip_iface, - GVariant *vpn_ip4_props, - GVariant *vpn_ip6_props, - gboolean request_debug, - gpointer user_data) -{ - Handler *h = user_data; - GSList *sorted_scripts = NULL; - GSList *iter; - Request *request; - char **p; - guint i, num_nowait = 0; - const char *error_message = NULL; - - sorted_scripts = find_scripts (str_action); - - request = g_slice_new0 (Request); - request->request_id = ++request_id_counter; - request->handler = h; - request->debug = request_debug || debug; - request->context = context; - request->action = g_strdup (str_action); - - request->envp = nm_dispatcher_utils_construct_envp (str_action, - connection_dict, - connection_props, - device_props, - device_ip4_props, - device_ip6_props, - device_dhcp4_props, - device_dhcp6_props, - connectivity_state, - vpn_ip_iface, - vpn_ip4_props, - vpn_ip6_props, - &request->iface, - &error_message); - - request->scripts = g_ptr_array_new_full (5, script_info_free); - for (iter = sorted_scripts; iter; iter = g_slist_next (iter)) { - ScriptInfo *s; - - s = g_slice_new0 (ScriptInfo); - s->request = request; - s->script = iter->data; - s->wait = script_must_wait (s->script); - g_ptr_array_add (request->scripts, s); - } - g_slist_free (sorted_scripts); - - _LOG_R_I (request, "new request (%u scripts)", request->scripts->len); - if ( _LOG_R_D_enabled (request) - && request->envp) { - for (p = request->envp; *p; p++) - _LOG_R_D (request, "environment: %s", *p); - } - - if (error_message || request->scripts->len == 0) { - GVariant *results; - - if (error_message) - _LOG_R_W (request, "completed: invalid request: %s", error_message); - else - _LOG_R_I (request, "completed: no scripts"); - - results = g_variant_new_array (G_VARIANT_TYPE ("(sus)"), NULL, 0); - g_dbus_method_invocation_return_value (context, g_variant_new ("(@a(sus))", results)); - request->num_scripts_done = request->scripts->len; - request_free (request); - return TRUE; - } - - nm_clear_g_source (&quit_id); - - h->num_requests_pending++; - - for (i = 0; i < request->scripts->len; i++) { - ScriptInfo *s = g_ptr_array_index (request->scripts, i); - - if (!s->wait) { - script_dispatch (s); - num_nowait++; - } - } - - if (num_nowait < request->scripts->len) { - /* The request has at least one wait script. - * Try next_request() to schedule the request for - * execution. This either enqueues the request or - * sets it as h->current_request. */ - if (next_request (h, request)) { - /* @request is now @current_request. Go ahead and - * schedule the first wait script. */ - if (!dispatch_one_script (request)) { - /* If that fails, we might be already finished with the - * request. Try complete_request(). */ - complete_request (request); - - if (next_request (h, NULL)) { - /* As @request was successfully scheduled as next_request(), there is no - * other request in queue that can be scheduled afterwards. Assert against - * that, but call next_request() to clear current_request. */ - g_assert_not_reached (); - } - } - } - } else { - /* The request contains only no-wait scripts. Try to complete - * the request right away (we might have failed to schedule any - * of the scripts). It will be either completed now, or later - * when the pending scripts return. - * We don't enqueue it to h->requests_waiting. - * There is no need to handle next_request(), because @request is - * not the current request anyway and does not interfere with requests - * that have any "wait" scripts. */ - complete_request (request); - } - - return TRUE; -} - -static gboolean ever_acquired_name = FALSE; - -static void -on_name_acquired (GDBusConnection *connection, - const char *name, - gpointer user_data) -{ - ever_acquired_name = TRUE; -} - -static void -on_name_lost (GDBusConnection *connection, - const char *name, - gpointer user_data) -{ - if (!connection) { - if (!ever_acquired_name) { - g_warning ("Could not get the system bus. Make sure the message bus daemon is running!"); - exit (1); - } else { - g_message ("System bus stopped. Exiting"); - exit (0); - } - } else if (!ever_acquired_name) { - g_warning ("Could not acquire the " NM_DISPATCHER_DBUS_SERVICE " service."); - exit (1); - } else { - g_message ("Lost the " NM_DISPATCHER_DBUS_SERVICE " name. Exiting"); - exit (0); - } -} - -static void -log_handler (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *message, - gpointer ignored) -{ - int syslog_priority; - - switch (log_level) { - case G_LOG_LEVEL_ERROR: - syslog_priority = LOG_CRIT; - break; - case G_LOG_LEVEL_CRITICAL: - syslog_priority = LOG_ERR; - break; - case G_LOG_LEVEL_WARNING: - syslog_priority = LOG_WARNING; - break; - case G_LOG_LEVEL_MESSAGE: - syslog_priority = LOG_NOTICE; - break; - case G_LOG_LEVEL_DEBUG: - syslog_priority = LOG_DEBUG; - break; - case G_LOG_LEVEL_INFO: - default: - syslog_priority = LOG_INFO; - break; - } - - syslog (syslog_priority, "%s", message); -} - - -static void -logging_setup (void) -{ - openlog (G_LOG_DOMAIN, LOG_CONS, LOG_DAEMON); - g_log_set_handler (G_LOG_DOMAIN, - G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, - log_handler, - NULL); -} - -static void -logging_shutdown (void) -{ - closelog (); -} - -static gboolean -signal_handler (gpointer user_data) -{ - int signo = GPOINTER_TO_INT (user_data); - - g_message ("Caught signal %d, shutting down...", signo); - g_main_loop_quit (loop); - - return G_SOURCE_REMOVE; -} - -int -main (int argc, char **argv) -{ - GOptionContext *opt_ctx; - GError *error = NULL; - GDBusConnection *bus; - Handler *handler; - - GOptionEntry entries[] = { - { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, "Output to console rather than syslog", NULL }, - { "persist", 0, 0, G_OPTION_ARG_NONE, &persist, "Don't quit after a short timeout", NULL }, - { NULL } - }; - - opt_ctx = g_option_context_new (NULL); - g_option_context_set_summary (opt_ctx, "Executes scripts upon actions by NetworkManager."); - g_option_context_add_main_entries (opt_ctx, entries, NULL); - - if (!g_option_context_parse (opt_ctx, &argc, &argv, &error)) { - g_warning ("Error parsing command line arguments: %s", error->message); - g_error_free (error); - return 1; - } - - g_option_context_free (opt_ctx); - - nm_g_type_init (); - - g_unix_signal_add (SIGTERM, signal_handler, GINT_TO_POINTER (SIGTERM)); - g_unix_signal_add (SIGINT, signal_handler, GINT_TO_POINTER (SIGINT)); - - - if (debug) { - if (!g_getenv ("G_MESSAGES_DEBUG")) { - /* we log our regular messages using g_debug() and g_info(). - * When we redirect glib logging to syslog, there is no problem. - * But in "debug" mode, glib will no print these messages unless - * we set G_MESSAGES_DEBUG. */ - g_setenv ("G_MESSAGES_DEBUG", "all", TRUE); - } - } else - logging_setup (); - - loop = g_main_loop_new (NULL, FALSE); - - bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error); - if (!bus) { - g_warning ("Could not get the system bus (%s). Make sure the message bus daemon is running!", - error->message); - g_error_free (error); - return 1; - } - - handler = g_object_new (HANDLER_TYPE, NULL); - g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (handler->dbus_dispatcher), - bus, - NM_DISPATCHER_DBUS_PATH, - &error); - if (error) { - g_warning ("Could not export Dispatcher D-Bus interface: %s", error->message); - g_error_free (error); - return 1; - } - - g_bus_own_name_on_connection (bus, - NM_DISPATCHER_DBUS_SERVICE, - G_BUS_NAME_OWNER_FLAGS_NONE, - on_name_acquired, - on_name_lost, - NULL, NULL); - g_object_unref (bus); - - quit_timeout_reschedule (); - - g_main_loop_run (loop); - - g_queue_free (handler->requests_waiting); - g_object_unref (handler); - - if (!debug) - logging_shutdown (); - - return 0; -} - diff --git a/callouts/nm-dispatcher.conf b/callouts/nm-dispatcher.conf deleted file mode 100644 index fd2f0e5a..00000000 --- a/callouts/nm-dispatcher.conf +++ /dev/null @@ -1,14 +0,0 @@ -<!DOCTYPE busconfig PUBLIC - "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - <policy user="root"> - <allow own="org.freedesktop.nm_dispatcher"/> - <allow send_destination="org.freedesktop.nm_dispatcher"/> - </policy> - <policy context="default"> - <deny own="org.freedesktop.nm_dispatcher"/> - <deny send_destination="org.freedesktop.nm_dispatcher"/> - </policy> -</busconfig> - diff --git a/callouts/nm-dispatcher.xml b/callouts/nm-dispatcher.xml deleted file mode 100644 index 6268f970..00000000 --- a/callouts/nm-dispatcher.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<node name="/"> - <interface name="org.freedesktop.nm_dispatcher"> - <annotation name="org.gtk.GDBus.C.Name" value="Dispatcher"/> - - <!-- - Action: - @action: The action being performed. - @connection: The connection for which this action was triggered. - @connection_properties: Properties of the connection, including service and path. - @device_properties: Properties of the device, including type, path, interface, and state. - @device_ip4_config: Properties of the device's IPv4 configuration. - @device_ip6_config: Properties of the device's IPv6 configuration. - @device_dhcp4_config: Properties of the device's DHCPv4 configuration. - @device_dhcp6_config: Properties of the device's DHCPv6 configuration. - @connectivity_state: Current connectivity state: unknown, none, limited, portal or full. - @vpn_ip_iface: VPN interface name. - @vpn_ip4_config: Properties of the VPN's IPv4 configuration. - @vpn_ip6_config: Properties of the VPN's IPv6 configuration. - @debug: Whether to log debug output. - @results: Results of dispatching operations. Each element of the returned array is a struct containing the path of an executed script (s), the result of running that script (u), and a description of the result (s). - - INTERNAL; not public API. Perform an action. - --> - <method name="Action"> - <arg name="action" type="s" direction="in"/> - <arg name="connection" type="a{sa{sv}}" direction="in"/> - <arg name="connection_properties" type="a{sv}" direction="in"/> - <arg name="device_properties" type="a{sv}" direction="in"/> - <arg name="device_ip4_config" type="a{sv}" direction="in"/> - <arg name="device_ip6_config" type="a{sv}" direction="in"/> - <arg name="device_dhcp4_config" type="a{sv}" direction="in"/> - <arg name="device_dhcp6_config" type="a{sv}" direction="in"/> - <arg name="connectivity_state" type="s" direction="in"/> - <arg name="vpn_ip_iface" type="s" direction="in"/> - <arg name="vpn_ip4_config" type="a{sv}" direction="in"/> - <arg name="vpn_ip6_config" type="a{sv}" direction="in"/> - <arg name="debug" type="b" direction="in"/> - <arg name="results" type="a(sus)" direction="out"/> - </method> - </interface> -</node> diff --git a/callouts/org.freedesktop.nm_dispatcher.service.in b/callouts/org.freedesktop.nm_dispatcher.service.in deleted file mode 100644 index ff037cca..00000000 --- a/callouts/org.freedesktop.nm_dispatcher.service.in +++ /dev/null @@ -1,6 +0,0 @@ -[D-BUS Service] -Name=org.freedesktop.nm_dispatcher -Exec=@libexecdir@/nm-dispatcher -User=root -SystemdService=dbus-org.freedesktop.nm-dispatcher.service - diff --git a/callouts/tests/Makefile.am b/callouts/tests/Makefile.am deleted file mode 100644 index 2450f372..00000000 --- a/callouts/tests/Makefile.am +++ /dev/null @@ -1,41 +0,0 @@ -if ENABLE_TESTS - -AM_CPPFLAGS = \ - -I$(top_srcdir)/shared \ - -I$(top_builddir)/shared \ - -I$(top_srcdir)/libnm-core \ - -I$(top_builddir)/libnm-core \ - -I$(top_srcdir)/callouts \ - -I$(top_builddir)/callouts \ - -DNETWORKMANAGER_COMPILATION \ - -DSRCDIR=\"$(abs_srcdir)\" \ - $(GLIB_CFLAGS) - -noinst_PROGRAMS = \ - test-dispatcher-envp - -####### dispatcher envp ####### - -test_dispatcher_envp_SOURCES = \ - test-dispatcher-envp.c - -test_dispatcher_envp_LDADD = \ - $(top_builddir)/libnm/libnm.la \ - $(top_builddir)/callouts/libtest-dispatcher-envp.la \ - $(GLIB_LIBS) - -########################################### - -@VALGRIND_RULES@ -TESTS = test-dispatcher-envp - -endif - -EXTRA_DIST= \ - dispatcher-connectivity-full \ - dispatcher-connectivity-unknown \ - dispatcher-down \ - dispatcher-external \ - dispatcher-up \ - dispatcher-vpn-down \ - dispatcher-vpn-up diff --git a/callouts/tests/Makefile.in b/callouts/tests/Makefile.in deleted file mode 100644 index a7b7cbdf..00000000 --- a/callouts/tests/Makefile.in +++ /dev/null @@ -1,1159 +0,0 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@ENABLE_TESTS_TRUE@noinst_PROGRAMS = test-dispatcher-envp$(EXEEXT) -@ENABLE_TESTS_TRUE@TESTS = test-dispatcher-envp$(EXEEXT) -subdir = callouts/tests -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/ax_lib_readline.m4 \ - $(top_srcdir)/m4/compiler_options.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/git-sha-record.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/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) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am__test_dispatcher_envp_SOURCES_DIST = test-dispatcher-envp.c -@ENABLE_TESTS_TRUE@am_test_dispatcher_envp_OBJECTS = \ -@ENABLE_TESTS_TRUE@ test-dispatcher-envp.$(OBJEXT) -test_dispatcher_envp_OBJECTS = $(am_test_dispatcher_envp_OBJECTS) -am__DEPENDENCIES_1 = -@ENABLE_TESTS_TRUE@test_dispatcher_envp_DEPENDENCIES = \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm/libnm.la \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/callouts/libtest-dispatcher-envp.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__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(test_dispatcher_envp_SOURCES) -DIST_SOURCES = $(am__test_dispatcher_envp_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red='[0;31m'; \ - grn='[0;32m'; \ - lgn='[1;32m'; \ - blu='[1;34m'; \ - mgn='[0;35m'; \ - brg='[1m'; \ - std='[m'; \ - fi; \ -} -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__recheck_rx = ^[ ]*:recheck:[ ]* -am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* -am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* -# A command that, given a newline-separated list of test names on the -# standard input, print the name of the tests that are to be re-run -# upon "make recheck". -am__list_recheck_tests = $(AWK) '{ \ - recheck = 1; \ - while ((rc = (getline line < ($$0 ".trs"))) != 0) \ - { \ - if (rc < 0) \ - { \ - if ((getline line2 < ($$0 ".log")) < 0) \ - recheck = 0; \ - break; \ - } \ - else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ - { \ - recheck = 0; \ - break; \ - } \ - else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ - { \ - break; \ - } \ - }; \ - if (recheck) \ - print $$0; \ - close ($$0 ".trs"); \ - close ($$0 ".log"); \ -}' -# A command that, given a newline-separated list of test names on the -# standard input, create the global log from their .trs and .log files. -am__create_global_log = $(AWK) ' \ -function fatal(msg) \ -{ \ - print "fatal: making $@: " msg | "cat >&2"; \ - exit 1; \ -} \ -function rst_section(header) \ -{ \ - print header; \ - len = length(header); \ - for (i = 1; i <= len; i = i + 1) \ - printf "="; \ - printf "\n\n"; \ -} \ -{ \ - copy_in_global_log = 1; \ - global_test_result = "RUN"; \ - while ((rc = (getline line < ($$0 ".trs"))) != 0) \ - { \ - if (rc < 0) \ - fatal("failed to read from " $$0 ".trs"); \ - if (line ~ /$(am__global_test_result_rx)/) \ - { \ - sub("$(am__global_test_result_rx)", "", line); \ - sub("[ ]*$$", "", line); \ - global_test_result = line; \ - } \ - else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ - copy_in_global_log = 0; \ - }; \ - if (copy_in_global_log) \ - { \ - rst_section(global_test_result ": " $$0); \ - while ((rc = (getline line < ($$0 ".log"))) != 0) \ - { \ - if (rc < 0) \ - fatal("failed to read from " $$0 ".log"); \ - print line; \ - }; \ - printf "\n"; \ - }; \ - close ($$0 ".trs"); \ - close ($$0 ".log"); \ -}' -# Restructured Text title. -am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } -# Solaris 10 'make', and several other traditional 'make' implementations, -# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it -# by disabling -e (using the XSI extension "set +e") if it's set. -am__sh_e_setup = case $$- in *e*) set +e;; esac -# Default flags passed to test drivers. -am__common_driver_flags = \ - --color-tests "$$am__color_tests" \ - --enable-hard-errors "$$am__enable_hard_errors" \ - --expect-failure "$$am__expect_failure" -# To be inserted before the command running the test. Creates the -# directory for the log if needed. Stores in $dir the directory -# containing $f, in $tst the test, in $log the log. Executes the -# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and -# passes TESTS_ENVIRONMENT. Set up options for the wrapper that -# will run the test scripts (or their associated LOG_COMPILER, if -# thy have one). -am__check_pre = \ -$(am__sh_e_setup); \ -$(am__vpath_adj_setup) $(am__vpath_adj) \ -$(am__tty_colors); \ -srcdir=$(srcdir); export srcdir; \ -case "$@" in \ - */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ - *) am__odir=.;; \ -esac; \ -test "x$$am__odir" = x"." || test -d "$$am__odir" \ - || $(MKDIR_P) "$$am__odir" || exit $$?; \ -if test -f "./$$f"; then dir=./; \ -elif test -f "$$f"; then dir=; \ -else dir="$(srcdir)/"; fi; \ -tst=$$dir$$f; log='$@'; \ -if test -n '$(DISABLE_HARD_ERRORS)'; then \ - am__enable_hard_errors=no; \ -else \ - am__enable_hard_errors=yes; \ -fi; \ -case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ - am__expect_failure=yes;; \ - *) \ - am__expect_failure=no;; \ -esac; \ -$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) -# A shell command to get the names of the tests scripts with any registered -# extension removed (i.e., equivalently, the names of the test logs, with -# the '.log' extension removed). The result is saved in the shell variable -# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, -# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", -# since that might cause problem with VPATH rewrites for suffix-less tests. -# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. -am__set_TESTS_bases = \ - bases='$(TEST_LOGS)'; \ - bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ - bases=`echo $$bases` -RECHECK_LOGS = $(TEST_LOGS) -AM_RECURSIVE_TARGETS = check recheck -TEST_SUITE_LOG = test-suite.log -TEST_EXTENSIONS = @EXEEXT@ .test -LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) -am__set_b = \ - case '$@' in \ - */*) \ - case '$*' in \ - */*) b='$*';; \ - *) b=`echo '$@' | sed 's/\.log$$//'`; \ - esac;; \ - *) \ - b='$*';; \ - esac -am__test_logs1 = $(TESTS:=.log) -am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) -TEST_LOGS = $(am__test_logs2:.test.log=.log) -TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver -TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ - $(TEST_LOG_FLAGS) -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/build-aux/depcomp \ - $(top_srcdir)/build-aux/test-driver -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALL_LINGUAS = @ALL_LINGUAS@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_TESTS_FD_REDIRECT = @AM_TESTS_FD_REDIRECT@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BLUEZ5_CFLAGS = @BLUEZ5_CFLAGS@ -BLUEZ5_LIBS = @BLUEZ5_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ -CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ -CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DBUS_SYS_DIR = @DBUS_SYS_DIR@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DHCLIENT_PATH = @DHCLIENT_PATH@ -DHCPCD_PATH = @DHCPCD_PATH@ -DISTRO_NETWORK_SERVICE = @DISTRO_NETWORK_SERVICE@ -DLLTOOL = @DLLTOOL@ -DL_LIBS = @DL_LIBS@ -DNSMASQ_PATH = @DNSMASQ_PATH@ -DNSSEC_TRIGGER_SCRIPT = @DNSSEC_TRIGGER_SCRIPT@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GENHTML = @GENHTML@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MAKEFILE = @GLIB_MAKEFILE@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ -GNUTLS_LIBS = @GNUTLS_LIBS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -GUDEV_CFLAGS = @GUDEV_CFLAGS@ -GUDEV_LIBS = @GUDEV_LIBS@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_PERL = @INTLTOOL_PERL@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ -INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ -INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ -INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -IPTABLES_PATH = @IPTABLES_PATH@ -JANSSON_CFLAGS = @JANSSON_CFLAGS@ -JANSSON_LIBS = @JANSSON_LIBS@ -KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBAUDIT_CFLAGS = @LIBAUDIT_CFLAGS@ -LIBAUDIT_LIBS = @LIBAUDIT_LIBS@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBM = @LIBM@ -LIBNDP_CFLAGS = @LIBNDP_CFLAGS@ -LIBNDP_LIBS = @LIBNDP_LIBS@ -LIBNL_CFLAGS = @LIBNL_CFLAGS@ -LIBNL_LIBS = @LIBNL_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@ -LIBSOUP_LIBS = @LIBSOUP_LIBS@ -LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@ -LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@ -LIBTEAMDCTL_CFLAGS = @LIBTEAMDCTL_CFLAGS@ -LIBTEAMDCTL_LIBS = @LIBTEAMDCTL_LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LOG_DRIVER = @LOG_DRIVER@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -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@ -MSGMERGE = @MSGMERGE@ -NEWT_CFLAGS = @NEWT_CFLAGS@ -NEWT_LIBS = @NEWT_LIBS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT = @NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT@ -NM_CONFIG_DEFAULT_DNS_RC_MANAGER = @NM_CONFIG_DEFAULT_DNS_RC_MANAGER@ -NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT = @NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT@ -NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT = @NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT@ -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@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POLKIT_CFLAGS = @POLKIT_CFLAGS@ -POLKIT_LIBS = @POLKIT_LIBS@ -POSUB = @POSUB@ -PPPD_PATH = @PPPD_PATH@ -PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ -QT_CFLAGS = @QT_CFLAGS@ -QT_LIBS = @QT_LIBS@ -RANLIB = @RANLIB@ -READLINE_LIBS = @READLINE_LIBS@ -SANITIZERS = @SANITIZERS@ -SANITIZER_ENV = @SANITIZER_ENV@ -SED = @SED@ -SELINUX_CFLAGS = @SELINUX_CFLAGS@ -SELINUX_LIBS = @SELINUX_LIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -SYSTEMD_200_CFLAGS = @SYSTEMD_200_CFLAGS@ -SYSTEMD_200_LIBS = @SYSTEMD_200_LIBS@ -SYSTEMD_INHIBIT_CFLAGS = @SYSTEMD_INHIBIT_CFLAGS@ -SYSTEMD_INHIBIT_LIBS = @SYSTEMD_INHIBIT_LIBS@ -SYSTEMD_JOURNAL_CFLAGS = @SYSTEMD_JOURNAL_CFLAGS@ -SYSTEMD_JOURNAL_LIBS = @SYSTEMD_JOURNAL_LIBS@ -SYSTEMD_LOGIN_CFLAGS = @SYSTEMD_LOGIN_CFLAGS@ -SYSTEMD_LOGIN_LIBS = @SYSTEMD_LOGIN_LIBS@ -SYSTEM_CA_PATH = @SYSTEM_CA_PATH@ -UDEV_DIR = @UDEV_DIR@ -USE_NLS = @USE_NLS@ -UUID_CFLAGS = @UUID_CFLAGS@ -UUID_LIBS = @UUID_LIBS@ -VALGRIND_RULES = @VALGRIND_RULES@ -VAPIGEN = @VAPIGEN@ -VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ -VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -intltool__v_merge_options_ = @intltool__v_merge_options_@ -intltool__v_merge_options_0 = @intltool__v_merge_options_0@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -nmbinary = @nmbinary@ -nmconfdir = @nmconfdir@ -nmdatadir = @nmdatadir@ -nmlibdir = @nmlibdir@ -nmrundir = @nmrundir@ -nmstatedir = @nmstatedir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -systemdsystemunitdir = @systemdsystemunitdir@ -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@ -with_valgrind = @with_valgrind@ -@ENABLE_TESTS_TRUE@AM_CPPFLAGS = \ -@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/shared \ -@ENABLE_TESTS_TRUE@ -I$(top_builddir)/shared \ -@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/libnm-core \ -@ENABLE_TESTS_TRUE@ -I$(top_builddir)/libnm-core \ -@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/callouts \ -@ENABLE_TESTS_TRUE@ -I$(top_builddir)/callouts \ -@ENABLE_TESTS_TRUE@ -DNETWORKMANAGER_COMPILATION \ -@ENABLE_TESTS_TRUE@ -DSRCDIR=\"$(abs_srcdir)\" \ -@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) - - -####### dispatcher envp ####### -@ENABLE_TESTS_TRUE@test_dispatcher_envp_SOURCES = \ -@ENABLE_TESTS_TRUE@ test-dispatcher-envp.c - -@ENABLE_TESTS_TRUE@test_dispatcher_envp_LDADD = \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/libnm/libnm.la \ -@ENABLE_TESTS_TRUE@ $(top_builddir)/callouts/libtest-dispatcher-envp.la \ -@ENABLE_TESTS_TRUE@ $(GLIB_LIBS) - -EXTRA_DIST = \ - dispatcher-connectivity-full \ - dispatcher-connectivity-unknown \ - dispatcher-down \ - dispatcher-external \ - dispatcher-up \ - dispatcher-vpn-down \ - dispatcher-vpn-up - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu callouts/tests/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu callouts/tests/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -test-dispatcher-envp$(EXEEXT): $(test_dispatcher_envp_OBJECTS) $(test_dispatcher_envp_DEPENDENCIES) $(EXTRA_test_dispatcher_envp_DEPENDENCIES) - @rm -f test-dispatcher-envp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_dispatcher_envp_OBJECTS) $(test_dispatcher_envp_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dispatcher-envp.Po@am__quote@ - -.c.o: -@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 $@ $< - -.c.obj: -@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) '$<'` - -.c.lo: -@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 $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -# Recover from deleted '.trs' file; this should ensure that -# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create -# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells -# to avoid problems with "make -n". -.log.trs: - rm -f $< $@ - $(MAKE) $(AM_MAKEFLAGS) $< - -# Leading 'am--fnord' is there to ensure the list of targets does not -# expand to empty, as could happen e.g. with make check TESTS=''. -am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) -am--force-recheck: - @: - -$(TEST_SUITE_LOG): $(TEST_LOGS) - @$(am__set_TESTS_bases); \ - am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ - redo_bases=`for i in $$bases; do \ - am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ - done`; \ - if test -n "$$redo_bases"; then \ - redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ - redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ - if $(am__make_dryrun); then :; else \ - rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ - fi; \ - fi; \ - if test -n "$$am__remaking_logs"; then \ - echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ - "recursion detected" >&2; \ - elif test -n "$$redo_logs"; then \ - am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ - fi; \ - if $(am__make_dryrun); then :; else \ - st=0; \ - errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ - for i in $$redo_bases; do \ - test -f $$i.trs && test -r $$i.trs \ - || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ - test -f $$i.log && test -r $$i.log \ - || { echo "$$errmsg $$i.log" >&2; st=1; }; \ - done; \ - test $$st -eq 0 || exit 1; \ - fi - @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ - ws='[ ]'; \ - results=`for b in $$bases; do echo $$b.trs; done`; \ - test -n "$$results" || results=/dev/null; \ - all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ - pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ - fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ - skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ - xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ - xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ - error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ - if test `expr $$fail + $$xpass + $$error` -eq 0; then \ - success=true; \ - else \ - success=false; \ - fi; \ - br='==================='; br=$$br$$br$$br$$br; \ - result_count () \ - { \ - if test x"$$1" = x"--maybe-color"; then \ - maybe_colorize=yes; \ - elif test x"$$1" = x"--no-color"; then \ - maybe_colorize=no; \ - else \ - echo "$@: invalid 'result_count' usage" >&2; exit 4; \ - fi; \ - shift; \ - desc=$$1 count=$$2; \ - if test $$maybe_colorize = yes && test $$count -gt 0; then \ - color_start=$$3 color_end=$$std; \ - else \ - color_start= color_end=; \ - fi; \ - echo "$${color_start}# $$desc $$count$${color_end}"; \ - }; \ - create_testsuite_report () \ - { \ - result_count $$1 "TOTAL:" $$all "$$brg"; \ - result_count $$1 "PASS: " $$pass "$$grn"; \ - result_count $$1 "SKIP: " $$skip "$$blu"; \ - result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ - result_count $$1 "FAIL: " $$fail "$$red"; \ - result_count $$1 "XPASS:" $$xpass "$$red"; \ - result_count $$1 "ERROR:" $$error "$$mgn"; \ - }; \ - { \ - echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ - $(am__rst_title); \ - create_testsuite_report --no-color; \ - echo; \ - echo ".. contents:: :depth: 2"; \ - echo; \ - for b in $$bases; do echo $$b; done \ - | $(am__create_global_log); \ - } >$(TEST_SUITE_LOG).tmp || exit 1; \ - mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ - if $$success; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ - fi; \ - echo "$${col}$$br$${std}"; \ - echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ - echo "$${col}$$br$${std}"; \ - create_testsuite_report --maybe-color; \ - echo "$$col$$br$$std"; \ - if $$success; then :; else \ - echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ - if test -n "$(PACKAGE_BUGREPORT)"; then \ - echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ - fi; \ - echo "$$col$$br$$std"; \ - fi; \ - $$success || exit 1 - -check-TESTS: - @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list - @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - @set +e; $(am__set_TESTS_bases); \ - log_list=`for i in $$bases; do echo $$i.log; done`; \ - trs_list=`for i in $$bases; do echo $$i.trs; done`; \ - log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ - exit $$?; -recheck: all - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - @set +e; $(am__set_TESTS_bases); \ - bases=`for i in $$bases; do echo $$i; done \ - | $(am__list_recheck_tests)` || exit 1; \ - log_list=`for i in $$bases; do echo $$i.log; done`; \ - log_list=`echo $$log_list`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ - am__force_recheck=am--force-recheck \ - TEST_LOGS="$$log_list"; \ - exit $$? -test-dispatcher-envp.log: test-dispatcher-envp$(EXEEXT) - @p='test-dispatcher-envp$(EXEEXT)'; \ - b='test-dispatcher-envp'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -.test.log: - @p='$<'; \ - $(am__set_b); \ - $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -@am__EXEEXT_TRUE@.test$(EXEEXT).log: -@am__EXEEXT_TRUE@ @p='$<'; \ -@am__EXEEXT_TRUE@ $(am__set_b); \ -@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ -@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ -@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ -@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) - -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) - -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ - clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - recheck tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -########################################### - -@ENABLE_TESTS_TRUE@@VALGRIND_RULES@ - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/callouts/tests/dispatcher-connectivity-full b/callouts/tests/dispatcher-connectivity-full deleted file mode 100644 index c370bc35..00000000 --- a/callouts/tests/dispatcher-connectivity-full +++ /dev/null @@ -1,23 +0,0 @@ -[main] -action=connectiviy-change -expected-iface=wlan0 -uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 -id=Random Connection -connectivity-state=FULL - -[device] -state=30 -ip-interface=wlan0 -type=2 -interface=wlan0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[env] -PATH= -CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/callouts/tests/dispatcher-connectivity-full -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=wlan0 -CONNECTIVITY_STATE=FULL diff --git a/callouts/tests/dispatcher-connectivity-unknown b/callouts/tests/dispatcher-connectivity-unknown deleted file mode 100644 index 9622d017..00000000 --- a/callouts/tests/dispatcher-connectivity-unknown +++ /dev/null @@ -1,22 +0,0 @@ -[main] -action=connectiviy-change -expected-iface=wlan0 -uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 -id=Random Connection -connectivity-state=UNKNOWN - -[device] -state=30 -ip-interface=wlan0 -type=2 -interface=wlan0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[env] -PATH= -CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/callouts/tests/dispatcher-connectivity-unknown -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=wlan0 diff --git a/callouts/tests/dispatcher-down b/callouts/tests/dispatcher-down deleted file mode 100644 index f766595c..00000000 --- a/callouts/tests/dispatcher-down +++ /dev/null @@ -1,22 +0,0 @@ -[main] -action=down -expected-iface=wlan0 -uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 -id=Random Connection - -[device] -state=30 -ip-interface=wlan0 -type=2 -interface=wlan0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[env] -PATH= -CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/callouts/tests/dispatcher-down -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=wlan0 - diff --git a/callouts/tests/dispatcher-external b/callouts/tests/dispatcher-external deleted file mode 100644 index 5430bec2..00000000 --- a/callouts/tests/dispatcher-external +++ /dev/null @@ -1,33 +0,0 @@ -[main] -action=up -expected-iface=virbr0 -uuid=92bbc2fb-7304-46be-8ebb-6093dbe19a6a -id=virbr0 -external=1 - -[device] -state=100 -ip-interface=virbr0 -type=13 -interface=virbr0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[ip4] -addresses=192.168.122.1/24 0.0.0.0 -domains= -gateway=0.0.0.0 - -[env] -PATH= -CONNECTION_UUID=92bbc2fb-7304-46be-8ebb-6093dbe19a6a -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_FILENAME=/callouts/tests/dispatcher-external -CONNECTION_ID=virbr0 -CONNECTION_EXTERNAL=1 -DEVICE_IFACE=virbr0 -DEVICE_IP_IFACE=virbr0 -IP4_NUM_ADDRESSES=1 -IP4_ADDRESS_0=192.168.122.1/24 0.0.0.0 -IP4_GATEWAY=0.0.0.0 -IP4_NUM_ROUTES=0 - diff --git a/callouts/tests/dispatcher-up b/callouts/tests/dispatcher-up deleted file mode 100644 index 463409e2..00000000 --- a/callouts/tests/dispatcher-up +++ /dev/null @@ -1,59 +0,0 @@ -[main] -action=up -expected-iface=wlan0 -uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 -id=Random Connection - -[device] -state=100 -ip-interface=wlan0 -type=2 -interface=wlan0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[dhcp4] -netbios_name_servers=0.0.0.0 -domain_name_servers=68.87.77.134 68.87.72.134 192.168.1.1 -dhcp_lease_time=86400 -network_number=192.168.1.0 -domain_name=hsd1.mn.comcast.net. -ip_address=192.168.1.119 -dhcp_message_type=5 -dhcp_server_identifier=192.168.1.1 -routers=192.168.1.1 -broadcast_address=192.168.1.255 -subnet_mask=255.255.255.0 -expiry=1304300446 - -[ip4] -addresses=192.168.1.119/24 192.168.1.1 -nameservers=68.87.77.134 68.87.72.134 192.168.1.1 -domains=hsd1.mn.comcast.net. - -[env] -PATH= -CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/callouts/tests/dispatcher-up -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=wlan0 -IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1 -IP4_NUM_ADDRESSES=1 -IP4_NAMESERVERS=68.87.77.134 68.87.72.134 192.168.1.1 -IP4_GATEWAY=192.168.1.1 -IP4_DOMAINS=hsd1.mn.comcast.net. -IP4_NUM_ROUTES=0 -DHCP4_NETBIOS_NAME_SERVERS=0.0.0.0 -DHCP4_DOMAIN_NAME_SERVERS=68.87.77.134 68.87.72.134 192.168.1.1 -DHCP4_DHCP_LEASE_TIME=86400 -DHCP4_NETWORK_NUMBER=192.168.1.0 -DHCP4_DOMAIN_NAME=hsd1.mn.comcast.net. -DHCP4_IP_ADDRESS=192.168.1.119 -DHCP4_DHCP_MESSAGE_TYPE=5 -DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1 -DHCP4_ROUTERS=192.168.1.1 -DHCP4_BROADCAST_ADDRESS=192.168.1.255 -DHCP4_SUBNET_MASK=255.255.255.0 -DHCP4_EXPIRY=1304300446 - diff --git a/callouts/tests/dispatcher-vpn-down b/callouts/tests/dispatcher-vpn-down deleted file mode 100644 index 18267f84..00000000 --- a/callouts/tests/dispatcher-vpn-down +++ /dev/null @@ -1,58 +0,0 @@ -[main] -action=vpn-down -expected-iface=tun0 -uuid=355653c0-34d3-4777-ad25-f9a498b7ef8e -id=Random Connection - -[device] -state=100 -ip-interface=tun0 -type=2 -interface=wlan0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[dhcp4] -netbios_name_servers=0.0.0.0 -domain_name_servers=68.87.77.134 68.87.72.134 192.168.1.1 -dhcp_lease_time=86400 -network_number=192.168.1.0 -domain_name=hsd1.mn.comcast.net. -ip_address=192.168.1.119 -dhcp_message_type=5 -dhcp_server_identifier=192.168.1.1 -routers=192.168.1.1 -broadcast_address=192.168.1.255 -subnet_mask=255.255.255.0 -expiry=1304349405 - -[ip4] -addresses=192.168.1.119/24 192.168.1.1 -nameservers=68.87.77.134 68.87.72.134 192.168.1.1 -domains=hsd1.mn.comcast.net. - -[env] -PATH= -CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/callouts/tests/dispatcher-vpn-down -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=tun0 -IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1 -IP4_NUM_ADDRESSES=1 -IP4_NAMESERVERS=68.87.77.134 68.87.72.134 192.168.1.1 -IP4_GATEWAY=192.168.1.1 -IP4_DOMAINS=hsd1.mn.comcast.net. -IP4_NUM_ROUTES=0 -DHCP4_NETBIOS_NAME_SERVERS=0.0.0.0 -DHCP4_DOMAIN_NAME_SERVERS=68.87.77.134 68.87.72.134 192.168.1.1 -DHCP4_DHCP_LEASE_TIME=86400 -DHCP4_NETWORK_NUMBER=192.168.1.0 -DHCP4_DOMAIN_NAME=hsd1.mn.comcast.net. -DHCP4_IP_ADDRESS=192.168.1.119 -DHCP4_DHCP_MESSAGE_TYPE=5 -DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1 -DHCP4_ROUTERS=192.168.1.1 -DHCP4_BROADCAST_ADDRESS=192.168.1.255 -DHCP4_SUBNET_MASK=255.255.255.0 -DHCP4_EXPIRY=1304349405 diff --git a/callouts/tests/dispatcher-vpn-up b/callouts/tests/dispatcher-vpn-up deleted file mode 100644 index 181ecb53..00000000 --- a/callouts/tests/dispatcher-vpn-up +++ /dev/null @@ -1,58 +0,0 @@ -[main] -action=vpn-up -expected-iface=tun0 -uuid=355653c0-34d3-4777-ad25-f9a498b7ef8e -id=Random Connection - -[device] -state=100 -ip-interface=tun0 -type=2 -interface=wlan0 -path=/org/freedesktop/NetworkManager/Devices/0 - -[dhcp4] -netbios_name_servers=0.0.0.0 -domain_name_servers=68.87.77.134 68.87.72.134 192.168.1.1 -dhcp_lease_time=86400 -network_number=192.168.1.0 -domain_name=hsd1.mn.comcast.net. -ip_address=192.168.1.119 -dhcp_message_type=5 -dhcp_server_identifier=192.168.1.1 -routers=192.168.1.1 -broadcast_address=192.168.1.255 -subnet_mask=255.255.255.0 -expiry=1304349405 - -[ip4] -addresses=192.168.1.119/24 192.168.1.1 -nameservers=68.87.77.134 68.87.72.134 192.168.1.1 -domains=hsd1.mn.comcast.net. - -[env] -PATH= -CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/callouts/tests/dispatcher-vpn-up -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=tun0 -IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1 -IP4_NUM_ADDRESSES=1 -IP4_NAMESERVERS=68.87.77.134 68.87.72.134 192.168.1.1 -IP4_GATEWAY=192.168.1.1 -IP4_DOMAINS=hsd1.mn.comcast.net. -IP4_NUM_ROUTES=0 -DHCP4_NETBIOS_NAME_SERVERS=0.0.0.0 -DHCP4_DOMAIN_NAME_SERVERS=68.87.77.134 68.87.72.134 192.168.1.1 -DHCP4_DHCP_LEASE_TIME=86400 -DHCP4_NETWORK_NUMBER=192.168.1.0 -DHCP4_DOMAIN_NAME=hsd1.mn.comcast.net. -DHCP4_IP_ADDRESS=192.168.1.119 -DHCP4_DHCP_MESSAGE_TYPE=5 -DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1 -DHCP4_ROUTERS=192.168.1.1 -DHCP4_BROADCAST_ADDRESS=192.168.1.255 -DHCP4_SUBNET_MASK=255.255.255.0 -DHCP4_EXPIRY=1304349405 diff --git a/callouts/tests/test-dispatcher-envp.c b/callouts/tests/test-dispatcher-envp.c deleted file mode 100644 index 8636f097..00000000 --- a/callouts/tests/test-dispatcher-envp.c +++ /dev/null @@ -1,629 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2011 Red Hat, Inc. - * - */ - -#include "nm-default.h" - -#include <arpa/inet.h> -#include <stdlib.h> -#include <string.h> - -#include "nm-core-internal.h" -#include "nm-dispatcher-utils.h" -#include "nm-dispatcher-api.h" - -#include "nm-utils/nm-test-utils.h" - -/*******************************************/ - -static gboolean -parse_main (GKeyFile *kf, - const char *filename, - GVariant **out_con_dict, - GVariant **out_con_props, - char **out_expected_iface, - char **out_action, - char **out_connectivity_state, - char **out_vpn_ip_iface, - GError **error) -{ - char *uuid, *id; - NMConnection *connection; - NMSettingConnection *s_con; - GVariantBuilder props; - - *out_expected_iface = g_key_file_get_string (kf, "main", "expected-iface", error); - if (*out_expected_iface == NULL) - return FALSE; - - *out_connectivity_state = g_key_file_get_string (kf, "main", "connectivity-state", NULL); - *out_vpn_ip_iface = g_key_file_get_string (kf, "main", "vpn-ip-iface", NULL); - - *out_action = g_key_file_get_string (kf, "main", "action", error); - if (*out_action == NULL) - return FALSE; - - uuid = g_key_file_get_string (kf, "main", "uuid", error); - if (uuid == NULL) - return FALSE; - id = g_key_file_get_string (kf, "main", "id", error); - if (id == NULL) - return FALSE; - - connection = nm_simple_connection_new (); - g_assert (connection); - s_con = (NMSettingConnection *) nm_setting_connection_new (); - g_assert (s_con); - g_object_set (s_con, - NM_SETTING_CONNECTION_UUID, uuid, - NM_SETTING_CONNECTION_ID, id, - NULL); - g_free (uuid); - g_free (id); - nm_connection_add_setting (connection, NM_SETTING (s_con)); - - *out_con_dict = nm_connection_to_dbus (connection, NM_CONNECTION_SERIALIZE_ALL); - g_object_unref (connection); - - g_variant_builder_init (&props, G_VARIANT_TYPE ("a{sv}")); - g_variant_builder_add (&props, "{sv}", - NMD_CONNECTION_PROPS_PATH, - g_variant_new_object_path ("/org/freedesktop/NetworkManager/Connections/5")); - - /* Strip out the non-fixed portion of the filename */ - filename = strstr (filename, "/callouts"); - g_variant_builder_add (&props, "{sv}", - "filename", - g_variant_new_string (filename)); - - if (g_key_file_get_boolean (kf, "main", "external", NULL)) { - g_variant_builder_add (&props, "{sv}", - "external", - g_variant_new_boolean (TRUE)); - } - - *out_con_props = g_variant_builder_end (&props); - - return TRUE; -} - -static gboolean -parse_device (GKeyFile *kf, GVariant **out_device_props, GError **error) -{ - GVariantBuilder props; - char *tmp; - gint i; - - g_variant_builder_init (&props, G_VARIANT_TYPE ("a{sv}")); - - i = g_key_file_get_integer (kf, "device", "state", error); - if (i == 0) - return FALSE; - g_variant_builder_add (&props, "{sv}", - NMD_DEVICE_PROPS_STATE, - g_variant_new_uint32 (i)); - - i = g_key_file_get_integer (kf, "device", "type", error); - if (i == 0) - return FALSE; - g_variant_builder_add (&props, "{sv}", - NMD_DEVICE_PROPS_TYPE, - g_variant_new_uint32 (i)); - - tmp = g_key_file_get_string (kf, "device", "interface", error); - if (tmp == NULL) - return FALSE; - g_variant_builder_add (&props, "{sv}", - NMD_DEVICE_PROPS_INTERFACE, - g_variant_new_string (tmp)); - g_free (tmp); - - tmp = g_key_file_get_string (kf, "device", "ip-interface", error); - if (tmp == NULL) - return FALSE; - g_variant_builder_add (&props, "{sv}", - NMD_DEVICE_PROPS_IP_INTERFACE, - g_variant_new_string (tmp)); - g_free (tmp); - - tmp = g_key_file_get_string (kf, "device", "path", error); - if (tmp == NULL) - return FALSE; - g_variant_builder_add (&props, "{sv}", - NMD_DEVICE_PROPS_PATH, - g_variant_new_object_path (tmp)); - g_free (tmp); - - *out_device_props = g_variant_builder_end (&props); - return TRUE; -} - -static gboolean -add_uint_array (GKeyFile *kf, - GVariantBuilder *props, - const char *section, - const char *key, - GError **error) -{ - char *tmp; - char **split, **iter; - GArray *items; - - tmp = g_key_file_get_string (kf, section, key, error); - if (tmp == NULL) { - g_clear_error (error); - return TRUE; - } - split = g_strsplit_set (tmp, " ", -1); - g_free (tmp); - - if (g_strv_length (split) > 0) { - items = g_array_sized_new (FALSE, TRUE, sizeof (guint32), g_strv_length (split)); - for (iter = split; iter && *iter; iter++) { - if (strlen (g_strstrip (*iter))) { - guint32 addr; - - g_assert_cmpint (inet_pton (AF_INET, *iter, &addr), ==, 1); - g_array_append_val (items, addr); - } - } - g_variant_builder_add (props, "{sv}", key, - g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32, - items->data, items->len, - sizeof (guint32))); - g_array_unref (items); - } - g_strfreev (split); - return TRUE; -} - -static gboolean -parse_ip4 (GKeyFile *kf, GVariant **out_props, const char *section, GError **error) -{ - GVariantBuilder props; - char *tmp; - char **split, **iter; - GPtrArray *addresses, *routes; - const char *gateway = NULL; - - g_variant_builder_init (&props, G_VARIANT_TYPE ("a{sv}")); - - /* search domains */ - /* Use char** for domains. (DBUS_TYPE_G_ARRAY_OF_STRING of NMIP4Config - * becomes G_TYPE_STRV when sending the value over D-Bus) - */ - tmp = g_key_file_get_string (kf, section, "domains", error); - if (tmp == NULL) - return FALSE; - split = g_strsplit_set (tmp, " ", -1); - g_free (tmp); - - if (split && g_strv_length (split) > 0) { - for (iter = split; iter && *iter; iter++) - g_strstrip (*iter); - g_variant_builder_add (&props, "{sv}", "domains", g_variant_new_strv ((gpointer) split, -1)); - } - g_strfreev (split); - - /* nameservers */ - if (!add_uint_array (kf, &props, "ip4", "nameservers", error)) - return FALSE; - /* wins-servers */ - if (!add_uint_array (kf, &props, "ip4", "wins-servers", error)) - return FALSE; - - /* Addresses */ - tmp = g_key_file_get_string (kf, section, "addresses", error); - if (tmp == NULL) - return FALSE; - split = g_strsplit_set (tmp, ",", -1); - g_free (tmp); - - if (split && g_strv_length (split) > 0) { - addresses = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_address_unref); - for (iter = split; iter && *iter; iter++) { - NMIPAddress *addr; - char *ip, *prefix; - - if (strlen (g_strstrip (*iter)) == 0) - continue; - - ip = *iter; - - prefix = strchr (ip, '/'); - g_assert (prefix); - *prefix++ = '\0'; - - if (addresses->len == 0) { - gateway = strchr (prefix, ' '); - g_assert (gateway); - gateway++; - } - - addr = nm_ip_address_new (AF_INET, ip, (guint) atoi (prefix), error); - if (!addr) { - g_ptr_array_unref (addresses); - return FALSE; - } - g_ptr_array_add (addresses, addr); - } - - g_variant_builder_add (&props, "{sv}", "addresses", - nm_utils_ip4_addresses_to_variant (addresses, gateway)); - g_ptr_array_unref (addresses); - } - g_strfreev (split); - - /* Routes */ - tmp = g_key_file_get_string (kf, section, "routes", error); - g_clear_error (error); - if (tmp) { - split = g_strsplit_set (tmp, ",", -1); - g_free (tmp); - - if (split && g_strv_length (split) > 0) { - routes = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_route_unref); - for (iter = split; iter && *iter; iter++) { - NMIPRoute *route; - char *dest, *prefix, *next_hop, *metric; - - if (strlen (g_strstrip (*iter)) == 0) - continue; - - dest = *iter; - - prefix = strchr (dest, '/'); - g_assert (prefix); - *prefix++ = '\0'; - - next_hop = strchr (prefix, ' '); - g_assert (next_hop); - next_hop++; - - metric = strchr (next_hop, ' '); - g_assert (metric); - metric++; - - route = nm_ip_route_new (AF_INET, - dest, (guint) atoi (prefix), - next_hop, (guint) atoi (metric), - error); - if (!route) { - g_ptr_array_unref (routes); - return FALSE; - } - g_ptr_array_add (routes, route); - } - - g_variant_builder_add (&props, "{sv}", "routes", - nm_utils_ip4_routes_to_variant (routes)); - g_ptr_array_unref (routes); - } - g_strfreev (split); - } - - *out_props = g_variant_builder_end (&props); - return TRUE; -} - -static gboolean -parse_dhcp (GKeyFile *kf, - const char *group_name, - GVariant **out_props, - GError **error) -{ - char **keys, **iter, *val; - GVariantBuilder props; - - keys = g_key_file_get_keys (kf, group_name, NULL, error); - if (!keys) - return FALSE; - - g_variant_builder_init (&props, G_VARIANT_TYPE ("a{sv}")); - for (iter = keys; iter && *iter; iter++) { - val = g_key_file_get_string (kf, group_name, *iter, error); - if (!val) { - g_strfreev (keys); - g_variant_builder_clear (&props); - return FALSE; - } - g_variant_builder_add (&props, "{sv}", *iter, g_variant_new_string (val)); - g_free (val); - } - g_strfreev (keys); - - *out_props = g_variant_builder_end (&props); - return TRUE; -} - -static gboolean -get_dispatcher_file (const char *file, - GVariant **out_con_dict, - GVariant **out_con_props, - GVariant **out_device_props, - GVariant **out_device_ip4_props, - GVariant **out_device_ip6_props, - GVariant **out_device_dhcp4_props, - GVariant **out_device_dhcp6_props, - char **out_connectivity_state, - char **out_vpn_ip_iface, - GVariant **out_vpn_ip4_props, - GVariant **out_vpn_ip6_props, - char **out_expected_iface, - char **out_action, - GHashTable **out_env, - GError **error) -{ - GKeyFile *kf; - gboolean success = FALSE; - char **keys, **iter, *val; - - g_assert (!error || !*error); - g_assert (out_con_dict && !*out_con_dict); - g_assert (out_con_props && !*out_con_props); - g_assert (out_device_props && !*out_device_props); - g_assert (out_device_ip4_props && !*out_device_ip4_props); - g_assert (out_device_ip6_props && !*out_device_ip6_props); - g_assert (out_device_dhcp4_props && !*out_device_dhcp4_props); - g_assert (out_device_dhcp6_props && !*out_device_dhcp6_props); - g_assert (out_connectivity_state && !*out_connectivity_state); - g_assert (out_vpn_ip_iface && !*out_vpn_ip_iface); - g_assert (out_vpn_ip4_props && !*out_vpn_ip4_props); - g_assert (out_vpn_ip6_props && !*out_vpn_ip6_props); - g_assert (out_expected_iface && !*out_expected_iface); - g_assert (out_action && !*out_action); - g_assert (out_env && !*out_env); - - kf = g_key_file_new (); - if (!g_key_file_load_from_file (kf, file, G_KEY_FILE_NONE, error)) - return FALSE; - - if (!parse_main (kf, - file, - out_con_dict, - out_con_props, - out_expected_iface, - out_action, - out_connectivity_state, - out_vpn_ip_iface, - error)) - goto out; - - if (!parse_device (kf, out_device_props, error)) - goto out; - - if (g_key_file_has_group (kf, "ip4")) { - if (!parse_ip4 (kf, out_device_ip4_props, "ip4", error)) - goto out; - } - - if (g_key_file_has_group (kf, "dhcp4")) { - if (!parse_dhcp (kf, "dhcp4", out_device_dhcp4_props, error)) - goto out; - } - - if (g_key_file_has_group (kf, "dhcp6")) { - if (!parse_dhcp (kf, "dhcp6", out_device_dhcp6_props, error)) - goto out; - } - - g_assert (g_key_file_has_group (kf, "env")); - keys = g_key_file_get_keys (kf, "env", NULL, error); - *out_env = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - for (iter = keys; iter && *iter; iter++) { - val = g_key_file_get_string (kf, "env", *iter, error); - if (!val) - goto out; - g_hash_table_insert (*out_env, - g_strdup_printf ("%s=%s", *iter, val), - GUINT_TO_POINTER (1)); - g_free (val); - } - g_strfreev (keys); - - success = TRUE; - -out: - g_key_file_free (kf); - return success; -} - -/*******************************************/ - -static void -test_generic (const char *file, const char *override_vpn_ip_iface) -{ - gs_unref_variant GVariant *con_dict = NULL; - gs_unref_variant GVariant *con_props = NULL; - gs_unref_variant GVariant *device_props = NULL; - gs_unref_variant GVariant *device_ip4_props = NULL; - gs_unref_variant GVariant *device_ip6_props = NULL; - gs_unref_variant GVariant *device_dhcp4_props = NULL; - gs_unref_variant GVariant *device_dhcp6_props = NULL; - gs_free char *connectivity_change = NULL; - gs_free char *vpn_ip_iface = NULL; - gs_unref_variant GVariant *vpn_ip4_props = NULL; - gs_unref_variant GVariant *vpn_ip6_props = NULL; - gs_free char *expected_iface = NULL; - gs_free char *action = NULL; - gs_free char *out_iface = NULL; - const char *error_message = NULL; - gs_unref_hashtable GHashTable *expected_env = NULL; - GError *error = NULL; - gboolean success; - char *p; - gs_strfreev char **denv = NULL; - char **iter; - - /* Read in the test file */ - p = g_build_filename (SRCDIR, file, NULL); - success = get_dispatcher_file (p, - &con_dict, - &con_props, - &device_props, - &device_ip4_props, - &device_ip6_props, - &device_dhcp4_props, - &device_dhcp6_props, - &connectivity_change, - &vpn_ip_iface, - &vpn_ip4_props, - &vpn_ip6_props, - &expected_iface, - &action, - &expected_env, - &error); - g_free (p); - g_assert_no_error (error); - g_assert (success); - - /* Get the environment from the dispatcher code */ - denv = nm_dispatcher_utils_construct_envp (action, - con_dict, - con_props, - device_props, - device_ip4_props, - device_ip6_props, - device_dhcp4_props, - device_dhcp6_props, - connectivity_change, - override_vpn_ip_iface ? override_vpn_ip_iface : vpn_ip_iface, - vpn_ip4_props, - vpn_ip6_props, - &out_iface, - &error_message); - - g_assert ((!denv && error_message) || (denv && !error_message)); - - if (error_message) - g_warning ("%s", error_message); - - /* Print out environment for now */ -#ifdef DEBUG - g_message ("\n******* Generated environment:"); - for (iter = denv; iter && *iter; iter++) - g_message (" %s", *iter); -#endif - -#ifdef DEBUG - { - GHashTableIter k; - const char *key; - - g_message ("\n******* Expected environment:"); - g_hash_table_iter_init (&k, expected_env); - while (g_hash_table_iter_next (&k, (gpointer) &key, NULL)) - g_message (" %s", key); - } -#endif - - g_assert_cmpint (g_strv_length (denv), ==, g_hash_table_size (expected_env)); - - /* Compare dispatcher generated env and expected env */ - for (iter = denv; iter && *iter; iter++) { - gpointer foo; - const char *i_value = *iter; - - if (strstr (i_value, "PATH=") == i_value) { - g_assert_cmpstr (&i_value[strlen("PATH=")], ==, g_getenv ("PATH")); - - /* The path is constructed dynamically. Ignore the actual value. */ - i_value = "PATH="; - } - - foo = g_hash_table_lookup (expected_env, i_value); - if (!foo) - g_warning ("Failed to find %s in environment", i_value); - g_assert (foo); - } - - g_assert_cmpstr (expected_iface, ==, out_iface); -} - -/*******************************************/ - -static void -test_up (void) -{ - test_generic ("dispatcher-up", NULL); -} - -static void -test_down (void) -{ - test_generic ("dispatcher-down", NULL); -} - -static void -test_vpn_up (void) -{ - test_generic ("dispatcher-vpn-up", NULL); -} - -static void -test_vpn_down (void) -{ - test_generic ("dispatcher-vpn-down", NULL); -} - -static void -test_external (void) -{ - test_generic ("dispatcher-external", NULL); -} - -static void -test_connectivity_changed (void) -{ - /* These tests will check that the CONNECTIVITY_STATE environment - * variable is only defined for known states, such as 'full'. */ - test_generic ("dispatcher-connectivity-unknown", NULL); - test_generic ("dispatcher-connectivity-full", NULL); -} - -static void -test_up_empty_vpn_iface (void) -{ - /* Test that an empty VPN iface variable, like is passed through D-Bus - * from NM, is ignored by the dispatcher environment construction code. - */ - test_generic ("dispatcher-up", ""); -} - -/*******************************************/ - -NMTST_DEFINE (); - -int -main (int argc, char **argv) -{ - nmtst_init (&argc, &argv, TRUE); - - g_test_add_func ("/dispatcher/up", test_up); - g_test_add_func ("/dispatcher/down", test_down); - g_test_add_func ("/dispatcher/vpn_up", test_vpn_up); - g_test_add_func ("/dispatcher/vpn_down", test_vpn_down); - g_test_add_func ("/dispatcher/external", test_external); - g_test_add_func ("/dispatcher/connectivity_changed", test_connectivity_changed); - - g_test_add_func ("/dispatcher/up_empty_vpn_iface", test_up_empty_vpn_iface); - - return g_test_run (); -} - |