Bug 270827 - No IPv6 configuration screen
Summary: No IPv6 configuration screen
Status: RESOLVED FIXED
Alias: None
Product: knetworkmanager
Classification: Miscellaneous
Component: general (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR wishlist
Target Milestone: ---
Assignee: Will Stephenson
URL:
Keywords: reproducible
Depends on:
Blocks:
 
Reported: 2011-04-13 13:44 UTC by mrgreiner
Modified: 2011-05-02 17:52 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mrgreiner 2011-04-13 13:44:17 UTC
Version:           unspecified (using KDE 4.6.2) 
OS:                Linux

The Linux network stack has full IPv6 support, but there is no screen on KNetworkManager to make any IPv6 configuration. 

Reproducible: Always

Steps to Reproduce:
Open KNetworkManager interface

Actual Results:  
No IPv6 screen.

Expected Results:  
IPv6 setup screen available.

I'm filling this feature request following a recommendation of 'bcooksley', in the following forum thread: http://forum.kde.org/viewtopic.php?f=18&t=94501&p=193747#p193747

I'm using Kubuntu 11.4Beta1, fully updated as of Abril 13, 2011 as reference. It has KDE 4.6.2 installed.
Comment 1 Lamarque V. Souza 2011-04-13 23:07:30 UTC
I personally do not have any plans for IPv6 yet. There are other higher priority bugs in my list. Some weeks ago someone asked me in private about information about how he could implement IPv6 in Plasma NM but after I sent him the information he has not given me any return. The implementation should not be that difficult since NetworkManager does most of the work.
Comment 2 Ilia Kats 2011-04-14 16:14:47 UTC
Judging from your forum posts, you have access to an IPv6-capable network. Could you please test this patch: https://git.reviewboard.kde.org/r/101117/
Comment 3 mrgreiner 2011-04-14 16:59:10 UTC
Ok, If I got it right, you would like me to download the kde sources, apply the patch, and recompile, right? If so, where would I find the how-to on how to do so properly? I've never compiled anything on/for KDE...

Roberto
Comment 4 Ilia Kats 2011-04-14 17:30:21 UTC
On a Debian based system (e.g. your Kubuntu) do:
apt-get build-dep network-manager-kde
apt-get git

Then cd to a folder of your chosing and
git clone git://anongit.kde.org/networkmanagement

Ths will create a directory named networkmanagement with the current master branch sources in it. You then download the patch and run
patch -p1 < ipv6.patch

This will patch your source. Then
cmake .
make
make install

and you can test away.
Comment 5 Ilia Kats 2011-04-14 17:31:02 UTC
apt-get install git of course, sry
Comment 6 mrgreiner 2011-04-14 20:15:51 UTC
I've tried installing the patch, but nothing new appeared in the network manager. The install didn't give any errors, but no option for IPv6 was available. I tried to reboot the VM, but still nothing.

Roberto
Comment 7 Ilia Kats 2011-04-14 20:25:29 UTC
Hm. Did the patch command generate any output?
Comment 8 Ilia Kats 2011-04-14 20:40:52 UTC
Right, the compiled source installs by default to /usr/local, while the Debian packages install to /usr, so you're still running the unpatched version. Open the file cmake_install.cmake in the networkmanagement root directory and change line 5 to say /usr (I'm pretty sure that should do the trick, and I'm also pretty sure that setting an environment variable named CMAKE_INSTALL_PREFIX to "/usr" will also do the trick, but I'm not very familiar with the cmake system). After that, make install. I'll see if I can make a debian package out of the patched version.
Comment 9 mrgreiner 2011-04-14 21:25:17 UTC
No good. I tried both (editing cmake_install.cmake and using a variable), and in both cases the script installed the files into /usr/local.
Comment 10 Ilia Kats 2011-04-14 22:54:57 UTC
Right, when you first run cmake, you have to pass -DCMAKE_INSTALL_PREFIX:PATH=/usr as a parameter (or edit CMakeCache.txt later). However, Debian has a whole build system for KDE packages, so i386 binary packages are available here:
https://rapidshare.com/files/457447694/knm-runtime_0.1_IPv6_i386.deb
https://rapidshare.com/files/457447868/network-manager-kde_0.9_IPv6_i386.deb
https://rapidshare.com/files/457447938/plasma-widget-networkmanagement_0.1_IPv6_i386.deb
(only an i386 machine available, and to be honest, I am too lazy to set up a cross-compilation environment here, as this apparently entails bulding gcc and I don't know what else from source and creating cross-compilation toolchains)
Comment 11 mrgreiner 2011-04-15 13:58:52 UTC
Hi,

I've just installed the patched version and started testing. 
An IPv6 tab did appear in the network manager, and seemed to work properly. But when I finished the configuration and pressed the last 'OK' button, the entire network manager crashed.
After a reboot, the network manager is no longer opening. When I press 'Manage Connection', the KDE crash handler immediately opens. I tried following the crash handler assistant, but it crashed too :-(
I don't know if it helps, but I managed to save the backtrace information:
Application: KDE Control Module (kdeinit4), signal: Segmentation fault
[KCrash Handler]
#6  0x00007f37d776a49f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#7  0x00007f37d8a2a065 in QString::fromUtf8(char const*, int) () from /usr/lib/libQtCore.so.4
#8  0x00007f37d61425c5 in ?? () from /usr/lib/libQtDBus.so.4
#9  0x00007f37d61431bb in QDBusArgument::operator>>(QStringList&) const () from /usr/lib/libQtDBus.so.4
#10 0x00007f37c236a239 in Ipv6Dbus::fromMap (this=<value optimized out>, map=...) at /root/temp/networkmanagement/backends/NetworkManager/settings/ipv6dbus.cpp:61
#11 0x00007f37c234721d in ConnectionDbus::fromDbusMap (this=0x7fff78944850, settings=...) at /root/temp/networkmanagement/backends/NetworkManager/connectiondbus.cpp:259
#12 0x00007f37c237f85e in NMDBusSettingsConnectionProvider::initialiseAndRegisterRemoteConnection (this=<value optimized out>, path=...) at /root/temp/networkmanagement/backends/NetworkManager/nmdbussettingsconnectionprovider.cpp:107
#13 0x00007f37c2380726 in NMDBusSettingsConnectionProvider::initConnections (this=0x2729d30) at /root/temp/networkmanagement/backends/NetworkManager/nmdbussettingsconnectionprovider.cpp:91
#14 0x00007f37c2380e6c in NMDBusSettingsConnectionProvider::NMDBusSettingsConnectionProvider (this=0x2729d30, connectionList=<value optimized out>, service=..., parent=0x24770e0) at /root/temp/networkmanagement/backends/NetworkManager/nmdbussettingsconnectionprovider.cpp:67
#15 0x00007f37c25a2864 in ManageConnectionWidget::ManageConnectionWidget (this=0x24770e0, parent=<value optimized out>, args=...) at /root/temp/networkmanagement/settings/config/manageconnectionwidget.cpp:80
#16 0x00007f37c25a5694 in KPluginFactory::createInstance<ManageConnectionWidget, QWidget> (parentWidget=<value optimized out>, parent=<value optimized out>, args=...) at /usr/include/kpluginfactory.h:473
#17 0x00007f37d901f5a9 in KPluginFactory::create(char const*, QWidget*, QObject*, QList<QVariant> const&, QString const&) () from /usr/lib/libkdecore.so.5
#18 0x00007f37c8f3f2f9 in KCModuleLoader::loadModule(KCModuleInfo const&, KCModuleLoader::ErrorReporting, QWidget*, QStringList const&) () from /usr/lib/libkcmutils.so.4
#19 0x00007f37c8f44288 in ?? () from /usr/lib/libkcmutils.so.4
#20 0x00007f37c8f44f05 in KCModuleProxy::realModule() const () from /usr/lib/libkcmutils.so.4
#21 0x00007f37c8f45209 in KCModuleProxy::useRootOnlyMessage() const () from /usr/lib/libkcmutils.so.4
#22 0x00007f37c8f414ac in KCMultiDialog::addModule(KCModuleInfo const&, KPageWidgetItem*, QStringList const&) () from /usr/lib/libkcmutils.so.4
#23 0x00007f37c916c5da in kdemain () from /usr/lib/kde4/libkdeinit/libkdeinit4_kcmshell4.so
#24 0x0000000000406dd3 in _start ()


Roberto
Comment 12 Ilia Kats 2011-04-15 14:43:10 UTC
Can not reproduce right now (KDE 4.4.5 on Debian Sid with QT 4.7.2). Could you post the settings you applied?
Comment 13 mrgreiner 2011-04-15 14:52:43 UTC
I compiled the patch you sent, with the parameter "-DCMAKE_INSTALL_PREFIX:PATH=/usr" on cmake, as you had suggested. After compiling and installing, I opened the network manager and went straight into the new IPv6 tab. Added a Static address, with the same address as gateway and DNS. Pressed OK, then OK in the main network manager window, and the manager crashed.
To avoid the possibility of old libraries conflicting with the newly compiled ones, I rebooted the VM. After that, the Network Manager no longer opened. It crashes immediately on any attempt to open it.

I will rollback a snapshot of the VM to a state before installing the patch, and try to redo everything, using the "-DCMAKE_INSTALL_PREFIX:PATH=/usr" parameter from the beginning. Will report once completed.

Roberto
Comment 14 Ilia Kats 2011-04-15 15:28:39 UTC
Are you using the monolithic version or the plasmoid? The monolithic is no longer compiled by default, so if you are using that, you are stuck with a version compiled against the unpatched libraries (don't know if that has anything to with this, though. Worth a try). Try uncommenting line 77 in CMakeLists.txt
Comment 15 mrgreiner 2011-04-15 17:59:13 UTC
Hi,

I've tried again with the modification you indicated (uncomenting monolithic), but it crashed exactly like before. I've added the backtrace for this crash, in case it may be of some help.

Roberto


Application: KDE Control Module (kdeinit4), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f12106de780 (LWP 23245))]

Thread 3 (Thread 0x7f11f57df700 (LWP 23246)):
#0  0x00007f120df9ef03 in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f120b3b6104 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f120b3b6639 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f120f383446 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007f120f357882 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007f120f357abc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007f120f26e924 in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007f120f339c2f in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f120f271175 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007f120ba75d8c in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#10 0x00007f120dfac04d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f11f4fde700 (LWP 23247)):
#0  0x00007f120df9ef03 in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f120b3b6104 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f120b3b6639 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f120f383446 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007f120f357882 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007f120f357abc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007f120f26e924 in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007f120f339c2f in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f120f271175 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007f120ba75d8c in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#10 0x00007f120dfac04d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f12106de780 (LWP 23245)):
[KCrash Handler]
#6  0x00007f120dff549f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#7  0x00007f120f2b5065 in QString::fromUtf8(char const*, int) () from /usr/lib/libQtCore.so.4
#8  0x00007f120c9cd5c5 in ?? () from /usr/lib/libQtDBus.so.4
#9  0x00007f120c9ce1bb in QDBusArgument::operator>>(QStringList&) const () from /usr/lib/libQtDBus.so.4
#10 0x00007f11f8bf5239 in Ipv6Dbus::fromMap (this=<value optimized out>, map=...) at /root/temp/networkmanagement/backends/NetworkManager/settings/ipv6dbus.cpp:61
#11 0x00007f11f8bd221d in ConnectionDbus::fromDbusMap (this=0x7fff1c2763d0, settings=...) at /root/temp/networkmanagement/backends/NetworkManager/connectiondbus.cpp:259
#12 0x00007f11f8c0a85e in NMDBusSettingsConnectionProvider::initialiseAndRegisterRemoteConnection (this=<value optimized out>, path=...) at /root/temp/networkmanagement/backends/NetworkManager/nmdbussettingsconnectionprovider.cpp:107
#13 0x00007f11f8c0b46d in NMDBusSettingsConnectionProvider::onConnectionAdded (this=0xb98ec0, op=<value optimized out>) at /root/temp/networkmanagement/backends/NetworkManager/nmdbussettingsconnectionprovider.cpp:135
#14 0x00007f11f8bcf040 in NMDBusSettingsConnectionProvider::qt_metacall (this=0xb98ec0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff1c2766b0) at /root/temp/networkmanagement/backends/NetworkManager/moc_nmdbussettingsconnectionprovider.cpp:96
#15 0x00007f120f36d5f8 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#16 0x00007f11f8bcee02 in OrgFreedesktopNetworkManagerSettingsInterface::NewConnection (this=<value optimized out>, _t1=<value optimized out>) at /root/temp/networkmanagement/backends/NetworkManager/moc_nm-settingsinterface.cpp:96
#17 0x00007f11f8bcf623 in OrgFreedesktopNetworkManagerSettingsInterface::qt_metacall (this=0xba1e70, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff1c276920) at /root/temp/networkmanagement/backends/NetworkManager/moc_nm-settingsinterface.cpp:80
#18 0x00007f120c99c9fa in ?? () from /usr/lib/libQtDBus.so.4
#19 0x00007f120c9a6e4f in ?? () from /usr/lib/libQtDBus.so.4
#20 0x00007f120f36c49a in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#21 0x00007f120e7199e4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#22 0x00007f120e71e3aa in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#23 0x00007f12100d3866 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#24 0x00007f120f35849c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#25 0x00007f120f35bc25 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#26 0x00007f120f383253 in ?? () from /usr/lib/libQtCore.so.4
#27 0x00007f120b3b5bcd in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007f120b3b63a8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007f120b3b6639 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007f120f3833ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#31 0x00007f120e7c0dfe in ?? () from /usr/lib/libQtGui.so.4
#32 0x00007f120f357882 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#33 0x00007f120f357abc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#34 0x00007f120ebd88e6 in QDialog::exec() () from /usr/lib/libQtGui.so.4
#35 0x00007f11ff9f76ac in kdemain () from /usr/lib/kde4/libkdeinit/libkdeinit4_kcmshell4.so
#36 0x0000000000406dd3 in _start ()
Comment 16 Ilia Kats 2011-04-15 19:06:01 UTC
Just built it on an amd64 live medium, could not reproduce. I'm gonna try to pull KDE 4.6.1 from experimental-snapshots, in the meantime I would like you to build the unpatched version (cd to networkmanagement, rm -r *, git checkout -f master, edit CMakeLists.txt, and so on) and see if that works.
Comment 17 mrgreiner 2011-04-15 19:58:27 UTC
I've tested it both with and without the "monolithic" option. In both cases, the manager did not crash, but it did not work either. I tried to set a static IP address with it, but it did not configure any interface properly. No error messages did appear.

In /var/log/syslog I found the following:

Apr 15 14:57:55 rgreiner-HVM-domU NetworkManager[754]: <info> (eth1): device state change: 8 -> 3 (reason 38)
Apr 15 14:57:55 rgreiner-HVM-domU NetworkManager[754]: <info> (eth1): deactivating device (reason: 38).
Apr 15 14:57:55 rgreiner-HVM-domU NetworkManager[754]: <info> (eth1): canceled DHCP transaction, DHCP client pid 844
Apr 15 14:57:55 rgreiner-HVM-domU avahi-daemon[628]: Withdrawing address record for <edited> on eth1.
Apr 15 14:57:55 rgreiner-HVM-domU avahi-daemon[628]: Leaving mDNS multicast group on interface eth1.IPv4 with address <edited>.
Apr 15 14:57:55 rgreiner-HVM-domU avahi-daemon[628]: Interface eth1.IPv4 no longer relevant for mDNS.
Apr 15 14:57:55 rgreiner-HVM-domU NetworkManager[754]: <info> Saved default wired connection 'Auto eth1' to persistent storage
Apr 15 14:57:56 rgreiner-HVM-domU NetworkManager[754]:    keyfile: updating /etc/NetworkManager/system-connections/Auto eth1
Apr 15 14:57:56 rgreiner-HVM-domU NetworkManager[754]:    Ifupdown: get unmanaged devices count: 0

Roberto
Comment 18 Ilia Kats 2011-04-15 20:29:28 UTC
Still in the process of installing KDE 4.6.1 (updating my live amd64 USB drive right now), but personally, I would say that your Kubuntu has issues (hey, it's beta). Could you try a different distribution, maybe openSUSE (although I can't help you with getting the build-dependencies there) or aptosid (based on Debian Sid, meaning KDE 4.4.5 if you don't want to kill your system with experimental)?
Comment 19 Lamarque V. Souza 2011-04-15 21:31:23 UTC
Just to let you know:

1. The crash happens in the kcm control module, which run as a separated process launched by both monolithic and plasmoid versions. So this crash independs from which version you are run.

2. Upgrading to a newer KDE SC version should not affect this problem since Plasma NM dependencies to KDE SC have not changed that much since 4.4.x time. The only major dependency change was the introduction of the ModemManager backend, which should not affect this crash.

I added a comment in the review http://git.reviewboard.kde.org/r/101117/ about what I think can be the problem.
Comment 20 Ilia Kats 2011-04-15 23:40:07 UTC
Thanks for the help, updated patch is online.
Comment 21 Lamarque V. Souza 2011-05-02 17:52:29 UTC
Git commit 0e316f701c34dbfee7a1de29d483596b00ba4c96 by Lamarque V. Souza, on behalf of Ilia Kats.
Committed on 22/04/2011 at 16:46.
Pushed by lvsouza into branch 'nm09'.

add IPv6 support to network management
BUG: 270827
REVIEW: 101117
(cherry picked from commit c7482485eea7e5cc379240139e8657f0fb82f6d3)

M  +4    -1    backends/NetworkManager/CMakeLists.txt     
M  +13   -2    backends/NetworkManager/connectiondbus.cpp     
M  +9    -0    backends/NetworkManager/settings/ipv4dbus.cpp     
A  +267  -0    backends/NetworkManager/settings/ipv6dbus.cpp         [License: GENERATED FILE]  *
A  +60   -0    backends/NetworkManager/settings/ipv6dbus.h         [License: GENERATED FILE]  *
M  +4    -0    libs/internals/CMakeLists.txt     
M  +7    -0    libs/internals/connection.cpp     
M  +5    -3    libs/internals/connectionpersistence.cpp     
M  +4    -0    libs/internals/schemas/ipv4.kcfg     
A  +59   -0    libs/internals/schemas/ipv6.kcfg         [License: UNKNOWN]  *
A  +5    -0    libs/internals/schemas/ipv6.kcfgc         [License: UNKNOWN]  *
M  +6    -2    libs/internals/setting.cpp     
M  +2    -1    libs/internals/settings/ipv4.cpp     
M  +20   -2    libs/internals/settings/ipv4.h     
M  +7    -0    libs/internals/settings/ipv4persistence.cpp     
A  +28   -0    libs/internals/settings/ipv6.cpp         [License: GENERATED FILE]  *
A  +188  -0    libs/internals/settings/ipv6.h         [License: GENERATED FILE]  *
A  +150  -0    libs/internals/settings/ipv6persistence.cpp         [License: GENERATED FILE]  *
A  +27   -0    libs/internals/settings/ipv6persistence.h         [License: GENERATED FILE]  *
M  +5    -0    libs/ui/CMakeLists.txt     
M  +5    -0    libs/ui/gsmconnectioneditor.cpp     
M  +16   -1    libs/ui/ipv4.ui     
M  +15   -1    libs/ui/ipv4widget.cpp     
A  +460  -0    libs/ui/ipv6.ui         [License: UNKNOWN]  *
A  +137  -0    libs/ui/ipv6advanced.ui         [License: UNKNOWN]  *
A  +214  -0    libs/ui/ipv6advancedwidget.cpp         [License: GPL]
A  +74   -0    libs/ui/ipv6advancedwidget.h         [License: GPL]
A  +471  -0    libs/ui/ipv6widget.cpp         [License: GPL]
A  +52   -0    libs/ui/ipv6widget.h         [License: GPL]
M  +3    -0    libs/ui/pppoepreferences.cpp     
A  +91   -0    libs/ui/simpleipv6addressvalidator.cpp         [License: GPL]
A  +43   -0    libs/ui/simpleipv6addressvalidator.h         [License: GPL]
M  +5    -0    libs/ui/vpnpreferences.cpp     
M  +3    -0    libs/ui/wiredpreferences.cpp     
M  +5    -0    libs/ui/wirelesspreferences.cpp     
M  +1    -0    solidcontrolfuture/CMakeLists.txt     
A  +228  -0    solidcontrolfuture/networkipv6config.cpp         [License: GPL]
A  +97   -0    solidcontrolfuture/networkipv6config.h         [License: GPL]

The files marked with a * at the end have a non valid license. Please read: http://techbase.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page.


http://commits.kde.org/networkmanagement/0e316f701c34dbfee7a1de29d483596b00ba4c96