diff --git a/nlsr_adl.cpp b/nlsr_adl.cpp
index 0cbdb4a..0f4be8f 100644
--- a/nlsr_adl.cpp
+++ b/nlsr_adl.cpp
@@ -3,6 +3,7 @@
 
 #include "nlsr_adl.hpp"
 #include "nlsr_adjacent.hpp"
+#include "nlsr.hpp"
 
 Adl::Adl(){
 }
@@ -151,6 +152,51 @@
 	return adjList;
 }
 
+bool
+Adl::isAdjLsaBuildable(nlsr& pnlsr)
+{
+	int nbrCount=0;
+	for( std::list<Adjacent>::iterator it=adjList.begin(); 
+	                                                   it!= adjList.end() ; it++)
+	{
+		if ( ((*it).getStatus() == 1 ) )
+		{
+			nbrCount++;
+		}
+		else
+		{
+			if ( (*it).getInterestTimedOutNo() >= 
+				                       pnlsr.getConfParameter().getInterestRetryNumber())
+			{
+					nbrCount++;
+			}
+		} 
+	}
+
+	if( nbrCount == adjList.size())
+	{
+		return true;
+	}
+
+	return false;
+}
+
+int 
+Adl::getNumOfActiveNeighbor()
+{
+	int actNbrCount=0;
+	for( std::list<Adjacent>::iterator it=adjList.begin(); 
+	                                                   it!= adjList.end() ; it++)
+	{
+		if ( ((*it).getStatus() == 1 ) )
+		{
+			actNbrCount++;
+		}
+	}
+
+	return actNbrCount;
+}
+
 // used for debugging purpose
 void
 Adl::printAdl(){
