diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc
index 51293e1..06e04e1 100644
--- a/src/base/remote_gdb.cc
+++ b/src/base/remote_gdb.cc
@@ -195,6 +195,11 @@
 void
 GDBListener::listen()
 {
+    if (ListenSocket::allDisabled()) {
+        warn_once("Sockets disabled, not accepting gdb connections");
+        return;
+    }
+
     while (!listener.listen(port, true)) {
         DPRINTF(GDBMisc, "Can't bind port %d\n", port);
         port++;
diff --git a/src/base/socket.cc b/src/base/socket.cc
index adcc487..bcc5236 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -43,6 +43,23 @@
 
 using namespace std;
 
+bool ListenSocket::listeningDisabled = false;
+bool ListenSocket::anyListening = false;
+
+void
+ListenSocket::disableAll()
+{
+    if (anyListening)
+        panic("Too late to disable all listeners, already have a listener");
+    listeningDisabled = true;
+}
+
+bool
+ListenSocket::allDisabled()
+{
+    return listeningDisabled;
+}
+
 ////////////////////////////////////////////////////////////////////////
 //
 //
@@ -92,6 +109,7 @@
 
     listening = true;
 
+    anyListening = true;
     return true;
 }
 
diff --git a/src/base/socket.hh b/src/base/socket.hh
index 8e55eae..942318e 100644
--- a/src/base/socket.hh
+++ b/src/base/socket.hh
@@ -34,6 +34,14 @@
 class ListenSocket
 {
   protected:
+    static bool listeningDisabled;
+    static bool anyListening;
+
+  public:
+    static void disableAll();
+    static bool allDisabled();
+
+  protected:
     bool listening;
     int fd;
 
diff --git a/src/cpu/nativetrace.cc b/src/cpu/nativetrace.cc
index 7152602..c23a9e4 100644
--- a/src/cpu/nativetrace.cc
+++ b/src/cpu/nativetrace.cc
@@ -50,8 +50,12 @@
 
 namespace Trace {
 
-NativeTrace::NativeTrace(const Params *p) : InstTracer(p)
+NativeTrace::NativeTrace(const Params *p)
+    : InstTracer(p)
 {
+    if (ListenSocket::allDisabled())
+        fatal("All listeners are disabled!");
+
     int port = 8000;
     while(!native_listener.listen(port, true))
     {
diff --git a/src/dev/ethertap.cc b/src/dev/ethertap.cc
index 81b84d1..c7b292c 100644
--- a/src/dev/ethertap.cc
+++ b/src/dev/ethertap.cc
@@ -130,6 +130,9 @@
     : EtherObject(p), event(NULL), socket(-1), buflen(p->bufsz), dump(p->dump),
       interface(NULL), txEvent(this)
 {
+    if (ListenSocket::allDisabled())
+        fatal("All listeners are disabled! EtherTap can't work!");
+
     buffer = new char[buflen];
     listener = new TapListener(this, p->port);
     listener->listen();
diff --git a/src/dev/terminal.cc b/src/dev/terminal.cc
index 47f280a..58371a2 100644
--- a/src/dev/terminal.cc
+++ b/src/dev/terminal.cc
@@ -125,6 +125,11 @@
 void
 Terminal::listen(int port)
 {
+    if (ListenSocket::allDisabled()) {
+        warn_once("Sockets disabled, not accepting terminal connections");
+        return;
+    }
+
     while (!listener.listen(port, true)) {
         DPRINTF(Terminal,
                 ": can't bind address terminal port %d inuse PID %d\n",
diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py
index 3d91da3..e4dbd57 100644
--- a/src/python/m5/simulate.py
+++ b/src/python/m5/simulate.py
@@ -182,3 +182,5 @@
 
     for old_cpu, new_cpu in cpuList:
         new_cpu.takeOverFrom(old_cpu)
+
+from internal.core import disableAllListeners
diff --git a/src/python/swig/core.i b/src/python/swig/core.i
index 53d992a..3d360c0 100644
--- a/src/python/swig/core.i
+++ b/src/python/swig/core.i
@@ -34,6 +34,7 @@
 %{
 #include "python/swig/pyobject.hh"
 
+#include "base/socket.hh"
 #include "sim/core.hh"
 #include "sim/host.hh"
 #include "sim/startup.hh"
@@ -42,6 +43,7 @@
 std::vector<std::string> compileFlags();
 extern const char *hgRev;
 extern const char *hgDate;
+inline void disableAllListeners() { ListenSocket::disableAll(); }
 %}
 
 %include "stdint.i"
@@ -53,6 +55,7 @@
 void setOutputFile(const std::string &file);
 void SimStartup();
 void doExitCleanup();
+void disableAllListeners();
 
 %immutable compileDate;
 char *compileDate;
