Index: branches/proxy/src/lib/network/monitor/network_monitor.cc
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.cc	(revision 9307)
+++ branches/proxy/src/lib/network/monitor/network_monitor.cc	(revision 9308)
@@ -20,4 +20,5 @@
 
 #include "proxy/proxy_settings.h"
+#include "shared_network_data.h"
 
 #include "network_monitor.h"
@@ -52,17 +53,22 @@
   this->setSynchronized(false);
 
-  // assuming that the config files are already read we get the proxy servers
-  std::vector<IPaddress*>* proxyList = ProxySettings::getInstance()->getProxyList();
-  std::vector<IPaddress*>::iterator it = proxyList->begin();
-  // create a peer info class and a network node class for each new proxy and add them to the passive list
-  for(; it < proxyList->end(); it++)
-  {
-    PeerInfo* peer = new PeerInfo();
-    peer->ip = *(*it);
-    peer->nodeType = NET_PROXY_SERVER_ACTIVE;
-    peer->userId = -1;
-
-    NetworkNode* node = new NetworkNode(peer);
-    this->addPassiveProxyServer( this->localNode, peer);
+  // read in the proxy server list, this is only the case for the master server
+  if( SharedNetworkData::getInstance()->isMasterServer())
+  {
+    // assuming that the config files are already read we get the proxy servers
+    std::vector<IPaddress*>* proxyList = ProxySettings::getInstance()->getProxyList();
+    std::vector<IPaddress*>::iterator it = proxyList->begin();
+    // create a peer info class and a network node class for each new proxy and add them to the passive list
+    for(; it < proxyList->end(); it++)
+    {
+      PeerInfo* peer = new PeerInfo();
+      peer->ip = *(*it);
+      peer->nodeType = NET_PROXY_SERVER_ACTIVE;
+      peer->userId = -1;
+
+      NetworkNode* node = new NetworkNode(peer);
+      this->addNode( node);
+      this->addPassiveProxyServer( this->localNode, peer);
+    }
   }
 }
@@ -111,6 +117,12 @@
  * @param ip ip of the new node
  */
-void NetworkMonitor::addNode(IPaddress ip)
-{}
+void NetworkMonitor::addNode(IPaddress ip, int nodeType)
+{
+  PeerInfo* pInfo = new PeerInfo();
+  pInfo->nodeType = nodeType;
+  pInfo->ip = ip;
+
+  this->addNode( pInfo);
+}
 
 
Index: branches/proxy/src/lib/network/monitor/network_monitor.h
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9307)
+++ branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9308)
@@ -34,6 +34,6 @@
     void removeNetworkNode(NetworkNode* node);
 
-    void addNode(IPaddress ip);
     void addNode(PeerInfo* pInfo);
+    void addNode(IPaddress ip, int nodeType);
     void addNode(NetworkNode* node) { this->nodeList.push_back(node); }
     void addNode(NetworkNode* node, PeerInfo* pInfo);
Index: branches/proxy/src/lib/network/monitor/network_node.cc
===================================================================
--- branches/proxy/src/lib/network/monitor/network_node.cc	(revision 9307)
+++ branches/proxy/src/lib/network/monitor/network_node.cc	(revision 9308)
@@ -239,12 +239,22 @@
   for(; it != this->masterServerList.end(); it++)
   {
-    PRINT(0)("     - ms, id: %i\n", (*it)->userId);
-  }
-
-  PRINT(0)("    proxy servers: %i\n", this->activeProxyServerList.size());
+    int ip = (*it)->ip.host;
+    PRINT(0)("     - ms, id: %i (%d.%d.%d.%d:9999)\n", (*it)->userId, (ip & 0x000000FF), (ip & 0x0000FF00) >> 8, (ip & 0x00FF0000) >> 16, (ip & 0xFF000000)>>24);
+  }
+
+  PRINT(0)("    proxy servers active: %i\n", this->activeProxyServerList.size());
   it = this->activeProxyServerList.begin();
   for(; it != this->activeProxyServerList.end(); it++)
   {
-    PRINT(0)("     - ps, id: %i\n", (*it)->userId);
+    int ip = (*it)->ip.host;
+    PRINT(0)("     - ps-a, id: %i (%d.%d.%d.%d:9999)\n", (*it)->userId, (ip & 0x000000FF), (ip & 0x0000FF00) >> 8, (ip & 0x00FF0000) >> 16, (ip & 0xFF000000)>>24);
+  }
+
+  PRINT(0)("    proxy servers passive: %i\n", this->passiveProxyServerList.size());
+  it = this->passiveProxyServerList.begin();
+  for(; it != this->passiveProxyServerList.end(); it++)
+  {
+    int ip = (*it)->ip.host;
+    PRINT(0)("     - ps-p, id: %i (%d.%d.%d.%d:9999)\n", (*it)->userId, (ip & 0x000000FF), (ip & 0x0000FF00) >> 8, (ip & 0x00FF0000) >> 16, (ip & 0xFF000000)>>24);
   }
 
