Strict Hierarchical Check of Trust Chain Final
diff --git a/nlsr_km.c b/nlsr_km.c
index 81c4a80..e3fa463 100644
--- a/nlsr_km.c
+++ b/nlsr_km.c
@@ -156,25 +156,6 @@
 }
 
 
-/*
-int
-process_incoming_content(struct ccn_closure* selfp, 
-												struct ccn_upcall_info* info){
-
-	printf("process_incoming_content called\n");
-
-	int res=verify_key(info->content_ccnb,info->pco->offset[CCN_PCO_E],info->pco);
-
-	if ( res != 0 ){
-		printf("Error in verfiying keys !! :( \n");
-	}
-	else{
-		printf("Key verification is successful :)\n");
-	}
-	return 0;
-}
-*/
-
 char * 
 get_orig_router_from_lsa_name(struct ccn_charbuf * content_name)
 {
@@ -188,7 +169,7 @@
 
 	struct ccn_indexbuf *components=ccn_indexbuf_create();
 	struct ccn_charbuf *name=ccn_charbuf_create();
-	ccn_name_from_uri(name,"/ndn/routing/nlsr/LSA");
+	ccn_name_from_uri(name,nlsr->slice_prefix);
 	ccn_name_split (name, components);
 	start=components->n-2;
 	ccn_charbuf_destroy(&name);
@@ -232,11 +213,47 @@
 }
 
 
