diff options
author | Thomas Haller <thaller@redhat.com> | 2020-01-21 15:05:16 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-03-12 10:16:22 +0100 |
commit | b83f07916a540d482dfabbb13744083b0b6ab8b0 (patch) | |
tree | 84d22311943381df7df54c2b85a04984a6ed40d9 /COPYING.LGPL | |
parent | 0586e9700d8cf47aff9a4a5148c431d2decce7c6 (diff) | |
download | NetworkManager-b83f07916a540d482dfabbb13744083b0b6ab8b0.tar.gz |
supplicant: large rework of wpa_supplicant handling
Avoid GDBusProxy, instead use GDBusConnection directly. I very much
prefer this because that way we have explicit control over what happens
on D-Bus. With GDBusProxy this is hidden under another layer of complex
code. The hardest part when using a D-Bus interface is to manage the
state via an asynchronous medium. GDBusProxy contains state about the
D-Bus interface and duplicate the state that we track. This makes it hard
to reason about things.
Rework creation of NMSupplicantInterface. Previously, a NMSupplicantInterface
had multiple initialization states. In particular, the first state would not
yet tie the interface to a certain D-Bus object path. Instead, NMSupplicantInterface
would try and retry to create the D-Bus object.
Now, NMSupplicantManager has an asynchronous method to create interface
instances. The manager only creates an interface instance after the D-Bus
path is known. That means, a NMSupplicantInterface instance is now
strongly tied to a name-owner and D-Bus path.
It follows that the state of NMSupplicantInterface can only go from STARTING,
via the supplicant states, to DOWN. Never back. That was already previously
the case that the state from DOWN was final and once the 3 initial
states were passed, the interface's state would never go back to the initial
state. Now this is more strict and more formalized. The 3 initialization states
are combined.
I think the tighter state handling simplifies users of NMSupplicantInterface.
See for example "nm-device-ethernet.c". It's still complicated, because handling
state is fundamentally difficult.
NMSupplicantManager will take care to D-Bus activate wpa_supplicant only
when necessary (poke). Previously, creating the manager instance
would always start suppliant service. Now, it's started on demand.
Diffstat (limited to 'COPYING.LGPL')
0 files changed, 0 insertions, 0 deletions