@@ -253,6 +263,7 @@
   for(; it != this->clientList.end(); it++)
   {
-    PRINT(0)("     - client, id: %i\n", (*it)->userId);
-  }
-}
-
+    int ip = (*it)->ip.host;
+    PRINT(0)("     - client, id: %i (%d.%d.%d.%d:9999)\n", (*it)->userId, (ip & 0x000000FF), (ip & 0x0000FF00) >> 8, (ip & 0x00FF0000) >> 16, (ip & 0xFF000000)>>24);
+  }
+}
+
Index: branches/proxy/src/lib/network/network_socket.cc
===================================================================
--- branches/proxy/src/lib/network/network_socket.cc	(revision 9307)
+++ branches/proxy/src/lib/network/network_socket.cc	(revision 9308)
@@ -33,4 +33,6 @@
 {
   bOk = true;
+  this->ip.host = 0;
+  this->ip.port = 0;
 }
 
Index: branches/proxy/src/lib/network/network_socket.h
===================================================================
--- branches/proxy/src/lib/network/network_socket.h	(revision 9307)
+++ branches/proxy/src/lib/network/network_socket.h	(revision 9308)
@@ -56,5 +56,5 @@
 
     /** @returns the ip adderess of the destination socket */
-    IPaddress getDestAddress() { return ip; }
+    IPaddress getRemoteAddress() { return ip; }
 
 
Index: branches/proxy/src/lib/network/network_stream.cc
===================================================================
--- branches/proxy/src/lib/network/network_stream.cc	(revision 9307)
+++ branches/proxy/src/lib/network/network_stream.cc	(revision 9308)
@@ -81,10 +81,9 @@
   this->peers[0].nodeType = NET_MASTER_SERVER;
   this->peers[0].connectionMonitor = new ConnectionMonitor( 0 );
-  this->peers[0].ip = this->peers[0].socket->getDestAddress();
+  this->peers[0].ip = this->peers[0].socket->getRemoteAddress();
   // and set also the localhost
   this->pInfo->nodeType = NET_CLIENT;
   // get the local ip address
-  SDLNet_ResolveHost( &this->pInfo->ip, "localhost", port );
-
+  SDLNet_ResolveHost( &this->pInfo->ip, NULL, port );
 }
 
@@ -100,5 +99,5 @@
   this->pInfo->nodeType = NET_MASTER_SERVER;
   // get the local ip address
-  SDLNet_ResolveHost( &this->pInfo->ip, "localhost", port );
+  SDLNet_ResolveHost( &this->pInfo->ip, NULL, port );
 }
 
@@ -204,7 +203,4 @@
   hs->setPreferedNickName( Preferences::getInstance()->getString( "multiplayer", "nickname", "Player" ) );
 
-//   peers[0].handshake->setSynchronized( true );
-  //this->connectSynchronizeable(*hs);
-  //this->connectSynchronizeable(*hs);
   PRINTF(0)("NetworkStream: Handshake created: %s\n", hs->getName());
 }
@@ -305,6 +301,6 @@
 
 /**
- * if we are a server update the connection list to accept new connections (clients)
- * also start the handsake for the new clients
+ * if we are a NET_MASTER_SERVER or NET_PROXY_SERVER_ACTIVE update the connection list to accept new
+ * connections (clients) also start the handsake for the new clients
  */
 void NetworkStream::updateConnectionList( )
