diff options
| author | Michael Biebl <biebl@debian.org> | 2016-04-06 00:46:19 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2016-04-06 00:46:19 +0200 |
| commit | 2bfb3eb7d0323e69affca154395f51d8b577414d (patch) | |
| tree | e3130a5146441296df6d08a0f4ac7222a854c8f8 /src | |
| parent | d9c99a29a0d3384c9c3d2adce430f5cb1134ab6a (diff) | |
Imported Upstream version 1.1.93 upstream/1.1.93
Diffstat (limited to 'src')
94 files changed, 1543 insertions, 1293 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index aee7eae9..bf668d74 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -41,8 +41,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/callouts \ -DPREFIX=\"$(prefix)\" \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ - -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE + -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON # add each subdirectory that contains a libNM source file. $(sort) is being used # primarily for its side effect of removing duplicates. @@ -148,7 +147,6 @@ libsystemd_nm_la_SOURCES = \ systemd/src/libsystemd-network/lldp-neighbor.h \ systemd/src/libsystemd-network/lldp-network.c \ systemd/src/libsystemd-network/lldp-network.h \ - systemd/src/libsystemd-network/lldp.h \ systemd/src/libsystemd-network/network-internal.c \ systemd/src/libsystemd-network/network-internal.h \ systemd/src/libsystemd-network/sd-dhcp-client.c \ @@ -316,16 +314,16 @@ libNetworkManager_la_SOURCES = \ \ platform/nmp-netns.c \ platform/nmp-netns.h \ - platform/nm-fake-platform.c \ - platform/nm-fake-platform.h \ - platform/nm-linux-platform.c \ - platform/nm-linux-platform.h \ - platform/nm-platform.c \ - platform/nm-platform.h \ - platform/nm-platform-utils.c \ - platform/nm-platform-utils.h \ platform/nmp-object.c \ platform/nmp-object.h \ + platform/nm-platform-utils.c \ + platform/nm-platform-utils.h \ + platform/nm-platform.c \ + platform/nm-platform.h \ + platform/nm-linux-platform.c \ + platform/nm-linux-platform.h \ + platform/nm-fake-platform.c \ + platform/nm-fake-platform.h \ platform/wifi/wifi-utils-nl80211.c \ platform/wifi/wifi-utils-nl80211.h \ platform/wifi/wifi-utils-private.h \ @@ -542,16 +540,16 @@ libnm_iface_helper_la_SOURCES = \ dhcp-manager/nm-dhcp-manager.c \ dhcp-manager/nm-dhcp-manager.h \ \ - platform/nm-linux-platform.c \ - platform/nm-linux-platform.h \ - platform/nm-platform.c \ - platform/nm-platform.h \ - platform/nm-platform-utils.c \ - platform/nm-platform-utils.h \ platform/nmp-netns.c \ platform/nmp-netns.h \ platform/nmp-object.c \ platform/nmp-object.h \ + platform/nm-platform-utils.c \ + platform/nm-platform-utils.h \ + platform/nm-platform.c \ + platform/nm-platform.h \ + platform/nm-linux-platform.c \ + platform/nm-linux-platform.h \ platform/wifi/wifi-utils-nl80211.c \ platform/wifi/wifi-utils-nl80211.h \ platform/wifi/wifi-utils-private.h \ diff --git a/src/Makefile.in b/src/Makefile.in index df113412..1c8821f8 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -203,12 +203,12 @@ am__libNetworkManager_la_SOURCES_DIST = devices/nm-device-bond.h \ dnsmasq-manager/nm-dnsmasq-manager.h \ dnsmasq-manager/nm-dnsmasq-utils.c \ dnsmasq-manager/nm-dnsmasq-utils.h platform/nmp-netns.c \ - platform/nmp-netns.h platform/nm-fake-platform.c \ - platform/nm-fake-platform.h platform/nm-linux-platform.c \ - platform/nm-linux-platform.h platform/nm-platform.c \ - platform/nm-platform.h platform/nm-platform-utils.c \ - platform/nm-platform-utils.h platform/nmp-object.c \ - platform/nmp-object.h platform/wifi/wifi-utils-nl80211.c \ + platform/nmp-netns.h platform/nmp-object.c \ + platform/nmp-object.h platform/nm-platform-utils.c \ + platform/nm-platform-utils.h platform/nm-platform.c \ + platform/nm-platform.h platform/nm-linux-platform.c \ + platform/nm-linux-platform.h platform/nm-fake-platform.c \ + platform/nm-fake-platform.h platform/wifi/wifi-utils-nl80211.c \ platform/wifi/wifi-utils-nl80211.h \ platform/wifi/wifi-utils-private.h platform/wifi/wifi-utils.c \ platform/wifi/wifi-utils.h rdisc/nm-fake-rdisc.c \ @@ -281,28 +281,27 @@ am_libNetworkManager_la_OBJECTS = $(am__objects_1) $(am__objects_1) \ nm-dhcp-listener.lo nm-dhcp-manager.lo nm-dns-dnsmasq.lo \ nm-dns-unbound.lo nm-dns-manager.lo nm-dns-plugin.lo \ nm-dns-utils.lo nm-dnsmasq-manager.lo nm-dnsmasq-utils.lo \ - nmp-netns.lo nm-fake-platform.lo nm-linux-platform.lo \ - nm-platform.lo nm-platform-utils.lo nmp-object.lo \ - wifi-utils-nl80211.lo wifi-utils.lo nm-fake-rdisc.lo \ - nm-lndp-rdisc.lo nm-rdisc.lo nm-ppp-manager.lo \ - nm-agent-manager.lo nm-inotify-helper.lo nm-secret-agent.lo \ - nm-settings-connection.lo nm-settings-plugin.lo nm-settings.lo \ - nm-keyfile-connection.lo plugin.lo reader.lo utils.lo \ - writer.lo nm-supplicant-config.lo nm-supplicant-interface.lo \ - nm-supplicant-manager.lo nm-supplicant-settings-verify.lo \ - nm-vpn-connection.lo nm-vpn-manager.lo \ - nm-activation-request.lo nm-active-connection.lo \ - nm-audit-manager.lo nm-bus-manager.lo nm-config.lo \ - nm-config-data.lo nm-connection-provider.lo nm-connectivity.lo \ - nm-dcb.lo nm-route-manager.lo nm-default-route-manager.lo \ - nm-dhcp4-config.lo nm-dhcp6-config.lo nm-dispatcher.lo \ - nm-enum-types.lo nm-exported-object.lo nm-firewall-manager.lo \ - nm-ip4-config.lo nm-ip6-config.lo nm-logging.lo \ - nm-auth-manager.lo nm-auth-subject.lo nm-auth-utils.lo \ - nm-manager.lo nm-multi-index.lo nm-policy.lo \ - nm-rfkill-manager.lo nm-session-monitor.lo nm-core-utils.lo \ - NetworkManagerUtils.lo $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) + nmp-netns.lo nmp-object.lo nm-platform-utils.lo nm-platform.lo \ + nm-linux-platform.lo nm-fake-platform.lo wifi-utils-nl80211.lo \ + wifi-utils.lo nm-fake-rdisc.lo nm-lndp-rdisc.lo nm-rdisc.lo \ + nm-ppp-manager.lo nm-agent-manager.lo nm-inotify-helper.lo \ + nm-secret-agent.lo nm-settings-connection.lo \ + nm-settings-plugin.lo nm-settings.lo nm-keyfile-connection.lo \ + plugin.lo reader.lo utils.lo writer.lo nm-supplicant-config.lo \ + nm-supplicant-interface.lo nm-supplicant-manager.lo \ + nm-supplicant-settings-verify.lo nm-vpn-connection.lo \ + nm-vpn-manager.lo nm-activation-request.lo \ + nm-active-connection.lo nm-audit-manager.lo nm-bus-manager.lo \ + nm-config.lo nm-config-data.lo nm-connection-provider.lo \ + nm-connectivity.lo nm-dcb.lo nm-route-manager.lo \ + nm-default-route-manager.lo nm-dhcp4-config.lo \ + nm-dhcp6-config.lo nm-dispatcher.lo nm-enum-types.lo \ + nm-exported-object.lo nm-firewall-manager.lo nm-ip4-config.lo \ + nm-ip6-config.lo nm-logging.lo nm-auth-manager.lo \ + nm-auth-subject.lo nm-auth-utils.lo nm-manager.lo \ + nm-multi-index.lo nm-policy.lo nm-rfkill-manager.lo \ + nm-session-monitor.lo nm-core-utils.lo NetworkManagerUtils.lo \ + $(am__objects_2) $(am__objects_3) $(am__objects_4) libNetworkManager_la_OBJECTS = $(am_libNetworkManager_la_OBJECTS) libnm_iface_helper_la_DEPENDENCIES = \ $(top_builddir)/libnm-core/libnm-core.la \ @@ -315,11 +314,11 @@ am__libnm_iface_helper_la_SOURCES_DIST = \ dhcp-manager/nm-dhcp-client-logging.h \ dhcp-manager/nm-dhcp-utils.c dhcp-manager/nm-dhcp-utils.h \ dhcp-manager/nm-dhcp-manager.c dhcp-manager/nm-dhcp-manager.h \ - platform/nm-linux-platform.c platform/nm-linux-platform.h \ - platform/nm-platform.c platform/nm-platform.h \ - platform/nm-platform-utils.c platform/nm-platform-utils.h \ platform/nmp-netns.c platform/nmp-netns.h \ platform/nmp-object.c platform/nmp-object.h \ + platform/nm-platform-utils.c platform/nm-platform-utils.h \ + platform/nm-platform.c platform/nm-platform.h \ + platform/nm-linux-platform.c platform/nm-linux-platform.h \ platform/wifi/wifi-utils-nl80211.c \ platform/wifi/wifi-utils-nl80211.h \ platform/wifi/wifi-utils-private.h platform/wifi/wifi-utils.c \ @@ -335,8 +334,8 @@ am__libnm_iface_helper_la_SOURCES_DIST = \ platform/wifi/wifi-utils-wext.c \ platform/wifi/wifi-utils-wext.h am_libnm_iface_helper_la_OBJECTS = nm-dhcp-client.lo nm-dhcp-utils.lo \ - nm-dhcp-manager.lo nm-linux-platform.lo nm-platform.lo \ - nm-platform-utils.lo nmp-netns.lo nmp-object.lo \ + nm-dhcp-manager.lo nmp-netns.lo nmp-object.lo \ + nm-platform-utils.lo nm-platform.lo nm-linux-platform.lo \ wifi-utils-nl80211.lo wifi-utils.lo nm-fake-rdisc.lo \ nm-lndp-rdisc.lo nm-rdisc.lo nm-route-manager.lo \ nm-exported-object.lo nm-ip4-config.lo nm-ip6-config.lo \ @@ -827,8 +826,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/shared -I$(top_builddir)/shared \ -I$(top_builddir)/libnm-core -I$(top_srcdir)/callouts \ -DPREFIX=\"$(prefix)\" -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE $(foreach \ - d,$(sort $(dir \ + $(foreach d,$(sort $(dir \ $(libNetworkManager_la_SOURCES))),-I$(top_srcdir)/src/$d) \ $(GLIB_CFLAGS) $(GUDEV_CFLAGS) $(LIBNL_CFLAGS) \ $(LIBNDP_CFLAGS) $(LIBSOUP_CFLAGS) $(SELINUX_CFLAGS) \ @@ -943,7 +941,6 @@ libsystemd_nm_la_SOURCES = \ systemd/src/libsystemd-network/lldp-neighbor.h \ systemd/src/libsystemd-network/lldp-network.c \ systemd/src/libsystemd-network/lldp-network.h \ - systemd/src/libsystemd-network/lldp.h \ systemd/src/libsystemd-network/network-internal.c \ systemd/src/libsystemd-network/network-internal.h \ systemd/src/libsystemd-network/sd-dhcp-client.c \ @@ -1073,12 +1070,12 @@ libNetworkManager_la_SOURCES = $(nm_device_headers) \ dnsmasq-manager/nm-dnsmasq-manager.h \ dnsmasq-manager/nm-dnsmasq-utils.c \ dnsmasq-manager/nm-dnsmasq-utils.h platform/nmp-netns.c \ - platform/nmp-netns.h platform/nm-fake-platform.c \ - platform/nm-fake-platform.h platform/nm-linux-platform.c \ - platform/nm-linux-platform.h platform/nm-platform.c \ - platform/nm-platform.h platform/nm-platform-utils.c \ - platform/nm-platform-utils.h platform/nmp-object.c \ - platform/nmp-object.h platform/wifi/wifi-utils-nl80211.c \ + platform/nmp-netns.h platform/nmp-object.c \ + platform/nmp-object.h platform/nm-platform-utils.c \ + platform/nm-platform-utils.h platform/nm-platform.c \ + platform/nm-platform.h platform/nm-linux-platform.c \ + platform/nm-linux-platform.h platform/nm-fake-platform.c \ + platform/nm-fake-platform.h platform/wifi/wifi-utils-nl80211.c \ platform/wifi/wifi-utils-nl80211.h \ platform/wifi/wifi-utils-private.h platform/wifi/wifi-utils.c \ platform/wifi/wifi-utils.h rdisc/nm-fake-rdisc.c \ @@ -1165,11 +1162,11 @@ libnm_iface_helper_la_SOURCES = dhcp-manager/nm-dhcp-client.c \ dhcp-manager/nm-dhcp-client-logging.h \ dhcp-manager/nm-dhcp-utils.c dhcp-manager/nm-dhcp-utils.h \ dhcp-manager/nm-dhcp-manager.c dhcp-manager/nm-dhcp-manager.h \ - platform/nm-linux-platform.c platform/nm-linux-platform.h \ - platform/nm-platform.c platform/nm-platform.h \ - platform/nm-platform-utils.c platform/nm-platform-utils.h \ platform/nmp-netns.c platform/nmp-netns.h \ platform/nmp-object.c platform/nmp-object.h \ + platform/nm-platform-utils.c platform/nm-platform-utils.h \ + platform/nm-platform.c platform/nm-platform.h \ + platform/nm-linux-platform.c platform/nm-linux-platform.h \ platform/wifi/wifi-utils-nl80211.c \ platform/wifi/wifi-utils-nl80211.h \ platform/wifi/wifi-utils-private.h platform/wifi/wifi-utils.c \ @@ -1703,19 +1700,19 @@ nmp-netns.lo: platform/nmp-netns.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nmp-netns.lo `test -f 'platform/nmp-netns.c' || echo '$(srcdir)/'`platform/nmp-netns.c -nm-fake-platform.lo: platform/nm-fake-platform.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-fake-platform.lo -MD -MP -MF $(DEPDIR)/nm-fake-platform.Tpo -c -o nm-fake-platform.lo `test -f 'platform/nm-fake-platform.c' || echo '$(srcdir)/'`platform/nm-fake-platform.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nm-fake-platform.Tpo $(DEPDIR)/nm-fake-platform.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nm-fake-platform.c' object='nm-fake-platform.lo' libtool=yes @AMDEPBACKSLASH@ +nmp-object.lo: platform/nmp-object.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nmp-object.lo -MD -MP -MF $(DEPDIR)/nmp-object.Tpo -c -o nmp-object.lo `test -f 'platform/nmp-object.c' || echo '$(srcdir)/'`platform/nmp-object.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nmp-object.Tpo $(DEPDIR)/nmp-object.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nmp-object.c' object='nmp-object.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-fake-platform.lo `test -f 'platform/nm-fake-platform.c' || echo '$(srcdir)/'`platform/nm-fake-platform.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nmp-object.lo `test -f 'platform/nmp-object.c' || echo '$(srcdir)/'`platform/nmp-object.c -nm-linux-platform.lo: platform/nm-linux-platform.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-linux-platform.lo -MD -MP -MF $(DEPDIR)/nm-linux-platform.Tpo -c -o nm-linux-platform.lo `test -f 'platform/nm-linux-platform.c' || echo '$(srcdir)/'`platform/nm-linux-platform.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nm-linux-platform.Tpo $(DEPDIR)/nm-linux-platform.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nm-linux-platform.c' object='nm-linux-platform.lo' libtool=yes @AMDEPBACKSLASH@ +nm-platform-utils.lo: platform/nm-platform-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-platform-utils.lo -MD -MP -MF $(DEPDIR)/nm-platform-utils.Tpo -c -o nm-platform-utils.lo `test -f 'platform/nm-platform-utils.c' || echo '$(srcdir)/'`platform/nm-platform-utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nm-platform-utils.Tpo $(DEPDIR)/nm-platform-utils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nm-platform-utils.c' object='nm-platform-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) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-linux-platform.lo `test -f 'platform/nm-linux-platform.c' || echo '$(srcdir)/'`platform/nm-linux-platform.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-platform-utils.lo `test -f 'platform/nm-platform-utils.c' || echo '$(srcdir)/'`platform/nm-platform-utils.c nm-platform.lo: platform/nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-platform.lo -MD -MP -MF $(DEPDIR)/nm-platform.Tpo -c -o nm-platform.lo `test -f 'platform/nm-platform.c' || echo '$(srcdir)/'`platform/nm-platform.c @@ -1724,19 +1721,19 @@ nm-platform.lo: platform/nm-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-platform.lo `test -f 'platform/nm-platform.c' || echo '$(srcdir)/'`platform/nm-platform.c -nm-platform-utils.lo: platform/nm-platform-utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-platform-utils.lo -MD -MP -MF $(DEPDIR)/nm-platform-utils.Tpo -c -o nm-platform-utils.lo `test -f 'platform/nm-platform-utils.c' || echo '$(srcdir)/'`platform/nm-platform-utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nm-platform-utils.Tpo $(DEPDIR)/nm-platform-utils.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nm-platform-utils.c' object='nm-platform-utils.lo' libtool=yes @AMDEPBACKSLASH@ +nm-linux-platform.lo: platform/nm-linux-platform.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-linux-platform.lo -MD -MP -MF $(DEPDIR)/nm-linux-platform.Tpo -c -o nm-linux-platform.lo `test -f 'platform/nm-linux-platform.c' || echo '$(srcdir)/'`platform/nm-linux-platform.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nm-linux-platform.Tpo $(DEPDIR)/nm-linux-platform.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nm-linux-platform.c' object='nm-linux-platform.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-platform-utils.lo `test -f 'platform/nm-platform-utils.c' || echo '$(srcdir)/'`platform/nm-platform-utils.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-linux-platform.lo `test -f 'platform/nm-linux-platform.c' || echo '$(srcdir)/'`platform/nm-linux-platform.c -nmp-object.lo: platform/nmp-object.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nmp-object.lo -MD -MP -MF $(DEPDIR)/nmp-object.Tpo -c -o nmp-object.lo `test -f 'platform/nmp-object.c' || echo '$(srcdir)/'`platform/nmp-object.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nmp-object.Tpo $(DEPDIR)/nmp-object.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nmp-object.c' object='nmp-object.lo' libtool=yes @AMDEPBACKSLASH@ +nm-fake-platform.lo: platform/nm-fake-platform.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nm-fake-platform.lo -MD -MP -MF $(DEPDIR)/nm-fake-platform.Tpo -c -o nm-fake-platform.lo `test -f 'platform/nm-fake-platform.c' || echo '$(srcdir)/'`platform/nm-fake-platform.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nm-fake-platform.Tpo $(DEPDIR)/nm-fake-platform.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='platform/nm-fake-platform.c' object='nm-fake-platform.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nmp-object.lo `test -f 'platform/nmp-object.c' || echo '$(srcdir)/'`platform/nmp-object.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-fake-platform.lo `test -f 'platform/nm-fake-platform.c' || echo '$(srcdir)/'`platform/nm-fake-platform.c wifi-utils-nl80211.lo: platform/wifi/wifi-utils-nl80211.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wifi-utils-nl80211.lo -MD -MP -MF $(DEPDIR)/wifi-utils-nl80211.Tpo -c -o wifi-utils-nl80211.lo `test -f 'platform/wifi/wifi-utils-nl80211.c' || echo '$(srcdir)/'`platform/wifi/wifi-utils-nl80211.c diff --git a/src/devices/adsl/Makefile.am b/src/devices/adsl/Makefile.am index e7034fa8..5f981740 100644 --- a/src/devices/adsl/Makefile.am +++ b/src/devices/adsl/Makefile.am @@ -14,7 +14,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-adsl"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GUDEV_CFLAGS) pkglib_LTLIBRARIES = libnm-device-plugin-adsl.la diff --git a/src/devices/adsl/Makefile.in b/src/devices/adsl/Makefile.in index e969a627..c8549200 100644 --- a/src/devices/adsl/Makefile.in +++ b/src/devices/adsl/Makefile.in @@ -493,7 +493,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-adsl"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GUDEV_CFLAGS) pkglib_LTLIBRARIES = libnm-device-plugin-adsl.la diff --git a/src/devices/bluetooth/Makefile.am b/src/devices/bluetooth/Makefile.am index 2054ea0f..2ff9a572 100644 --- a/src/devices/bluetooth/Makefile.am +++ b/src/devices/bluetooth/Makefile.am @@ -16,7 +16,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-bluetooth"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) GLIB_GENERATED = nm-bt-enum-types.h nm-bt-enum-types.c diff --git a/src/devices/bluetooth/Makefile.in b/src/devices/bluetooth/Makefile.in index f93f7242..233ad9e8 100644 --- a/src/devices/bluetooth/Makefile.in +++ b/src/devices/bluetooth/Makefile.in @@ -510,8 +510,7 @@ AM_CPPFLAGS = -I${top_srcdir}/src -I${top_builddir}/src \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-bluetooth"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE $(GLIB_CFLAGS) \ - $(am__append_1) + $(GLIB_CFLAGS) $(am__append_1) GLIB_GENERATED = nm-bt-enum-types.h nm-bt-enum-types.c GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM GLIB_MKENUMS_C_FLAGS = --identifier-prefix NM diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c index b88b2511..6ae29b9c 100644 --- a/src/devices/nm-device-bond.c +++ b/src/devices/nm-device-bond.c @@ -160,16 +160,23 @@ update_connection (NMDevice *device, NMConnection *connection) while (options && *options) { gs_free char *value = nm_platform_sysctl_master_get_option (NM_PLATFORM_GET, ifindex, *options); const char *defvalue = nm_setting_bond_get_option_default (s_bond, *options); + char *p; - if (value && !ignore_if_zero (*options, value) && (g_strcmp0 (value, defvalue) != 0)) { + if (_nm_setting_bond_get_option_type (s_bond, *options) == NM_BOND_OPTION_TYPE_BOTH) { + p = strchr (value, ' '); + if (p) + *p = '\0'; + } + + if ( value + && value[0] + && !ignore_if_zero (*options, value) + && !nm_streq0 (value, defvalue)) { /* Replace " " with "," for arp_ip_targets from the kernel */ if (strcmp (*options, "arp_ip_target") == 0) { - char *p = value; - - while (p && *p) { + for (p = value; *p; p++) { if (*p == ' ') *p = ','; - p++; } } @@ -285,7 +292,7 @@ apply_bonding_config (NMDevice *device) set_bond_attr (device, "mode", mode); /* arp_interval not compatible with ALB, TLB */ - if (g_strcmp0 (mode, "balance-alb") == 0 || g_strcmp0 (mode, "balance-tlb") == 0) + if (NM_IN_STRSET (mode, "balance-alb", "balance-tlb")) set_arp_interval = FALSE; if (set_arp_interval) { @@ -299,18 +306,17 @@ apply_bonding_config (NMDevice *device) value = nm_setting_bond_get_option_by_name (s_bond, NM_SETTING_BOND_OPTION_ARP_VALIDATE); /* arp_validate > 0 only valid in active-backup mode */ if ( value - && g_strcmp0 (value, "0") != 0 - && g_strcmp0 (value, "none") != 0 - && g_strcmp0 (mode, "active-backup") == 0) + && !nm_streq (value, "0") + && !nm_streq (value, "none") + && nm_streq (mode, "active-backup")) set_bond_attr (device, "arp_validate", value); else set_bond_attr (device, "arp_validate", "0"); - if ( g_strcmp0 (mode, "active-backup") == 0 - || g_strcmp0 (mode, "balance-alb") == 0 - || g_strcmp0 (mode, "balance-tlb") == 0) { + if (NM_IN_STRSET (mode, "active-backup", "balance-alb", "balance-tlb")) { value = nm_setting_bond_get_option_by_name (s_bond, NM_SETTING_BOND_OPTION_PRIMARY); set_bond_attr (device, "primary", value ? value : ""); + set_simple_option (device, "lp_internal", s_bond, NM_SETTING_BOND_OPTION_LP_INTERVAL); } /* Clear ARP targets */ @@ -328,15 +334,31 @@ apply_bonding_config (NMDevice *device) set_simple_option (device, "ad_select", s_bond, NM_SETTING_BOND_OPTION_AD_SELECT); set_simple_option (device, "xmit_hash_policy", s_bond, NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY); set_simple_option (device, "resend_igmp", s_bond, NM_SETTING_BOND_OPTION_RESEND_IGMP); + set_simple_option (device, "active_slave", s_bond, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE); + set_simple_option (device, "all_slaves_active", s_bond, NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE); + set_simple_option (device, "num_grat_arp", s_bond, NM_SETTING_BOND_OPTION_NUM_GRAT_ARP); + set_simple_option (device, "num_unsol_na", s_bond, NM_SETTING_BOND_OPTION_NUM_UNSOL_NA); - if ( g_strcmp0 (mode, "4") == 0 - || g_strcmp0 (mode, "802.3ad") == 0) + if (nm_streq (mode, "802.3ad")) { set_simple_option (device, "lacp_rate", s_bond, NM_SETTING_BOND_OPTION_LACP_RATE); + set_simple_option (device, "ad_actor_sys_prio", s_bond, NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO); + set_simple_option (device, "ad_actor_system", s_bond, NM_SETTING_BOND_OPTION_AD_ACTOR_SYSTEM); + set_simple_option (device, "ad_user_port_key", s_bond, NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY); + set_simple_option (device, "min_links", s_bond, NM_SETTING_BOND_OPTION_MIN_LINKS); + } + + if (nm_streq (mode, "active-backup")) + set_simple_option (device, "arp_all_targets", s_bond, NM_SETTING_BOND_OPTION_ARP_ALL_TARGETS); + + if (nm_streq (mode, "balance-rr")) + set_simple_option (device, "packets_per_slave", s_bond, NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE); + + if (nm_streq (mode, "balance-tlb")) + set_simple_option (device, "tlb_dynamic_lb", s_bond, NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB); return NM_ACT_STAGE_RETURN_SUCCESS; } - static NMActStageReturn act_stage1_prepare (NMDevice *dev, NMDeviceStateReason *reason) { diff --git a/src/devices/nm-device-factory.c b/src/devices/nm-device-factory.c index 5ce4333f..9dfa9bcb 100644 --- a/src/devices/nm-device-factory.c +++ b/src/devices/nm-device-factory.c @@ -91,6 +91,8 @@ nm_device_factory_create_device (NMDeviceFactory *factory, const NMLinkType *link_types = NULL; const char **setting_types = NULL; int i; + NMDevice *device; + gboolean ignore = FALSE; g_return_val_if_fail (factory, NULL); g_return_val_if_fail (iface && *iface, NULL); @@ -99,6 +101,8 @@ nm_device_factory_create_device (NMDeviceFactory *factory, nm_device_factory_get_supported_types (factory, &link_types, &setting_types); + NM_SET_OUT (out_ignore, FALSE); + if (plink) { g_return_val_if_fail (strcmp (iface, plink->name) == 0, NULL); @@ -137,7 +141,20 @@ nm_device_factory_create_device (NMDeviceFactory *factory, return NULL; } - return interface->create_device (factory, iface, plink, connection, out_ignore); + device = interface->create_device (factory, iface, plink, connection, &ignore); + NM_SET_OUT (out_ignore, ignore); + if (!device) { + if (ignore) { + g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED, + "Device factory %s ignores device %s", + G_OBJECT_TYPE_NAME (factory), iface); + } else { + g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED, + "Device factory %s failed to create device %s", + G_OBJECT_TYPE_NAME (factory), iface); + } + } + return device; } const char * diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 529b3cd8..dde9af94 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -1195,17 +1195,67 @@ nm_device_master_release_one_slave (NMDevice *self, NMDevice *slave, gboolean co static gboolean can_unmanaged_external_down (NMDevice *self) { - return nm_device_is_software (self) && !NM_DEVICE_GET_PRIVATE (self)->is_nm_owned; + return !NM_DEVICE_GET_PRIVATE (self)->is_nm_owned + && nm_device_is_software (self); } -static void -update_dynamic_ip_setup (NMDevice *self) +static NMUnmanFlagOp +is_unmanaged_external_down (NMDevice *self, gboolean consider_can) { NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); + + if ( consider_can + && !NM_DEVICE_GET_CLASS (self)->can_unmanaged_external_down (self)) + return NM_UNMAN_FLAG_OP_FORGET; + + /* Manage externally-created software interfaces only when they are IFF_UP */ + if ( priv->ifindex <= 0 + || !priv->up + || !nm_platform_link_can_assume (NM_PLATFORM_GET, priv->ifindex)) + return NM_UNMAN_FLAG_OP_SET_UNMANAGED; + + return NM_UNMAN_FLAG_OP_SET_MANAGED; +} + +static void +set_unmanaged_external_down (NMDevice *self, gboolean only_if_unmanaged) +{ + NMUnmanFlagOp ext_flags; + + if (!nm_device_get_unmanaged_mask (self, NM_UNMANAGED_EXTERNAL_DOWN)) + return; + + if (only_if_unmanaged) { + if (!nm_device_get_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN)) + return; + } + + ext_flags = is_unmanaged_external_down (self, FALSE); + if (ext_flags != NM_UNMAN_FLAG_OP_SET_UNMANAGED) { + /* Ensure the assume check is queued before any queued state changes + * from the transition to UNAVAILABLE. + */ + nm_device_queue_recheck_assume (self); + } + + nm_device_set_unmanaged_by_flags (self, + NM_UNMANAGED_EXTERNAL_DOWN, + ext_flags, + NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED); +} + +void +nm_device_update_dynamic_ip_setup (NMDevice *self) +{ + NMDevicePrivate *priv; GError *error; gconstpointer addr; size_t addr_length; + g_return_if_fail (NM_IS_DEVICE (self)); + + priv = NM_DEVICE_GET_PRIVATE (self); + g_hash_table_remove_all (priv->ip6_saved_properties); if (priv->dhcp4_client) { @@ -1295,7 +1345,7 @@ carrier_changed (NMDevice *self, gboolean carrier) * tagged for carrier ignore) ensure that when the carrier appears we * renew DHCP leases and such. */ - update_dynamic_ip_setup (self); + nm_device_update_dynamic_ip_setup (self); } } else { if (priv->state == NM_DEVICE_STATE_UNAVAILABLE) { @@ -1422,7 +1472,6 @@ device_link_changed (NMDevice *self) NMPlatformLink info; const NMPlatformLink *pllink; int ifindex; - gboolean was_up; priv->device_link_changed_id = 0; @@ -1493,25 +1542,21 @@ device_link_changed (NMDevice *self) /* Update DHCP, etc, if needed */ if (ip_ifname_changed) - update_dynamic_ip_setup (self); + nm_device_update_dynamic_ip_setup (self); - was_up = priv->up; priv->up = NM_FLAGS_HAS (info.n_ifi_flags, IFF_UP); - if ( priv->ifindex > 0 - && info.initialized + if ( info.initialized && nm_device_get_unmanaged_flags (self, NM_UNMANAGED_PLATFORM_INIT)) { NMDeviceStateReason reason; nm_device_set_unmanaged_by_user_udev (self); - /* If the devices that need an external IFF_UP go managed below, - * it means they're already up. In that case we should use an "assumed" - * reason to prevent the cleanup sequence from being run on transition - * from "unmanaged" to "unavailable". */ - if ( priv->up - && !nm_device_get_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN) - && NM_DEVICE_GET_CLASS (self)->can_unmanaged_external_down (self)) { + /* If the device is a external-down candidated but no longer has external + * down set, we must clear the platform-unmanaged flag with reason + * "assumed". */ + if ( nm_device_get_unmanaged_mask (self, NM_UNMANAGED_EXTERNAL_DOWN) + && !nm_device_get_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN)) { /* Ensure the assume check is queued before any queued state changes * from the transition to UNAVAILABLE. */ @@ -1523,35 +1568,7 @@ device_link_changed (NMDevice *self) nm_device_set_unmanaged_by_flags (self, NM_UNMANAGED_PLATFORM_INIT, FALSE, reason); } - if ( priv->ifindex > 0 - && priv->up != was_up - && NM_DEVICE_GET_CLASS (self)->can_unmanaged_external_down (self)) { - /* Manage externally-created software interfaces only when they are IFF_UP */ - if ( priv->up - && nm_device_get_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN)) { - /* Ensure the assume check is queued before any queued state changes - * from the transition to UNAVAILABLE. - */ - nm_device_queue_recheck_assume (self); - } - - /* In case of @priv->up, resetting the EXTERNAL_DOWN flag may change the device's - * state to UNAVAILABLE. To ensure that the state change doesn't touch - * the device before assumption occurs, pass NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED - * as the reason. - * - * In case of !@priv->up, and the device is already unmanaged for other reasons, the - * state-change-reason has no effect. - * If the device is managed for an explict user-request, the state-change-reason - * also has no effect, because the device stays managed. - * - * The state-change-reason only has effect if the device was assumed - * and is now to be unmanaged. */ - nm_device_set_unmanaged_by_flags (self, - NM_UNMANAGED_EXTERNAL_DOWN, - !priv->up, - NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED); - } + set_unmanaged_external_down (self, FALSE); device_recheck_slave_status (self, &info); return G_SOURCE_REMOVE; @@ -1580,7 +1597,7 @@ device_ip_link_changed (NMDevice *self) priv->ip_iface = g_strdup (pllink->name); _notify (self, PROP_IP_IFACE); - update_dynamic_ip_setup (self); + nm_device_update_dynamic_ip_setup (self); } return G_SOURCE_REMOVE; } @@ -1921,12 +1938,11 @@ realize_start_setup (NMDevice *self, const NMPlatformLink *plink) klass->realize_start_notify (self, plink); - /* Do not manage externally created software devices until they are IFF_UP */ - if ( priv->ifindex > 0 - && plink - && !priv->up - && NM_DEVICE_GET_CLASS (self)->can_unmanaged_external_down (self)) - nm_device_set_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN, TRUE); + /* Do not manage externally created software devices until they are IFF_UP + * or have IP addressing */ + nm_device_set_unmanaged_flags (self, + NM_UNMANAGED_EXTERNAL_DOWN, + is_unmanaged_external_down (self, TRUE)); /* Unmanaged the loopback device with an explicit NM_UNMANAGED_LOOPBACK flag. * Later we might want to manage 'lo' too. Currently that doesn't work because @@ -2569,6 +2585,18 @@ nm_device_removed (NMDevice *self) * Release the slave from master, but don't touch the device. */ nm_device_master_release_one_slave (priv->master, self, FALSE, NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED); } + + /* Clean up IP configs; this does not actually deconfigure the + * interface, it just clears the configuration to which policy + * is reacting via NM_DEVICE_IP4_CONFIG_CHANGED/NM_DEVICE_IP6_CONFIG_CHANGED + * signal. As NMPolicy registered the NMIPxConfig instances in NMDnsManager, + * these would be leaked otherwise. */ + priv->default_route.v4_has = FALSE; + priv->default_route.v4_is_assumed = TRUE; + nm_device_set_ip4_config (self, NULL, 0, FALSE, FALSE, NULL); + priv->default_route.v6_has = FALSE; + priv->default_route.v6_is_assumed = TRUE; + nm_device_set_ip6_config (self, NULL, FALSE, FALSE, NULL); } static gboolean @@ -3050,8 +3078,7 @@ nm_device_check_slave_connection_compatible (NMDevice *self, NMConnection *slave static gboolean nm_device_can_assume_connections (NMDevice *self) { - return !!NM_DEVICE_GET_CLASS (self)->update_connection - && !NM_DEVICE_GET_PRIVATE (self)->is_nm_owned; + return !!NM_DEVICE_GET_CLASS (self)->update_connection; } /** @@ -8869,6 +8896,8 @@ queued_ip4_config_change (gpointer user_data) update_ip4_config (self, FALSE); g_object_unref (self); + set_unmanaged_external_down (self, TRUE); + return FALSE; } @@ -8923,6 +8952,8 @@ queued_ip6_config_change (gpointer user_data) g_object_unref (self); + set_unmanaged_external_down (self, TRUE); + return FALSE; } @@ -9124,6 +9155,24 @@ nm_device_get_managed (NMDevice *self, gboolean for_user_request) } /** + * nm_device_get_unmanaged_mask: + * @self: the #NMDevice + * @flag: the unmanaged flags to check. + * + * Return the unmanaged flags mask set on this device. + * + * Returns: the flags of the device ( & @flag) + */ +NMUnmanagedFlags +nm_device_get_unmanaged_mask (NMDevice *self, NMUnmanagedFlags flag) +{ + g_return_val_if_fail (NM_IS_DEVICE (self), NM_UNMANAGED_NONE); + g_return_val_if_fail (flag != NM_UNMANAGED_NONE, NM_UNMANAGED_NONE); + + return NM_DEVICE_GET_PRIVATE (self)->unmanaged_mask & flag; +} + +/** * nm_device_get_unmanaged_flags: * @self: the #NMDevice * @flag: the unmanaged flags to check. @@ -9135,8 +9184,8 @@ nm_device_get_managed (NMDevice *self, gboolean for_user_request) NMUnmanagedFlags nm_device_get_unmanaged_flags (NMDevice *self, NMUnmanagedFlags flag) { - g_return_val_if_fail (NM_IS_DEVICE (self), FALSE); - g_return_val_if_fail (flag != NM_UNMANAGED_NONE, FALSE); + g_return_val_if_fail (NM_IS_DEVICE (self), NM_UNMANAGED_NONE); + g_return_val_if_fail (flag != NM_UNMANAGED_NONE, NM_UNMANAGED_NONE); return NM_DEVICE_GET_PRIVATE (self)->unmanaged_flags & flag; } @@ -9943,7 +9992,6 @@ static void _cleanup_generic_post (NMDevice *self, CleanupType cleanup_type) { NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); - NMDeviceStateReason ignored = NM_DEVICE_STATE_REASON_NONE; priv->default_route.v4_has = FALSE; priv->default_route.v6_has = FALSE; @@ -9968,8 +10016,8 @@ _cleanup_generic_post (NMDevice *self, CleanupType cleanup_type) /* Clean up IP configs; this does not actually deconfigure the * interface; the caller must flush routes and addresses explicitly. */ - nm_device_set_ip4_config (self, NULL, 0, TRUE, TRUE, &ignored); - nm_device_set_ip6_config (self, NULL, TRUE, TRUE, &ignored); + nm_device_set_ip4_config (self, NULL, 0, TRUE, TRUE, NULL); + nm_device_set_ip6_config (self, NULL, TRUE, TRUE, NULL); g_clear_object (&priv->con_ip4_config); g_clear_object (&priv->dev_ip4_config); g_clear_object (&priv->ext_ip4_config); diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h index bd657e68..368e77f7 100644 --- a/src/devices/nm-device.h +++ b/src/devices/nm-device.h @@ -86,12 +86,12 @@ G_BEGIN_DECLS -#define NM_TYPE_DEVICE (nm_device_get_type ()) -#define NM_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE, NMDevice)) -#define NM_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE, NMDeviceClass)) -#define NM_IS_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE)) -#define NM_IS_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE)) -#define NM_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE, NMDeviceClass)) +#define NM_TYPE_DEVICE (nm_device_get_type ()) +#define NM_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE, NMDevice)) +#define NM_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE, NMDeviceClass)) +#define NM_IS_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE)) +#define NM_IS_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE)) +#define NM_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE, NMDeviceClass)) typedef enum NMActStageReturn NMActStageReturn; @@ -201,7 +201,7 @@ typedef struct { NMDeviceCapabilities (* get_generic_capabilities) (NMDevice *self); - gboolean (* is_available) (NMDevice *self, NMDeviceCheckDevAvailableFlags flags); + gboolean (* is_available) (NMDevice *self, NMDeviceCheckDevAvailableFlags flags); gboolean (* get_enabled) (NMDevice *self); @@ -239,19 +239,19 @@ typedef struct { const GSList *existing_connections, GError **error); - NMActStageReturn (* act_stage1_prepare) (NMDevice *self, + NMActStageReturn (* act_stage1_prepare) (NMDevice *self, NMDeviceStateReason *reason); - NMActStageReturn (* act_stage2_config) (NMDevice *self, + NMActStageReturn (* act_stage2_config) (NMDevice *self, NMDeviceStateReason *reason); - NMActStageReturn (* act_stage3_ip4_config_start) (NMDevice *self, + NMActStageReturn (* act_stage3_ip4_config_start) (NMDevice *self, NMIP4Config **out_config, NMDeviceStateReason *reason); - NMActStageReturn (* act_stage3_ip6_config_start) (NMDevice *self, + NMActStageReturn (* act_stage3_ip6_config_start) (NMDevice *self, NMIP6Config **out_config, NMDeviceStateReason *reason); - NMActStageReturn (* act_stage4_ip4_config_timeout) (NMDevice *self, + NMActStageReturn (* act_stage4_ip4_config_timeout) (NMDevice *self, NMDeviceStateReason *reason); - NMActStageReturn (* act_stage4_ip6_config_timeout) (NMDevice *self, + NMActStageReturn (* act_stage4_ip6_config_timeout) (NMDevice *self, NMDeviceStateReason *reason); /* Called right before IP config is set; use for setting MTU etc */ @@ -268,7 +268,7 @@ typedef struct { GError **error); /* Sync deactivating (in the DISCONNECTED phase) */ - void (* deactivate) (NMDevice *self); + void (* deactivate) (NMDevice *self); const char *(*get_type_description) (NMDevice *self); @@ -326,38 +326,38 @@ typedef void (*NMDeviceAuthRequestFunc) (NMDevice *device, GType nm_device_get_type (void); -const char * nm_device_get_udi (NMDevice *dev); -const char * nm_device_get_iface (NMDevice *dev); -int nm_device_get_ifindex (NMDevice *dev); -gboolean nm_device_is_software (NMDevice *dev); -gboolean nm_device_is_real (NMDevice *dev); -const char * nm_device_get_ip_iface (NMDevice *dev); -int nm_device_get_ip_ifindex(NMDevice *dev); -const char * nm_device_get_driver (NMDevice *dev); -const char * nm_device_get_driver_version (NMDevice *dev); -const char * nm_device_get_type_desc (NMDevice *dev); -const char * nm_device_get_type_description (NMDevice *dev); -NMDeviceType nm_device_get_device_type (NMDevice *dev); -NMLinkType nm_device_get_link_type (NMDevice *dev); -NMMetered nm_device_get_metered (NMDevice *dev); - -int nm_device_get_priority (NMDevice *dev); -guint32 nm_device_get_ip4_route_metric (NMDevice *dev); -guint32 nm_device_get_ip6_route_metric (NMDevice *dev); - -const char * nm_device_get_hw_address (NMDevice *dev); +const char * nm_device_get_udi (NMDevice *dev); +const char * nm_device_get_iface (NMDevice *dev); +int nm_device_get_ifindex (NMDevice *dev); +gboolean nm_device_is_software (NMDevice *dev); +gboolean nm_device_is_real (NMDevice *dev); +const char * nm_device_get_ip_iface (NMDevice *dev); +int nm_device_get_ip_ifindex (NMDevice *dev); +const char * nm_device_get_driver (NMDevice *dev); +const char * nm_device_get_driver_version (NMDevice *dev); +const char * nm_device_get_type_desc (NMDevice *dev); +const char * nm_device_get_type_description (NMDevice *dev); +NMDeviceType nm_device_get_device_type (NMDevice *dev); +NMLinkType nm_device_get_link_type (NMDevice *dev); +NMMetered nm_device_get_metered (NMDevice *dev); + +int nm_device_get_priority (NMDevice *dev); +guint32 nm_device_get_ip4_route_metric (NMDevice *dev); +guint32 nm_device_get_ip6_route_metric (NMDevice *dev); + +const char * nm_device_get_hw_address (NMDevice *dev); const char * nm_device_get_permanent_hw_address (NMDevice *dev); -const char * nm_device_get_initial_hw_address (NMDevice *dev); +const char * nm_device_get_initial_hw_address (NMDevice *dev); -NMDhcp4Config * nm_device_get_dhcp4_config (NMDevice *dev); -NMDhcp6Config * nm_device_get_dhcp6_config (NMDevice *dev); +NMDhcp4Config * nm_device_get_dhcp4_config (NMDevice *dev); +NMDhcp6Config * nm_device_get_dhcp6_config (NMDevice *dev); -NMIP4Config * nm_device_get_ip4_config (NMDevice *dev); +NMIP4Config * nm_device_get_ip4_config (NMDevice *dev); void nm_device_replace_vpn4_config (NMDevice *dev, NMIP4Config *old, NMIP4Config *config); -NMIP6Config * nm_device_get_ip6_config (NMDevice *dev); +NMIP6Config * nm_device_get_ip6_config (NMDevice *dev); void nm_device_replace_vpn6_config (NMDevice *dev, NMIP6Config *old, NMIP6Config *config); @@ -365,22 +365,22 @@ void nm_device_replace_vpn6_config (NMDevice *dev, void nm_device_capture_initial_config (NMDevice *dev); /* Master */ -gboolean nm_device_is_master (NMDevice *dev); +gboolean nm_device_is_master (NMDevice *dev); /* Slave */ -NMDevice * nm_device_get_master (NMDevice *dev); +NMDevice * nm_device_get_master (NMDevice *dev); -NMActRequest * nm_device_get_act_request (NMDevice *dev); -NMSettingsConnection * nm_device_get_settings_connection (NMDevice *dev); -NMConnection * nm_device_get_applied_connection (NMDevice *dev); -gboolean nm_device_has_unmodified_applied_connection (NMDevice *self, - NMSettingCompareFlags compare_flags); -NMSetting * nm_device_get_applied_setting (NMDevice *dev, GType setting_type); +NMActRequest * nm_device_get_act_request (NMDevice *dev); +NMSettingsConnection *nm_device_get_settings_connection (NMDevice *dev); +NMConnection * nm_device_get_applied_connection (NMDevice *dev); +gboolean nm_device_has_unmodified_applied_connection (NMDevice *self, + NMSettingCompareFlags compare_flags); +NMSetting * nm_device_get_applied_setting (NMDevice *dev, GType setting_type); -void nm_device_removed (NMDevice *dev); +void nm_device_removed (NMDevice *dev); -gboolean nm_device_is_available (NMDevice *dev, NMDeviceCheckDevAvailableFlags flags); -gboolean nm_device_has_carrier (NMDevice *dev); +gboolean nm_device_is_available (NMDevice *dev, NMDeviceCheckDevAvailableFlags flags); +gboolean nm_device_has_carrier (NMDevice *dev); NMConnection * nm_device_generate_connection (NMDevice *self, NMDevice *master); @@ -408,8 +408,8 @@ gboolean nm_device_can_assume_active_connection (NMDevice *device); gboolean nm_device_spec_match_list (NMDevice *device, const GSList *specs); -gboolean nm_device_is_activating (NMDevice *dev); -gboolean nm_device_autoconnect_allowed (NMDevice *self); +gboolean nm_device_is_activating (NMDevice *dev); +gboolean nm_device_autoconnect_allowed (NMDevice *self); NMDeviceState nm_device_get_state (NMDevice *device); @@ -472,6 +472,7 @@ typedef enum { const char *nm_unmanaged_flags2str (NMUnmanagedFlags flags, char *buf, gsize len); gboolean nm_device_get_managed (NMDevice *device, gboolean for_user_request); +NMUnmanagedFlags nm_device_get_unmanaged_mask (NMDevice *device, NMUnmanagedFlags flag); NMUnmanagedFlags nm_device_get_unmanaged_flags (NMDevice *device, NMUnmanagedFlags flag); void nm_device_set_unmanaged_flags (NMDevice *device, NMUnmanagedFlags flags, @@ -563,7 +564,8 @@ void nm_device_reactivate_ip6_config (NMDevice *device, void nm_device_update_hw_address (NMDevice *self); void nm_device_update_initial_hw_address (NMDevice *self); +void nm_device_update_dynamic_ip_setup (NMDevice *self); G_END_DECLS -#endif /* NM_DEVICE_H */ +#endif /* NM_DEVICE_H */ diff --git a/src/devices/nm-lldp-listener.c b/src/devices/nm-lldp-listener.c index e678dc67..592059f5 100644 --- a/src/devices/nm-lldp-listener.c +++ b/src/devices/nm-lldp-listener.c @@ -30,9 +30,6 @@ #include "sd-lldp.h" -#include "nm-sd-adapt.h" -#include "lldp.h" - #define MAX_NEIGHBORS 4096 #define MIN_UPDATE_INTERVAL_NS (2 * NM_UTILS_NS_PER_SECOND) @@ -402,13 +399,13 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error) } switch (chassis_id_type) { - case LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS: - case LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME: - case LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED: - case LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT: + case SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS: + case SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME: + case SD_LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED: + case SD_LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT: neigh->chassis_id = g_strndup ((const char *) chassis_id, chassis_id_len); break; - case LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS: + case SD_LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS: neigh->chassis_id = nm_utils_hwaddr_ntoa (chassis_id, chassis_id_len); break; default: @@ -418,13 +415,13 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error) } switch (port_id_type) { - case LLDP_PORT_SUBTYPE_INTERFACE_ALIAS: - case LLDP_PORT_SUBTYPE_INTERFACE_NAME: - case LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED: - case LLDP_PORT_SUBTYPE_PORT_COMPONENT: + case SD_LLDP_PORT_SUBTYPE_INTERFACE_ALIAS: + case SD_LLDP_PORT_SUBTYPE_INTERFACE_NAME: + case SD_LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED: + case SD_LLDP_PORT_SUBTYPE_PORT_COMPONENT: neigh->port_id = strndup ((char *) port_id, port_id_len); break; - case LLDP_PORT_SUBTYPE_MAC_ADDRESS: + case SD_LLDP_PORT_SUBTYPE_MAC_ADDRESS: neigh->port_id = nm_utils_hwaddr_ntoa (port_id, port_id_len); break; default: @@ -464,11 +461,11 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error) goto out; } - if (!( memcmp (oui, LLDP_OUI_802_1, sizeof (oui)) == 0 + if (!( memcmp (oui, SD_LLDP_OUI_802_1, sizeof (oui)) == 0 && NM_IN_SET (subtype, - LLDP_OUI_802_1_SUBTYPE_PORT_PROTOCOL_VLAN_ID, - LLDP_OUI_802_1_SUBTYPE_PORT_VLAN_ID, - LLDP_OUI_802_1_SUBTYPE_VLAN_NAME))) + SD_LLDP_OUI_802_1_SUBTYPE_PORT_PROTOCOL_VLAN_ID, + SD_LLDP_OUI_802_1_SUBTYPE_PORT_VLAN_ID, + SD_LLDP_OUI_802_1_SUBTYPE_VLAN_NAME))) continue; if (sd_lldp_neighbor_tlv_get_raw (neighbor_sd, (void *) &data8, &len) < 0) @@ -492,16 +489,16 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error) data8 += 6; len -= 6; - /*if (memcmp (oui, LLDP_OUI_802_1, sizeof (oui)) == 0)*/ + /*if (memcmp (oui, SD_LLDP_OUI_802_1, sizeof (oui)) == 0)*/ { switch (subtype) { - case LLDP_OUI_802_1_SUBTYPE_PORT_VLAN_ID: + case SD_LLDP_OUI_802_1_SUBTYPE_PORT_VLAN_ID: if (len != 2) continue; _lldp_attr_set_uint32 (neigh->attrs, LLDP_ATTR_ID_IEEE_802_1_PVID, _access_uint16 (data8)); break; - case LLDP_OUI_802_1_SUBTYPE_PORT_PROTOCOL_VLAN_ID: + case SD_LLDP_OUI_802_1_SUBTYPE_PORT_PROTOCOL_VLAN_ID: if (len != 3) continue; _lldp_attr_set_uint32 (neigh->attrs, LLDP_ATTR_ID_IEEE_802_1_PPVID_FLAGS, @@ -509,7 +506,7 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error) _lldp_attr_set_uint32 (neigh->attrs, LLDP_ATTR_ID_IEEE_802_1_PPVID, _access_uint16 (&data8[1])); break; - case LLDP_OUI_802_1_SUBTYPE_VLAN_NAME: { + case SD_LLDP_OUI_802_1_SUBTYPE_VLAN_NAME: { int l; if (len <= 3) diff --git a/src/devices/team/Makefile.am b/src/devices/team/Makefile.am index a6645833..3609ace4 100644 --- a/src/devices/team/Makefile.am +++ b/src/devices/team/Makefile.am @@ -14,7 +14,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-team"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) if WITH_TEAMDCTL diff --git a/src/devices/team/Makefile.in b/src/devices/team/Makefile.in index 6dce463e..115a7589 100644 --- a/src/devices/team/Makefile.in +++ b/src/devices/team/Makefile.in @@ -492,8 +492,7 @@ AM_CPPFLAGS = -I${top_srcdir}/src -I${top_builddir}/src \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-team"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE $(GLIB_CFLAGS) \ - $(am__append_1) + $(GLIB_CFLAGS) $(am__append_1) pkglib_LTLIBRARIES = libnm-device-plugin-team.la SYMBOL_VIS_FILE = $(srcdir)/exports.ver libnm_device_plugin_team_la_SOURCES = \ diff --git a/src/devices/tests/Makefile.am b/src/devices/tests/Makefile.am index e4f4d3fe..cd1ef6ed 100644 --- a/src/devices/tests/Makefile.am +++ b/src/devices/tests/Makefile.am @@ -12,7 +12,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) AM_CFLAGS = $(CODE_COVERAGE_CFLAGS) diff --git a/src/devices/tests/Makefile.in b/src/devices/tests/Makefile.in index 1cb73d28..31cf0d38 100644 --- a/src/devices/tests/Makefile.in +++ b/src/devices/tests/Makefile.in @@ -671,7 +671,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) AM_CFLAGS = $(CODE_COVERAGE_CFLAGS) diff --git a/src/devices/tests/test-lldp.c b/src/devices/tests/test-lldp.c index 85c3b510..1b7f536d 100644 --- a/src/devices/tests/test-lldp.c +++ b/src/devices/tests/test-lldp.c @@ -29,8 +29,7 @@ #include "nm-lldp-listener.h" #include "nm-sd.h" -#include "nm-sd-adapt.h" -#include "lldp.h" +#include "sd-lldp.h" #include "test-common.h" @@ -147,8 +146,8 @@ _test_recv_data0_check (GMainLoop *loop, NMLldpListener *listener) g_assert_cmpint (g_variant_n_children (neighbors), ==, 1); neighbor = get_lldp_neighbor (neighbors, - LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS, "00:01:02:03:04:05", - LLDP_PORT_SUBTYPE_INTERFACE_NAME, "1/3"); + SD_LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS, "00:01:02:03:04:05", + SD_LLDP_PORT_SUBTYPE_INTERFACE_NAME, "1/3"); g_assert (neighbor); g_assert_cmpint (g_variant_n_children (neighbor), ==, 4 + 4); @@ -244,8 +243,8 @@ _test_recv_data1_check (GMainLoop *loop, NMLldpListener *listener) g_assert_cmpint (g_variant_n_children (neighbors), ==, 1); neighbor = get_lldp_neighbor (neighbors, - LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS, "00:01:30:F9:AD:A0", - LLDP_PORT_SUBTYPE_INTERFACE_NAME, "1/1"); + SD_LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS, "00:01:30:F9:AD:A0", + SD_LLDP_PORT_SUBTYPE_INTERFACE_NAME, "1/1"); g_assert (neighbor); g_assert_cmpint (g_variant_n_children (neighbor), ==, 4 + 10); diff --git a/src/devices/wifi/Makefile.am b/src/devices/wifi/Makefile.am index b0919ef7..e35a84b4 100644 --- a/src/devices/wifi/Makefile.am +++ b/src/devices/wifi/Makefile.am @@ -20,7 +20,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-wifi"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) pkglib_LTLIBRARIES = libnm-device-plugin-wifi.la diff --git a/src/devices/wifi/Makefile.in b/src/devices/wifi/Makefile.in index 1286a480..a180a434 100644 --- a/src/devices/wifi/Makefile.in +++ b/src/devices/wifi/Makefile.in @@ -539,7 +539,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-wifi"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) pkglib_LTLIBRARIES = libnm-device-plugin-wifi.la diff --git a/src/devices/wifi/tests/Makefile.am b/src/devices/wifi/tests/Makefile.am index dee8e799..d05ccf7e 100644 --- a/src/devices/wifi/tests/Makefile.am +++ b/src/devices/wifi/tests/Makefile.am @@ -10,7 +10,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src \ -DG_LOG_DOMAIN=\""NetworkManager-wifi"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) noinst_PROGRAMS = test-wifi-ap-utils diff --git a/src/devices/wifi/tests/Makefile.in b/src/devices/wifi/tests/Makefile.in index 90900f00..be874cc3 100644 --- a/src/devices/wifi/tests/Makefile.in +++ b/src/devices/wifi/tests/Makefile.in @@ -664,7 +664,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src \ -DG_LOG_DOMAIN=\""NetworkManager-wifi"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) test_wifi_ap_utils_SOURCES = \ diff --git a/src/devices/wwan/Makefile.am b/src/devices/wwan/Makefile.am index 107f630b..1777eb36 100644 --- a/src/devices/wwan/Makefile.am +++ b/src/devices/wwan/Makefile.am @@ -15,7 +15,6 @@ AM_CPPFLAGS = \ -I${top_builddir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-wwan"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(MM_GLIB_CFLAGS) diff --git a/src/devices/wwan/Makefile.in b/src/devices/wwan/Makefile.in index ac13135e..e7722414 100644 --- a/src/devices/wwan/Makefile.in +++ b/src/devices/wwan/Makefile.in @@ -506,7 +506,6 @@ AM_CPPFLAGS = \ -I${top_builddir}/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-wwan"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(MM_GLIB_CFLAGS) diff --git a/src/dhcp-manager/Makefile.am b/src/dhcp-manager/Makefile.am index 3199ab04..b4590b4b 100644 --- a/src/dhcp-manager/Makefile.am +++ b/src/dhcp-manager/Makefile.am @@ -9,7 +9,6 @@ nm_dhcp_helper_CPPFLAGS = \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""nm-dhcp-helper"\" \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DNMRUNDIR=\"$(nmrundir)\" nm_dhcp_helper_LDADD = $(GLIB_LIBS) diff --git a/src/dhcp-manager/Makefile.in b/src/dhcp-manager/Makefile.in index 35ee4822..0f98c8c5 100644 --- a/src/dhcp-manager/Makefile.in +++ b/src/dhcp-manager/Makefile.in @@ -455,7 +455,6 @@ nm_dhcp_helper_CPPFLAGS = \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""nm-dhcp-helper"\" \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DNMRUNDIR=\"$(nmrundir)\" nm_dhcp_helper_LDADD = $(GLIB_LIBS) diff --git a/src/dhcp-manager/tests/Makefile.am b/src/dhcp-manager/tests/Makefile.am index 5c7f9ba2..b26cea14 100644 --- a/src/dhcp-manager/tests/Makefile.am +++ b/src/dhcp-manager/tests/Makefile.am @@ -8,7 +8,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DTESTDIR="\"$(abs_srcdir)\"" diff --git a/src/dhcp-manager/tests/Makefile.in b/src/dhcp-manager/tests/Makefile.in index 3bc370b8..1a072c73 100644 --- a/src/dhcp-manager/tests/Makefile.in +++ b/src/dhcp-manager/tests/Makefile.in @@ -667,7 +667,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DTESTDIR="\"$(abs_srcdir)\"" diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c index ec83e600..b42af167 100644 --- a/src/dns-manager/nm-dns-manager.c +++ b/src/dns-manager/nm-dns-manager.c @@ -748,10 +748,10 @@ compute_hash (NMDnsManager *self, const NMGlobalDnsConfig *global, guint8 buffer /* add any other configs we know about */ for (iter = priv->configs; iter; iter = g_slist_next (iter)) { - if ( (iter->data == priv->ip4_vpn_config) - && (iter->data == priv->ip4_device_config) - && (iter->data == priv->ip6_vpn_config) - && (iter->data == priv->ip6_device_config)) + if (NM_IN_SET (iter->data, priv->ip4_vpn_config, + priv->ip4_device_config, + priv->ip6_vpn_config, + priv->ip6_device_config)) continue; if (NM_IS_IP4_CONFIG (iter->data)) @@ -792,10 +792,10 @@ build_plugin_config_lists (NMDnsManager *self, *out_dev_configs = g_slist_append (*out_dev_configs, priv->ip6_device_config); for (iter = priv->configs; iter; iter = g_slist_next (iter)) { - if ( (iter->data != priv->ip4_vpn_config) - && (iter->data != priv->ip4_device_config) - && (iter->data != priv->ip6_vpn_config) - && (iter->data != priv->ip6_device_config)) + if (!NM_IN_SET (iter->data, priv->ip4_vpn_config, + priv->ip4_device_config, + priv->ip6_vpn_config, + priv->ip6_device_config)) *out_other_configs = g_slist_append (*out_other_configs, iter->data); } } @@ -891,10 +891,10 @@ update_dns (NMDnsManager *self, merge_one_ip6_config (&rc, priv->ip6_device_config); for (iter = priv->configs; iter; iter = g_slist_next (iter)) { - if ( (iter->data == priv->ip4_vpn_config) - || (iter->data == priv->ip4_device_config) - || (iter->data == priv->ip6_vpn_config) - || (iter->data == priv->ip6_device_config)) + if (NM_IN_SET (iter->data, priv->ip4_vpn_config, + priv->ip4_device_config, + priv->ip6_vpn_config, + priv->ip6_device_config)) continue; if (NM_IS_IP4_CONFIG (iter->data)) { @@ -1599,12 +1599,12 @@ nm_dns_manager_class_init (NMDnsManagerClass *klass) /* signals */ signals[CONFIG_CHANGED] = - g_signal_new ("config-changed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMDnsManagerClass, config_changed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + g_signal_new (NM_DNS_MANAGER_CONFIG_CHANGED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMDnsManagerClass, config_changed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } diff --git a/src/dns-manager/nm-dns-manager.h b/src/dns-manager/nm-dns-manager.h index dd5c9e98..f1293f7e 100644 --- a/src/dns-manager/nm-dns-manager.h +++ b/src/dns-manager/nm-dns-manager.h @@ -43,6 +43,8 @@ G_BEGIN_DECLS #define NM_IS_DNS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NM_TYPE_DNS_MANAGER)) #define NM_DNS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NM_TYPE_DNS_MANAGER, NMDnsManagerClass)) +#define NM_DNS_MANAGER_CONFIG_CHANGED "config-changed" + typedef struct { GObject parent; } NMDnsManager; diff --git a/src/dnsmasq-manager/tests/Makefile.am b/src/dnsmasq-manager/tests/Makefile.am index 2c5e8e40..6d7a2a92 100644 --- a/src/dnsmasq-manager/tests/Makefile.am +++ b/src/dnsmasq-manager/tests/Makefile.am @@ -8,7 +8,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DTESTDIR="\"$(abs_srcdir)\"" diff --git a/src/dnsmasq-manager/tests/Makefile.in b/src/dnsmasq-manager/tests/Makefile.in index ff97e120..d6b57edb 100644 --- a/src/dnsmasq-manager/tests/Makefile.in +++ b/src/dnsmasq-manager/tests/Makefile.in @@ -661,7 +661,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DTESTDIR="\"$(abs_srcdir)\"" diff --git a/src/nm-auth-manager.c b/src/nm-auth-manager.c index e2e22aca..531e2c35 100644 --- a/src/nm-auth-manager.c +++ b/src/nm-auth-manager.c @@ -264,7 +264,7 @@ nm_auth_manager_polkit_authority_check_authorization (NMAuthManager *self, : POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE; subject_value = nm_auth_subject_unix_process_to_polkit_gvariant (subject); - g_assert (g_variant_is_floating (subject_value)); + nm_assert (g_variant_is_floating (subject_value)); /* ((PolkitDetails *)NULL) */ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}")); diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c index b98b6e8a..6cdd00e0 100644 --- a/src/nm-core-utils.c +++ b/src/nm-core-utils.c @@ -2788,7 +2788,7 @@ nm_utils_ipv6_addr_set_stable_privacy (struct in6_addr *addr, key_mask = umask (0077); if (read (urandom, secret_key, key_len) == key_len) { if (!g_file_set_contents (NMSTATEDIR "/secret_key", secret_key, key_len, error)) { - g_prefix_error (error, "Can't write " NMSTATEDIR "/secret_key"); + g_prefix_error (error, "Can't write " NMSTATEDIR "/secret_key: "); key_len = 0; } } else { diff --git a/src/nm-enum-types.c b/src/nm-enum-types.c index 66d6c9b3..b3c82c63 100644 --- a/src/nm-enum-types.c +++ b/src/nm-enum-types.c @@ -39,11 +39,11 @@ #include "nm-dnsmasq-manager.h" #include "nm-dnsmasq-utils.h" #include "nmp-netns.h" -#include "nm-fake-platform.h" -#include "nm-linux-platform.h" -#include "nm-platform.h" -#include "nm-platform-utils.h" #include "nmp-object.h" +#include "nm-platform-utils.h" +#include "nm-platform.h" +#include "nm-linux-platform.h" +#include "nm-fake-platform.h" #include "wifi-utils-nl80211.h" #include "wifi-utils.h" #include "nm-fake-rdisc.h" diff --git a/src/nm-exported-object.c b/src/nm-exported-object.c index b6d30aab..10f7d23f 100644 --- a/src/nm-exported-object.c +++ b/src/nm-exported-object.c @@ -15,40 +15,44 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright 2014-2015 Red Hat, Inc. + * Copyright 2014-2016 Red Hat, Inc. */ #include "nm-default.h" +#include "nm-exported-object.h" + #include <stdarg.h> #include <string.h> -#include "nm-exported-object.h" #include "nm-bus-manager.h" -static GHashTable *prefix_counters; -static gboolean quitting = FALSE; - - #if NM_MORE_ASSERTS >= 2 #define _ASSERT_NO_EARLY_EXPORT #endif -G_DEFINE_ABSTRACT_TYPE_WITH_CODE (NMExportedObject, nm_exported_object, G_TYPE_DBUS_OBJECT_SKELETON, - prefix_counters = g_hash_table_new (g_str_hash, g_str_equal); - ) +static gboolean quitting = FALSE; + +G_DEFINE_ABSTRACT_TYPE (NMExportedObject, nm_exported_object, G_TYPE_DBUS_OBJECT_SKELETON); typedef struct { - GSList *interfaces; + GDBusInterfaceSkeleton *interface; + guint property_changed_signal_id; +} InterfaceData; +typedef struct { NMBusManager *bus_mgr; char *path; - GVariantBuilder pending_notifies; + GHashTable *pending_notifies; + + InterfaceData *interfaces; + guint num_interfaces; + guint notify_idle_id; #ifdef _ASSERT_NO_EARLY_EXPORT - gboolean _constructed; + bool _constructed:1; #endif } NMExportedObjectPrivate; @@ -147,23 +151,25 @@ nm_exported_object_signal_hook (GSignalInvocationHint *ihint, NMExportedObjectPrivate *priv; GSignalQuery *signal_info = data; GDBusInterfaceSkeleton *interface = NULL; - GSList *iter; GValue *dbus_param_values; - int i; + guint i; priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); if (!priv->path) return TRUE; - for (iter = priv->interfaces; iter; iter = iter->next) { - if (g_type_is_a (G_OBJECT_TYPE (iter->data), signal_info->itype)) { - interface = G_DBUS_INTERFACE_SKELETON (iter->data); + for (i = 0; i < priv->num_interfaces; i++) { + InterfaceData *ifdata = &priv->interfaces[i]; + + if (g_type_is_a (G_OBJECT_TYPE (ifdata->interface), signal_info->itype)) { + interface = ifdata->interface; break; } } g_return_val_if_fail (interface != NULL, TRUE); - dbus_param_values = g_new0 (GValue, n_param_values); + dbus_param_values = g_newa (GValue, n_param_values); + memset (dbus_param_values, 0, sizeof (GValue) * n_param_values); g_value_init (&dbus_param_values[0], G_OBJECT_TYPE (interface)); g_value_set_object (&dbus_param_values[0], interface); for (i = 1; i < n_param_values; i++) { @@ -185,7 +191,6 @@ nm_exported_object_signal_hook (GSignalInvocationHint *ihint, for (i = 0; i < n_param_values; i++) g_value_unset (&dbus_param_values[i]); - g_free (dbus_param_values); return TRUE; } @@ -342,6 +347,8 @@ nm_exported_object_class_add_interface (NMExportedObjectClass *object_class, g_type_class_unref (dbus_object_class); } +/*****************************************************************************/ + /* "meta-marshaller" that receives the skeleton "handle-foo" signal, replaces * the skeleton object with an #NMExportedObject in the parameters, drops the * user_data parameter, and adds a "TRUE" return value (indicating to gdbus that @@ -452,9 +459,10 @@ nm_exported_object_create_skeletons (NMExportedObject *self, GObjectClass *object_class; NMExportedObjectClassInfo *classinfo; GSList *iter; - GDBusInterfaceSkeleton *interface; const NMExportedObjectDBusMethodImpl *methods; - guint methods_len; + guint i, methods_len; + guint num_interfaces; + InterfaceData *interfaces; classinfo = g_type_get_qdata (object_type, nm_exported_object_class_info_quark ()); if (!classinfo) @@ -466,17 +474,32 @@ nm_exported_object_create_skeletons (NMExportedObject *self, methods = classinfo->methods->len ? &g_array_index (classinfo->methods, NMExportedObjectDBusMethodImpl, 0) : NULL; methods_len = classinfo->methods->len; - for (iter = classinfo->skeleton_types; iter; iter = iter->next) { - interface = nm_exported_object_skeleton_create (GPOINTER_TO_SIZE (iter->data), - object_class, - methods, - methods_len, - (GObject *) self); + num_interfaces = g_slist_length (classinfo->skeleton_types); + g_return_if_fail (num_interfaces > 0); + + interfaces = g_slice_alloc (sizeof (InterfaceData) * (num_interfaces + priv->num_interfaces)); - g_dbus_object_skeleton_add_interface ((GDBusObjectSkeleton *) self, interface); + for (i = num_interfaces, iter = classinfo->skeleton_types; iter; iter = iter->next) { + InterfaceData *ifdata = &interfaces[--i]; + + ifdata->interface = nm_exported_object_skeleton_create (GPOINTER_TO_SIZE (iter->data), + object_class, + methods, + methods_len, + (GObject *) self); + g_dbus_object_skeleton_add_interface ((GDBusObjectSkeleton *) self, ifdata->interface); + + ifdata->property_changed_signal_id = g_signal_lookup ("properties-changed", G_OBJECT_TYPE (ifdata->interface)); + } + nm_assert (i == 0); - priv->interfaces = g_slist_prepend (priv->interfaces, interface); + if (priv->num_interfaces > 0) { + memcpy (&interfaces[num_interfaces], priv->interfaces, sizeof (InterfaceData) * priv->num_interfaces); + g_slice_free1 (sizeof (InterfaceData) * priv->num_interfaces, priv->interfaces); } + + priv->num_interfaces = num_interfaces + priv->num_interfaces; + priv->interfaces = interfaces; } void @@ -505,16 +528,85 @@ static void nm_exported_object_destroy_skeletons (NMExportedObject *self) { NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); + guint n; + + g_return_if_fail (priv->num_interfaces > 0); + nm_assert (priv->interfaces); + + n = priv->num_interfaces; + + while (priv->num_interfaces > 0) { + InterfaceData *ifdata = &priv->interfaces[--priv->num_interfaces]; + + g_dbus_object_skeleton_remove_interface ((GDBusObjectSkeleton *) self, ifdata->interface); + nm_exported_object_skeleton_release (ifdata->interface); + } - g_return_if_fail (priv->interfaces); + g_slice_free1 (sizeof (InterfaceData) * n, priv->interfaces); + priv->interfaces = NULL; +} + +static char * +_create_export_path (NMExportedObjectClass *klass) +{ + const char *class_export_path, *p; + static GHashTable *prefix_counters; + guint *counter; + + class_export_path = klass->export_path; + + nm_assert (class_export_path); - while (priv->interfaces) { - GDBusInterfaceSkeleton *interface = priv->interfaces->data; + p = strchr (class_export_path, '%'); + if (p) { + if (G_UNLIKELY (!prefix_counters)) + prefix_counters = g_hash_table_new (g_str_hash, g_str_equal); - priv->interfaces = g_slist_delete_link (priv->interfaces, priv->interfaces); - g_dbus_object_skeleton_remove_interface ((GDBusObjectSkeleton *) self, interface); - nm_exported_object_skeleton_release (interface); + g_assert (p[1] == 'u'); + g_assert (strchr (p + 1, '%') == NULL); + + counter = g_hash_table_lookup (prefix_counters, class_export_path); + if (!counter) { + counter = g_slice_new0 (guint); + g_hash_table_insert (prefix_counters, g_strdup (class_export_path), counter); + } + + return g_strdup_printf (class_export_path, (*counter)++); } + + return g_strdup (class_export_path); +} + +/** + * nm_exported_object_get_path: + * @self: an #NMExportedObject + * + * Gets @self's D-Bus path. + * + * Returns: @self's D-Bus path, or %NULL if @self is not exported. + */ +const char * +nm_exported_object_get_path (NMExportedObject *self) +{ + g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL); + + return NM_EXPORTED_OBJECT_GET_PRIVATE (self)->path; +} + +/** + * nm_exported_object_is_exported: + * @self: an #NMExportedObject + * + * Checks if @self is exported + * + * Returns: %TRUE if @self is exported + */ +gboolean +nm_exported_object_is_exported (NMExportedObject *self) +{ + g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), FALSE); + + return NM_EXPORTED_OBJECT_GET_PRIVATE (self)->path != NULL; } /** @@ -535,9 +627,7 @@ const char * nm_exported_object_export (NMExportedObject *self) { NMExportedObjectPrivate *priv; - const char *class_export_path, *p; GType type; - char *path; g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL); priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); @@ -554,31 +644,14 @@ nm_exported_object_export (NMExportedObject *self) g_return_val_if_reached (NULL); g_object_add_weak_pointer ((GObject *) priv->bus_mgr, (gpointer *) &priv->bus_mgr); - class_export_path = NM_EXPORTED_OBJECT_GET_CLASS (self)->export_path; - p = strchr (class_export_path, '%'); - if (p) { - guint *counter; - - g_return_val_if_fail (p[1] == 'u', NULL); - g_return_val_if_fail (strchr (p + 1, '%') == NULL, NULL); - - counter = g_hash_table_lookup (prefix_counters, class_export_path); - if (!counter) { - counter = g_new0 (guint, 1); - g_hash_table_insert (prefix_counters, g_strdup (class_export_path), counter); - } - - path = g_strdup_printf (class_export_path, (*counter)++); - } else - path = g_strdup (class_export_path); - type = G_OBJECT_TYPE (self); while (type != NM_TYPE_EXPORTED_OBJECT) { nm_exported_object_create_skeletons (self, type); type = g_type_parent (type); } - priv->path = path; + priv->path = _create_export_path (NM_EXPORTED_OBJECT_GET_CLASS (self)); + _LOGT ("export: \"%s\"", priv->path); g_dbus_object_skeleton_set_object_path (G_DBUS_OBJECT_SKELETON (self), priv->path); @@ -591,38 +664,6 @@ nm_exported_object_export (NMExportedObject *self) } /** - * nm_exported_object_get_path: - * @self: an #NMExportedObject - * - * Gets @self's D-Bus path. - * - * Returns: @self's D-Bus path, or %NULL if @self is not exported. - */ -const char * -nm_exported_object_get_path (NMExportedObject *self) -{ - g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL); - - return NM_EXPORTED_OBJECT_GET_PRIVATE (self)->path; -} - -/** - * nm_exported_object_is_exported: - * @self: an #NMExportedObject - * - * Checks if @self is exported - * - * Returns: %TRUE if @self is exported - */ -gboolean -nm_exported_object_is_exported (NMExportedObject *self) -{ - g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), FALSE); - - return NM_EXPORTED_OBJECT_GET_PRIVATE (self)->path != NULL; -} - -/** * nm_exported_object_unexport: * @self: an #NMExportedObject * @@ -659,38 +700,11 @@ nm_exported_object_unexport (NMExportedObject *self) if (nm_clear_g_source (&priv->notify_idle_id)) { /* We had a notification queued. Since we removed all interfaces, * the notification is obsolete and must be cleaned up. */ - g_variant_builder_clear (&priv->pending_notifies); - g_variant_builder_init (&priv->pending_notifies, G_VARIANT_TYPE_VARDICT); + g_hash_table_remove_all (priv->pending_notifies); } } -GSList * -nm_exported_object_get_interfaces (NMExportedObject *self) -{ - NMExportedObjectPrivate *priv; - - g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL); - - priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); - - g_return_val_if_fail (priv->path, NULL); - g_return_val_if_fail (priv->interfaces, NULL); - - return priv->interfaces; -} - -GDBusInterfaceSkeleton * -nm_exported_object_get_interface_by_type (NMExportedObject *self, GType interface_type) -{ - GSList *interfaces; - - interfaces = nm_exported_object_get_interfaces (self); - for (; interfaces; interfaces = interfaces->next) { - if (G_TYPE_CHECK_INSTANCE_TYPE (interfaces->data, interface_type)) - return interfaces->data; - } - return NULL; -} +/*****************************************************************************/ void _nm_exported_object_clear_and_unexport (NMExportedObject **location) @@ -714,68 +728,107 @@ _nm_exported_object_clear_and_unexport (NMExportedObject **location) g_object_unref (self); } -static void -nm_exported_object_init (NMExportedObject *self) +/*****************************************************************************/ + +GDBusInterfaceSkeleton * +nm_exported_object_get_interface_by_type (NMExportedObject *self, GType interface_type) { - NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); + NMExportedObjectPrivate *priv; + guint i; - g_variant_builder_init (&priv->pending_notifies, G_VARIANT_TYPE_VARDICT); + g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL); + + priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); + + g_return_val_if_fail (priv->path, NULL); + g_return_val_if_fail (priv->num_interfaces > 0, NULL); + + nm_assert (priv->interfaces); + + for (i = 0; i < priv->num_interfaces; i++) { + InterfaceData *ifdata = &priv->interfaces[i]; + + if (G_TYPE_CHECK_INSTANCE_TYPE (ifdata->interface, interface_type)) + return ifdata->interface; + } + return NULL; +} + +/*****************************************************************************/ + +void +nm_exported_object_class_set_quitting (void) +{ + quitting = TRUE; +} + +/*****************************************************************************/ + +typedef struct { + const char *property_name; + GVariant *variant; +} PendingNotifiesItem; + +static int +_sort_pending_notifies (gconstpointer a, gconstpointer b, gpointer user_data) +{ + return strcmp (((const PendingNotifiesItem *) a)->property_name, + ((const PendingNotifiesItem *) b)->property_name); } static gboolean idle_emit_properties_changed (gpointer self) { NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); - GVariant *notifies; - GSList *iter; - GDBusInterfaceSkeleton *interface = NULL; - guint signal_id = 0; + gs_unref_variant GVariant *variant = NULL; + InterfaceData *ifdata = NULL; + GHashTableIter hash_iter; + GVariantBuilder notifies; + guint i, n; + PendingNotifiesItem *values; priv->notify_idle_id = 0; - notifies = g_variant_builder_end (&priv->pending_notifies); - g_variant_ref_sink (notifies); - g_variant_builder_init (&priv->pending_notifies, G_VARIANT_TYPE_VARDICT); - - for (iter = priv->interfaces; iter; iter = iter->next) { - signal_id = g_signal_lookup ("properties-changed", G_OBJECT_TYPE (iter->data)); - if (signal_id != 0) { - interface = G_DBUS_INTERFACE_SKELETON (iter->data); + + + n = g_hash_table_size (priv->pending_notifies); + g_return_val_if_fail (n > 0, FALSE); + + values = g_alloca (sizeof (values[0]) * n); + + i = 0; + g_hash_table_iter_init (&hash_iter, priv->pending_notifies); + while (g_hash_table_iter_next (&hash_iter, (gpointer) &values[i].property_name, (gpointer) &values[i].variant)) + i++; + nm_assert (i == n); + + g_qsort_with_data (values, n, sizeof (values[0]), _sort_pending_notifies, NULL); + + g_variant_builder_init (¬ifies, G_VARIANT_TYPE_VARDICT); + for (i = 0; i < n; i++) + g_variant_builder_add (¬ifies, "{sv}", values[i].property_name, values[i].variant); + variant = g_variant_ref_sink (g_variant_builder_end (¬ifies)); + + g_hash_table_remove_all (priv->pending_notifies); + + for (i = 0; i < priv->num_interfaces; i++) { + if (priv->interfaces[i].property_changed_signal_id != 0) { + ifdata = &priv->interfaces[i]; break; } } - g_return_val_if_fail (signal_id != 0, FALSE); + g_return_val_if_fail (ifdata, FALSE); if (nm_logging_enabled (LOGL_DEBUG, LOGD_DBUS_PROPS)) { - char *notification; + gs_free char *notification = g_variant_print (variant, TRUE); - notification = g_variant_print (notifies, TRUE); nm_log_dbg (LOGD_DBUS_PROPS, "PropertiesChanged %s %p: %s", G_OBJECT_TYPE_NAME (self), self, notification); - g_free (notification); } - g_signal_emit (interface, signal_id, 0, notifies); - g_variant_unref (notifies); - + g_signal_emit (ifdata->interface, ifdata->property_changed_signal_id, 0, variant); return FALSE; } -static const GVariantType * -find_dbus_property_type (GDBusInterfaceSkeleton *skel, - const char *dbus_property_name) -{ - GDBusInterfaceInfo *iinfo; - int i; - - iinfo = g_dbus_interface_skeleton_get_info (skel); - for (i = 0; iinfo->properties[i]; i++) { - if (!strcmp (iinfo->properties[i]->name, dbus_property_name)) - return G_VARIANT_TYPE (iinfo->properties[i]->signature); - } - - return NULL; -} - static void nm_exported_object_notify (GObject *object, GParamSpec *pspec) { @@ -785,10 +838,9 @@ nm_exported_object_notify (GObject *object, GParamSpec *pspec) const char *dbus_property_name = NULL; GValue value = G_VALUE_INIT; const GVariantType *vtype; - GVariant *variant; - GSList *iter; + guint i, j; - if (!priv->interfaces) + if (priv->num_interfaces == 0) return; for (type = G_OBJECT_TYPE (object); type; type = g_type_parent (type)) { @@ -806,25 +858,48 @@ nm_exported_object_notify (GObject *object, GParamSpec *pspec) return; } + for (i = 0; i < priv->num_interfaces; i++) { + GDBusInterfaceSkeleton *skel = priv->interfaces[i].interface; + GDBusInterfaceInfo *iinfo; + + iinfo = g_dbus_interface_skeleton_get_info (skel); + for (j = 0; iinfo->properties[j]; j++) { + if (nm_streq (iinfo->properties[j]->name, dbus_property_name)) { + vtype = G_VARIANT_TYPE (iinfo->properties[j]->signature); + goto vtype_found; + } + } + } + g_return_if_reached (); + +vtype_found: g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (object), pspec->name, &value); - vtype = NULL; - for (iter = priv->interfaces; iter && !vtype; iter = iter->next) - vtype = find_dbus_property_type (iter->data, dbus_property_name); - g_return_if_fail (vtype != NULL); - - variant = g_dbus_gvalue_to_gvariant (&value, vtype); - g_variant_builder_add (&priv->pending_notifies, "{sv}", - dbus_property_name, - variant); + /* @dbus_property_name is inside classinfo and never freed, thus we don't clone it. + * Also, we do a pointer, not string comparison. */ + g_hash_table_insert (priv->pending_notifies, + (gpointer) dbus_property_name, + g_dbus_gvalue_to_gvariant (&value, vtype)); g_value_unset (&value); - g_variant_unref (variant); if (!priv->notify_idle_id) priv->notify_idle_id = g_idle_add (idle_emit_properties_changed, object); } +/*****************************************************************************/ + +static void +nm_exported_object_init (NMExportedObject *self) +{ + NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self); + + priv->pending_notifies = g_hash_table_new_full (g_direct_hash, + g_direct_equal, + NULL, + (GDestroyNotify) g_variant_unref); +} + static void constructed (GObject *object) { @@ -858,7 +933,7 @@ nm_exported_object_dispose (GObject *object) } else g_clear_pointer (&priv->path, g_free); - g_variant_builder_clear (&priv->pending_notifies); + g_clear_pointer (&priv->pending_notifies, g_hash_table_destroy); nm_clear_g_source (&priv->notify_idle_id); G_OBJECT_CLASS (nm_exported_object_parent_class)->dispose (object); @@ -876,9 +951,4 @@ nm_exported_object_class_init (NMExportedObjectClass *klass) object_class->dispose = nm_exported_object_dispose; } -void -nm_exported_object_class_set_quitting (void) -{ - quitting = TRUE; -} diff --git a/src/nm-exported-object.h b/src/nm-exported-object.h index 88efb6fe..c2c22804 100644 --- a/src/nm-exported-object.h +++ b/src/nm-exported-object.h @@ -74,7 +74,6 @@ const char *nm_exported_object_export (NMExportedObject *self); const char *nm_exported_object_get_path (NMExportedObject *self); gboolean nm_exported_object_is_exported (NMExportedObject *self); void nm_exported_object_unexport (NMExportedObject *self); -GSList * nm_exported_object_get_interfaces (NMExportedObject *self); GDBusInterfaceSkeleton *nm_exported_object_get_interface_by_type (NMExportedObject *self, GType interface_type); void _nm_exported_object_clear_and_unexport (NMExportedObject **location); diff --git a/src/nm-firewall-manager.c b/src/nm-firewall-manager.c index 7babff3c..f1d0170b 100644 --- a/src/nm-firewall-manager.c +++ b/src/nm-firewall-manager.c @@ -520,7 +520,7 @@ nm_firewall_manager_class_init (NMFirewallManagerClass *klass) G_PARAM_STATIC_STRINGS)); signals[STARTED] = - g_signal_new ("started", + g_signal_new (NM_FIREWALL_MANAGER_STARTED, G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (NMFirewallManagerClass, started), diff --git a/src/nm-firewall-manager.h b/src/nm-firewall-manager.h index dfa83b45..a08ac8b8 100644 --- a/src/nm-firewall-manager.h +++ b/src/nm-firewall-manager.h @@ -40,6 +40,8 @@ G_BEGIN_DECLS #define NM_FIREWALL_MANAGER_AVAILABLE "available" +#define NM_FIREWALL_MANAGER_STARTED "started" + struct _NMFirewallManagerCallId; typedef struct _NMFirewallManagerCallId *NMFirewallManagerCallId; diff --git a/src/nm-manager.c b/src/nm-manager.c index dc394a49..289a91d6 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -154,7 +154,6 @@ enum { INTERNAL_DEVICE_REMOVED, STATE_CHANGED, CHECK_PERMISSIONS, - USER_PERMISSIONS_CHANGED, ACTIVE_CONNECTION_ADDED, ACTIVE_CONNECTION_REMOVED, CONFIGURE_QUIT, @@ -164,8 +163,7 @@ enum { static guint signals[LAST_SIGNAL] = { 0 }; -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE (NMManager, PROP_VERSION, PROP_STATE, PROP_STATE_FILE, @@ -190,9 +188,7 @@ enum { /* Not exported */ PROP_HOSTNAME, PROP_SLEEPING, - - LAST_PROP -}; +); NM_DEFINE_SINGLETON_INSTANCE (NMManager); @@ -287,7 +283,7 @@ _active_connection_cleanup (gpointer user_data) iter = iter->next; if (nm_active_connection_get_state (ac) == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED) { if (active_connection_remove (self, ac)) - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (self, PROP_ACTIVE_CONNECTIONS); } } g_object_thaw_notify (G_OBJECT (self)); @@ -359,7 +355,7 @@ active_connection_add (NMManager *self, NMActiveConnection *active) /* Only notify D-Bus if the active connection is actually exported */ if (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (active))) - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (self, PROP_ACTIVE_CONNECTIONS); } const GSList * @@ -458,7 +454,7 @@ _config_changed_cb (NMConfig *config, NMConfigData *config_data, NMConfigChangeF NULL); if (NM_FLAGS_HAS (changes, NM_CONFIG_CHANGE_GLOBAL_DNS_CONFIG)) - g_object_notify (G_OBJECT (self), NM_MANAGER_GLOBAL_DNS_CONFIGURATION); + _notify (self, PROP_GLOBAL_DNS_CONFIGURATION); } /************************************************************************/ @@ -622,7 +618,7 @@ set_state (NMManager *self, NMState state) _LOGI (LOGD_CORE, "NetworkManager state is now %s", _nm_state_to_string (state)); - g_object_notify (G_OBJECT (self), NM_MANAGER_STATE); + _notify (self, PROP_STATE); g_signal_emit (self, signals[STATE_CHANGED], 0, priv->state); } @@ -641,7 +637,7 @@ checked_connectivity (GObject *object, GAsyncResult *result, gpointer user_data) else if ( connectivity == NM_CONNECTIVITY_PORTAL || connectivity == NM_CONNECTIVITY_LIMITED) set_state (manager, NM_STATE_CONNECTED_SITE); - g_object_notify (G_OBJECT (manager), NM_MANAGER_CONNECTIVITY); + _notify (manager, PROP_CONNECTIVITY); } g_object_unref (manager); @@ -710,7 +706,7 @@ nm_manager_update_metered (NMManager *self) if (value != priv->metered) { priv->metered = value; _LOGD (LOGD_CORE, "new metered value: %d", (int) priv->metered); - g_object_notify (G_OBJECT (self), NM_MANAGER_METERED); + _notify (self, PROP_METERED); } } @@ -756,7 +752,7 @@ manager_device_state_changed (NMDevice *device, case NM_DEVICE_STATE_DISCONNECTED: case NM_DEVICE_STATE_PREPARE: case NM_DEVICE_STATE_FAILED: - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (self, PROP_ACTIVE_CONNECTIONS); break; default: break; @@ -801,7 +797,7 @@ check_if_startup_complete (NMManager *self) _LOGI (LOGD_CORE, "startup complete"); priv->startup = FALSE; - g_object_notify (G_OBJECT (self), "startup"); + _notify (self, PROP_STARTUP); /* We don't have to watch notify::has-pending-action any more. */ for (iter = priv->devices; iter; iter = iter->next) { @@ -873,12 +869,13 @@ remove_device (NMManager *self, priv->devices = g_slist_remove (priv->devices, device); if (nm_device_is_real (device)) { - g_signal_emit (self, signals[DEVICE_REMOVED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_DEVICES); nm_device_removed (device); + + g_signal_emit (self, signals[DEVICE_REMOVED], 0, device); + _notify (self, PROP_DEVICES); } g_signal_emit (self, signals[INTERNAL_DEVICE_REMOVED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_ALL_DEVICES); + _notify (self, PROP_ALL_DEVICES); nm_exported_object_clear_and_unexport (&device); @@ -1234,7 +1231,7 @@ system_hostname_changed_cb (NMSettings *settings, g_free (priv->hostname); priv->hostname = hostname; - g_object_notify (G_OBJECT (self), NM_MANAGER_HOSTNAME); + _notify (self, PROP_HOSTNAME); nm_dhcp_manager_set_default_hostname (nm_dhcp_manager_get (), priv->hostname); } @@ -1798,7 +1795,7 @@ device_realized (NMDevice *device, { /* Emit D-Bus signals */ g_signal_emit (self, signals[DEVICE_ADDED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_DEVICES); + _notify (self, PROP_DEVICES); } static void @@ -1930,7 +1927,7 @@ add_device (NMManager *self, NMDevice *device, GError **error) nm_settings_device_added (priv->settings, device); g_signal_emit (self, signals[INTERNAL_DEVICE_ADDED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_ALL_DEVICES); + _notify (self, PROP_ALL_DEVICES); for (iter = priv->devices; iter; iter = iter->next) { NMDevice *d = iter->data; @@ -2009,7 +2006,6 @@ platform_link_added (NMManager *self, { NMDeviceFactory *factory; NMDevice *device = NULL; - GError *error = NULL; gboolean nm_plugin_missing = FALSE; GSList *iter; @@ -2022,6 +2018,7 @@ platform_link_added (NMManager *self, for (iter = NM_MANAGER_GET_PRIVATE (self)->devices; iter; iter = iter->next) { NMDevice *candidate = iter->data; gboolean compatible = TRUE; + gs_free_error GError *error = NULL; if (strcmp (nm_device_get_iface (candidate), plink->name)) continue; @@ -2039,7 +2036,6 @@ platform_link_added (NMManager *self, _LOGD (LOGD_DEVICE, "(%s): failed to realize from plink: '%s'", plink->name, error->message); - g_clear_error (&error); /* Try next unrealized device */ } @@ -2048,13 +2044,13 @@ platform_link_added (NMManager *self, factory = nm_device_factory_manager_find_factory_for_link_type (plink->type); if (factory) { gboolean ignore = FALSE; + gs_free_error GError *error = NULL; device = nm_device_factory_create_device (factory, plink->name, plink, NULL, &ignore, &error); if (!device) { if (!ignore) { _LOGW (LOGD_HW, "%s: factory failed to create device: %s", plink->name, error->message); - g_clear_error (&error); } return; } @@ -2078,6 +2074,8 @@ platform_link_added (NMManager *self, } if (device) { + gs_free_error GError *error = NULL; + if (nm_plugin_missing) nm_device_set_nm_plugin_missing (device, TRUE); if (nm_device_realize_start (device, plink, NULL, &error)) { @@ -2086,7 +2084,6 @@ platform_link_added (NMManager *self, } else { _LOGW (LOGD_DEVICE, "%s: failed to realize device: %s", plink->name, error->message); - g_clear_error (&error); } g_object_unref (device); } @@ -2389,9 +2386,8 @@ find_master (NMManager *self, master_connection = nm_device_get_settings_connection (master_device); if (master_connection && !is_compatible_with_slave (NM_CONNECTION (master_connection), connection)) { g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "The active connection on %s is not a valid master for '%s'", - nm_device_get_iface (master_device), - nm_connection_get_id (connection)); + "The active connection on %s is not compatible", + nm_device_get_iface (master_device)); return FALSE; } } else { @@ -2486,8 +2482,7 @@ ensure_master_active_connection (NMManager *self, g_assert (!master_connection || master_connection == device_connection); if (device_connection && !is_compatible_with_slave (NM_CONNECTION (device_connection), connection)) { g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "The active connection on %s is not a valid master for '%s'", - nm_device_get_iface (master_device), + "The active connection %s is not compatible", nm_connection_get_id (connection)); return NULL; } @@ -2526,8 +2521,6 @@ ensure_master_active_connection (NMManager *self, master_device, subject, error); - if (!master_ac) - g_prefix_error (error, "%s", "Master device activation failed: "); g_slist_free (connections); return master_ac; } @@ -2537,8 +2530,7 @@ ensure_master_active_connection (NMManager *self, g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_CONNECTION, - "No compatible connection found for master device %s.", - nm_device_get_iface (master_device)); + "No compatible connection found."); return NULL; } @@ -2546,8 +2538,7 @@ ensure_master_active_connection (NMManager *self, g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "Master device %s unmanaged or not available for activation", - nm_device_get_iface (master_device)); + "Device unmanaged or not available for activation"); } else if (master_connection) { gboolean found_device = FALSE; @@ -2576,16 +2567,13 @@ ensure_master_active_connection (NMManager *self, candidate, subject, error); - if (!master_ac) - g_prefix_error (error, "%s", "Master device activation failed: "); return master_ac; } g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_DEVICE, - "No compatible disconnected device found for master connection %s.", - nm_settings_connection_get_uuid (master_connection)); + "No device available"); } else g_assert_not_reached (); @@ -2716,19 +2704,12 @@ autoconnect_slaves (NMManager *self, static gboolean _internal_activate_vpn (NMManager *self, NMActiveConnection *active, GError **error) { - gboolean success; - g_assert (NM_IS_VPN_CONNECTION (active)); nm_exported_object_export (NM_EXPORTED_OBJECT (active)); - success = nm_vpn_manager_activate_connection (NM_MANAGER_GET_PRIVATE (self)->vpn_manager, - NM_VPN_CONNECTION (active), - error); - if (success) - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); - else - nm_exported_object_unexport (NM_EXPORTED_OBJECT (active)); - return success; + return nm_vpn_manager_activate_connection (NM_MANAGER_GET_PRIVATE (self)->vpn_manager, + NM_VPN_CONNECTION (active), + error); } /* Traverse the device to disconnected state. This means that the device is ready @@ -2890,8 +2871,11 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * /* Try to find the master connection/device if the connection has a dependency */ if (!find_master (self, applied, device, &master_connection, &master_device, &master_ac, - error)) + error)) { + g_prefix_error (error, "Can not find a master for %s: ", + nm_settings_connection_get_id (connection)); return FALSE; + } /* Ensure there's a master active connection the new connection we're * activating can depend on. @@ -2910,8 +2894,10 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * /* Ensure eg bond slave and the candidate master is a bond master */ if (master_connection && !is_compatible_with_slave (NM_CONNECTION (master_connection), applied)) { - g_set_error_literal (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "The master connection was not compatible"); + g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, + "The master connection '%s' is not compatible with '%s'", + nm_settings_connection_get_id (master_connection), + nm_settings_connection_get_id (connection)); return FALSE; } @@ -2924,8 +2910,13 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * master_device, error); if (!master_ac) { - if (error) - g_assert (*error); + if (master_device) { + g_prefix_error (error, "Master device '%s' can't be activated: ", + nm_device_get_ip_iface (device)); + } else { + g_prefix_error (error, "Master connection '%s' can't be activated: ", + nm_settings_connection_get_id (connection)); + } return FALSE; } } @@ -2951,7 +2942,6 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * /* Export the new ActiveConnection to clients and start it on the device */ nm_exported_object_export (NM_EXPORTED_OBJECT (active)); - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); nm_device_queue_activation (device, NM_ACT_REQUEST (active)); return TRUE; } @@ -3423,7 +3413,7 @@ impl_manager_activate_connection (NMManager *self, device = nm_manager_get_device_by_path (self, device_path); if (!device) { error = g_error_new (NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_DEVICE, - "Cannot activate unknown device %s", device_path); + "Can not activate an unknown device '%s'", device_path); goto error; } @@ -3522,6 +3512,7 @@ activation_add_done (NMSettings *settings, FALSE, nm_active_connection_get_subject (active), error->message); + g_object_unref (active); g_clear_error (&local); } @@ -3712,7 +3703,7 @@ nm_manager_deactivate_connection (NMManager *manager, } if (success) - g_object_notify (G_OBJECT (manager), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (manager, PROP_ACTIVE_CONNECTIONS); return success; } @@ -3903,8 +3894,13 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed) NMDevice *device = NM_DEVICE (iter->data); guint i; - if (nm_device_is_software (device)) + if (nm_device_is_software (device)) { + /* We do not manage/unmanage software devices but + * their dhcp leases could have gone stale so we need + * to renew them */ + nm_device_update_dynamic_ip_setup (device); continue; + } /* enable/disable wireless devices since that we don't respond * to killswitch changes during sleep. @@ -3949,7 +3945,7 @@ _internal_sleep (NMManager *self, gboolean do_sleep) do_sleep_wake (self, TRUE); - g_object_notify (G_OBJECT (self), NM_MANAGER_SLEEPING); + _notify (self, PROP_SLEEPING); } #if 0 @@ -4065,18 +4061,19 @@ static void _internal_enable (NMManager *self, gboolean enable) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - GError *err = NULL; + GError *error = NULL; /* Update "NetworkingEnabled" key in state file */ if (priv->state_file) { if (!write_value_to_state_file (priv->state_file, "main", "NetworkingEnabled", G_TYPE_BOOLEAN, (gpointer) &enable, - &err)) { + &error)) { /* Not a hard error */ _LOGW (LOGD_SUSPEND, "writing to state file %s failed: %s", priv->state_file, - err->message); + error->message); + g_clear_error (&error); } } @@ -4089,7 +4086,7 @@ _internal_enable (NMManager *self, gboolean enable) do_sleep_wake (self, FALSE); - g_object_notify (G_OBJECT (self), NM_MANAGER_NETWORKING_ENABLED); + _notify (self, PROP_NETWORKING_ENABLED); } static void @@ -4528,7 +4525,7 @@ connectivity_changed (NMConnectivity *connectivity, nm_connectivity_state_to_string (nm_connectivity_get_state (connectivity))); nm_manager_update_state (self); - g_object_notify (G_OBJECT (self), NM_MANAGER_CONNECTIVITY); + _notify (self, PROP_CONNECTIVITY); } static void @@ -4602,8 +4599,8 @@ policy_default_device_changed (GObject *object, GParamSpec *pspec, gpointer user G_CALLBACK (connection_metered_changed), self); } _LOGD (LOGD_CORE, "PrimaryConnection now %s", ac ? nm_active_connection_get_settings_connection_id (ac) : "(none)"); - g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION); - g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION_TYPE); + _notify (self, PROP_PRIMARY_CONNECTION); + _notify (self, PROP_PRIMARY_CONNECTION_TYPE); nm_manager_update_metered (self); } } @@ -4637,7 +4634,7 @@ policy_activating_device_changed (GObject *object, GParamSpec *pspec, gpointer u g_clear_object (&priv->activating_connection); priv->activating_connection = ac ? g_object_ref (ac) : NULL; _LOGD (LOGD_CORE, "ActivatingConnection now %s", ac ? nm_active_connection_get_settings_connection_id (ac) : "(none)"); - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVATING_CONNECTION); + _notify (self, PROP_ACTIVATING_CONNECTION); } } @@ -5544,144 +5541,124 @@ nm_manager_class_init (NMManagerClass *manager_class) object_class->dispose = dispose; /* properties */ - g_object_class_install_property - (object_class, PROP_VERSION, - g_param_spec_string (NM_MANAGER_VERSION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property (object_class, - PROP_STATE_FILE, - g_param_spec_string (NM_MANAGER_STATE_FILE, "", "", - NULL, - G_PARAM_WRITABLE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_STATE, - g_param_spec_uint (NM_MANAGER_STATE, "", "", - 0, NM_STATE_DISCONNECTED, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_STARTUP, - g_param_spec_boolean (NM_MANAGER_STARTUP, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_NETWORKING_ENABLED, - g_param_spec_boolean (NM_MANAGER_NETWORKING_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIRELESS_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIRELESS_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIRELESS_HARDWARE_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIRELESS_HARDWARE_ENABLED, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WWAN_ENABLED, - g_param_spec_boolean (NM_MANAGER_WWAN_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WWAN_HARDWARE_ENABLED, - g_param_spec_boolean (NM_MANAGER_WWAN_HARDWARE_ENABLED, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIMAX_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIMAX_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIMAX_HARDWARE_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIMAX_HARDWARE_ENABLED, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ACTIVE_CONNECTIONS, - g_param_spec_boxed (NM_MANAGER_ACTIVE_CONNECTIONS, "", "", - G_TYPE_STRV, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CONNECTIVITY, - g_param_spec_uint (NM_MANAGER_CONNECTIVITY, "", "", - NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_UNKNOWN, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PRIMARY_CONNECTION, - g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PRIMARY_CONNECTION_TYPE, - g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION_TYPE, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - - g_object_class_install_property - (object_class, PROP_ACTIVATING_CONNECTION, - g_param_spec_string (NM_MANAGER_ACTIVATING_CONNECTION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_VERSION] = + g_param_spec_string (NM_MANAGER_VERSION, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_STATE_FILE] = + g_param_spec_string (NM_MANAGER_STATE_FILE, "", "", + NULL, + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_STATE] = + g_param_spec_uint (NM_MANAGER_STATE, "", "", + 0, NM_STATE_DISCONNECTED, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_STARTUP] = + g_param_spec_boolean (NM_MANAGER_STARTUP, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_NETWORKING_ENABLED] = + g_param_spec_boolean (NM_MANAGER_NETWORKING_ENABLED, "", "", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WIRELESS_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WIRELESS_ENABLED, "", "", + TRUE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WIRELESS_HARDWARE_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WIRELESS_HARDWARE_ENABLED, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WWAN_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WWAN_ENABLED, "", "", + TRUE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WWAN_HARDWARE_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WWAN_HARDWARE_ENABLED, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WIMAX_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WIMAX_ENABLED, "", "", + TRUE, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WIMAX_HARDWARE_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WIMAX_HARDWARE_ENABLED, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ACTIVE_CONNECTIONS] = + g_param_spec_boxed (NM_MANAGER_ACTIVE_CONNECTIONS, "", "", + G_TYPE_STRV, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CONNECTIVITY] = + g_param_spec_uint (NM_MANAGER_CONNECTIVITY, "", "", + NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_UNKNOWN, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PRIMARY_CONNECTION] = + g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PRIMARY_CONNECTION_TYPE] = + g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION_TYPE, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ACTIVATING_CONNECTION] = + g_param_spec_string (NM_MANAGER_ACTIVATING_CONNECTION, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /* Hostname is not exported over D-Bus */ - g_object_class_install_property - (object_class, PROP_HOSTNAME, - g_param_spec_string (NM_MANAGER_HOSTNAME, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_HOSTNAME] = + g_param_spec_string (NM_MANAGER_HOSTNAME, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /* Sleeping is not exported over D-Bus */ - g_object_class_install_property - (object_class, PROP_SLEEPING, - g_param_spec_boolean (NM_MANAGER_SLEEPING, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_DEVICES, - g_param_spec_boxed (NM_MANAGER_DEVICES, "", "", - G_TYPE_STRV, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_SLEEPING] = + g_param_spec_boolean (NM_MANAGER_SLEEPING, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_DEVICES] = + g_param_spec_boxed (NM_MANAGER_DEVICES, "", "", + G_TYPE_STRV, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /** * NMManager:metered: @@ -5690,12 +5667,11 @@ nm_manager_class_init (NMManagerClass *manager_class) * * Since: 1.2 **/ - g_object_class_install_property - (object_class, PROP_METERED, - g_param_spec_uint (NM_MANAGER_METERED, "", "", - 0, G_MAXUINT32, NM_METERED_UNKNOWN, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_METERED] = + g_param_spec_uint (NM_MANAGER_METERED, "", "", + 0, G_MAXUINT32, NM_METERED_UNKNOWN, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /** * NMManager:global-dns-configuration: @@ -5704,13 +5680,12 @@ nm_manager_class_init (NMManagerClass *manager_class) * * Since: 1.2 **/ - g_object_class_install_property - (object_class, PROP_GLOBAL_DNS_CONFIGURATION, - g_param_spec_variant (NM_MANAGER_GLOBAL_DNS_CONFIGURATION, "", "", - G_VARIANT_TYPE ("a{sv}"), - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_GLOBAL_DNS_CONFIGURATION] = + g_param_spec_variant (NM_MANAGER_GLOBAL_DNS_CONFIGURATION, "", "", + G_VARIANT_TYPE ("a{sv}"), + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); /** * NMManager:all-devices: @@ -5719,91 +5694,85 @@ nm_manager_class_init (NMManagerClass *manager_class) * * Since: 1.2 **/ - g_object_class_install_property - (object_class, PROP_ALL_DEVICES, - g_param_spec_boxed (NM_MANAGER_ALL_DEVICES, "", "", - G_TYPE_STRV, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_ALL_DEVICES] = + g_param_spec_boxed (NM_MANAGER_ALL_DEVICES, "", "", + G_TYPE_STRV, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); /* signals */ /* D-Bus exported; emitted only for realized devices */ signals[DEVICE_ADDED] = - g_signal_new ("device-added", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMManagerClass, device_added), - NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_DEVICE); + g_signal_new (NM_MANAGER_DEVICE_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMManagerClass, device_added), + NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_DEVICE); /* Emitted for both realized devices and placeholder devices */ signals[INTERNAL_DEVICE_ADDED] = - g_signal_new ("internal-device-added", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, 0, - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_OBJECT); + g_signal_new (NM_MANAGER_INTERNAL_DEVICE_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, 0, + NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_OBJECT); /* D-Bus exported; emitted only for realized devices */ signals[DEVICE_REMOVED] = - g_signal_new ("device-removed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMManagerClass, device_removed), - NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_DEVICE); + g_signal_new (NM_MANAGER_DEVICE_REMOVED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMManagerClass, device_removed), + NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_DEVICE); /* Emitted for both realized devices and placeholder devices */ signals[INTERNAL_DEVICE_REMOVED] = - g_signal_new ("internal-device-removed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, 0, - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_OBJECT); + g_signal_new (NM_MANAGER_INTERNAL_DEVICE_REMOVED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, 0, + NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_OBJECT); signals[STATE_CHANGED] = - g_signal_new (NM_MANAGER_STATE_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMManagerClass, state_changed), - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_UINT); + g_signal_new (NM_MANAGER_STATE_CHANGED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMManagerClass, state_changed), + NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_UINT); signals[CHECK_PERMISSIONS] = - g_signal_new ("check-permissions", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); - - signals[USER_PERMISSIONS_CHANGED] = - g_signal_new ("user-permissions-changed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_MANAGER_CHECK_PERMISSIONS, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); signals[ACTIVE_CONNECTION_ADDED] = - g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_ADDED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); + g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); signals[ACTIVE_CONNECTION_REMOVED] = - g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_REMOVED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); + g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_REMOVED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); signals[CONFIGURE_QUIT] = - g_signal_new (NM_MANAGER_CONFIGURE_QUIT, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_MANAGER_CONFIGURE_QUIT, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (manager_class), NMDBUS_TYPE_MANAGER_SKELETON, diff --git a/src/nm-manager.h b/src/nm-manager.h index 97830201..5401b002 100644 --- a/src/nm-manager.h +++ b/src/nm-manager.h @@ -57,11 +57,19 @@ #define NM_MANAGER_SLEEPING "sleeping" #define NM_MANAGER_STATE_FILE "state-file" +/* signals */ +#define NM_MANAGER_CHECK_PERMISSIONS "check-permissions" +#define NM_MANAGER_DEVICE_ADDED "device-added" +#define NM_MANAGER_DEVICE_REMOVED "device-removed" +#define NM_MANAGER_STATE_CHANGED "state-changed" +#define NM_MANAGER_USER_PERMISSIONS_CHANGED "user-permissions-changed" + /* Internal signals */ #define NM_MANAGER_ACTIVE_CONNECTION_ADDED "active-connection-added" #define NM_MANAGER_ACTIVE_CONNECTION_REMOVED "active-connection-removed" #define NM_MANAGER_CONFIGURE_QUIT "configure-quit" -#define NM_MANAGER_STATE_CHANGED "state-changed" +#define NM_MANAGER_INTERNAL_DEVICE_ADDED "internal-device-added" +#define NM_MANAGER_INTERNAL_DEVICE_REMOVED "internal-device-removed" struct _NMManager { diff --git a/src/nm-policy.c b/src/nm-policy.c index a46b35a2..07bcce89 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -56,13 +56,15 @@ _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ } G_STMT_END -typedef struct { +typedef struct _NMPolicyPrivate NMPolicyPrivate; + +struct _NMPolicyPrivate { + NMPolicy *self; NMManager *manager; NMFirewallManager *firewall_manager; GSList *pending_activation_checks; - GSList *manager_ids; - GSList *settings_ids; - GSList *dev_ids; + + GHashTable *devices; GSList *pending_secondaries; @@ -84,9 +86,14 @@ typedef struct { char *orig_hostname; /* hostname at NM start time */ char *cur_hostname; /* hostname we want to assign */ gboolean hostname_changed; /* TRUE if NM ever set the hostname */ -} NMPolicyPrivate; +}; -#define NM_POLICY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_POLICY, NMPolicyPrivate)) +static NMPolicyPrivate * +NM_POLICY_GET_PRIVATE(NMPolicy *self) +{ + nm_assert (NM_IS_POLICY (self)); + return self->priv; +} G_DEFINE_TYPE (NMPolicy, nm_policy, G_TYPE_OBJECT) @@ -833,14 +840,12 @@ process_secondaries (NMPolicy *self, } static void -global_state_changed (NMManager *manager, NMState state, gpointer user_data) -{ -} - -static void hostname_changed (NMManager *manager, GParamSpec *pspec, gpointer user_data) { - update_system_hostname ((NMPolicy *) user_data, NULL, NULL); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; + + update_system_hostname (self, NULL, NULL); } static void @@ -913,7 +918,8 @@ block_autoconnect_for_device (NMPolicy *self, NMDevice *device) static void sleeping_changed (NMManager *manager, GParamSpec *pspec, gpointer user_data) { - NMPolicy *self = user_data; + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; gboolean sleeping = FALSE, enabled = FALSE; g_object_get (G_OBJECT (manager), NM_MANAGER_SLEEPING, &sleeping, NULL); @@ -1140,8 +1146,8 @@ device_state_changed (NMDevice *device, NMDeviceStateReason reason, gpointer user_data) { - NMPolicy *self = (NMPolicy *) user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; NMSettingsConnection *connection = nm_device_get_settings_connection (device); @@ -1286,8 +1292,8 @@ device_ip4_config_changed (NMDevice *device, NMIP4Config *old_config, gpointer user_data) { - NMPolicy *self = user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; const char *ip_iface = nm_device_get_ip_iface (device); nm_dns_manager_begin_updates (priv->dns_manager, __func__); @@ -1320,8 +1326,8 @@ device_ip6_config_changed (NMDevice *device, NMIP6Config *old_config, gpointer user_data) { - NMPolicy *self = user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; const char *ip_iface = nm_device_get_ip_iface (device); nm_dns_manager_begin_updates (priv->dns_manager, __func__); @@ -1353,77 +1359,70 @@ device_autoconnect_changed (NMDevice *device, GParamSpec *pspec, gpointer user_data) { + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; + if (nm_device_autoconnect_allowed (device)) - schedule_activate_check ((NMPolicy *) user_data, device); + schedule_activate_check (self, device); } static void device_recheck_auto_activate (NMDevice *device, gpointer user_data) { - schedule_activate_check (NM_POLICY (user_data), device); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; + + schedule_activate_check (self, device); } -typedef struct { - gulong id; - NMDevice *device; -} DeviceSignalId; +static void +devices_list_unregister (NMPolicy *self, NMDevice *device) +{ + NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + + g_signal_handlers_disconnect_by_data ((GObject *) device, priv); +} static void -_connect_device_signal (NMPolicy *self, - NMDevice *device, - const char *name, - gpointer callback, - gboolean after) +devices_list_register (NMPolicy *self, NMDevice *device) { NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); - DeviceSignalId *data; - data = g_slice_new0 (DeviceSignalId); - g_assert (data); - if (after) - data->id = g_signal_connect_after (device, name, callback, self); - else - data->id = g_signal_connect (device, name, callback, self); - data->device = device; - priv->dev_ids = g_slist_prepend (priv->dev_ids, data); + /* Connect state-changed with _after, so that the handler is invoked after other handlers. */ + g_signal_connect_after (device, NM_DEVICE_STATE_CHANGED, (GCallback) device_state_changed, priv); + g_signal_connect (device, NM_DEVICE_IP4_CONFIG_CHANGED, (GCallback) device_ip4_config_changed, priv); + g_signal_connect (device, NM_DEVICE_IP6_CONFIG_CHANGED, (GCallback) device_ip6_config_changed, priv); + g_signal_connect (device, "notify::" NM_DEVICE_AUTOCONNECT, (GCallback) device_autoconnect_changed, priv); + g_signal_connect (device, NM_DEVICE_RECHECK_AUTO_ACTIVATE, (GCallback) device_recheck_auto_activate, priv); } static void device_added (NMManager *manager, NMDevice *device, gpointer user_data) { - NMPolicy *self = (NMPolicy *) user_data; + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; - /* Connect state-changed with _after, so that the handler is invoked after other handlers. */ - _connect_device_signal (self, device, NM_DEVICE_STATE_CHANGED, device_state_changed, TRUE); - _connect_device_signal (self, device, NM_DEVICE_IP4_CONFIG_CHANGED, device_ip4_config_changed, FALSE); - _connect_device_signal (self, device, NM_DEVICE_IP6_CONFIG_CHANGED, device_ip6_config_changed, FALSE); - _connect_device_signal (self, device, "notify::" NM_DEVICE_AUTOCONNECT, device_autoconnect_changed, FALSE); - _connect_device_signal (self, device, NM_DEVICE_RECHECK_AUTO_ACTIVATE, device_recheck_auto_activate, FALSE); + g_return_if_fail (NM_IS_POLICY (self)); + + priv = NM_POLICY_GET_PRIVATE (self); + + if (!nm_g_hash_table_add (priv->devices, device)) + g_return_if_reached (); + + devices_list_register (self, device); } static void device_removed (NMManager *manager, NMDevice *device, gpointer user_data) { - NMPolicy *self = (NMPolicy *) user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); - GSList *iter; + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; /* Clear any idle callbacks for this device */ clear_pending_activate_check (self, device); - /* Clear any signal handlers for this device */ - iter = priv->dev_ids; - while (iter) { - DeviceSignalId *data = iter->data; - GSList *next = g_slist_next (iter); - - if (data->device == device) { - g_signal_handler_disconnect (data->device, data->id); - g_slice_free (DeviceSignalId, data); - priv->dev_ids = g_slist_delete_link (priv->dev_ids, iter); - } - iter = next; - } + if (g_hash_table_remove (priv->devices, device)) + devices_list_unregister (self, device); /* Don't update routing and DNS here as we've already handled that * for devices that need it when the device's state changed to UNMANAGED. @@ -1542,7 +1541,8 @@ active_connection_added (NMManager *manager, NMActiveConnection *active, gpointer user_data) { - NMPolicy *self = NM_POLICY (user_data); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; if (NM_IS_VPN_CONNECTION (active)) { g_signal_connect (active, NM_VPN_CONNECTION_INTERNAL_STATE_CHANGED, @@ -1563,7 +1563,8 @@ active_connection_removed (NMManager *manager, NMActiveConnection *active, gpointer user_data) { - NMPolicy *self = NM_POLICY (user_data); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; g_signal_handlers_disconnect_by_func (active, vpn_connection_state_changed, @@ -1593,7 +1594,8 @@ connection_added (NMSettings *settings, NMSettingsConnection *connection, gpointer user_data) { - NMPolicy *self = NM_POLICY (user_data); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; schedule_activate_all (self); } @@ -1649,7 +1651,10 @@ connection_updated (NMSettings *settings, NMConnection *connection, gpointer user_data) { - schedule_activate_all ((NMPolicy *) user_data); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; + + schedule_activate_all (self); } static void @@ -1657,8 +1662,7 @@ connection_updated_by_user (NMSettings *settings, NMSettingsConnection *connection, gpointer user_data) { - NMPolicy *self = (NMPolicy *) user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + NMPolicyPrivate *priv = user_data; const GSList *iter; NMDevice *device = NULL; @@ -1711,8 +1715,7 @@ connection_removed (NMSettings *settings, NMSettingsConnection *connection, gpointer user_data) { - NMPolicy *self = user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + NMPolicyPrivate *priv = user_data; _deactivate_if_active (priv->manager, connection); } @@ -1722,8 +1725,8 @@ connection_visibility_changed (NMSettings *settings, NMSettingsConnection *connection, gpointer user_data) { - NMPolicy *self = user_data; - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; if (nm_settings_connection_is_visible (connection)) schedule_activate_all (self); @@ -1736,7 +1739,8 @@ secret_agent_registered (NMSettings *settings, NMSecretAgent *agent, gpointer user_data) { - NMPolicy *self = NM_POLICY (user_data); + NMPolicyPrivate *priv = user_data; + NMPolicy *self = priv->self; /* The registered secret agent may provide some missing secrets. Thus we * reset retries count here and schedule activation, so that the @@ -1825,28 +1829,14 @@ set_property (GObject *object, guint prop_id, /*****************************************************************************/ static void -_connect_manager_signal (NMPolicy *self, const char *name, gpointer callback) +nm_policy_init (NMPolicy *self) { - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); - gulong id; + NMPolicyPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_POLICY, NMPolicyPrivate); - id = g_signal_connect (priv->manager, name, callback, self); - priv->manager_ids = g_slist_prepend (priv->manager_ids, (gpointer) id); -} + self->priv = priv; + priv->self = self; -static void -_connect_settings_signal (NMPolicy *self, const char *name, gpointer callback) -{ - NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); - gulong id; - - id = g_signal_connect (priv->settings, name, callback, self); - priv->settings_ids = g_slist_prepend (priv->settings_ids, (gpointer) id); -} - -static void -nm_policy_init (NMPolicy *self) -{ + priv->devices = g_hash_table_new (NULL, NULL); } static void @@ -1866,32 +1856,30 @@ constructed (GObject *object) priv->firewall_manager = g_object_ref (nm_firewall_manager_get ()); - priv->fw_started_id = g_signal_connect (priv->firewall_manager, "started", + priv->fw_started_id = g_signal_connect (priv->firewall_manager, NM_FIREWALL_MANAGER_STARTED, G_CALLBACK (firewall_started), self); priv->dns_manager = g_object_ref (nm_dns_manager_get ()); nm_dns_manager_set_initial_hostname (priv->dns_manager, priv->orig_hostname); - priv->config_changed_id = g_signal_connect (priv->dns_manager, "config-changed", + priv->config_changed_id = g_signal_connect (priv->dns_manager, NM_DNS_MANAGER_CONFIG_CHANGED, G_CALLBACK (dns_config_changed), self); priv->resolver = g_resolver_get_default (); - _connect_manager_signal (self, NM_MANAGER_STATE_CHANGED, global_state_changed); - _connect_manager_signal (self, "notify::" NM_MANAGER_HOSTNAME, hostname_changed); - _connect_manager_signal (self, "notify::" NM_MANAGER_SLEEPING, sleeping_changed); - _connect_manager_signal (self, "notify::" NM_MANAGER_NETWORKING_ENABLED, sleeping_changed); - _connect_manager_signal (self, "internal-device-added", device_added); - _connect_manager_signal (self, "internal-device-removed", device_removed); - _connect_manager_signal (self, NM_MANAGER_ACTIVE_CONNECTION_ADDED, active_connection_added); - _connect_manager_signal (self, NM_MANAGER_ACTIVE_CONNECTION_REMOVED, active_connection_removed); - - _connect_settings_signal (self, NM_SETTINGS_SIGNAL_CONNECTION_ADDED, connection_added); - _connect_settings_signal (self, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED, connection_updated); - _connect_settings_signal (self, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED_BY_USER, connection_updated_by_user); - _connect_settings_signal (self, NM_SETTINGS_SIGNAL_CONNECTION_REMOVED, connection_removed); - _connect_settings_signal (self, NM_SETTINGS_SIGNAL_CONNECTION_VISIBILITY_CHANGED, - connection_visibility_changed); - _connect_settings_signal (self, NM_SETTINGS_SIGNAL_AGENT_REGISTERED, secret_agent_registered); + g_signal_connect (priv->manager, "notify::" NM_MANAGER_HOSTNAME, (GCallback) hostname_changed, priv); + g_signal_connect (priv->manager, "notify::" NM_MANAGER_SLEEPING, (GCallback) sleeping_changed, priv); + g_signal_connect (priv->manager, "notify::" NM_MANAGER_NETWORKING_ENABLED, (GCallback) sleeping_changed, priv); + g_signal_connect (priv->manager, NM_MANAGER_INTERNAL_DEVICE_ADDED, (GCallback) device_added, priv); + g_signal_connect (priv->manager, NM_MANAGER_INTERNAL_DEVICE_REMOVED, (GCallback) device_removed, priv); + g_signal_connect (priv->manager, NM_MANAGER_ACTIVE_CONNECTION_ADDED, (GCallback) active_connection_added, priv); + g_signal_connect (priv->manager, NM_MANAGER_ACTIVE_CONNECTION_REMOVED, (GCallback) active_connection_removed, priv); + + g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_ADDED, (GCallback) connection_added, priv); + g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED, (GCallback) connection_updated, priv); + g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED_BY_USER, (GCallback) connection_updated_by_user, priv); + g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_REMOVED, (GCallback) connection_removed, priv); + g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_VISIBILITY_CHANGED, (GCallback) connection_visibility_changed, priv); + g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_AGENT_REGISTERED, (GCallback) secret_agent_registered, priv); G_OBJECT_CLASS (nm_policy_parent_class)->constructed (object); } @@ -1913,7 +1901,9 @@ dispose (GObject *object) { NMPolicy *self = NM_POLICY (object); NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); - const GSList *connections, *iter; + const GSList *connections; + GHashTableIter h_iter; + NMDevice *device; nm_clear_g_cancellable (&priv->lookup_cancellable); @@ -1937,21 +1927,11 @@ dispose (GObject *object) g_clear_object (&priv->dns_manager); } - for (iter = priv->manager_ids; iter; iter = g_slist_next (iter)) - g_signal_handler_disconnect (priv->manager, (gulong) iter->data); - g_clear_pointer (&priv->manager_ids, g_slist_free); - - for (iter = priv->settings_ids; iter; iter = g_slist_next (iter)) - g_signal_handler_disconnect (priv->settings, (gulong) iter->data); - g_clear_pointer (&priv->settings_ids, g_slist_free); - - for (iter = priv->dev_ids; iter; iter = g_slist_next (iter)) { - DeviceSignalId *data = iter->data; - - g_signal_handler_disconnect (data->device, data->id); - g_slice_free (DeviceSignalId, data); + g_hash_table_iter_init (&h_iter, priv->devices); + if (g_hash_table_iter_next (&h_iter, (gpointer *) &device, NULL)) { + g_hash_table_iter_remove (&h_iter); + devices_list_unregister (self, device); } - g_clear_pointer (&priv->dev_ids, g_slist_free); /* The manager should have disposed of ActiveConnections already, which * will have called active_connection_removed() and thus we don't need @@ -1965,7 +1945,17 @@ dispose (GObject *object) g_clear_pointer (&priv->orig_hostname, g_free); g_clear_pointer (&priv->cur_hostname, g_free); - g_clear_object (&priv->settings); + if (priv->settings) { + g_signal_handlers_disconnect_by_data (priv->settings, priv); + g_clear_object (&priv->settings); + + /* we don't clear priv->manager as we don't own a reference to it, + * that is, NMManager must outlive NMPolicy anyway. + * + * Hence, we unsubscribe the signals here together with the signals + * for settings. */ + g_signal_handlers_disconnect_by_data (priv->manager, priv); + } nm_assert (NM_IS_MANAGER (priv->manager)); @@ -1973,6 +1963,19 @@ dispose (GObject *object) } static void +finalize (GObject *object) +{ + NMPolicy *self = NM_POLICY (object); + NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); + + g_hash_table_unref (priv->devices); + + G_OBJECT_CLASS (nm_policy_parent_class)->finalize (object); + + priv->self = NULL; +} + +static void nm_policy_class_init (NMPolicyClass *policy_class) { GObjectClass *object_class = G_OBJECT_CLASS (policy_class); @@ -1983,6 +1986,7 @@ nm_policy_class_init (NMPolicyClass *policy_class) object_class->set_property = set_property; object_class->constructed = constructed; object_class->dispose = dispose; + object_class->finalize = finalize; obj_properties[PROP_MANAGER] = g_param_spec_object (NM_POLICY_MANAGER, "", "", diff --git a/src/nm-policy.h b/src/nm-policy.h index 4d504cdd..476ddf1d 100644 --- a/src/nm-policy.h +++ b/src/nm-policy.h @@ -38,8 +38,11 @@ #define NM_POLICY_ACTIVATING_IP4_DEVICE "activating-ip4-device" #define NM_POLICY_ACTIVATING_IP6_DEVICE "activating-ip6-device" +struct _NMPolicyPrivate; + struct _NMPolicy { GObject parent; + struct _NMPolicyPrivate *priv; }; typedef struct { diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index e2ff1f61..3282e698 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -55,6 +55,8 @@ #include "wifi/wifi-utils.h" #include "wifi/wifi-utils-wext.h" +#define offset_plus_sizeof(t,m) (offsetof (t,m) + sizeof (((t *) NULL)->m)) + #define VLAN_FLAG_MVRP 0x8 /* nm-internal error codes for libnl. Make sure they don't overlap. */ @@ -831,7 +833,7 @@ _parse_af_inet6 (NMPlatform *platform, { static struct nla_policy policy[IFLA_INET6_MAX+1] = { [IFLA_INET6_FLAGS] = { .type = NLA_U32 }, - [IFLA_INET6_CACHEINFO] = { .minlen = sizeof(struct ifla_cacheinfo) }, + [IFLA_INET6_CACHEINFO] = { .minlen = offset_plus_sizeof(struct ifla_cacheinfo, retrans_time) }, [IFLA_INET6_CONF] = { .minlen = 4 }, [IFLA_INET6_STATS] = { .minlen = 8 }, [IFLA_INET6_ICMP6STATS] = { .minlen = 8 }, @@ -1242,7 +1244,7 @@ _parse_lnk_vlan (const char *kind, struct nlattr *info_data) { static struct nla_policy policy[IFLA_VLAN_MAX+1] = { [IFLA_VLAN_ID] = { .type = NLA_U16 }, - [IFLA_VLAN_FLAGS] = { .minlen = sizeof(struct ifla_vlan_flags) }, + [IFLA_VLAN_FLAGS] = { .minlen = offset_plus_sizeof(struct ifla_vlan_flags, flags) }, [IFLA_VLAN_INGRESS_QOS] = { .type = NLA_NESTED }, [IFLA_VLAN_EGRESS_QOS] = { .type = NLA_NESTED }, [IFLA_VLAN_PROTOCOL] = { .type = NLA_U16 }, @@ -1429,9 +1431,9 @@ _new_from_nl_link (NMPlatform *platform, const NMPCache *cache, struct nlmsghdr [IFLA_LINKINFO] = { .type = NLA_NESTED }, [IFLA_QDISC] = { .type = NLA_STRING, .maxlen = IFQDISCSIZ }, - [IFLA_STATS] = { .minlen = sizeof(struct rtnl_link_stats) }, - [IFLA_STATS64] = { .minlen = sizeof(struct rtnl_link_stats64)}, - [IFLA_MAP] = { .minlen = sizeof(struct rtnl_link_ifmap) }, + [IFLA_STATS] = { .minlen = offset_plus_sizeof(struct rtnl_link_stats, tx_compressed) }, + [IFLA_STATS64] = { .minlen = offset_plus_sizeof(struct rtnl_link_stats64, tx_compressed)}, + [IFLA_MAP] = { .minlen = offset_plus_sizeof(struct rtnl_link_ifmap, port) }, [IFLA_IFALIAS] = { .type = NLA_STRING, .maxlen = IFALIASZ }, [IFLA_NUM_VF] = { .type = NLA_U32 }, [IFLA_AF_SPEC] = { .type = NLA_NESTED }, @@ -1612,7 +1614,7 @@ _new_from_nl_addr (struct nlmsghdr *nlh, gboolean id_only) static struct nla_policy policy[IFA_MAX+1] = { [IFA_LABEL] = { .type = NLA_STRING, .maxlen = IFNAMSIZ }, - [IFA_CACHEINFO] = { .minlen = sizeof(struct ifa_cacheinfo) }, + [IFA_CACHEINFO] = { .minlen = offset_plus_sizeof(struct ifa_cacheinfo, tstamp) }, }; const struct ifaddrmsg *ifa; struct nlattr *tb[IFA_MAX+1]; @@ -1726,7 +1728,7 @@ _new_from_nl_route (struct nlmsghdr *nlh, gboolean id_only) [RTA_OIF] = { .type = NLA_U32 }, [RTA_PRIORITY] = { .type = NLA_U32 }, [RTA_FLOW] = { .type = NLA_U32 }, - [RTA_CACHEINFO] = { .minlen = sizeof(struct rta_cacheinfo) }, + [RTA_CACHEINFO] = { .minlen = offset_plus_sizeof(struct rta_cacheinfo, rta_tsage) }, [RTA_METRICS] = { .type = NLA_NESTED }, [RTA_MULTIPATH] = { .type = NLA_NESTED }, }; @@ -5126,6 +5128,49 @@ wifi_indicate_addressing_running (NMPlatform *platform, int ifindex, gboolean ru /******************************************************************/ +static gboolean +link_can_assume (NMPlatform *platform, int ifindex) +{ + NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); + NMPCacheId cache_id; + const NMPlatformObject *const *objs; + guint i, len; + const NMPObject *link; + + if (ifindex <= 0) + return FALSE; + + link = cache_lookup_link (platform, ifindex); + if (!link) + return FALSE; + + if (!NM_FLAGS_HAS (link->link.n_ifi_flags, IFF_UP)) + return FALSE; + + if (link->link.master > 0) + return TRUE; + + if (nmp_cache_lookup_multi (priv->cache, + nmp_cache_id_init_addrroute_visible_by_ifindex (&cache_id, NMP_OBJECT_TYPE_IP4_ADDRESS, ifindex), + NULL)) + return TRUE; + + objs = nmp_cache_lookup_multi (priv->cache, + nmp_cache_id_init_addrroute_visible_by_ifindex (&cache_id, NMP_OBJECT_TYPE_IP6_ADDRESS, ifindex), + &len); + if (objs) { + for (i = 0; i < len; i++) { + const NMPlatformIP6Address *a = (NMPlatformIP6Address *) objs[i]; + + if (!IN6_IS_ADDR_LINKLOCAL (&a->address)) + return TRUE; + } + } + return FALSE; +} + +/******************************************************************/ + static guint32 mesh_get_channel (NMPlatform *platform, int ifindex) { @@ -6216,6 +6261,8 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *klass) platform_class->link_enslave = link_enslave; platform_class->link_release = link_release; + platform_class->link_can_assume = link_can_assume; + platform_class->vlan_add = vlan_add; platform_class->link_vlan_change = link_vlan_change; platform_class->link_vxlan_add = link_vxlan_add; diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index d5ee48d4..5a399b31 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -1378,6 +1378,18 @@ nm_platform_link_get_master (NMPlatform *self, int slave) /*****************************************************************************/ +gboolean +nm_platform_link_can_assume (NMPlatform *self, int ifindex) +{ + _CHECK_SELF (self, klass, FALSE); + + if (klass->link_can_assume) + return klass->link_can_assume (self, ifindex); + g_return_val_if_reached (FALSE); +} + +/*****************************************************************************/ + /** * nm_platform_link_get_lnk: * @self: the platform instance diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h index 8c97f766..15bd2fde 100644 --- a/src/platform/nm-platform.h +++ b/src/platform/nm-platform.h @@ -528,6 +528,8 @@ typedef struct { gboolean (*link_enslave) (NMPlatform *, int master, int slave); gboolean (*link_release) (NMPlatform *, int master, int slave); + gboolean (*link_can_assume) (NMPlatform *, int ifindex); + gboolean (*vlan_add) (NMPlatform *, const char *name, int parent, int vlanid, guint32 vlanflags, const NMPlatformLink **out_link); gboolean (*link_vlan_change) (NMPlatform *self, int ifindex, @@ -717,6 +719,8 @@ gboolean nm_platform_link_get_user_ipv6ll_enabled (NMPlatform *self, int ifindex gconstpointer nm_platform_link_get_address (NMPlatform *self, int ifindex, size_t *length); int nm_platform_link_get_master (NMPlatform *self, int slave); +gboolean nm_platform_link_can_assume (NMPlatform *self, int ifindex); + gboolean nm_platform_link_get_unmanaged (NMPlatform *self, int ifindex, gboolean *unmanaged); gboolean nm_platform_link_supports_slaves (NMPlatform *self, int ifindex); const char *nm_platform_link_get_type_name (NMPlatform *self, int ifindex); diff --git a/src/platform/tests/Makefile.am b/src/platform/tests/Makefile.am index b097fcf6..ebf20e15 100644 --- a/src/platform/tests/Makefile.am +++ b/src/platform/tests/Makefile.am @@ -9,7 +9,6 @@ AM_CPPFLAGS = \ -I${srcdir}/.. \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(GUDEV_CFLAGS) \ $(LIBNL_CFLAGS) @@ -22,7 +21,10 @@ PLATFORM_SOURCES = \ ../nm-platform.c \ ../nm-fake-platform.c \ ../nm-linux-platform.c -TEST_SOURCES = $(PLATFORM_SOURCES) test-common.c test-common.h +TEST_SOURCES = \ + test-common.c \ + test-common.h \ + $(PLATFORM_SOURCES) AM_CFLAGS = $(CODE_COVERAGE_CFLAGS) AM_LDFLAGS = $(GLIB_LIBS) $(GUDEV_LIBS) $(LIBNL_LIBS) $(CODE_COVERAGE_LDFLAGS) PLATFORM_LDADD = \ diff --git a/src/platform/tests/Makefile.in b/src/platform/tests/Makefile.in index c04d6a1b..7c4b72ea 100644 --- a/src/platform/tests/Makefile.in +++ b/src/platform/tests/Makefile.in @@ -135,8 +135,8 @@ am__v_lt_1 = am__objects_2 = test_address_fake-nm-platform.$(OBJEXT) \ test_address_fake-nm-fake-platform.$(OBJEXT) \ test_address_fake-nm-linux-platform.$(OBJEXT) -am__objects_3 = $(am__objects_2) \ - test_address_fake-test-common.$(OBJEXT) +am__objects_3 = test_address_fake-test-common.$(OBJEXT) \ + $(am__objects_2) am_test_address_fake_OBJECTS = \ test_address_fake-test-address.$(OBJEXT) $(am__objects_3) test_address_fake_OBJECTS = $(am_test_address_fake_OBJECTS) @@ -144,8 +144,8 @@ test_address_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_4 = test_address_linux-nm-platform.$(OBJEXT) \ test_address_linux-nm-fake-platform.$(OBJEXT) \ test_address_linux-nm-linux-platform.$(OBJEXT) -am__objects_5 = $(am__objects_4) \ - test_address_linux-test-common.$(OBJEXT) +am__objects_5 = test_address_linux-test-common.$(OBJEXT) \ + $(am__objects_4) am_test_address_linux_OBJECTS = \ test_address_linux-test-address.$(OBJEXT) $(am__objects_5) test_address_linux_OBJECTS = $(am_test_address_linux_OBJECTS) @@ -153,8 +153,8 @@ test_address_linux_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_6 = test_cleanup_fake-nm-platform.$(OBJEXT) \ test_cleanup_fake-nm-fake-platform.$(OBJEXT) \ test_cleanup_fake-nm-linux-platform.$(OBJEXT) -am__objects_7 = $(am__objects_6) \ - test_cleanup_fake-test-common.$(OBJEXT) +am__objects_7 = test_cleanup_fake-test-common.$(OBJEXT) \ + $(am__objects_6) am_test_cleanup_fake_OBJECTS = \ test_cleanup_fake-test-cleanup.$(OBJEXT) $(am__objects_7) test_cleanup_fake_OBJECTS = $(am_test_cleanup_fake_OBJECTS) @@ -162,8 +162,8 @@ test_cleanup_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_8 = test_cleanup_linux-nm-platform.$(OBJEXT) \ test_cleanup_linux-nm-fake-platform.$(OBJEXT) \ test_cleanup_linux-nm-linux-platform.$(OBJEXT) -am__objects_9 = $(am__objects_8) \ - test_cleanup_linux-test-common.$(OBJEXT) +am__objects_9 = test_cleanup_linux-test-common.$(OBJEXT) \ + $(am__objects_8) am_test_cleanup_linux_OBJECTS = \ test_cleanup_linux-test-cleanup.$(OBJEXT) $(am__objects_9) test_cleanup_linux_OBJECTS = $(am_test_cleanup_linux_OBJECTS) @@ -174,8 +174,8 @@ test_general_DEPENDENCIES = $(top_builddir)/src/libNetworkManager.la am__objects_10 = test_link_fake-nm-platform.$(OBJEXT) \ test_link_fake-nm-fake-platform.$(OBJEXT) \ test_link_fake-nm-linux-platform.$(OBJEXT) -am__objects_11 = $(am__objects_10) \ - test_link_fake-test-common.$(OBJEXT) +am__objects_11 = test_link_fake-test-common.$(OBJEXT) \ + $(am__objects_10) am_test_link_fake_OBJECTS = test_link_fake-test-link.$(OBJEXT) \ $(am__objects_11) test_link_fake_OBJECTS = $(am_test_link_fake_OBJECTS) @@ -183,8 +183,8 @@ test_link_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_12 = test_link_linux-nm-platform.$(OBJEXT) \ test_link_linux-nm-fake-platform.$(OBJEXT) \ test_link_linux-nm-linux-platform.$(OBJEXT) -am__objects_13 = $(am__objects_12) \ - test_link_linux-test-common.$(OBJEXT) +am__objects_13 = test_link_linux-test-common.$(OBJEXT) \ + $(am__objects_12) am_test_link_linux_OBJECTS = test_link_linux-test-link.$(OBJEXT) \ $(am__objects_13) test_link_linux_OBJECTS = $(am_test_link_linux_OBJECTS) @@ -196,8 +196,8 @@ test_nmp_object_DEPENDENCIES = \ am__objects_14 = test_route_fake-nm-platform.$(OBJEXT) \ test_route_fake-nm-fake-platform.$(OBJEXT) \ test_route_fake-nm-linux-platform.$(OBJEXT) -am__objects_15 = $(am__objects_14) \ - test_route_fake-test-common.$(OBJEXT) +am__objects_15 = test_route_fake-test-common.$(OBJEXT) \ + $(am__objects_14) am_test_route_fake_OBJECTS = test_route_fake-test-route.$(OBJEXT) \ $(am__objects_15) test_route_fake_OBJECTS = $(am_test_route_fake_OBJECTS) @@ -205,8 +205,8 @@ test_route_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_16 = test_route_linux-nm-platform.$(OBJEXT) \ test_route_linux-nm-fake-platform.$(OBJEXT) \ test_route_linux-nm-linux-platform.$(OBJEXT) -am__objects_17 = $(am__objects_16) \ - test_route_linux-test-common.$(OBJEXT) +am__objects_17 = test_route_linux-test-common.$(OBJEXT) \ + $(am__objects_16) am_test_route_linux_OBJECTS = test_route_linux-test-route.$(OBJEXT) \ $(am__objects_17) test_route_linux_OBJECTS = $(am_test_route_linux_OBJECTS) @@ -757,14 +757,17 @@ AM_CPPFLAGS = -I${top_srcdir} -I${top_srcdir}/shared \ -I${top_builddir}/libnm-core -I${srcdir}/.. \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE $(GLIB_CFLAGS) \ - $(GUDEV_CFLAGS) $(LIBNL_CFLAGS) $(am__append_1) + $(GLIB_CFLAGS) $(GUDEV_CFLAGS) $(LIBNL_CFLAGS) $(am__append_1) PLATFORM_SOURCES = \ ../nm-platform.c \ ../nm-fake-platform.c \ ../nm-linux-platform.c -TEST_SOURCES = $(PLATFORM_SOURCES) test-common.c test-common.h +TEST_SOURCES = \ + test-common.c \ + test-common.h \ + $(PLATFORM_SOURCES) + AM_CFLAGS = $(CODE_COVERAGE_CFLAGS) AM_LDFLAGS = $(GLIB_LIBS) $(GUDEV_LIBS) $(LIBNL_LIBS) $(CODE_COVERAGE_LDFLAGS) PLATFORM_LDADD = \ @@ -1058,6 +1061,20 @@ test_address_fake-test-address.obj: test-address.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` +test_address_fake-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-common.Tpo -c -o test_address_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-common.Tpo $(DEPDIR)/test_address_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_address_fake-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_address_fake-test-common.Tpo -c -o test_address_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-common.Tpo $(DEPDIR)/test_address_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_address_fake-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-nm-platform.o -MD -MP -MF $(DEPDIR)/test_address_fake-nm-platform.Tpo -c -o test_address_fake-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-nm-platform.Tpo $(DEPDIR)/test_address_fake-nm-platform.Po @@ -1100,20 +1117,6 @@ test_address_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_address_fake-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-common.Tpo -c -o test_address_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-common.Tpo $(DEPDIR)/test_address_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_address_fake-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_address_fake-test-common.Tpo -c -o test_address_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-common.Tpo $(DEPDIR)/test_address_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_address_linux-test-address.o: test-address.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po @@ -1128,6 +1131,20 @@ test_address_linux-test-address.obj: test-address.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` +test_address_linux-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-common.Tpo -c -o test_address_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-common.Tpo $(DEPDIR)/test_address_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_address_linux-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_address_linux-test-common.Tpo -c -o test_address_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-common.Tpo $(DEPDIR)/test_address_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_address_linux-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-nm-platform.o -MD -MP -MF $(DEPDIR)/test_address_linux-nm-platform.Tpo -c -o test_address_linux-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-nm-platform.Tpo $(DEPDIR)/test_address_linux-nm-platform.Po @@ -1170,20 +1187,6 @@ test_address_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_address_linux-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-common.Tpo -c -o test_address_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-common.Tpo $(DEPDIR)/test_address_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_address_linux-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_address_linux-test-common.Tpo -c -o test_address_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-common.Tpo $(DEPDIR)/test_address_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_address_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_cleanup_fake-test-cleanup.o: test-cleanup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po @@ -1198,6 +1201,20 @@ test_cleanup_fake-test-cleanup.obj: test-cleanup.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` +test_cleanup_fake-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-common.Tpo -c -o test_cleanup_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-common.Tpo $(DEPDIR)/test_cleanup_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_cleanup_fake-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-common.Tpo -c -o test_cleanup_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-common.Tpo $(DEPDIR)/test_cleanup_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_cleanup_fake-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-nm-platform.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-nm-platform.Tpo -c -o test_cleanup_fake-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-nm-platform.Tpo $(DEPDIR)/test_cleanup_fake-nm-platform.Po @@ -1240,20 +1257,6 @@ test_cleanup_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_cleanup_fake-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-common.Tpo -c -o test_cleanup_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-common.Tpo $(DEPDIR)/test_cleanup_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_cleanup_fake-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-common.Tpo -c -o test_cleanup_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-common.Tpo $(DEPDIR)/test_cleanup_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_cleanup_linux-test-cleanup.o: test-cleanup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po @@ -1268,6 +1271,20 @@ test_cleanup_linux-test-cleanup.obj: test-cleanup.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` +test_cleanup_linux-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-common.Tpo -c -o test_cleanup_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-common.Tpo $(DEPDIR)/test_cleanup_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_cleanup_linux-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-common.Tpo -c -o test_cleanup_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-common.Tpo $(DEPDIR)/test_cleanup_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_cleanup_linux-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-nm-platform.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-nm-platform.Tpo -c -o test_cleanup_linux-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-nm-platform.Tpo $(DEPDIR)/test_cleanup_linux-nm-platform.Po @@ -1310,20 +1327,6 @@ test_cleanup_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_cleanup_linux-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-common.Tpo -c -o test_cleanup_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-common.Tpo $(DEPDIR)/test_cleanup_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_cleanup_linux-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-common.Tpo -c -o test_cleanup_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-common.Tpo $(DEPDIR)/test_cleanup_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_cleanup_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_link_fake-test-link.o: test-link.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po @@ -1338,6 +1341,20 @@ test_link_fake-test-link.obj: test-link.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` +test_link_fake-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-common.Tpo -c -o test_link_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-common.Tpo $(DEPDIR)/test_link_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_link_fake-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_link_fake-test-common.Tpo -c -o test_link_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-common.Tpo $(DEPDIR)/test_link_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_link_fake-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-nm-platform.o -MD -MP -MF $(DEPDIR)/test_link_fake-nm-platform.Tpo -c -o test_link_fake-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-nm-platform.Tpo $(DEPDIR)/test_link_fake-nm-platform.Po @@ -1380,20 +1397,6 @@ test_link_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_link_fake-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-common.Tpo -c -o test_link_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-common.Tpo $(DEPDIR)/test_link_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_link_fake-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_link_fake-test-common.Tpo -c -o test_link_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-common.Tpo $(DEPDIR)/test_link_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_link_linux-test-link.o: test-link.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po @@ -1408,6 +1411,20 @@ test_link_linux-test-link.obj: test-link.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` +test_link_linux-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-common.Tpo -c -o test_link_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-common.Tpo $(DEPDIR)/test_link_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_link_linux-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_link_linux-test-common.Tpo -c -o test_link_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-common.Tpo $(DEPDIR)/test_link_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_link_linux-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-nm-platform.o -MD -MP -MF $(DEPDIR)/test_link_linux-nm-platform.Tpo -c -o test_link_linux-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-nm-platform.Tpo $(DEPDIR)/test_link_linux-nm-platform.Po @@ -1450,20 +1467,6 @@ test_link_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_link_linux-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-common.Tpo -c -o test_link_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-common.Tpo $(DEPDIR)/test_link_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_link_linux-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_link_linux-test-common.Tpo -c -o test_link_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-common.Tpo $(DEPDIR)/test_link_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_link_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_route_fake-test-route.o: test-route.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po @@ -1478,6 +1481,20 @@ test_route_fake-test-route.obj: test-route.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` +test_route_fake-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-common.Tpo -c -o test_route_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-common.Tpo $(DEPDIR)/test_route_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_route_fake-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_route_fake-test-common.Tpo -c -o test_route_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-common.Tpo $(DEPDIR)/test_route_fake-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_route_fake-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-nm-platform.o -MD -MP -MF $(DEPDIR)/test_route_fake-nm-platform.Tpo -c -o test_route_fake-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-nm-platform.Tpo $(DEPDIR)/test_route_fake-nm-platform.Po @@ -1520,20 +1537,6 @@ test_route_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_route_fake-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-common.Tpo -c -o test_route_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-common.Tpo $(DEPDIR)/test_route_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_fake-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_route_fake-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-common.obj -MD -MP -MF $(DEPDIR)/test_route_fake-test-common.Tpo -c -o test_route_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-common.Tpo $(DEPDIR)/test_route_fake-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_fake-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - test_route_linux-test-route.o: test-route.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po @@ -1548,6 +1551,20 @@ test_route_linux-test-route.obj: test-route.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` +test_route_linux-test-common.o: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-common.Tpo -c -o test_route_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-common.Tpo $(DEPDIR)/test_route_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c + +test_route_linux-test-common.obj: test-common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_route_linux-test-common.Tpo -c -o test_route_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-common.Tpo $(DEPDIR)/test_route_linux-test-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` + test_route_linux-nm-platform.o: ../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-nm-platform.o -MD -MP -MF $(DEPDIR)/test_route_linux-nm-platform.Tpo -c -o test_route_linux-nm-platform.o `test -f '../nm-platform.c' || echo '$(srcdir)/'`../nm-platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-nm-platform.Tpo $(DEPDIR)/test_route_linux-nm-platform.Po @@ -1590,20 +1607,6 @@ test_route_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_route_linux-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-common.Tpo -c -o test_route_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-common.Tpo $(DEPDIR)/test_route_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_linux-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_route_linux-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-common.obj -MD -MP -MF $(DEPDIR)/test_route_linux-test-common.Tpo -c -o test_route_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-common.Tpo $(DEPDIR)/test_route_linux-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_route_linux-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - mostlyclean-libtool: -rm -f *.lo diff --git a/src/ppp-manager/Makefile.am b/src/ppp-manager/Makefile.am index 5cf908df..7d3e503b 100644 --- a/src/ppp-manager/Makefile.am +++ b/src/ppp-manager/Makefile.am @@ -8,7 +8,6 @@ AM_CPPFLAGS = \ -I${top_builddir}/libnm-core \ -DG_LOG_DOMAIN=\""nm-pppd-plugin"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) pppd_plugindir = $(PPPD_PLUGIN_DIR) diff --git a/src/ppp-manager/Makefile.in b/src/ppp-manager/Makefile.in index 50e84429..9a3cff62 100644 --- a/src/ppp-manager/Makefile.in +++ b/src/ppp-manager/Makefile.in @@ -488,7 +488,6 @@ with_valgrind = @with_valgrind@ @WITH_PPP_TRUE@ -I${top_builddir}/libnm-core \ @WITH_PPP_TRUE@ -DG_LOG_DOMAIN=\""nm-pppd-plugin"\" \ @WITH_PPP_TRUE@ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ -@WITH_PPP_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ @WITH_PPP_TRUE@ $(GLIB_CFLAGS) @WITH_PPP_TRUE@pppd_plugindir = $(PPPD_PLUGIN_DIR) diff --git a/src/rdisc/nm-lndp-rdisc.c b/src/rdisc/nm-lndp-rdisc.c index 27fd2f83..0c5971f4 100644 --- a/src/rdisc/nm-lndp-rdisc.c +++ b/src/rdisc/nm-lndp-rdisc.c @@ -78,20 +78,12 @@ send_rs (NMRDisc *rdisc, GError **error) return TRUE; } -static NMRDiscPreference -translate_preference (enum ndp_route_preference preference) -{ - switch (preference) { - case NDP_ROUTE_PREF_LOW: - return NM_RDISC_PREFERENCE_LOW; - case NDP_ROUTE_PREF_MEDIUM: - return NM_RDISC_PREFERENCE_MEDIUM; - case NDP_ROUTE_PREF_HIGH: - return NM_RDISC_PREFERENCE_HIGH; - default: - return NM_RDISC_PREFERENCE_INVALID; - } -} +_NM_UTILS_LOOKUP_DEFINE (static, translate_preference, enum ndp_route_preference, NMRDiscPreference, + NM_UTILS_LOOKUP_DEFAULT (NM_RDISC_PREFERENCE_INVALID), + NM_UTILS_LOOKUP_ITEM (NDP_ROUTE_PREF_LOW, NM_RDISC_PREFERENCE_LOW), + NM_UTILS_LOOKUP_ITEM (NDP_ROUTE_PREF_MEDIUM, NM_RDISC_PREFERENCE_MEDIUM), + NM_UTILS_LOOKUP_ITEM (NDP_ROUTE_PREF_HIGH, NM_RDISC_PREFERENCE_HIGH), +); static int receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data) @@ -99,7 +91,7 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data) NMRDisc *rdisc = (NMRDisc *) user_data; NMRDiscConfigMap changed = 0; struct ndp_msgra *msgra = ndp_msgra (msg); - NMRDiscGateway gateway; + struct in6_addr gateway_addr; guint32 now = nm_utils_get_monotonic_timestamp_s (); int offset; int hop_limit; @@ -145,57 +137,73 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data) * on the network. We should present all of them in router preference * order. */ - memset (&gateway, 0, sizeof (gateway)); - gateway.address = *ndp_msg_addrto (msg); - gateway.timestamp = now; - gateway.lifetime = ndp_msgra_router_lifetime (msgra); - gateway.preference = translate_preference (ndp_msgra_route_preference (msgra)); - if (nm_rdisc_add_gateway (rdisc, &gateway)) - changed |= NM_RDISC_CONFIG_GATEWAYS; + gateway_addr = *ndp_msg_addrto (msg); + { + NMRDiscGateway gateway = { + .address = gateway_addr, + .timestamp = now, + .lifetime = ndp_msgra_router_lifetime (msgra), + .preference = translate_preference (ndp_msgra_route_preference (msgra)), + }; + + if (nm_rdisc_add_gateway (rdisc, &gateway)) + changed |= NM_RDISC_CONFIG_GATEWAYS; + } /* Addresses & Routes */ ndp_msg_opt_for_each_offset (offset, msg, NDP_MSG_OPT_PREFIX) { - NMRDiscRoute route; - NMRDiscAddress address; + guint8 r_plen; + struct in6_addr r_network; /* Device route */ - memset (&route, 0, sizeof (route)); - route.plen = ndp_msg_opt_prefix_len (msg, offset); - nm_utils_ip6_address_clear_host_address (&route.network, ndp_msg_opt_prefix (msg, offset), route.plen); - route.timestamp = now; + + r_plen = ndp_msg_opt_prefix_len (msg, offset); + if (r_plen == 0 || r_plen > 128) + continue; + nm_utils_ip6_address_clear_host_address (&r_network, ndp_msg_opt_prefix (msg, offset), r_plen); + if (ndp_msg_opt_prefix_flag_on_link (msg, offset)) { - route.lifetime = ndp_msg_opt_prefix_valid_time (msg, offset); + NMRDiscRoute route = { + .network = r_network, + .plen = r_plen, + .timestamp = now, + .lifetime = ndp_msg_opt_prefix_valid_time (msg, offset), + }; + if (nm_rdisc_add_route (rdisc, &route)) changed |= NM_RDISC_CONFIG_ROUTES; } /* Address */ - if (ndp_msg_opt_prefix_flag_auto_addr_conf (msg, offset)) { - if (route.plen == 64) { - memset (&address, 0, sizeof (address)); - address.address = route.network; - address.timestamp = now; - address.lifetime = ndp_msg_opt_prefix_valid_time (msg, offset); - address.preferred = ndp_msg_opt_prefix_preferred_time (msg, offset); - if (address.preferred > address.lifetime) - address.preferred = address.lifetime; - - if (nm_rdisc_complete_and_add_address (rdisc, &address)) - changed |= NM_RDISC_CONFIG_ADDRESSES; - } + if ( r_plen == 64 + && ndp_msg_opt_prefix_flag_auto_addr_conf (msg, offset)) { + NMRDiscAddress address = { + .address = r_network, + .timestamp = now, + .lifetime = ndp_msg_opt_prefix_valid_time (msg, offset), + .preferred = ndp_msg_opt_prefix_preferred_time (msg, offset), + }; + + if (address.preferred > address.lifetime) + address.preferred = address.lifetime; + if (nm_rdisc_complete_and_add_address (rdisc, &address)) + changed |= NM_RDISC_CONFIG_ADDRESSES; } } ndp_msg_opt_for_each_offset(offset, msg, NDP_MSG_OPT_ROUTE) { - NMRDiscRoute route; + NMRDiscRoute route = { + .gateway = gateway_addr, + .plen = ndp_msg_opt_route_prefix_len (msg, offset), + .timestamp = now, + .lifetime = ndp_msg_opt_route_lifetime (msg, offset), + .preference = translate_preference (ndp_msg_opt_route_preference (msg, offset)), + }; + + if (route.plen == 0 || route.plen > 128) + continue; /* Routers through this particular gateway */ - memset (&route, 0, sizeof (route)); - route.gateway = gateway.address; - route.plen = ndp_msg_opt_route_prefix_len (msg, offset); nm_utils_ip6_address_clear_host_address (&route.network, ndp_msg_opt_route_prefix (msg, offset), route.plen); - route.timestamp = now; - route.lifetime = ndp_msg_opt_route_lifetime (msg, offset); - route.preference = translate_preference (ndp_msg_opt_route_preference (msg, offset)); if (nm_rdisc_add_route (rdisc, &route)) changed |= NM_RDISC_CONFIG_ROUTES; } @@ -206,12 +214,12 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data) int addr_index; ndp_msg_opt_rdnss_for_each_addr (addr, addr_index, msg, offset) { - NMRDiscDNSServer dns_server; + NMRDiscDNSServer dns_server = { + .address = *addr, + .timestamp = now, + .lifetime = ndp_msg_opt_rdnss_lifetime (msg, offset), + }; - memset (&dns_server, 0, sizeof (dns_server)); - dns_server.address = *addr; - dns_server.timestamp = now; - dns_server.lifetime = ndp_msg_opt_rdnss_lifetime (msg, offset); /* Pad the lifetime somewhat to give a bit of slack in cases * where one RA gets lost or something (which can happen on unreliable * links like WiFi where certain types of frames are not retransmitted). @@ -228,12 +236,12 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data) int domain_index; ndp_msg_opt_dnssl_for_each_domain (domain, domain_index, msg, offset) { - NMRDiscDNSDomain dns_domain; + NMRDiscDNSDomain dns_domain = { + .domain = domain, + .timestamp = now, + .lifetime = ndp_msg_opt_rdnss_lifetime (msg, offset), + }; - memset (&dns_domain, 0, sizeof (dns_domain)); - dns_domain.domain = domain; - dns_domain.timestamp = now; - dns_domain.lifetime = ndp_msg_opt_rdnss_lifetime (msg, offset); /* Pad the lifetime somewhat to give a bit of slack in cases * where one RA gets lost or something (which can happen on unreliable * links like WiFi where certain types of frames are not retransmitted). diff --git a/src/rdisc/nm-rdisc.c b/src/rdisc/nm-rdisc.c index 689fe7f6..12e3962b 100644 --- a/src/rdisc/nm-rdisc.c +++ b/src/rdisc/nm-rdisc.c @@ -212,6 +212,9 @@ nm_rdisc_add_route (NMRDisc *rdisc, const NMRDiscRoute *new) { int i, insert_idx = -1; + if (new->plen == 0 || new->plen > 128) + return FALSE; + for (i = 0; i < rdisc->routes->len; i++) { NMRDiscRoute *item = &g_array_index (rdisc->routes, NMRDiscRoute, i); diff --git a/src/rdisc/tests/Makefile.am b/src/rdisc/tests/Makefile.am index d520e416..65191734 100644 --- a/src/rdisc/tests/Makefile.am +++ b/src/rdisc/tests/Makefile.am @@ -9,7 +9,6 @@ AM_CPPFLAGS = \ -I${srcdir}/.. \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(LIBNDP_CFLAGS) diff --git a/src/rdisc/tests/Makefile.in b/src/rdisc/tests/Makefile.in index 91b12677..7d452119 100644 --- a/src/rdisc/tests/Makefile.in +++ b/src/rdisc/tests/Makefile.in @@ -666,7 +666,6 @@ AM_CPPFLAGS = \ -I${srcdir}/.. \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(LIBNDP_CFLAGS) diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 77e45f49..4ad395a1 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -104,16 +104,18 @@ EXPORT(nm_settings_connection_replace_and_commit) #define HOSTNAMED_SERVICE_PATH "/org/freedesktop/hostname1" #define HOSTNAMED_SERVICE_INTERFACE "org.freedesktop.hostname1" -#define HOSTNAME_FILE_DEFAULT "/etc/hostname" -#define HOSTNAME_FILE_SUSE "/etc/HOSTNAME" -#define HOSTNAME_FILE_GENTOO "/etc/conf.d/hostname" -#define IFCFG_DIR SYSCONFDIR "/sysconfig/network" -#define CONF_DHCP IFCFG_DIR "/dhcp" +#define HOSTNAME_FILE_DEFAULT "/etc/hostname" +#define HOSTNAME_FILE_UCASE_HOSTNAME "/etc/HOSTNAME" +#define HOSTNAME_FILE_GENTOO "/etc/conf.d/hostname" +#define IFCFG_DIR SYSCONFDIR "/sysconfig/network" +#define CONF_DHCP IFCFG_DIR "/dhcp" #define PLUGIN_MODULE_PATH "plugin-module-path" #if defined(HOSTNAME_PERSIST_SUSE) -#define HOSTNAME_FILE HOSTNAME_FILE_SUSE +#define HOSTNAME_FILE HOSTNAME_FILE_UCASE_HOSTNAME +#elif defined(HOSTNAME_PERSIST_SLACKWARE) +#define HOSTNAME_FILE HOSTNAME_FILE_UCASE_HOSTNAME #elif defined(HOSTNAME_PERSIST_GENTOO) #define HOSTNAME_FILE HOSTNAME_FILE_GENTOO #else diff --git a/src/settings/plugins/ibft/Makefile.am b/src/settings/plugins/ibft/Makefile.am index a994808d..d19f36f2 100644 --- a/src/settings/plugins/ibft/Makefile.am +++ b/src/settings/plugins/ibft/Makefile.am @@ -19,7 +19,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DG_LOG_DOMAIN=\""NetworkManager-ibft"\" \ -DSYSCONFDIR=\"$(sysconfdir)\" \ diff --git a/src/settings/plugins/ibft/Makefile.in b/src/settings/plugins/ibft/Makefile.in index 024442b1..7142cf1d 100644 --- a/src/settings/plugins/ibft/Makefile.in +++ b/src/settings/plugins/ibft/Makefile.in @@ -541,7 +541,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DG_LOG_DOMAIN=\""NetworkManager-ibft"\" \ -DSYSCONFDIR=\"$(sysconfdir)\" \ diff --git a/src/settings/plugins/ibft/tests/Makefile.am b/src/settings/plugins/ibft/tests/Makefile.am index 29881e85..939947ca 100644 --- a/src/settings/plugins/ibft/tests/Makefile.am +++ b/src/settings/plugins/ibft/tests/Makefile.am @@ -15,7 +15,6 @@ AM_CPPFLAGS = \ -I$(srcdir)/../ \ -DG_LOG_DOMAIN=\""NetworkManager-ibft"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DTEST_IBFT_DIR=\"$(abs_srcdir)\" \ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" diff --git a/src/settings/plugins/ibft/tests/Makefile.in b/src/settings/plugins/ibft/tests/Makefile.in index 7ac2bdc1..1869b502 100644 --- a/src/settings/plugins/ibft/tests/Makefile.in +++ b/src/settings/plugins/ibft/tests/Makefile.in @@ -666,7 +666,6 @@ with_valgrind = @with_valgrind@ @ENABLE_TESTS_TRUE@ -I$(srcdir)/../ \ @ENABLE_TESTS_TRUE@ -DG_LOG_DOMAIN=\""NetworkManager-ibft"\" \ @ENABLE_TESTS_TRUE@ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ -@ENABLE_TESTS_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ @ENABLE_TESTS_TRUE@ -DTEST_IBFT_DIR=\"$(abs_srcdir)\" \ @ENABLE_TESTS_TRUE@ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" diff --git a/src/settings/plugins/ifcfg-rh/Makefile.am b/src/settings/plugins/ifcfg-rh/Makefile.am index ab96a328..d2899a26 100644 --- a/src/settings/plugins/ifcfg-rh/Makefile.am +++ b/src/settings/plugins/ifcfg-rh/Makefile.am @@ -48,7 +48,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(NSS_CFLAGS) \ -DG_LOG_DOMAIN=\""NetworkManager-ifcfg-rh"\" \ diff --git a/src/settings/plugins/ifcfg-rh/Makefile.in b/src/settings/plugins/ifcfg-rh/Makefile.in index 3fc3495a..54a2b805 100644 --- a/src/settings/plugins/ifcfg-rh/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/Makefile.in @@ -566,7 +566,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(NSS_CFLAGS) \ -DG_LOG_DOMAIN=\""NetworkManager-ifcfg-rh"\" \ diff --git a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c index 2ee5a0b9..b9bbf6d5 100644 --- a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c +++ b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c @@ -369,6 +369,7 @@ replace_and_commit (NMSettingsConnection *connection, callback (connection, error, user_data); g_clear_error (&error); } + return; } NM_SETTINGS_CONNECTION_CLASS (nm_ifcfg_connection_parent_class)->replace_and_commit (connection, new_connection, callback, user_data); diff --git a/src/settings/plugins/ifcfg-rh/nm-ifcfg-rh.xml b/src/settings/plugins/ifcfg-rh/nm-ifcfg-rh.xml index c2a6cb34..033fbfaa 100644 --- a/src/settings/plugins/ifcfg-rh/nm-ifcfg-rh.xml +++ b/src/settings/plugins/ifcfg-rh/nm-ifcfg-rh.xml @@ -1,30 +1,26 @@ -<?xml version="1.0" encoding="UTF-8" ?> +<?xml version="1.0" encoding="UTF-8"?> +<node name="/"> -<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> - <interface name="com.redhat.ifcfgrh1"> - <annotation name="org.gtk.GDBus.DocString" value=" - Utility methods for handling NM integration with standard Red Hat ifcfg files. - " /> + <!-- + com.redhat.ifcfgrh1: - <method name="GetIfcfgDetails"> - <annotation name="org.gtk.GDBus.DocString" value=" - Given an ifcfg file, return various internal information about it. - " /> - <arg name="ifcfg" type="s" direction="in"> - <annotation name="org.gtk.GDBus.DocString" value=" - The full path to an ifcfg file. - " /> - </arg> - <arg name="uuid" type="s" direction="out"> - <annotation name="org.gtk.GDBus.DocString" value=" - The UUID of the NM connection backed by this ifcfg file. If the ifcfg file does not contain a UUID tag, this UUID is generated by NM, otherwise the UUID from the ifcfg file is used. - " /> - </arg> - <arg name="path" type="o" direction="out"> - <annotation name="org.gtk.GDBus.DocString" value=" - The object path of the NM connected backed by this ifcfg file. - " /> - </arg> - </method> - </interface> + Utility methods for handling NM integration with standard Red Hat ifcfg + files. + --> + <interface name="com.redhat.ifcfgrh1"> + + <!-- + GetIfcfgDetails: + @ifcfg: The full path to an ifcfg file. + @uuid: The UUID of the NM connection backed by this ifcfg file. If the ifcfg file does not contain a UUID tag, this UUID is generated by NM, otherwise the UUID from the ifcfg file is used. + @path: The object path of the NM connected backed by this ifcfg file. + + Given an ifcfg file, return various internal information about it. + --> + <method name="GetIfcfgDetails"> + <arg name="ifcfg" type="s" direction="in"/> + <arg name="uuid" type="s" direction="out"/> + <arg name="path" type="o" direction="out"/> + </method> + </interface> </node> diff --git a/src/settings/plugins/ifcfg-rh/tests/Makefile.am b/src/settings/plugins/ifcfg-rh/tests/Makefile.am index 25d27197..73ddfeef 100644 --- a/src/settings/plugins/ifcfg-rh/tests/Makefile.am +++ b/src/settings/plugins/ifcfg-rh/tests/Makefile.am @@ -17,7 +17,6 @@ AM_CPPFLAGS = \ -I$(srcdir)/../ \ -DG_LOG_DOMAIN=\""NetworkManager-ifcfg-rh"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DTEST_IFCFG_DIR=\"$(abs_srcdir)\" \ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" \ -DSYSCONFDIR=\"nonexistent\" \ diff --git a/src/settings/plugins/ifcfg-rh/tests/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/Makefile.in index 00636de9..d822e2e1 100644 --- a/src/settings/plugins/ifcfg-rh/tests/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/tests/Makefile.in @@ -721,7 +721,6 @@ with_valgrind = @with_valgrind@ @ENABLE_TESTS_TRUE@ -I$(srcdir)/../ \ @ENABLE_TESTS_TRUE@ -DG_LOG_DOMAIN=\""NetworkManager-ifcfg-rh"\" \ @ENABLE_TESTS_TRUE@ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ -@ENABLE_TESTS_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ @ENABLE_TESTS_TRUE@ -DTEST_IFCFG_DIR=\"$(abs_srcdir)\" \ @ENABLE_TESTS_TRUE@ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/\" \ @ENABLE_TESTS_TRUE@ -DSYSCONFDIR=\"nonexistent\" \ diff --git a/src/settings/plugins/ifnet/Makefile.am b/src/settings/plugins/ifnet/Makefile.am index ffd8ab3c..68e80356 100644 --- a/src/settings/plugins/ifnet/Makefile.am +++ b/src/settings/plugins/ifnet/Makefile.am @@ -12,7 +12,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-ifnet"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" -DSBINDIR=\"$(sbindir)\" diff --git a/src/settings/plugins/ifnet/Makefile.in b/src/settings/plugins/ifnet/Makefile.in index c6e13316..4b496f54 100644 --- a/src/settings/plugins/ifnet/Makefile.in +++ b/src/settings/plugins/ifnet/Makefile.in @@ -537,7 +537,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-ifnet"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" diff --git a/src/settings/plugins/ifnet/tests/Makefile.am b/src/settings/plugins/ifnet/tests/Makefile.am index 1919f141..6590d4ae 100644 --- a/src/settings/plugins/ifnet/tests/Makefile.am +++ b/src/settings/plugins/ifnet/tests/Makefile.am @@ -13,7 +13,6 @@ AM_CPPFLAGS= \ -I$(top_srcdir)/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager-ifnet"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(CHECK_CFLAGS) \ $(GLIB_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) \ diff --git a/src/settings/plugins/ifnet/tests/Makefile.in b/src/settings/plugins/ifnet/tests/Makefile.in index 1e08b955..1a152870 100644 --- a/src/settings/plugins/ifnet/tests/Makefile.in +++ b/src/settings/plugins/ifnet/tests/Makefile.in @@ -670,7 +670,6 @@ with_valgrind = @with_valgrind@ @ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/platform \ @ENABLE_TESTS_TRUE@ -DG_LOG_DOMAIN=\""NetworkManager-ifnet"\" \ @ENABLE_TESTS_TRUE@ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ -@ENABLE_TESTS_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ @ENABLE_TESTS_TRUE@ $(CHECK_CFLAGS) \ @ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ @ENABLE_TESTS_TRUE@ $(CODE_COVERAGE_CFLAGS) \ diff --git a/src/settings/plugins/ifupdown/Makefile.am b/src/settings/plugins/ifupdown/Makefile.am index c5c645d3..94b0be54 100644 --- a/src/settings/plugins/ifupdown/Makefile.am +++ b/src/settings/plugins/ifupdown/Makefile.am @@ -11,7 +11,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-ifupdown"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(GUDEV_CFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" diff --git a/src/settings/plugins/ifupdown/Makefile.in b/src/settings/plugins/ifupdown/Makefile.in index b16c3053..1f8c7e1b 100644 --- a/src/settings/plugins/ifupdown/Makefile.in +++ b/src/settings/plugins/ifupdown/Makefile.in @@ -535,7 +535,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-ifupdown"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ $(GUDEV_CFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" diff --git a/src/settings/plugins/ifupdown/tests/Makefile.am b/src/settings/plugins/ifupdown/tests/Makefile.am index 29e9a7ed..e12c0181 100644 --- a/src/settings/plugins/ifupdown/tests/Makefile.am +++ b/src/settings/plugins/ifupdown/tests/Makefile.am @@ -10,7 +10,6 @@ AM_CPPFLAGS = \ -I$(srcdir)/../ \ -DG_LOG_DOMAIN=\""NetworkManager-ifupdown"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DTEST_ENI_DIR=\"$(abs_srcdir)\" diff --git a/src/settings/plugins/ifupdown/tests/Makefile.in b/src/settings/plugins/ifupdown/tests/Makefile.in index 8ad1c0ab..06e9b61e 100644 --- a/src/settings/plugins/ifupdown/tests/Makefile.in +++ b/src/settings/plugins/ifupdown/tests/Makefile.in @@ -664,7 +664,6 @@ with_valgrind = @with_valgrind@ @ENABLE_TESTS_TRUE@ -I$(srcdir)/../ \ @ENABLE_TESTS_TRUE@ -DG_LOG_DOMAIN=\""NetworkManager-ifupdown"\" \ @ENABLE_TESTS_TRUE@ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ -@ENABLE_TESTS_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ @ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ @ENABLE_TESTS_TRUE@ -DTEST_ENI_DIR=\"$(abs_srcdir)\" diff --git a/src/settings/plugins/keyfile/Makefile.am b/src/settings/plugins/keyfile/Makefile.am index ddcd15b2..08119dae 100644 --- a/src/settings/plugins/keyfile/Makefile.am +++ b/src/settings/plugins/keyfile/Makefile.am @@ -11,7 +11,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-keyfile"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DNMCONFDIR=\"$(nmconfdir)\" diff --git a/src/settings/plugins/keyfile/Makefile.in b/src/settings/plugins/keyfile/Makefile.in index 9c078ca4..65410336 100644 --- a/src/settings/plugins/keyfile/Makefile.in +++ b/src/settings/plugins/keyfile/Makefile.in @@ -504,7 +504,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/libnm-core \ -DG_LOG_DOMAIN=\""NetworkManager-keyfile"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DNMCONFDIR=\"$(nmconfdir)\" diff --git a/src/settings/plugins/keyfile/tests/Makefile.am b/src/settings/plugins/keyfile/tests/Makefile.am index 4d85f09a..fd08b896 100644 --- a/src/settings/plugins/keyfile/tests/Makefile.am +++ b/src/settings/plugins/keyfile/tests/Makefile.am @@ -16,7 +16,6 @@ AM_CPPFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ -DG_LOG_DOMAIN=\""NetworkManager-keyfile"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DTEST_KEYFILES_DIR=\"$(abs_srcdir)/keyfiles\" \ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/keyfiles\" \ -DNMCONFDIR=\"nonexistent\" diff --git a/src/settings/plugins/keyfile/tests/Makefile.in b/src/settings/plugins/keyfile/tests/Makefile.in index 7577df57..eb7a99d2 100644 --- a/src/settings/plugins/keyfile/tests/Makefile.in +++ b/src/settings/plugins/keyfile/tests/Makefile.in @@ -711,7 +711,6 @@ with_valgrind = @with_valgrind@ @ENABLE_TESTS_TRUE@ $(CODE_COVERAGE_CFLAGS) \ @ENABLE_TESTS_TRUE@ -DG_LOG_DOMAIN=\""NetworkManager-keyfile"\" \ @ENABLE_TESTS_TRUE@ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ -@ENABLE_TESTS_TRUE@ -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ @ENABLE_TESTS_TRUE@ -DTEST_KEYFILES_DIR=\"$(abs_srcdir)/keyfiles\" \ @ENABLE_TESTS_TRUE@ -DTEST_SCRATCH_DIR=\"$(abs_builddir)/keyfiles\" \ @ENABLE_TESTS_TRUE@ -DNMCONFDIR=\"nonexistent\" diff --git a/src/supplicant-manager/tests/Makefile.am b/src/supplicant-manager/tests/Makefile.am index 9ac0387c..6672c673 100644 --- a/src/supplicant-manager/tests/Makefile.am +++ b/src/supplicant-manager/tests/Makefile.am @@ -9,7 +9,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/supplicant-manager \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DTEST_CERT_DIR=\"$(srcdir)/certs/\" \ $(GLIB_CFLAGS) diff --git a/src/supplicant-manager/tests/Makefile.in b/src/supplicant-manager/tests/Makefile.in index cbc8a5a1..5e521ae0 100644 --- a/src/supplicant-manager/tests/Makefile.in +++ b/src/supplicant-manager/tests/Makefile.in @@ -702,7 +702,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/supplicant-manager \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ -DTEST_CERT_DIR=\"$(srcdir)/certs/\" \ $(GLIB_CFLAGS) diff --git a/src/systemd/src/basic/utf8.h b/src/systemd/src/basic/utf8.h index a3c8558e..1bc23dc1 100644 --- a/src/systemd/src/basic/utf8.h +++ b/src/systemd/src/basic/utf8.h @@ -32,6 +32,7 @@ #endif /* NM_IGNORED */ #define UTF8_REPLACEMENT_CHARACTER "\xef\xbf\xbd" +#define UTF8_BYTE_ORDER_MARK "\xef\xbb\xbf" bool unichar_is_valid(char32_t c); diff --git a/src/systemd/src/libsystemd-network/dhcp-identifier.c b/src/systemd/src/libsystemd-network/dhcp-identifier.c index 0cbce155..c7a3eac5 100644 --- a/src/systemd/src/libsystemd-network/dhcp-identifier.c +++ b/src/systemd/src/libsystemd-network/dhcp-identifier.c @@ -51,7 +51,7 @@ int dhcp_identifier_set_duid_en(struct duid *duid, size_t *len) { if (r < 0) return r; - unaligned_write_be16(&duid->type, DHCP6_DUID_EN); + unaligned_write_be16(&duid->type, DUID_TYPE_EN); unaligned_write_be32(&duid->en.pen, SYSTEMD_PEN); *len = sizeof(duid->type) + sizeof(duid->en); diff --git a/src/systemd/src/libsystemd-network/dhcp-identifier.h b/src/systemd/src/libsystemd-network/dhcp-identifier.h index 93f06f59..babae15c 100644 --- a/src/systemd/src/libsystemd-network/dhcp-identifier.h +++ b/src/systemd/src/libsystemd-network/dhcp-identifier.h @@ -25,13 +25,23 @@ #include "sparse-endian.h" #include "unaligned.h" +typedef enum DUIDType { + DUID_TYPE_RAW = 0, + DUID_TYPE_LLT = 1, + DUID_TYPE_EN = 2, + DUID_TYPE_LL = 3, + DUID_TYPE_UUID = 4, + _DUID_TYPE_MAX, + _DUID_TYPE_INVALID = -1, +} DUIDType; + /* RFC 3315 section 9.1: * A DUID can be no more than 128 octets long (not including the type code). */ #define MAX_DUID_LEN 128 struct duid { - uint16_t type; + be16_t type; union { struct { /* DHCP6_DUID_LLT */ @@ -61,3 +71,32 @@ struct duid { int dhcp_identifier_set_duid_en(struct duid *duid, size_t *len); int dhcp_identifier_set_iaid(int ifindex, uint8_t *mac, size_t mac_len, void *_id); + +static inline int dhcp_validate_duid_len(uint16_t duid_type, size_t duid_len) { + struct duid d; + + assert_return(duid_len > 0 && duid_len <= MAX_DUID_LEN, -EINVAL); + + switch (duid_type) { + case DUID_TYPE_LLT: + if (duid_len <= sizeof(d.llt)) + return -EINVAL; + break; + case DUID_TYPE_EN: + if (duid_len != sizeof(d.en)) + return -EINVAL; + break; + case DUID_TYPE_LL: + if (duid_len <= sizeof(d.ll)) + return -EINVAL; + break; + case DUID_TYPE_UUID: + if (duid_len != sizeof(d.uuid)) + return -EINVAL; + break; + default: + /* accept unknown type in order to be forward compatible */ + break; + } + return 0; +} diff --git a/src/systemd/src/libsystemd-network/dhcp6-protocol.h b/src/systemd/src/libsystemd-network/dhcp6-protocol.h index ee4bdfb0..2487c470 100644 --- a/src/systemd/src/libsystemd-network/dhcp6-protocol.h +++ b/src/systemd/src/libsystemd-network/dhcp6-protocol.h @@ -62,13 +62,6 @@ enum { #define DHCP6_REB_TIMEOUT 10 * USEC_PER_SEC #define DHCP6_REB_MAX_RT 600 * USEC_PER_SEC -enum { - DHCP6_DUID_LLT = 1, - DHCP6_DUID_EN = 2, - DHCP6_DUID_LL = 3, - DHCP6_DUID_UUID = 4, -}; - enum DHCP6State { DHCP6_STATE_STOPPED = 0, DHCP6_STATE_INFORMATION_REQUEST = 1, diff --git a/src/systemd/src/libsystemd-network/lldp-neighbor.c b/src/systemd/src/libsystemd-network/lldp-neighbor.c index 0515ce1e..ce1d89b6 100644 --- a/src/systemd/src/libsystemd-network/lldp-neighbor.c +++ b/src/systemd/src/libsystemd-network/lldp-neighbor.c @@ -26,7 +26,6 @@ #include "in-addr-util.h" #include "lldp-internal.h" #include "lldp-neighbor.h" -#include "lldp.h" #include "unaligned.h" static void lldp_neighbor_id_hash_func(const void *p, struct siphash *state) { @@ -247,7 +246,7 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) { switch (type) { - case LLDP_TYPE_END: + case SD_LLDP_TYPE_END: if (length != 0) { log_lldp("End marker TLV not zero-sized, ignoring datagram."); return -EBADMSG; @@ -259,7 +258,7 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) { goto end_marker; - case LLDP_TYPE_CHASSIS_ID: + case SD_LLDP_TYPE_CHASSIS_ID: if (length < 2 || length > 256) { /* includes the chassis subtype, hence one extra byte */ log_lldp("Chassis ID field size out of range, ignoring datagram."); return -EBADMSG; @@ -276,7 +275,7 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) { n->id.chassis_id_size = length; break; - case LLDP_TYPE_PORT_ID: + case SD_LLDP_TYPE_PORT_ID: if (length < 2 || length > 256) { /* includes the port subtype, hence one extra byte */ log_lldp("Port ID field size out of range, ignoring datagram."); return -EBADMSG; @@ -293,7 +292,7 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) { n->id.port_id_size = length; break; - case LLDP_TYPE_TTL: + case SD_LLDP_TYPE_TTL: if (length != 2) { log_lldp("TTL field has wrong size, ignoring datagram."); return -EBADMSG; @@ -308,25 +307,25 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) { n->has_ttl = true; break; - case LLDP_TYPE_PORT_DESCRIPTION: + case SD_LLDP_TYPE_PORT_DESCRIPTION: r = parse_string(&n->port_description, p, length); if (r < 0) return r; break; - case LLDP_TYPE_SYSTEM_NAME: + case SD_LLDP_TYPE_SYSTEM_NAME: r = parse_string(&n->system_name, p, length); if (r < 0) return r; break; - case LLDP_TYPE_SYSTEM_DESCRIPTION: + case SD_LLDP_TYPE_SYSTEM_DESCRIPTION: r = parse_string(&n->system_description, p, length); if (r < 0) return r; break; - case LLDP_TYPE_SYSTEM_CAPABILITIES: + case SD_LLDP_TYPE_SYSTEM_CAPABILITIES: if (length != 4) log_lldp("System capabilities field has wrong size, ignoring."); else { @@ -337,7 +336,7 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) { break; - case LLDP_TYPE_PRIVATE: + case SD_LLDP_TYPE_PRIVATE: if (length < 4) log_lldp("Found private TLV that is too short, ignoring."); @@ -481,18 +480,18 @@ _public_ int sd_lldp_neighbor_get_chassis_id_as_string(sd_lldp_neighbor *n, cons switch (*(uint8_t*) n->id.chassis_id) { - case LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT: - case LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS: - case LLDP_CHASSIS_SUBTYPE_PORT_COMPONENT: - case LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME: - case LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED: + case SD_LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT: + case SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS: + case SD_LLDP_CHASSIS_SUBTYPE_PORT_COMPONENT: + case SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME: + case SD_LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED: k = cescape_length((char*) n->id.chassis_id + 1, n->id.chassis_id_size - 1); if (!k) return -ENOMEM; goto done; - case LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS: + case SD_LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS: r = format_mac_address(n->id.chassis_id, n->id.chassis_id_size, &k); if (r < 0) return r; @@ -501,7 +500,7 @@ _public_ int sd_lldp_neighbor_get_chassis_id_as_string(sd_lldp_neighbor *n, cons break; - case LLDP_CHASSIS_SUBTYPE_NETWORK_ADDRESS: + case SD_LLDP_CHASSIS_SUBTYPE_NETWORK_ADDRESS: r = format_network_address(n->id.chassis_id, n->id.chassis_id_size, &k); if (r < 0) return r; @@ -552,17 +551,17 @@ _public_ int sd_lldp_neighbor_get_port_id_as_string(sd_lldp_neighbor *n, const c switch (*(uint8_t*) n->id.port_id) { - case LLDP_PORT_SUBTYPE_INTERFACE_ALIAS: - case LLDP_PORT_SUBTYPE_PORT_COMPONENT: - case LLDP_PORT_SUBTYPE_INTERFACE_NAME: - case LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED: + case SD_LLDP_PORT_SUBTYPE_INTERFACE_ALIAS: + case SD_LLDP_PORT_SUBTYPE_PORT_COMPONENT: + case SD_LLDP_PORT_SUBTYPE_INTERFACE_NAME: + case SD_LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED: k = cescape_length((char*) n->id.port_id + 1, n->id.port_id_size - 1); if (!k) return -ENOMEM; goto done; - case LLDP_PORT_SUBTYPE_MAC_ADDRESS: + case SD_LLDP_PORT_SUBTYPE_MAC_ADDRESS: r = format_mac_address(n->id.port_id, n->id.port_id_size, &k); if (r < 0) return r; @@ -571,7 +570,7 @@ _public_ int sd_lldp_neighbor_get_port_id_as_string(sd_lldp_neighbor *n, const c break; - case LLDP_PORT_SUBTYPE_NETWORK_ADDRESS: + case SD_LLDP_PORT_SUBTYPE_NETWORK_ADDRESS: r = format_network_address(n->id.port_id, n->id.port_id_size, &k); if (r < 0) return r; @@ -740,7 +739,7 @@ _public_ int sd_lldp_neighbor_tlv_get_oui(sd_lldp_neighbor *n, uint8_t oui[3], u assert_return(oui, -EINVAL); assert_return(subtype, -EINVAL); - r = sd_lldp_neighbor_tlv_is_type(n, LLDP_TYPE_PRIVATE); + r = sd_lldp_neighbor_tlv_is_type(n, SD_LLDP_TYPE_PRIVATE); if (r < 0) return r; if (r == 0) diff --git a/src/systemd/src/libsystemd-network/lldp.h b/src/systemd/src/libsystemd-network/lldp.h deleted file mode 100644 index d61ecabc..00000000 --- a/src/systemd/src/libsystemd-network/lldp.h +++ /dev/null @@ -1,102 +0,0 @@ -#pragma once - -/*** - This file is part of systemd. - - Copyright (C) 2014 Tom Gundersen - Copyright (C) 2014 Susant Sahani - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see <http://www.gnu.org/licenses/>. -***/ - -#define LLDP_MULTICAST_ADDR { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e } - -/* IEEE 802.3AB Clause 9: TLV Types */ -enum { - LLDP_TYPE_END = 0, - LLDP_TYPE_CHASSIS_ID = 1, - LLDP_TYPE_PORT_ID = 2, - LLDP_TYPE_TTL = 3, - LLDP_TYPE_PORT_DESCRIPTION = 4, - LLDP_TYPE_SYSTEM_NAME = 5, - LLDP_TYPE_SYSTEM_DESCRIPTION = 6, - LLDP_TYPE_SYSTEM_CAPABILITIES = 7, - LLDP_TYPE_MGMT_ADDRESS = 8, - LLDP_TYPE_PRIVATE = 127, -}; - -/* IEEE 802.3AB Clause 9.5.2: Chassis subtypes */ -enum { - LLDP_CHASSIS_SUBTYPE_RESERVED = 0, - LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT = 1, - LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS = 2, - LLDP_CHASSIS_SUBTYPE_PORT_COMPONENT = 3, - LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS = 4, - LLDP_CHASSIS_SUBTYPE_NETWORK_ADDRESS = 5, - LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME = 6, - LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED = 7, -}; - -/* IEEE 802.3AB Clause 9.5.3: Port subtype */ -enum { - LLDP_PORT_SUBTYPE_RESERVED = 0, - LLDP_PORT_SUBTYPE_INTERFACE_ALIAS = 1, - LLDP_PORT_SUBTYPE_PORT_COMPONENT = 2, - LLDP_PORT_SUBTYPE_MAC_ADDRESS = 3, - LLDP_PORT_SUBTYPE_NETWORK_ADDRESS = 4, - LLDP_PORT_SUBTYPE_INTERFACE_NAME = 5, - LLDP_PORT_SUBTYPE_AGENT_CIRCUIT_ID = 6, - LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED = 7, -}; - -enum { - LLDP_SYSTEM_CAPABILITIES_OTHER = 1 << 0, - LLDP_SYSTEM_CAPABILITIES_REPEATER = 1 << 1, - LLDP_SYSTEM_CAPABILITIES_BRIDGE = 1 << 2, - LLDP_SYSTEM_CAPABILITIES_WLAN_AP = 1 << 3, - LLDP_SYSTEM_CAPABILITIES_ROUTER = 1 << 4, - LLDP_SYSTEM_CAPABILITIES_PHONE = 1 << 5, - LLDP_SYSTEM_CAPABILITIES_DOCSIS = 1 << 6, - LLDP_SYSTEM_CAPABILITIES_STATION = 1 << 7, - LLDP_SYSTEM_CAPABILITIES_CVLAN = 1 << 8, - LLDP_SYSTEM_CAPABILITIES_SVLAN = 1 << 9, - LLDP_SYSTEM_CAPABILITIES_TPMR = 1 << 10, -}; - -#define _LLDP_SYSTEM_CAPABILITIES_ALL ((uint16_t) -1) - -#define _LLDP_SYSTEM_CAPABILITIES_ALL_ROUTERS \ - ((uint16_t) \ - (LLDP_SYSTEM_CAPABILITIES_REPEATER| \ - LLDP_SYSTEM_CAPABILITIES_BRIDGE| \ - LLDP_SYSTEM_CAPABILITIES_WLAN_AP| \ - LLDP_SYSTEM_CAPABILITIES_ROUTER| \ - LLDP_SYSTEM_CAPABILITIES_DOCSIS| \ - LLDP_SYSTEM_CAPABILITIES_CVLAN| \ - LLDP_SYSTEM_CAPABILITIES_SVLAN| \ - LLDP_SYSTEM_CAPABILITIES_TPMR)) - - -#define LLDP_OUI_802_1 (uint8_t[]) { 0x00, 0x80, 0xc2 } -#define LLDP_OUI_802_3 (uint8_t[]) { 0x00, 0x12, 0x0f } - -enum { - LLDP_OUI_802_1_SUBTYPE_PORT_VLAN_ID = 1, - LLDP_OUI_802_1_SUBTYPE_PORT_PROTOCOL_VLAN_ID = 2, - LLDP_OUI_802_1_SUBTYPE_VLAN_NAME = 3, - LLDP_OUI_802_1_SUBTYPE_PROTOCOL_IDENTITY = 4, - LLDP_OUI_802_1_SUBTYPE_VID_USAGE_DIGEST = 5, - LLDP_OUI_802_1_SUBTYPE_MANAGEMENT_VID = 6, - LLDP_OUI_802_1_SUBTYPE_LINK_AGGREGATION = 7, -}; diff --git a/src/systemd/src/libsystemd-network/network-internal.c b/src/systemd/src/libsystemd-network/network-internal.c index 4e61c4fa..55fcc1da 100644 --- a/src/systemd/src/libsystemd-network/network-internal.c +++ b/src/systemd/src/libsystemd-network/network-internal.c @@ -339,6 +339,35 @@ int config_parse_hwaddr(const char *unit, return 0; } + +int config_parse_iaid(const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + uint32_t iaid; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + r = safe_atou32(rvalue, &iaid); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, 0, "Unable to read IAID: %s", rvalue); + return r; + } + + *((uint32_t *)data) = iaid; + + return 0; +} #endif /* NM_IGNORED */ void serialize_in_addrs(FILE *f, const struct in_addr *addresses, size_t size) { diff --git a/src/systemd/src/libsystemd-network/network-internal.h b/src/systemd/src/libsystemd-network/network-internal.h index fd161056..955cc898 100644 --- a/src/systemd/src/libsystemd-network/network-internal.h +++ b/src/systemd/src/libsystemd-network/network-internal.h @@ -63,6 +63,10 @@ int config_parse_ifalias(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_iaid(const char *unit, const char *filename, unsigned line, + const char *section, unsigned section_line, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata); + int net_get_unique_predictable_data(struct udev_device *device, uint64_t *result); const char *net_get_name(struct udev_device *device); #endif /* NM_IGNORED */ diff --git a/src/systemd/src/libsystemd-network/sd-dhcp-client.c b/src/systemd/src/libsystemd-network/sd-dhcp-client.c index 40f3c8e9..758dba4b 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp-client.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp-client.c @@ -84,7 +84,7 @@ struct sd_dhcp_client { } _packed_ ll; struct { /* 255: Node-specific (RFC 4361) */ - uint32_t iaid; + be32_t iaid; struct duid duid; } _packed_ ns; struct { @@ -300,6 +300,54 @@ int sd_dhcp_client_set_client_id(sd_dhcp_client *client, uint8_t type, return 0; } +#if 0 /* NM_IGNORED */ +int sd_dhcp_client_set_iaid_duid(sd_dhcp_client *client, uint32_t iaid, + uint16_t duid_type, uint8_t *duid, size_t duid_len) { + DHCP_CLIENT_DONT_DESTROY(client); + int r; + assert_return(client, -EINVAL); + zero(client->client_id); + + client->client_id.type = 255; + + /* If IAID is not configured, generate it. */ + if (iaid == 0) { + r = dhcp_identifier_set_iaid(client->index, client->mac_addr, + client->mac_addr_len, + &client->client_id.ns.iaid); + if (r < 0) + return r; + } else + client->client_id.ns.iaid = htobe32(iaid); + + /* If DUID is not configured, generate DUID-EN. */ + if (duid_len == 0) { + r = dhcp_identifier_set_duid_en(&client->client_id.ns.duid, + &duid_len); + if (r < 0) + return r; + } else { + r = dhcp_validate_duid_len(client->client_id.type, duid_len); + if (r < 0) + return r; + client->client_id.ns.duid.type = htobe16(duid_type); + memcpy(&client->client_id.ns.duid.raw.data, duid, duid_len); + duid_len += sizeof(client->client_id.ns.duid.type); + } + + client->client_id_len = sizeof(client->client_id.type) + duid_len + + sizeof(client->client_id.ns.iaid); + + if (!IN_SET(client->state, DHCP_STATE_INIT, DHCP_STATE_STOPPED)) { + log_dhcp_client(client, "Configured IAID+DUID, restarting."); + client_stop(client, SD_DHCP_CLIENT_EVENT_STOP); + sd_dhcp_client_start(client); + } + + return 0; +} +#endif /* NM_IGNORED */ + int sd_dhcp_client_set_hostname(sd_dhcp_client *client, const char *hostname) { char *new_hostname = NULL; diff --git a/src/systemd/src/libsystemd-network/sd-dhcp6-client.c b/src/systemd/src/libsystemd-network/sd-dhcp6-client.c index ebec1f12..8fa1822f 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp6-client.c @@ -182,44 +182,34 @@ static int client_ensure_duid(sd_dhcp6_client *client) { return dhcp_identifier_set_duid_en(&client->duid, &client->duid_len); } -int sd_dhcp6_client_set_duid( - sd_dhcp6_client *client, - uint16_t type, - uint8_t *duid, size_t duid_len) { +int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, uint16_t duid_type, + uint8_t *duid, size_t duid_len) { + int r; assert_return(client, -EINVAL); - assert_return(duid, -EINVAL); - assert_return(duid_len > 0 && duid_len <= MAX_DUID_LEN, -EINVAL); - assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY); - switch (type) { - case DHCP6_DUID_LLT: - if (duid_len <= sizeof(client->duid.llt)) - return -EINVAL; - break; - case DHCP6_DUID_EN: - if (duid_len != sizeof(client->duid.en)) - return -EINVAL; - break; - case DHCP6_DUID_LL: - if (duid_len <= sizeof(client->duid.ll)) - return -EINVAL; - break; - case DHCP6_DUID_UUID: - if (duid_len != sizeof(client->duid.uuid)) - return -EINVAL; - break; - default: - /* accept unknown type in order to be forward compatible */ - break; + if (duid_len > 0) { + r = dhcp_validate_duid_len(duid_type, duid_len); + if (r < 0) + return r; + client->duid.type = htobe16(duid_type); + memcpy(&client->duid.raw.data, duid, duid_len); + client->duid_len = duid_len + sizeof(client->duid.type); } - client->duid.type = htobe16(type); - memcpy(&client->duid.raw.data, duid, duid_len); - client->duid_len = duid_len + sizeof(client->duid.type); + return 0; +} + +#if 0 /* NM_IGNORED */ +int sd_dhcp6_client_set_iaid(sd_dhcp6_client *client, uint32_t iaid) { + assert_return(client, -EINVAL); + assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY); + + client->ia_na.id = htobe32(iaid); return 0; } +#endif /* NM_IGNORED */ int sd_dhcp6_client_set_information_request(sd_dhcp6_client *client, int enabled) { assert_return(client, -EINVAL); diff --git a/src/systemd/src/systemd/sd-dhcp-client.h b/src/systemd/src/systemd/sd-dhcp-client.h index ef453705..374ff877 100644 --- a/src/systemd/src/systemd/sd-dhcp-client.h +++ b/src/systemd/src/systemd/sd-dhcp-client.h @@ -98,6 +98,8 @@ int sd_dhcp_client_set_mac(sd_dhcp_client *client, const uint8_t *addr, size_t addr_len, uint16_t arp_type); int sd_dhcp_client_set_client_id(sd_dhcp_client *client, uint8_t type, const uint8_t *data, size_t data_len); +int sd_dhcp_client_set_iaid_duid(sd_dhcp_client *client, uint32_t iaid, + uint16_t duid_type, uint8_t *duid, size_t duid_len); int sd_dhcp_client_get_client_id(sd_dhcp_client *client, uint8_t *type, const uint8_t **data, size_t *data_len); int sd_dhcp_client_set_mtu(sd_dhcp_client *client, uint32_t mtu); diff --git a/src/systemd/src/systemd/sd-dhcp6-client.h b/src/systemd/src/systemd/sd-dhcp6-client.h index 1bedc941..4604cb63 100644 --- a/src/systemd/src/systemd/sd-dhcp6-client.h +++ b/src/systemd/src/systemd/sd-dhcp6-client.h @@ -85,8 +85,9 @@ int sd_dhcp6_client_set_index(sd_dhcp6_client *client, int interface_index); int sd_dhcp6_client_set_local_address(sd_dhcp6_client *client, const struct in6_addr *local_address); int sd_dhcp6_client_set_mac(sd_dhcp6_client *client, const uint8_t *addr, size_t addr_len, uint16_t arp_type); -int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, uint16_t type, uint8_t *duid, - size_t duid_len); +int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, uint16_t duid_type, + uint8_t *duid, size_t duid_len); +int sd_dhcp6_client_set_iaid(sd_dhcp6_client *client, uint32_t iaid); int sd_dhcp6_client_set_information_request(sd_dhcp6_client *client, int enabled); int sd_dhcp6_client_get_information_request(sd_dhcp6_client *client, int *enabled); int sd_dhcp6_client_set_request_option(sd_dhcp6_client *client, diff --git a/src/systemd/src/systemd/sd-lldp.h b/src/systemd/src/systemd/sd-lldp.h index f7eff587..4f2a3b50 100644 --- a/src/systemd/src/systemd/sd-lldp.h +++ b/src/systemd/src/systemd/sd-lldp.h @@ -33,6 +33,87 @@ _SD_BEGIN_DECLARATIONS; typedef struct sd_lldp sd_lldp; typedef struct sd_lldp_neighbor sd_lldp_neighbor; +#define SD_LLDP_MULTICAST_ADDR { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e } + +/* IEEE 802.3AB Clause 9: TLV Types */ +enum { + SD_LLDP_TYPE_END = 0, + SD_LLDP_TYPE_CHASSIS_ID = 1, + SD_LLDP_TYPE_PORT_ID = 2, + SD_LLDP_TYPE_TTL = 3, + SD_LLDP_TYPE_PORT_DESCRIPTION = 4, + SD_LLDP_TYPE_SYSTEM_NAME = 5, + SD_LLDP_TYPE_SYSTEM_DESCRIPTION = 6, + SD_LLDP_TYPE_SYSTEM_CAPABILITIES = 7, + SD_LLDP_TYPE_MGMT_ADDRESS = 8, + SD_LLDP_TYPE_PRIVATE = 127, +}; + +/* IEEE 802.3AB Clause 9.5.2: Chassis subtypes */ +enum { + SD_LLDP_CHASSIS_SUBTYPE_RESERVED = 0, + SD_LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT = 1, + SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS = 2, + SD_LLDP_CHASSIS_SUBTYPE_PORT_COMPONENT = 3, + SD_LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS = 4, + SD_LLDP_CHASSIS_SUBTYPE_NETWORK_ADDRESS = 5, + SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME = 6, + SD_LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED = 7, +}; + +/* IEEE 802.3AB Clause 9.5.3: Port subtype */ +enum { + SD_LLDP_PORT_SUBTYPE_RESERVED = 0, + SD_LLDP_PORT_SUBTYPE_INTERFACE_ALIAS = 1, + SD_LLDP_PORT_SUBTYPE_PORT_COMPONENT = 2, + SD_LLDP_PORT_SUBTYPE_MAC_ADDRESS = 3, + SD_LLDP_PORT_SUBTYPE_NETWORK_ADDRESS = 4, + SD_LLDP_PORT_SUBTYPE_INTERFACE_NAME = 5, + SD_LLDP_PORT_SUBTYPE_AGENT_CIRCUIT_ID = 6, + SD_LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED = 7, +}; + +enum { + SD_LLDP_SYSTEM_CAPABILITIES_OTHER = 1 << 0, + SD_LLDP_SYSTEM_CAPABILITIES_REPEATER = 1 << 1, + SD_LLDP_SYSTEM_CAPABILITIES_BRIDGE = 1 << 2, + SD_LLDP_SYSTEM_CAPABILITIES_WLAN_AP = 1 << 3, + SD_LLDP_SYSTEM_CAPABILITIES_ROUTER = 1 << 4, + SD_LLDP_SYSTEM_CAPABILITIES_PHONE = 1 << 5, + SD_LLDP_SYSTEM_CAPABILITIES_DOCSIS = 1 << 6, + SD_LLDP_SYSTEM_CAPABILITIES_STATION = 1 << 7, + SD_LLDP_SYSTEM_CAPABILITIES_CVLAN = 1 << 8, + SD_LLDP_SYSTEM_CAPABILITIES_SVLAN = 1 << 9, + SD_LLDP_SYSTEM_CAPABILITIES_TPMR = 1 << 10, +}; + +#define SD_LLDP_SYSTEM_CAPABILITIES_ALL ((uint16_t) -1) + +#define SD_LLDP_SYSTEM_CAPABILITIES_ALL_ROUTERS \ + ((uint16_t) \ + (SD_LLDP_SYSTEM_CAPABILITIES_REPEATER| \ + SD_LLDP_SYSTEM_CAPABILITIES_BRIDGE| \ + SD_LLDP_SYSTEM_CAPABILITIES_WLAN_AP| \ + SD_LLDP_SYSTEM_CAPABILITIES_ROUTER| \ + SD_LLDP_SYSTEM_CAPABILITIES_DOCSIS| \ + SD_LLDP_SYSTEM_CAPABILITIES_CVLAN| \ + SD_LLDP_SYSTEM_CAPABILITIES_SVLAN| \ + SD_LLDP_SYSTEM_CAPABILITIES_TPMR)) + + +#define SD_LLDP_OUI_802_1 (uint8_t[]) { 0x00, 0x80, 0xc2 } +#define SD_LLDP_OUI_802_3 (uint8_t[]) { 0x00, 0x12, 0x0f } + +enum { + SD_LLDP_OUI_802_1_SUBTYPE_PORT_VLAN_ID = 1, + SD_LLDP_OUI_802_1_SUBTYPE_PORT_PROTOCOL_VLAN_ID = 2, + SD_LLDP_OUI_802_1_SUBTYPE_VLAN_NAME = 3, + SD_LLDP_OUI_802_1_SUBTYPE_PROTOCOL_IDENTITY = 4, + SD_LLDP_OUI_802_1_SUBTYPE_VID_USAGE_DIGEST = 5, + SD_LLDP_OUI_802_1_SUBTYPE_MANAGEMENT_VID = 6, + SD_LLDP_OUI_802_1_SUBTYPE_LINK_AGGREGATION = 7, +}; + typedef enum sd_lldp_event { SD_LLDP_EVENT_ADDED = 'a', SD_LLDP_EVENT_REMOVED = 'r', diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index 597f477f..5dacae8d 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -12,7 +12,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) noinst_PROGRAMS = \ diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in index 8be2e8ce..380220f3 100644 --- a/src/tests/Makefile.in +++ b/src/tests/Makefile.in @@ -775,7 +775,6 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) diff --git a/src/tests/config/Makefile.am b/src/tests/config/Makefile.am index 5d4aed5c..17876e4d 100644 --- a/src/tests/config/Makefile.am +++ b/src/tests/config/Makefile.am @@ -8,7 +8,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DSRCDIR=\""$(srcdir)"\" \ -DBUILDDIR=\""$(builddir)"\" diff --git a/src/tests/config/Makefile.in b/src/tests/config/Makefile.in index 994e7068..5a4bfbd1 100644 --- a/src/tests/config/Makefile.in +++ b/src/tests/config/Makefile.in @@ -661,7 +661,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/src/platform \ -DG_LOG_DOMAIN=\""NetworkManager"\" \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_INSIDE_DAEMON \ - -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \ $(GLIB_CFLAGS) \ -DSRCDIR=\""$(srcdir)"\" \ -DBUILDDIR=\""$(builddir)"\" |