In summary Network Manager is a connection manager and right now supports working with Ethernet/PPP/Wireless.
Network Manager attempts to make networking invisible. When moving into areas you've been before, Network Manager automatically connects to the last network the user chose to connect to. Likewise, when back at the desk, Network Manager will switch to the faster, more reliable wired network connection.
It is recommended distributions use Network Manager 0.7 from subversion. Bellow are a few features worth mentioning.
To facilitate neat stuff like connection sharing, and to expand the usefulness of Network Manager, we now allow more than one active network device. In this model, the “active” device will be the one with the default route and the highest route priority. Part of this effort included:
Obviously nobody likes to have to unlock the keyring on every login. Wireless networks can't be used until somebody logs into the machine, because Network Manager stores the authentication information on a per-user basis. While there are various (we think) legitimate reasons for this behavior, there is a need to configuration information to be accessible outside of user sessions.
The current plan allows for users to “publish” configuration information for specific wireless networks to all users of the system, or make the data “system-wide”. To preserve the same interface with which NM currently retrieves configuration information (the NetworkManagerInfo dbus API), a system-wide configuration daemon will be used. This daemon must:
We now have a dbus-based control interface for wpa_supplication. NM uses dbus to talk to wpa_supplicant, rather than the old socket-based control interface which simply didn't have enough flexibility. wpa_supplicant needs to be started as a system daemon, much like dhcdbd and (optionally) bind are today. This should reduce connection latency since we don't need to exec a copy of wpa_supplicant for each connection. Scanning is also now handled through wpa_supplicant for better coordination.
wpa_supplicant 0.5 has basic dbus functionality, including the ability to add/remove interfaces from its control, request scan results, and broadcast scan result available signals. (updated 2006-06-26)
libnm_glib was rewritten
Some 802.1x auth methods which wpa_supplicant is capable of are now supported by NetworkManager.
The code for using dicts is already in CVS (libnm-util/dbus-dict-helpers.c); we need to convert the VPN service ↔ NM dbus API over to use it. This will help forward and backward compatibility of the VPN plugins by making the dbus API more flexible. Some work has already been done to convert specific messages like the IP4Config message to 'optionally' use dicts in a backwards compatible way.
Make it pass more stuff in the environment of the scripts it executes, like primary IP address/netmask/gateway/etc of the new connection, stuff like that perhaps. Should probably use the new libnm-glib too.
Move the relevant code from src/backends/NetworkManagerGeneric.c that does system(“/sbin/ip xxx”) to libnl
Make NM spawn /sbin/dhclient and manage the DHCP client lifecycle within NM rather than having dhcdbd do it. We want to spawn it with a custom dhclient-script that forwards the options back to NetworkManager a lot like the current dhclient-script sends them to dhcdbd. When we have this, we can also do smart things about re-acquiring leases we have had in the past for this AP, for example. (Robert Frank is looking into this…)
wpa_supplicant can accept binary blobs for things like certificates, and then you can refer to them via URLs like “blob:” in network configuration blocks that NM sends to wpa_supplicant. We basically want to download the certificate blob from NM to wpa_supplicant for a specific connection, if it uses certificates (like with WPA-EAP), but I don't think I added the BLOB command at all. === Basic rfkill support === Starting with HAL 0.5.10, there is basic rfkill support. For the moment, poll rfkill status every 5 seconds if a HAL object with the “killswitch” capability exists. HAL will eventually grow signals for this which should then be used instead of polling. Enable/disable wireless based on rfkill status, and make the applet aware that NM has enabled/disabled wireless networking. ==== Older releases ==== You can find the older release on GNOME's FTP site. ===== Mailing list ===== Network Manager has its own mailing list. ===== wpa_supplicant usage ===== In order to associate to a wireless network and scan NM uses wpa_supplicant as its back-end. ===== Debugging Network Manager ===== If you have issues with Network Manager we recommend you start Network Manager with debugging options. ===== Bugs on Network Manager ===== You can report bugs on Network manager on its bugzilla. ===== Hacking on Network Manager ===== This section describe how to get the code and design goals you should keep in mind. ==== Getting the code ==== In order to build NetworkManager you need the GNOME gnome-autogen.sh script, found in the 'gnome-common' SVN module. Grab that and install it, if you don't have it already: <code>svn co svn:svn.gnome.org/svn/gnome-common/trunk gnome-common cd gnome-common ./autogen.sh –prefix=/usr cd macros2 make sudo make install</code> Next, grab NetworkManager from SVN HEAD. To checkout and build from SVN HEAD:
git clone git://anongit.freedesktop.org/NetworkManager/NetworkManager.git cd NetworkManager ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var make sudo make install l
And if you want to play with the applet, you need network-manager-applet, too:
svn co svn://svn.gnome.org/svn/network-manager-applet/trunk network-manager-applet cd NetworkManager ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var make sudo make install
Example: infrequently used settings and options are not shown in the NetworkManager panel applet.
Example: connecting to the last-used wireless network that's available when NetworkManager starts up.