Index: source/ariba/SideportListener.cpp
===================================================================
--- source/ariba/SideportListener.cpp	(revision 4738)
+++ source/ariba/SideportListener.cpp	(revision 4751)
@@ -80,4 +80,5 @@
 // 2 = relayed node   --> node that we cannot access directly
 static map<NodeID,short> relayingnodes;
+static map<NodeID,SideportListener::Protocol> protocolnodes;
 
 bool SideportListener::isRelayingNode(const NodeID& node){
@@ -95,4 +96,29 @@
 
 	relayingnodes.insert( std::make_pair( node, rand()%3 ) );
+}
+
+SideportListener::Protocol generateRandomProtocol(){
+
+	if( (rand() % 3) == 0 ){
+		return SideportListener::rfcomm;
+	}
+
+	int ret = SideportListener::undefined;
+
+	if( (rand() % 2) == 0 )	ret |= SideportListener::ipv4;
+	else					ret |= SideportListener::ipv6;
+
+	if( (rand() % 2) == 0 )	ret |= SideportListener::udp;
+	else					ret |= SideportListener::tcp;
+
+	return (SideportListener::Protocol)ret;
+}
+
+SideportListener::Protocol SideportListener::getReachabilityProtocol(const NodeID& node){
+
+	map<NodeID,Protocol>::iterator i = protocolnodes.find(node);
+	if(i != protocolnodes.end()) return i->second;
+
+	protocolnodes.insert( std::make_pair(node, generateRandomProtocol()) );
 }
 
Index: source/ariba/SideportListener.h
===================================================================
--- source/ariba/SideportListener.h	(revision 4738)
+++ source/ariba/SideportListener.h	(revision 4751)
@@ -125,5 +125,5 @@
 	 * is set to unspecified.
 	 *
-	 * @param The remote node to query all links or unspecified
+	 * @param node The remote node to query all links or unspecified
 	 * 			for all local starting links
 	 * @return A vector of link ids.
@@ -136,5 +136,5 @@
 	 * Is this node acting as a relay for us
 	 *
-	 * @param The node in question
+	 * @param node The node in question
 	 * @return true, if this node is relaying for us
 	 */
@@ -144,8 +144,29 @@
 	 * Is this node only reachable for us through a relay?
 	 *
-	 * @param The node in question
+	 * @param node The node in question
 	 * @return true, if we reach this node only over a relay
 	 */
 	bool isRelayedNode(const NodeID& node);
+
+
+	/**
+	 * Protocols for some layer, can be combined
+	 */
+	enum Protocol {
+		undefined = 0x0,
+		rfcomm = 0x1,
+		ipv4 = 0x2,
+		ipv6 = 0x4,
+		udp = 0x8,
+		tcp = 0x16,
+	};
+
+	/**
+	 * Through which protocol is a node reachable.
+	 *
+	 * @param node The node for which to return protocol reachability
+	 * @return Combination of protocols
+	 */
+	Protocol getReachabilityProtocol(const NodeID& node);
 
 protected:
