Index: fact/Evidence/Evidence.cc
===================================================================
--- fact/Evidence/Evidence.cc	(revision 14187)
+++ fact/Evidence/Evidence.cc	(revision 14189)
@@ -102,4 +102,5 @@
   ExitRequest = false;
   This = this;
+  LocalMode = false;
 
   dis_disable_padding();
@@ -128,4 +129,26 @@
   // Catch C++ unhandled exceptions
   set_terminate(Terminate);
+
+  // If name server node not set, use localhost and launch dns
+  if (getenv("DIM_DNS_NODE") == NULL) {
+	printf("Environment variable DIM_DNS_NODE not set, will run in local mode. One moment please...\n");
+
+	if (setenv("DIM_DNS_NODE", "localhost", 0) == -1) {
+	  printf("setenv() failed in EvidenceServer::EvidenceServer (%s)\n", strerror(errno));
+	}
+	else LocalMode = true;
+	
+	// Launch dns in a separate process (currently no further checks to avoid zombie generation)
+	if ((ChildPID = fork()) == 0) {
+	  if (execlp("dns", "dns", (char *) NULL) == -1) {
+		printf("execlp() failed in child process forked in EvidenceServer::EvidenceServer() (%s)\n", strerror(errno));
+		exit(EXIT_FAILURE);
+	  }
+	}
+	if (ChildPID == -1) printf("fork() failed in EvidenceServer::EvidenceServer() (%s)\n", strerror(errno));
+
+	// Wait for dns to become active
+	sleep(3);
+  }
 
   // Message service and initial message
@@ -272,5 +295,5 @@
 	// Check if successful
 	if (!EvidenceServer::ServiceOK(&Config)) {
-      if (Default.empty()) {
+      if (Default.empty() && !LocalMode) {
 		Message(FATAL, "Configuration server unreachable, can't retrieve '%s'", Item.c_str());
 	  }
@@ -306,5 +329,5 @@
 
   // Terminate if no configuration information found
-  if (Result.empty()) Message(FATAL, "Missing configuration data '%s'", Item.c_str());
+  if (Result.empty() && !LocalMode) Message(FATAL, "Missing configuration data '%s'", Item.c_str());
 
   return Result;
Index: fact/Evidence/Evidence.h
===================================================================
--- fact/Evidence/Evidence.h	(revision 14187)
+++ fact/Evidence/Evidence.h	(revision 14189)
@@ -61,4 +61,6 @@
 	static pthread_mutex_t Mutex;
 	static EvidenceServer *This;
+	bool LocalMode;
+	pid_t ChildPID;
 
     static void SignalHandler(int); // static for signal()
Index: fact/Evidence/readme.txt
===================================================================
--- fact/Evidence/readme.txt	(revision 14187)
+++ fact/Evidence/readme.txt	(revision 14189)
@@ -67,2 +67,3 @@
 13/6/2012	Removed calling Message() before abort() in signal handler, as Message() might get stuck
 19/6/2012   Giving no indices in OpenHistory() will try to open plot for all members of an array
+			If DIM_DNS_NODE not set, EvidenceServer will run in local mode, launching a dns in a separate process on localhost
