mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-06 17:14:02 +00:00
![Robert Love](/assets/img/avatar_default.png)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1867 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
55 lines
3.1 KiB
Plaintext
55 lines
3.1 KiB
Plaintext
THEORY OF OPERATION:
|
|
|
|
NetworkManager attempts to keep an active network connection available at all
|
|
times. The point of NetworkManager is to make networking configuration and
|
|
setup as painless and automatic as possible. If using DHCP, NetworkManager is
|
|
_intended_ to replace default routes, obtain IP addresses from a DHCP server,
|
|
and change nameservers whenever it sees fit. In effect, the goal of
|
|
NetworkManager is to make networking Just Work. If you have special needs,
|
|
we'd like to hear about them, but understand that NetworkManager is not
|
|
intended to serve the needs of all users.
|
|
|
|
|
|
From a list of all adapters currently installed on the system, NetworkManager
|
|
will first try a wired and then a wireless adapter. Wireless adapters that
|
|
support wireless scanning are preferred over ones that cannot. NetworkManager
|
|
does not try to keep a connection up as long as possible, meaning that plugging
|
|
into a wired network will switch the connection to the wired network away from
|
|
the wireless one.
|
|
|
|
For wireless networking support, NetworkManager keeps a list of wireless
|
|
networks, the preferred list. Preferred Networks are wireless networks that
|
|
the user has explicitly made NetworkManager associate with at some previous
|
|
time. So if the user walks into a Starbucks and explicitly asks NetworkManager to associate with that Starbucks network, NetworkManager will remember the
|
|
Starbucks network information from that point on. Upon returning to that
|
|
Starbucks, NetworkManager will attempt to associate _automatically_ with the
|
|
Starbucks network since it is now in the Preferred Networks list. The point of
|
|
this is to ensure that only the user can determine which wireless networks to
|
|
associate with, and that the user is aware which networks are security risks
|
|
and which are not.
|
|
|
|
|
|
STRUCTURE:
|
|
|
|
NetworkManager runs as a root-user system level daemon, since it
|
|
must manipulate hardware directly. It communicates over DBUS with a
|
|
desktop-level per-user process, nm-applet. Since Preferred Networks are
|
|
user-specific, there must be some mechanism of getting this information
|
|
per-user. NetworkManager cannot store that information as it is user-specific,
|
|
and therefore communicates over DBUS to the user daemon which provides those
|
|
lists. NetworkManager also provides an API over DBUS for any DBUS-aware
|
|
application to determine the current state of the network, including available
|
|
wireless networks the computer is aware of and specific details about those
|
|
networks. This API also provides the means for forcing NetworkManager to
|
|
associate with a specific wireless network. Use of DBUS allows separation of
|
|
NetworkManager, which requires no user-interface, and the parts of the user
|
|
interface which might be desktop environment specific.
|
|
|
|
The nm-applet provides a DBUS service called NetworkManagerInfo, which should
|
|
provide to NetworkManager the Preferred Networks lists upon request. It also
|
|
should be able to display a dialog to retrieve a WEP/WPA key or passphrase from
|
|
the user when NetworkManager requests it. The GNOME version of
|
|
NetworkManagerInfo, for example, stores Preferred Networks in GConf and
|
|
WEP/WPA keys in gnome-keyring, and proxies that information to NetworkManager
|
|
upon request.
|