diff --git a/linux/main.cpp b/linux/main.cpp
index f1fc24e..867abdb 100644
--- a/linux/main.cpp
+++ b/linux/main.cpp
@@ -6,7 +6,7 @@
  */
 
 #include <QtGui/QApplication>
-#include "traymenu.h"
+#include "tray-menu.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/linux/network-manager.cpp b/linux/network-manager.cpp
new file mode 100644
index 0000000..22e63d2
--- /dev/null
+++ b/linux/network-manager.cpp
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * @copyright See LICENCE for copyright and license information.
+ *
+ * @author Ilya Moiseenko <iliamo@ucla.edu>
+ */
+
+#include "network-manager.h"
+#include <QProcess>
+
+NetworkManager::NetworkManager()
+{
+    if (!QDBusConnection::systemBus().isConnected())
+    {
+        qDebug() << "Cannot connect to the D-Bus session bus.\n";
+        return;
+    }
+
+    QDBusConnection::systemBus().connect("org.freedesktop.NetworkManager",
+                                          "/org/freedesktop/NetworkManager",
+                                          "org.freedesktop.NetworkManager",
+                                          "StateChanged", this, SLOT(stateChanged(uint)));
+}
+
+void NetworkManager::stateChanged(uint state)
+{
+    qDebug() << "State = " << state;
+
+    if(state == NM_STATE_CONNECTED_GLOBAL)
+        autoconfigDaemon();
+}
+
+void NetworkManager::autoconfigDaemon()
+{
+    QProcess *process = new QProcess();
+    process->start(NDND_AUTOCONFIG_COMMAND);
+}
diff --git a/linux/network-manager.h b/linux/network-manager.h
new file mode 100644
index 0000000..11e5ec7
--- /dev/null
+++ b/linux/network-manager.h
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * @copyright See LICENCE for copyright and license information.
+ *
+ * @author Ilya Moiseenko <iliamo@ucla.edu>
+ */
+
+#include <QtDBus>
+
+#ifndef NETWORKMANAGER_H
+#define NETWORKMANAGER_H
+
+#define NDND_AUTOCONFIG_COMMAND "/usr/local/bin/ndnd-autoconfig"
+#define NM_STATE_DISCONNECTED 20
+#define NM_STATE_CONNECTING 40
+#define NM_STATE_CONNECTED_GLOBAL 70
+
+class NetworkManager : public QObject
+{
+     Q_OBJECT
+
+public:
+    NetworkManager();
+
+private:
+    void autoconfigDaemon();
+
+private slots:
+    void stateChanged(uint state);
+};
+
+
+#endif // NETWORKMANAGER_H
diff --git a/linux/tray-menu.cpp b/linux/tray-menu.cpp
index 3d96ac9..40eb98e 100644
--- a/linux/tray-menu.cpp
+++ b/linux/tray-menu.cpp
@@ -9,6 +9,7 @@
 #include "ui_traymenu.h"   //generated from traymenu.ui
 #include "quit-dialog.h"
 #include "fib-input-dialog.h"
+#include "network-manager.h"
 
 #include <QMenu>
 #include <QCloseEvent>
@@ -39,6 +40,8 @@
 
     startDaemon();
 
+    networkManager = new NetworkManager();
+
     connect(ui->openTrafficMapButton, SIGNAL(pressed()), this, SLOT(openTrafficMap()));
     connect(ui->openRoutingStatusButton, SIGNAL(pressed()), this, SLOT(openRoutingStatus()));
     connect(ui->addFibButton, SIGNAL(pressed()), this, SLOT(showFibInputDialog()));
diff --git a/linux/tray-menu.h b/linux/tray-menu.h
index 045bb09..c5dfd66 100644
--- a/linux/tray-menu.h
+++ b/linux/tray-menu.h
@@ -19,8 +19,9 @@
 #include <QStandardItemModel>
 #include <QtXml>
 
-#include "FibInputDialog.h"
-#include "QuitDialog.h"
+#include "fib-input-dialog.h"
+#include "quit-dialog.h"
+#include "network-manager.h"
 
 #define NDND_START_COMMAND "/usr/local/bin/ndndstart"
 #define NDND_STOP_COMMAND "/usr/local/bin/ndndstop"
@@ -79,6 +80,8 @@
     bool enableStartOnLogin;
     bool shutdownOnExit;
 
+    NetworkManager *networkManager;
+
 private slots:
     void trayIconClicked(QSystemTrayIcon::ActivationReason);
     void generalSettingsClicked();
