Index: osgVisual/trunk/src/cluster/dataIO_clusterDummy.cpp
===================================================================
--- osgVisual/trunk/src/cluster/dataIO_clusterDummy.cpp	(revision 176)
+++ osgVisual/trunk/src/cluster/dataIO_clusterDummy.cpp	(revision 183)
@@ -29,8 +29,15 @@
 }
 
-void dataIO_clusterDummy::init( osg::ArgumentParser& arguments_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool compressionEnabled_, bool asAscii_ )
+bool dataIO_clusterDummy::init(xmlNode* configurationNode, osgViewer::Viewer* viewer_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool asAscii_)
 {
 	sendContainer = sendContainer_;
 	OSG_NOTIFY( osg::ALWAYS ) << "clusterDummy init();" << std::endl;
+	return true;
+}
+
+bool dataIO_clusterDummy::processXMLConfiguration(xmlNode* clusterConfig_)
+{
+	OSG_NOTIFY( osg::ALWAYS ) << "clusterDummy processXMLConfiguration();" << std::endl;
+	return true;
 }
 
@@ -40,5 +47,5 @@
 }
 
-bool dataIO_clusterDummy::sendTO_OBJvaluesToSlaves()
+bool dataIO_clusterDummy::sendTO_OBJvaluesToSlaves(osg::Matrixd viewMatrix_)
 {
 	OSG_NOTIFY( osg::ALWAYS ) << "clusterDummy sendTO_OBJvaluesToSlaves()" << std::endl;
Index: osgVisual/trunk/src/cluster/dataIO_clusterENet.cpp
===================================================================
--- osgVisual/trunk/src/cluster/dataIO_clusterENet.cpp	(revision 176)
+++ osgVisual/trunk/src/cluster/dataIO_clusterENet.cpp	(revision 183)
@@ -35,6 +35,9 @@
 
 
-void dataIO_clusterENet::init( osg::ArgumentParser& arguments_, osgViewer::Viewer* viewer_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool compressionEnabled_, bool asAscii_ )
-{
+bool dataIO_clusterENet::init(xmlNode* configurationNode, osgViewer::Viewer* viewer_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool asAscii_)
+{
+	if (!configurationNode || !processXMLConfiguration(configurationNode))
+		return false;
+
 	OSG_NOTIFY( osg::ALWAYS ) << "clusterENet init();" << std::endl;
 	
@@ -56,5 +59,5 @@
 		writeOptionString = "Ascii";
 	}
-	if (compressionEnabled_)
+	if (compressionEnabled)
 		writeOptionString+=" Compressor=zlib";
 	readOptions = new osgDB::Options( readOptionString.c_str() );
@@ -77,12 +80,4 @@
 	if(clusterMode == SLAVE)
 	{
-		// Get the server IP
-		if(!arguments_.read("--server",serverToConnect, port))
-		{
-			// try server discovery
-			//discoverServer(serverToConnect,port);
-			/* todo : implement a udp server discovery based on ASIO */
-		}
-
 		// Init ENet
 		enet_impl->init(dataIO_clusterENet_implementation::CLIENT, port);
@@ -105,7 +100,58 @@
 			initialized = false;
 			std::cout << "Finally failed to establish connection to server " << serverToConnect << std::endl;
-			exit(-1);
+			return false;
 		}
 	}	// IF SLAVE END
+
+	return true;
+}
+
+bool dataIO_clusterENet::processXMLConfiguration(xmlNode* clusterConfig_)
+{
+				// Extract cluster role
+				xmlAttr  *attr = clusterConfig_->properties;
+				while ( attr ) 
+				{ 
+					std::string attr_name=reinterpret_cast<const char*>(attr->name);
+					std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
+					if( attr_name == "implementation" )
+					{
+						if(attr_value != "enet")
+						{
+							OSG_NOTIFY( osg::ALWAYS ) << "WARNING: Cluster configuration does not match the 'enet' implementation, falling back to clusterDummy" << std::endl;
+							return false;
+						}
+					}
+					if( attr_name == "hardsync" )
+					{
+						if(attr_value == "yes")
+							hardSync = true;
+						else
+							hardSync = false;
+					}
+					if( attr_name == "master_ip" )
+					{
+						serverToConnect = attr_value;
+					}
+					if( attr_name == "port" )
+					{
+						std::istringstream i(attr_value);
+						if (!(i >> port))
+						{
+							OSG_NOTIFY( osg::ALWAYS ) << "WARNING: Cluster configuration : Invalid port number '" << attr_value << "', falling back to clusterDummy" << std::endl;
+							return false;
+						}
+					}
+					if( attr_name == "use_zlib_compressor" )
+					{
+						if(attr_value == "yes")
+							compressionEnabled = true;
+						else
+							compressionEnabled = false;
+					}
+					attr = attr->next; 
+				}	// WHILE attrib END
+
+	return true;
 }
 
