public void messageReceived(DataPacket packet) {
		
		if (!packet.isKeepAlive()) {
			System.out.println("Error, packet delivered at network monitor is NOT a keep-alive packet!");
			return;
		}
		
		Byte source = packet.getSource();
		this.lock.lock();
		
		// shutdown?
		if (packet.isRouting()) {
			if (this.activity.containsKey(source)) {
				this.activity.remove(source);
				this.router.networkMessage(source, NetworkMessage.DROPPED);
			}
			
			this.lock.unlock();
			return;
		}
		
		// alive
		if (!this.activity.containsKey(source)) {
			this.activity.put(source, System.currentTimeMillis());
			this.router.networkMessage(source, NetworkMessage.NEWKEEPALIVE);
			
			this.lock.unlock();
			return;
		}
		
		this.activity.put(source, System.currentTimeMillis());
		this.lock.unlock();
		
	}