@@ -326,4 +322,5 @@
       peers[clientId].handshake = new Handshake(this->pInfo->nodeType, clientId, this->networkGameManager->getUniqueID(), MessageManager::getInstance()->getUniqueID() );
       peers[clientId].handshake->setUniqueID(clientId);
+      peers[clientId].ip = tempNetworkSocket->getRemoteAddress();
 
       // get the proxy server informations and write them to the handshake, if any (proxy)
@@ -501,11 +498,11 @@
 
               it->second.nodeType = it->second.handshake->getRemoteNodeType();
-              it->second.ip = it->second.socket->getDestAddress();
+              it->second.ip = it->second.socket->getRemoteAddress();
               this->networkMonitor->addNode(&it->second);
 
               // get proxy 1 address and add it
-              this->networkMonitor->addNode(it->second.handshake->getProxy1Address());
+              this->networkMonitor->addNode(it->second.handshake->getProxy1Address(), NET_PROXY_SERVER_ACTIVE);
               // get proxy 2 address and add it
-              this->networkMonitor->addNode(it->second.handshake->getProxy2Address());
+              this->networkMonitor->addNode(it->second.handshake->getProxy2Address(), NET_PROXY_SERVER_ACTIVE);
 
 
@@ -520,5 +517,4 @@
                 // disconnect from the current server and reconnect to proxy server
 //                 it->second.socket->disconnectServer();
-
               }
 
@@ -537,5 +533,5 @@
           else
           {
-            // handsheke finished registring new player
+            // handshake finished registring new player
             if ( it->second.handshake->canDel() )
             {
@@ -543,4 +539,6 @@
               {
                 it->second.nodeType = it->second.handshake->getRemoteNodeType();
+                it->second.ip = it->second.socket->getRemoteAddress();
+
                 this->networkMonitor->addNode(&it->second);
 
Index: branches/proxy/src/lib/network/peer_info.cc
===================================================================
--- branches/proxy/src/lib/network/peer_info.cc	(revision 9307)
+++ branches/proxy/src/lib/network/peer_info.cc	(revision 9308)
@@ -49,4 +49,7 @@
   this->lastRecvedState = 0;
   this->connectionMonitor = NULL;
+
+  this->ip.host = 0;
+  this->ip.port = 0;
 }
 
@@ -59,5 +62,7 @@
       return std::string("client");
     case NET_PROXY_SERVER_ACTIVE:
-      return std::string("proxy server");
+      return std::string("proxy server active");
+    case NET_PROXY_SERVER_PASSIVE:
+      return std::string("proxy server passive");
     case NET_MASTER_SERVER:
       return std::string("master server");
Index: branches/proxy/src/lib/network/proxy/proxy_settings.cc
===================================================================
--- branches/proxy/src/lib/network/proxy/proxy_settings.cc	(revision 9307)
+++ branches/proxy/src/lib/network/proxy/proxy_settings.cc	(revision 9308)
@@ -64,5 +64,12 @@
   LoadParam(root, "max-player", this, ProxySettings, setMaxPlayer);
 
-  LoadParam(root, "proxy-addr", this, ProxySettings, setProxyAddr);
+  LOAD_PARAM_START_CYCLE(root, element);
+  {
+    element->ToText();
+    // PER-PARTICLE-ATTRIBUTES:
+    LoadParam(root, "proxy-addr", this, ProxySettings, setProxyAddr);
+  }
+  LOAD_PARAM_END_CYCLE(element);
+
 }
 
Index: branches/proxy/src/lib/network/synchronizeable.cc
===================================================================
--- branches/proxy/src/lib/network/synchronizeable.cc	(revision 9307)
+++ branches/proxy/src/lib/network/synchronizeable.cc	(revision 9308)
@@ -105,29 +105,6 @@
       delete *it2;
     }
-
-  }
-}
-
-/**
- * Sets the server flag to a given value
- * @param isServer: the boolean value which the server flag is to set to
- */
-// void Synchronizeable::setIsServer(bool isServer)
-// {
-//   if( isServer )
-//     this->state = this->state | STATE_SERVER;
-//   else
-//     this->state = this->state & (~STATE_SERVER);
-// }
-
-
-/**
- * Determines if the server flag is set
- * @return true, if the server flag is true, false else
- */
-// bool Synchronizeable::isServer()
-// {
-//   return (this->state & STATE_SERVER) >0;
-// }
+  }
+}
 
 
@@ -181,9 +158,4 @@
   while ( it != sentStates[userId].end() && (*it)->stateId != fromStateId )
     it++;
