For a few years now, people have been predicting "the year of Linux on the desktop." For one reason or another, this hasn't quite happened yet. Recently, however, various projects have been comeint together to meet the challenges that have been hampering widespread acceptance of Linux. One of these challenges is in the area of network management, and a tool called NetworkManager is the solution. NetworkManager is a lot like the incredible Hulk: it's great - but only until you get it angry.
NetworkManager is a tool designed to automatically configure the network for a Linux machine. It runs as a system service with access to all the systems network devices and settings, and accepts requests from users with restricted priveleges to modify network devices. Sounds pretty good, right? Well it is - when it is in total control. The problem is NetworkManager only allows a subset of the possible network configurations to be managed through it - other settings must be set manually or using other tools.
NetworkManager is still a far cry better than what used to occur - on a laptop, I used to have a script that i would run (as root - giving a password) every time I switched to a different network. NetworkManager does all this for me, and for that I love it.
However, I have come across a real difficulty with NetworkManager and its tools while developing the network system for QtEmu - NetworkManager doesn't support autoconfiguring bridge interfaces, tap interfaces, or anything except physical hardware interfaces. That means in order to do things right, I would need to create my own daemon that would run along side NetworkManager and respond to my requests to create bridges, connect tap devices and hardware interfaces to them, set up routing tables, and do it in a way that won't allow ordinary users to have full access to everything ip, brctl, tunctl, and route can do.
So eventually I am coing to need to create such a daemon, and have it talk to NetworkManager, QtEmu, and probably the rest of the world, too.