NetworkManager Work Items
The following are tasks for which work is either ongoing or planned.
Multiple Active Devices (Target: NM 0.7) (DONE)
To facilitate neat stuff like connection sharing, and to expand the usefulness of NetworkManager, we need to 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.
Stuff to be done:
- libnl enhancements for routing table manipulation (DONE)
- cleanup of NM code for determining default device (DONE)
- modifications of NM code to allow multiple active devices (DONE)
System-wide Configuration (Target: NM 0.7) (DONE)
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 NetworkManager 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:
- have no UI, since it must run at system start up without X
- Access system configuration information like GConf mandatory/default settings, KDE configuration, text files
- Cooperate with user-session NMI instances, like applets
This enhancement is being tracked in bug 331529
wpa_supplicant dbus Control Interface (Target: NM 0.7) (DONE)
Work is in-progress to create a dbus-based control interface for wpa_supplication. NM will then use dbus to talk to wpa_supplicant, rather than the current socket-based control interface which doesn't have enough flexibility. wpa_supplicant will need 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 will also be 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)
Rewritten libnm_glib (Target: NM 0.7) (DONE)
libnm_glib needs a rewrite.
More Wireless/Wired Authentication Methods (Target: NM 0.7) (DONE)
Some 802.1x auth methods which wpa_supplicant is capable of are not yet supported by NetworkManager. We need to expand the capabilities here by figuring out what methods people use, and consolidating the options UI for them.
Convert VPN dbus API to use Dicts (DONE)
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.
Other Work Items
Clean up the dispatcher-daemon (DONE)
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.
More libnl (DONE)
Move the relevant code from src/backends/NetworkManagerGeneric.c that does system("/sbin/ip xxx") to libnl
KILL KILL KILL dhcdbd (DONE)
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...)
Add BLOB support to wpa_supplicant D-Bus interface (DONE)
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 (DONE)
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.
