Index: /sample/pingpong/PingPong.cpp
===================================================================
--- /sample/pingpong/PingPong.cpp	(revision 6953)
+++ /sample/pingpong/PingPong.cpp	(revision 6954)
@@ -58,5 +58,6 @@
 			string ip = config.read<string>("ariba.visual3d.ip");
 			unsigned int port = config.read<unsigned int>("ariba.visual3d.port");
-			ariba::utility::DddVis::instance().configure(ip, port);
+			unsigned int color = config.read<unsigned int>("ariba.visual3d.color");
+			ariba::utility::DddVis::instance().configure(ip, port, color);
 		}
 
Index: /source/ariba/utility/visual/DddVis.cpp
===================================================================
--- /source/ariba/utility/visual/DddVis.cpp	(revision 6953)
+++ /source/ariba/utility/visual/DddVis.cpp	(revision 6954)
@@ -159,4 +159,13 @@
 
 	sendMessage( out.str(), network );
+
+	//
+	// set node color, if any given
+	//
+
+	if(this->nodecolor != 0){
+		this->visChangeNodeColor(network, node,
+				(nodecolor & 0xFF0000) >> 16, (nodecolor & 0x00FF00) >> 8, nodecolor & 0x0000FF );
+	}
 }
 
@@ -233,21 +242,11 @@
 		unsigned char b
 ){
-	NodeSet::iterator i = colorSet.find(node);
-	unsigned int color = makeColor(r,g,b);
-
-	if( i == colorSet.end() ){
-		colorSet.insert(make_pair( node, color )); // color not set for node, set
-	}else{
-		if( i->second == color ) return; // color already set, ignore
-		else i->second = color;			 // new color, set
-	}
-
 	ostringstream out;
 	out	<< SET_NODE_COLOR_TYPE 		<< del
-			<< getCommandID() 			<< del
-			<< getTimestamp() 			<< del
-			<< getNetworkName(network) 	<< del
-			<< getNodeNumber(node) 		<< del
-			<< makeColor(r, g, b) 		<< del;
+		<< getCommandID() 			<< del
+		<< getTimestamp() 			<< del
+		<< getNetworkName(network) 	<< del
+		<< getNodeNumber(node) 		<< del
+		<< makeColor(r, g, b) 		<< del;
 
 	sendMessage( out.str(), network );
@@ -316,3 +315,19 @@
 }
 
+void DddVis::visShowNodeLabel (
+			NETWORK_ID network,
+			NodeID& node,
+			string label
+){
+	ostringstream out;
+	out	<< SET_NODE_INFO_TYPE 		<< del
+		<< getCommandID() 			<< del
+		<< getTimestamp() 			<< del
+		<< getNetworkName(network) 	<< del
+		<< getNodeNumber(node) 		<< del
+		<< label << del;
+
+	sendMessage( out.str(), network );
+}
+
 }} // namespace ariba, common
Index: /source/ariba/utility/visual/DddVis.h
===================================================================
--- /source/ariba/utility/visual/DddVis.h	(revision 6953)
+++ /source/ariba/utility/visual/DddVis.h	(revision 6954)
@@ -161,4 +161,13 @@
 			NodeID& destnode,
 			NODE_COLORS color
+	);
+
+	/**
+	 * Show the label of the node
+	 */
+	void visShowNodeLabel (
+			NETWORK_ID network,
+			NodeID& node,
+			string label
 	);
 
@@ -216,7 +225,4 @@
 	typedef KeyMapping<NodePair> NetworkLinks;
 	NetworkLinks networkLinks;
-
-	NodeSet colorSet;
-
 };
 
Index: /source/ariba/utility/visual/ServerVis.cpp
===================================================================
--- /source/ariba/utility/visual/ServerVis.cpp	(revision 6953)
+++ /source/ariba/utility/visual/ServerVis.cpp	(revision 6954)
@@ -43,4 +43,5 @@
 
 use_logging_cpp(ServerVis);
+unsigned int ServerVis::nodecolor = 0;
 
 typedef enum _NETWORK_ID {
@@ -69,5 +70,6 @@
 }
 
-void ServerVis::configure(string ip, unsigned int port){
+void ServerVis::configure(string ip, unsigned int port, unsigned int _color){
+	nodecolor = _color;
 	if( ip.length() == 0 ) return;
 
Index: /source/ariba/utility/visual/ServerVis.h
===================================================================
--- /source/ariba/utility/visual/ServerVis.h	(revision 6953)
+++ /source/ariba/utility/visual/ServerVis.h	(revision 6954)
@@ -58,5 +58,6 @@
 	use_logging_h(ServerVis);
 public:
-	void configure(string ip, unsigned int port);
+	void configure(string ip, unsigned int port, unsigned int _color = 0);
+	static unsigned int nodecolor;
 
 	typedef enum _NETWORK_ID {
@@ -105,4 +106,7 @@
 	virtual void visChangeLinkColor (NETWORK_ID network, NodeID& srcnode, NodeID& destnode, NODE_COLORS color) = 0;
 
+	/// Show the label of the node.
+	virtual void visShowNodeLabel (NETWORK_ID network, NodeID& node, string label) = 0;
+
 protected:
 	ServerVis();
