2004-08-13 15:34:34 +00:00
|
|
|
THEORY OF OPERATION:
|
|
|
|
|
2005-02-25 21:23:21 +00:00
|
|
|
NetworkManager attempts to keep an active network connection available at all
|
2006-01-20 21:35:28 +00:00
|
|
|
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.
|
2005-11-22 15:34:37 +00:00
|
|
|
|
2004-08-13 15:34:34 +00:00
|
|
|
|
2005-02-25 21:23:21 +00:00
|
|
|
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.
|
2004-08-13 15:34:34 +00:00
|
|
|
|
2006-07-10 20:53:35 +00:00
|
|
|
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
|
2008-01-03 15:35:57 +00:00
|
|
|
time. So if the user walks into a Starbucks and explicitly asks NetworkManager
|
|
|
|
to associate with that Starbucks network, NetworkManager will remember the
|
2006-07-10 20:53:35 +00:00
|
|
|
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.
|
|
|
|
|
2004-08-13 15:34:34 +00:00
|
|
|
|
|
|
|
STRUCTURE:
|
|
|
|
|
2005-11-22 15:34:37 +00:00
|
|
|
NetworkManager runs as a root-user system level daemon, since it
|
|
|
|
must manipulate hardware directly. It communicates over DBUS with a
|
2006-07-10 20:53:35 +00:00
|
|
|
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
|
2005-11-22 15:34:37 +00:00
|
|
|
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.
|
2004-08-13 15:34:34 +00:00
|
|
|
|
2005-06-30 14:35:46 +00:00
|
|
|
The nm-applet provides a DBUS service called NetworkManagerInfo, which should
|
2006-07-10 20:53:35 +00:00
|
|
|
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.
|