NetworkManager/src
Thomas Haller 850c977953 device: track system interface state in NMDevice
When deciding whether to touch a device we sometimes look at whether
the active connection is external/assumed. In many cases however,
there is no active connection around (e.g. while moving the device
from state unmanaged to disconnected before assuming).
So in most cases we instead look at the device-state-reason to decide
whether to touch the interface (see nm_device_state_reason_check()).

Often it's desirable to have no state and passing data as function
arguments. However, the state reason has to be passed along several hops
(e.g. a queued state change). Or a change to a master/slave can affect
the slave/master, where we pass on the state reason. Or an intermediate
event might invalidate a previous state reason. Passing the state
whether to touch a device or not as a state-reason is cumbersome
and limited.

Instead, the device should be aware of whats going on. Add a
sys-iface-state with:
  - SYS_IFACE_STATE_EXTERNAL: meaning, NM should not touch it
  - SYS_IFACE_STATE_ASSUME: meaning, NM is gracefully taking over
  - SYS_IFACE_STATE_MANAGED: meaning, the device is managed by NM
  - SYS_IFACE_STATE_REMOVED: the device no longer exists

This replaces most checks of nm_device_state_reason_check() and
nm_active_connection_get_activation_type() by instead looking at
the sys-iface-state of the device.

This patch probably has still issues, but the previous behavior was
not very clear either. We will need to identify those issues in future
tests and tweak the behavior. At least, now there is one flag that
describes how to behave.
2017-03-16 18:27:33 +01:00
..
devices device: track system interface state in NMDevice 2017-03-16 18:27:33 +01:00
dhcp all: use "unsigned long" instead of "long unsigned" 2017-03-14 11:23:46 +01:00
dns policy: check for active devices before triggering dns update on hostname change 2017-03-16 18:17:05 +01:00
dnsmasq dnsmasq: use ipv4.dns and ipv4.dns-search with ipv4.method=shared 2017-03-03 13:51:05 +01:00
ndisc device: support dynamic "connection.stable-id" in form of text-substitution 2017-01-09 14:50:33 +01:00
platform all: use "unsigned" instead of "unsigned int" 2017-03-14 11:26:29 +01:00
ppp modem: cleanup integer types for ppp-stats signal 2017-02-23 12:33:41 +01:00
settings core/trivial: rename "nm-generated-assumed" flag to "volatile" 2017-03-16 18:27:33 +01:00
supplicant all: use nm_clear_g_cancellable() 2017-03-13 12:00:23 +01:00
systemd systemd: merge branch systemd into master 2017-03-09 01:04:15 +01:00
tests manager: simplify searching assumed connection 2017-03-16 18:27:33 +01:00
vpn core/trivial: give names in src/nm-dispatcher.h header an "NM" prefix 2017-03-16 18:27:33 +01:00
main-utils.c all: use O_CLOEXEC for file descriptors 2016-12-13 11:26:59 +01:00
main-utils.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
main.c manager: delay startup-complete and devices-inited until idle 2017-03-15 10:33:44 +01:00
NetworkManagerUtils.c manager: simplify searching assumed connection 2017-03-16 18:27:33 +01:00
NetworkManagerUtils.h manager: simplify searching assumed connection 2017-03-16 18:27:33 +01:00
nm-act-request.c core: add activation-type property to active-connection 2017-03-16 18:27:33 +01:00
nm-act-request.h core: add activation-type property to active-connection 2017-03-16 18:27:33 +01:00
nm-active-connection.c device: track system interface state in NMDevice 2017-03-16 18:27:33 +01:00
nm-active-connection.h device: track system interface state in NMDevice 2017-03-16 18:27:33 +01:00
nm-audit-manager.c audit: add @args to device logging functions 2017-03-06 10:29:37 +01:00
nm-audit-manager.h audit: add @args to device logging functions 2017-03-06 10:29:37 +01:00
nm-auth-manager.c all: use nm_clear_g_cancellable() 2017-03-13 12:00:23 +01:00
nm-auth-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-auth-subject.c all: use "unsigned long" instead of "long unsigned" 2017-03-14 11:23:46 +01:00
nm-auth-subject.h auth: embed private data NMAuthSubjectPrivate in NMAuthSubject struct 2016-05-12 10:24:36 +02:00
nm-auth-utils.c all: use nm_clear_g_cancellable() 2017-03-13 12:00:23 +01:00
nm-auth-utils.h all: move NM_AUTH_PERMISSION_* defines to "nm-common-macros.h" header 2016-06-01 19:06:35 +02:00
nm-bus-manager.c core: introduce default logging macros 2016-10-14 15:57:43 +02:00
nm-bus-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-checkpoint-manager.c build: don't add subdirectories to include search path but require qualified include 2016-11-21 14:26:37 +01:00
nm-checkpoint-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-checkpoint.c core: add activation-type property to active-connection 2017-03-16 18:27:33 +01:00
nm-checkpoint.h checkpoint: introduce new flags to better restore previous state 2016-10-24 09:57:18 +02:00
nm-config-data.c all/trivial: unify construct-only property comments 2017-03-08 13:47:00 +01:00
nm-config-data.h build: fix -Wignored-qualifiers warnings 2017-02-06 19:27:21 +01:00
nm-config.c core: use define for atomic-section-prefix setting for NMConfig 2017-02-17 11:08:29 +01:00
nm-config.h config: drop nm_config_get_debug() and access config directly 2016-11-25 18:02:38 +01:00
nm-connectivity.c core/dispatcher: cleanup nm_dispatcher_call_connectivity() 2017-03-16 18:27:33 +01:00
nm-connectivity.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-core-utils.c core: track external activations types in the active-connection 2017-03-16 18:27:33 +01:00
nm-core-utils.h core: add activation-type property to active-connection 2017-03-16 18:27:33 +01:00
nm-dcb.c build: don't add subdirectories to include search path but require qualified include 2016-11-21 14:26:37 +01:00
nm-dcb.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-default-route-manager.c default-route-manager: decryptify logging line for default-route-manager 2017-03-16 15:58:13 +01:00
nm-default-route-manager.h default-route-manager: add nm_default_route_manager_resync() function 2017-03-16 15:35:13 +01:00
nm-dhcp4-config.c exported-object: use NM_EXPORT_PATH_NUMBERED() macro 2017-01-03 15:40:17 +01:00
nm-dhcp4-config.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-dhcp6-config.c exported-object: use NM_EXPORT_PATH_NUMBERED() macro 2017-01-03 15:40:17 +01:00
nm-dhcp6-config.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-dispatcher.c core: track external activations types in the active-connection 2017-03-16 18:27:33 +01:00
nm-dispatcher.h core/dispatcher: pass act-request to device dispatcher calls 2017-03-16 18:27:33 +01:00
nm-exported-object.c all: use "unsigned long" instead of "long unsigned" 2017-03-14 11:23:46 +01:00
nm-exported-object.h exported-object: add "path" GObject property to have notify signal 2017-01-25 13:12:08 +01:00
nm-firewall-manager.c core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-firewall-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-iface-helper.c iface-helper: don't cache nm_platform_check_support_kernel_extended_ifa_flags() flag 2017-01-10 14:29:46 +01:00
nm-ip4-config.c core: apply route options from configuration 2017-03-06 15:20:25 +01:00
nm-ip4-config.h ip4-config: sort addresses only when reading the property value 2016-12-05 10:56:51 +01:00
nm-ip6-config.c core: apply route options from configuration 2017-03-06 15:20:25 +01:00
nm-ip6-config.h ip6-config: add nm_ip6_config_set_privacy() 2016-12-05 10:56:51 +01:00
nm-logging.c logging: preserve errno in logging functions 2016-12-13 11:26:58 +01:00
nm-logging.h core: introduce default logging macros 2016-10-14 15:57:43 +02:00
nm-manager.c device: track system interface state in NMDevice 2017-03-16 18:27:33 +01:00
nm-manager.h core: add activation-type property to active-connection 2017-03-16 18:27:33 +01:00
nm-multi-index.c all: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-multi-index.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-pacrunner-manager.c pacrunner: fix a few typos, uniforms spelling of various forms to "pacrunner" 2017-01-17 14:27:31 +01:00
nm-pacrunner-manager.h proxy: rename NMPacRunnerManager to NMPacrunnerManager 2016-10-04 12:14:15 +02:00
nm-policy.c core: add activation-type property to active-connection 2017-03-16 18:27:33 +01:00
nm-policy.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-proxy-config.c proxy: reorder parts in nm-proxy-config.c and nm-pacrunner-manager.c 2016-10-04 11:58:32 +02:00
nm-proxy-config.h proxy: remove unnecessary APIs 2016-10-04 11:44:44 +02:00
nm-rfkill-manager.c build: fix -Wignored-qualifiers warnings 2017-02-06 19:27:21 +01:00
nm-rfkill-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-route-manager.c all: use "static inline" keywords instead of "inline static" 2017-02-23 15:28:27 +01:00
nm-route-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-session-monitor.c session: make systemd-logind and elogind conflicting build options 2017-02-24 13:06:13 +01:00
nm-session-monitor.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-sleep-monitor.c session: make systemd-logind and elogind conflicting build options 2017-02-24 13:06:13 +01:00
nm-sleep-monitor.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-test-utils-core.h all: use "unsigned long" instead of "long unsigned" 2017-03-14 11:23:46 +01:00
nm-types.h core: track external activations types in the active-connection 2017-03-16 18:27:33 +01:00
org.freedesktop.NetworkManager.conf dns: use DBus to make dnsmasq nameserver changes 2016-04-21 15:32:07 +02:00