Index: source/ariba/Node.cpp
===================================================================
--- source/ariba/Node.cpp	(revision 2438)
+++ source/ariba/Node.cpp	(revision 2439)
@@ -124,7 +124,6 @@
 const ServiceID Node::anonymousService = 0xFF00;
 
-Node::Node(AribaModule& ariba_mod, const Name& name) :
-	ariba_mod(ariba_mod), name(name) {
-	this->context = NULL;
+Node::Node(AribaModule& ariba_mod, const Name& node_name) :
+	ariba_mod( ariba_mod ), name( node_name ), context( NULL ){
 }
 
@@ -134,5 +133,5 @@
 void Node::join(const Name& vnetname) {
 	spovnetId = vnetname.toSpoVNetId();
-	nodeId = name.toNodeId();
+	nodeId = generateNodeId( name );
 	this->context = ariba_mod.underlay_abs->joinSpoVNet(spovnetId,
 			*ariba_mod.getBootstrapNode(name), nodeId);
@@ -143,5 +142,5 @@
 		(utility::OverlayParameterSet::_OverlayStructure) parm.getBaseOverlayType();
 	spovnetId = vnetname.toSpoVNetId();
-	nodeId = name.toNodeId();
+	nodeId = generateNodeId( name );
 	this->context = ariba_mod.underlay_abs->createSpoVNet(spovnetId, nodeId,
 			ariba_mod.ip_addr, ariba_mod.tcp_port);
@@ -174,5 +173,8 @@
 
 NodeID Node::generateNodeId(const Name& name) const {
-	return name.toNodeId();
+	if( name == Name::UNSPECIFIED )
+		return Name::random().toNodeId();
+	else
+		return name.toNodeId();
 }
 