+char * 
+get_orig_router_from_info_content_name(struct ccn_charbuf * content_name)
+{
+	int start,end;
+
+	start=0;
+
+	struct ccn_indexbuf *comps=ccn_indexbuf_create();
+	ccn_name_split (content_name, comps);
+
+	end=check_for_name_component_in_name(content_name,comps,"nlsr");
+
+
+	struct ccn_charbuf *temp=ccn_charbuf_create();
+	ccn_name_init(temp);	
+	ccn_name_append_components( temp,	content_name->buf,
+								comps->buf[start], 
+								comps->buf[end]);
+
+	struct ccn_charbuf *temp1=ccn_charbuf_create();
+	ccn_uri_append(temp1, temp->buf, temp->length, 0);
+
+	char *orig_router=(char *)calloc(strlen(ccn_charbuf_as_string(temp1))+1,
+																sizeof(char));
+	memcpy(orig_router,ccn_charbuf_as_string(temp1),
+										strlen(ccn_charbuf_as_string(temp1)));
+	orig_router[strlen(orig_router)]='\0';
+	
+	ccn_charbuf_destroy(&temp);
+	ccn_charbuf_destroy(&temp1);
+	ccn_indexbuf_destroy(&comps);
+	return orig_router;
+	
+
+}
+
 
 int 
 check_key_name_hierarchy(const unsigned char *ccnb, 
 										struct ccn_parsed_ContentObject *pco,
-																int key_type){
+										int key_type, int content_type){
 	printf("check_key_name_hierarchy called\n");	
 	if (key_type == UNKNOWN_KEY ){
 		return 1;
@@ -260,7 +277,13 @@
 	
 	if ( key_type == NLSR_KEY){
 		char *orig_router_key_name=get_orig_router_from_key_name(key_name,0,0);
-		char *orig_router_content_name=get_orig_router_from_lsa_name(content_name);
+		char *orig_router_content_name;
+		if ( content_type == 1 ){
+			orig_router_content_name=get_orig_router_from_lsa_name(content_name);
+		}
+		else if ( content_type == 0 ){
+			orig_router_content_name=get_orig_router_from_info_content_name(content_name);
+		}
 		printf("Orig Router (Key Name):%s\n",orig_router_key_name);
 		printf("Orig Router (Content Name):%s\n",orig_router_content_name);
 
@@ -354,7 +377,8 @@
 
 int 
 verify_key(const unsigned char *ccnb, 
-										struct ccn_parsed_ContentObject *pco){
+		struct ccn_parsed_ContentObject *pco,
+		int content_type){
 	if ( nlsr->debugging )
 		printf("verify key called\n");
 	int ret=-1;
@@ -383,7 +407,7 @@
 
 		if ( chk_verify == 0 ){
 			if ( nlsr->debugging )
-				printf("Verification Successful :)\n");
+				printf("Content verification Successful :)\n");
 
 			if ( counter == 3){
 				if ( nlsr->debugging )
@@ -394,15 +418,17 @@
 					ret=0;
 				}
 				else{
-					//ret=verify_key(result->buf,&temp_pco);
 					if ( nlsr->isStrictHierchicalKeyCheck ){
-						int key_name_test=check_key_name_hierarchy(ccnb,pco,key_type);
+						int key_name_test=check_key_name_hierarchy(ccnb,
+																	pco,
+																	key_type,
+																	content_type);
 						if ( key_name_test == 1){
-							ret=verify_key(result->buf,&temp_pco);
+							ret=verify_key(result->buf,&temp_pco,content_type);
 						}
 					}
 					else{ 
-						ret=verify_key(result->buf,&temp_pco);
+						ret=verify_key(result->buf,&temp_pco,content_type);
 					}
 				}
 			}
diff --git a/nlsr_km.h b/nlsr_km.h
index 59847f5..bb935fa 100644
--- a/nlsr_km.h
+++ b/nlsr_km.h
@@ -30,6 +30,7 @@
 					struct ccn_parsed_ContentObject *pco);
 
 int verify_key(const unsigned char *ccnb, 
-					struct ccn_parsed_ContentObject *pco);
+				struct ccn_parsed_ContentObject *pco,
+				int content_type);
 
 #endif
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index aa58904..b43a57d 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -499,7 +499,6 @@
 		writeLogg(__FILE__,__FUNCTION__,__LINE__,"process_incoming_content_info"
 																" called \n");
 
-	//int res;
 	struct name_prefix *nbr=(struct name_prefix *)malloc(sizeof(struct name_prefix ));
 	get_nbr(nbr,selfp,info);
 
@@ -513,54 +512,38 @@
 	
 
 	if ( contain_key_name(info->content_ccnb, info->pco) == 1){
-		//struct ccn_charbuf *key_name=get_key_name(info->content_ccnb, info->pco);
-		//struct ccn_charbuf *orig_router_kn=ccn_charbuf_create();
-		//res=get_orig_router_from_key_name(orig_router_kn,key_name);
-		//if( res == 0){
-			//struct ccn_charbuf *rtr_uri = ccn_charbuf_create();
-			//ccn_uri_append(rtr_uri, orig_router_kn->buf,
-			//										orig_router_kn->length, 0);
-			//printf("Orig Router from Key name: %s\n",
-			//									ccn_charbuf_as_string(rtr_uri));
-					
-			//if( strcmp(nbr->name,ccn_charbuf_as_string(rtr_uri)) == 0){
 						
-				int res_verify=verify_key(info->content_ccnb,info->pco);
+		int res_verify=verify_key(info->content_ccnb,info->pco,0);
 
-				if ( res_verify != 0 ){
-					printf("Error in verfiying keys !! :( \n");
-				}
-				else{
-					printf("Key verification is successful :)\n");
-					update_adjacent_timed_out_zero_to_adl(nbr);	
-					update_adjacent_status_to_adl(nbr,NBR_ACTIVE);
-					print_adjacent_from_adl();
+		if ( res_verify != 0 ){
+			printf("Error in verfiying keys !! :( \n");
+		}
+		else{
+			printf("Key verification is successful :)\n");
+			update_adjacent_timed_out_zero_to_adl(nbr);	
+			update_adjacent_status_to_adl(nbr,NBR_ACTIVE);
+			print_adjacent_from_adl();
 
-					if(!nlsr->is_build_adj_lsa_sheduled){
-						if ( nlsr->debugging )
-							printf("Scheduling Build and Install Adj LSA...\n");
-						if ( nlsr->detailed_logging )
-							writeLogg(__FILE__,__FUNCTION__,__LINE__,"Scheduling"
+			if(!nlsr->is_build_adj_lsa_sheduled){
+				if ( nlsr->debugging )
+					printf("Scheduling Build and Install Adj LSA...\n");
+				if ( nlsr->detailed_logging )
+					writeLogg(__FILE__,__FUNCTION__,__LINE__,"Scheduling"
 									 "Build and Install Adj LSA...\n");
-						nlsr->event_build_adj_lsa = ccn_schedule_event(
+				nlsr->event_build_adj_lsa = ccn_schedule_event(
 														nlsr->sched, 100000, 
 										&build_and_install_adj_lsa, NULL, 0);
-						nlsr->is_build_adj_lsa_sheduled=1;			
-					}
-					else{
-						if ( nlsr->debugging )
-							printf("Build and Install Adj LSA already scheduled\n");
-						if ( nlsr->detailed_logging )
-							writeLogg(__FILE__,__FUNCTION__,__LINE__,"Build and Install Adj LSA"
+				nlsr->is_build_adj_lsa_sheduled=1;			
+			}
+			else{
+				if ( nlsr->debugging )
+					printf("Build and Install Adj LSA already scheduled\n");
+				if ( nlsr->detailed_logging )
+					writeLogg(__FILE__,__FUNCTION__,__LINE__,"Build and Install Adj LSA"
 														" already scheduled\n");
-					}
+			}
 
-				}
-			//}
-			//ccn_charbuf_destroy(&rtr_uri);
-		//}
-		//ccn_charbuf_destroy(&key_name);
-		//ccn_charbuf_destroy(&orig_router_kn);	
+		}	
 	}
 	/*
 					update_adjacent_timed_out_zero_to_adl(nbr);	
diff --git a/nlsr_sync.c b/nlsr_sync.c
index bc5eb43..c673259 100644
--- a/nlsr_sync.c
+++ b/nlsr_sync.c
@@ -239,39 +239,23 @@
 			int chk_cont=ccn_parse_ContentObject(ptr,length,&pcobuf1,NULL);
 			printf("Content Parsing result: %d\n",chk_cont); 
 			if ( contain_key_name(ptr, &pcobuf1) == 1){
-				//struct ccn_charbuf *key_name=get_key_name(ptr, &pcobuf1);
-				//struct ccn_charbuf *orig_router_kn=ccn_charbuf_create();
-				//res=get_orig_router_from_key_name(orig_router_kn,key_name);
-				//if( res == 0){
-					//struct ccn_charbuf *rtr_uri = ccn_charbuf_create();
-					//ccn_uri_append(rtr_uri, orig_router_kn->buf,
-					//								orig_router_kn->length, 0);
-					//printf("Orig Router from Key name: %s\n",
-					//							ccn_charbuf_as_string(rtr_uri));
-					
-					//if( strcmp(orig_router,ccn_charbuf_as_string(rtr_uri)) == 0){
 						
-						int res_verify=verify_key(ptr,&pcobuf1);
+				int res_verify=verify_key(ptr,&pcobuf1,1);
 
-						if ( res_verify != 0 ){
-							printf("Error in verfiying keys !! :( \n");
-						}
-						else{
-							printf("Key verification is successful :)\n");
-							ptr_in=ptr;
-							length_in=length;
-							ccn_content_get_value(ptr_in, length_in, &pcobuf1, 
+				if ( res_verify != 0 ){
+						printf("Error in verfiying keys !! :( \n");
+				}
+				else{
+					printf("Key verification is successful :)\n");
+					ptr_in=ptr;
+					length_in=length;
+					ccn_content_get_value(ptr_in, length_in, &pcobuf1, 
 															&ptr_in, &length_in);
-							*content_data = (unsigned char *) calloc(length_in, 
+					*content_data = (unsigned char *) calloc(length_in, 
 																sizeof(char *));
-							memcpy (*content_data, ptr_in, length_in);
-							ret=0;
-						}
-					//}
-					//ccn_charbuf_destroy(&rtr_uri);
-				//}
-				//ccn_charbuf_destroy(&key_name);
-				//ccn_charbuf_destroy(&orig_router_kn);	
+					memcpy (*content_data, ptr_in, length_in);
+					ret=0;
+				}
 			}
 		}
 	}