-
-//  if ( getLeafClassID() == CL_SPACE_SHIP )
-//  {
-//    PRINTF(0)("getStateDiff:SpaceShip from: %d stateId: %d\n", (it == sentStates[userId].end())?-1:fromStateId, stateId);
-//  }
 
   if ( it == sentStates[userId].end() )
Index: branches/proxy/src/lib/network/synchronizeable_var/synchronizeable_ip.cc
===================================================================
--- branches/proxy/src/lib/network/synchronizeable_var/synchronizeable_ip.cc	(revision 9307)
+++ branches/proxy/src/lib/network/synchronizeable_var/synchronizeable_ip.cc	(revision 9308)
@@ -22,5 +22,5 @@
  * @todo this constructor is not jet implemented - do it
 */
-SynchronizeableIP::SynchronizeableIP( IPaddress * ptrIn, IPaddress * ptrOut, std::string name, int permission, int priority) : SynchronizeableVar( ptrIn, ptrOut, name, 3*FLOATSIZE, permission, priority )
+SynchronizeableIP::SynchronizeableIP( IPaddress * ptrIn, IPaddress * ptrOut, std::string name, int permission, int priority) : SynchronizeableVar( ptrIn, ptrOut, name, 2*INTSIZE, permission, priority )
 {
   this->vPtrIn = ptrIn;
Index: branches/proxy/src/lib/network/udp_socket.cc
===================================================================
--- branches/proxy/src/lib/network/udp_socket.cc	(revision 9307)
+++ branches/proxy/src/lib/network/udp_socket.cc	(revision 9308)
@@ -105,11 +105,9 @@
   assert( serverSocket == NULL );
 
-  IPaddress ip;
-  
   this->randomByte = generateNewRandomByte();
 
   PRINTF(0)("connect to server %s on port %d\n", host.c_str(), port);
 
-  if ( SDLNet_ResolveHost( &ip, host.c_str(), port ) != 0 )
+  if ( SDLNet_ResolveHost( &this->ip, host.c_str(), port ) != 0 )
   {
     PRINTF(1)("SDLNet_ResolveHost: %s\n", SDLNet_GetError() );
@@ -126,5 +124,5 @@
   }
 
-  int channel = SDLNet_UDP_Bind(socket, 1, &ip);
+  int channel = SDLNet_UDP_Bind(socket, 1, &this->ip);
   if ( channel == -1 )
   {
@@ -147,4 +145,7 @@
   bOk = false;
   socket = NULL;
+
+  this->ip.host = 0;
+  this->ip.port = 0;
 }
 
@@ -179,5 +180,5 @@
 
     byte udpCmd = 0;
-    
+
     if ( networkPacket.length > 0 )
     {
@@ -189,5 +190,5 @@
     else
       return 0;
-      
+
     if ( !checkRandomByte( networkPacket.data[0] ) )
       return 0;
@@ -198,5 +199,5 @@
       networkPacket.data = NULL;
     }
-    
+
     if ( !checkUdpCmd( udpCmd ) )
       return 0;
@@ -207,5 +208,5 @@
   {
     int numrecv = SDLNet_UDP_Recv( socket, packet);
-    
+
     byte udpCmd = 0;
 
@@ -218,8 +219,8 @@
       else
         return 0;
-            
+
       if ( !checkRandomByte( packet->data[0] ) )
         return 0;
-              
+
       if ( !checkUdpCmd( udpCmd ) )
         return 0;
@@ -283,5 +284,5 @@
     return false;
   }
-  
+
   if ( !this->serverSocket && ( udpCmd & UDPCMD_INVALIDRNDBYTE ) )
   {
@@ -292,5 +293,5 @@
     return false;
   }
-  
+
   return true;
 }
@@ -300,7 +301,7 @@
   srand( SDL_GetTicks() );
   byte res = ( rand() & 0xFC );
-  
+
   PRINTF(0)("generated random byte: %x\n", res);
-  
+
   return res;
 }
