Gabe Black has submitted this change and it was merged. ( https://gem5-review.googlesource.com/3080 )

Change subject: base: Teach the socket listeners how to bind to the loopback.
......................................................................

base: Teach the socket listeners how to bind to the loopback.

The loopback device will allow access to various services like remote GDB
debugging, connecting to the terminal, etc., without letting external
agents like port scanners connect and disrupting the simulation.

Change-Id: I76dccbf152fa278ae9f342b25f7e345a1329fbe4
Reviewed-on: https://gem5-review.googlesource.com/3080
Reviewed-by: Jason Lowe-Power <[email protected]>
Reviewed-by: Andreas Sandberg <[email protected]>
Maintainer: Andreas Sandberg <[email protected]>
---
M src/base/socket.cc
M src/base/socket.hh
2 files changed, 17 insertions(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved



diff --git a/src/base/socket.cc b/src/base/socket.cc
index 7a44437..5ef0f4b 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -40,12 +40,15 @@

 #include "base/misc.hh"
 #include "base/types.hh"
+#include "sim/byteswap.hh"

 using namespace std;

 bool ListenSocket::listeningDisabled = false;
 bool ListenSocket::anyListening = false;

+bool ListenSocket::bindToLoopback = false;
+
 void
 ListenSocket::disableAll()
 {
@@ -60,6 +63,14 @@
     return listeningDisabled;
 }

+void
+ListenSocket::loopbackOnly()
+{
+    if (anyListening)
+        panic("Too late to bind to loopback, already have a listener");
+    bindToLoopback = true;
+}
+
 ////////////////////////////////////////////////////////////////////////
 //
 //
@@ -94,7 +105,8 @@

     struct sockaddr_in sockaddr;
     sockaddr.sin_family = PF_INET;
-    sockaddr.sin_addr.s_addr = INADDR_ANY;
+    sockaddr.sin_addr.s_addr =
+ htobe<unsigned long>(bindToLoopback ? INADDR_LOOPBACK : INADDR_ANY);
     sockaddr.sin_port = htons(port);
     // finally clear sin_zero
     memset(&sockaddr.sin_zero, 0, sizeof(sockaddr.sin_zero));
diff --git a/src/base/socket.hh b/src/base/socket.hh
index 942318e..fab7f75 100644
--- a/src/base/socket.hh
+++ b/src/base/socket.hh
@@ -37,10 +37,14 @@
     static bool listeningDisabled;
     static bool anyListening;

+    static bool bindToLoopback;
+
   public:
     static void disableAll();
     static bool allDisabled();

+    static void loopbackOnly();
+
   protected:
     bool listening;
     int fd;

--
To view, visit https://gem5-review.googlesource.com/3080
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I76dccbf152fa278ae9f342b25f7e345a1329fbe4
Gerrit-Change-Number: 3080
Gerrit-PatchSet: 3
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Jason Lowe-Power <[email protected]>
Gerrit-Reviewer: Nathan Binkert <[email protected]>
Gerrit-CC: Rahul Thakur <[email protected]>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to