UDP/TCP tunnel options
diff --git a/nlsr-sync-0.0/macbook.conf b/nlsr-sync-0.0/macbook.conf
index 73c7014..d29553f 100755
--- a/nlsr-sync-0.0/macbook.conf
+++ b/nlsr-sync-0.0/macbook.conf
@@ -1,7 +1,6 @@
 #----configuration file for macbook----------
 #
 router-name /ndn/memphis.edu/netlab/macbook
-hyperbolic-cordinate 1234.0 0.875
 ccnneighbor /ndn/memphis.edu/cs/maia
 ccnneighbor /ndn/memphis.edu/cs/mira
 ccnneighbor /ndn/memphis.edu/cs/castor
@@ -15,6 +14,9 @@
 router-dead-interval 900
 multi-path-face-num 2 
 debug on
+hyperbolic-routing on
+hyperbolic-cordinate 1234.0 0.875
+tunnel-type tcp
 
 topo-prefix /ndn/routing/nlsr/
 slice-prefix /ndn/routing/nlsr/LSA
diff --git a/nlsr-sync-0.0/nlsr.c b/nlsr-sync-0.0/nlsr.c
index 587e015..14244af 100755
--- a/nlsr-sync-0.0/nlsr.c
+++ b/nlsr-sync-0.0/nlsr.c
@@ -592,11 +592,11 @@
 }
 
 void 
-process_command_hyperbolic(char *command)
+process_command_hyperbolic_routing(char *command)
 {
 	if(command==NULL)
 	{
-		printf(" Wrong Command Format ( hyperbolic on/off )\n");
+		printf(" Wrong Command Format ( hyperbolic-routing on)\n");
 		return;
 	}
 	char *rem;
@@ -606,7 +606,7 @@
 	on_off=strtok_r(command,sep,&rem);
 	if(on_off==NULL)
 	{
-		printf(" Wrong Command Format ( hyperbolic on/off )\n");
+		printf(" Wrong Command Format ( hyperbolic-routing on )\n");
 		return;
 	}
 	
@@ -650,6 +650,31 @@
 }
 
 void 
+process_command_tunnel_type(char *command)
+{
+	if(command==NULL)
+	{
+		printf(" Wrong Command Format ( tunnel-type udp/tcp)\n");
+		return;
+	}
+	char *rem;
+	const char *sep=" \t\n";
+	char *on_off;
+
+	on_off=strtok_r(command,sep,&rem);
+	if(on_off==NULL)
+	{
+		printf(" Wrong Command Format ( tunnel-type udp/tcp )\n");
+		return;
+	}
+	
+	if ( strcmp(on_off,"TCP") == 0 || strcmp(on_off,"tcp") == 0 )
+	{
+		nlsr->tunnel_type=IPPROTO_TCP;
+	}
+}
+
+void 
 process_conf_command(char *command)
 {
 	const char *separators=" \t\n";
@@ -721,6 +746,14 @@
 	{
 		process_command_hyperbolic_cordinate(remainder);
 	}
+	else if(!strcmp(cmd_type,"hyperbolic-routing") )
+	{
+		process_command_hyperbolic_routing(remainder);
+	}
+	else if(!strcmp(cmd_type,"tunnel-type") )
+	{
+		process_command_tunnel_type(remainder);
+	}
 	else 
 	{
 		printf("Wrong configuration Command %s \n",cmd_type);
@@ -773,7 +806,7 @@
 	for(i=0;i<adl_element;i++)
 	{
 		nbr=e->data;
-		int face_id=add_ccn_face(nlsr->ccn, (const char *)nbr->neighbor->name, (const char *)nbr->ip_address, 9695);
+		int face_id=add_ccn_face(nlsr->ccn, (const char *)nbr->neighbor->name, (const char *)nbr->ip_address, 9695,nlsr->tunnel_type);
 		update_face_to_adl_for_nbr(nbr->neighbor->name, face_id);		
 		add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_REG, face_id);
 		hashtb_next(e);		
@@ -800,8 +833,8 @@
 		nbr=e->data;
 		if ( nbr->face > 0 )
 		{	
-			add_delete_ccn_face_by_face_id(nlsr->ccn,(const char *)nbr->neighbor->name,OP_UNREG,nbr->face);	
 			add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_UNREG, nbr->face);
+			add_delete_ccn_face_by_face_id(nlsr->ccn,(const char *)nbr->neighbor->name,OP_UNREG,nbr->face);
 		}
 		hashtb_next(e);		
 	}
@@ -916,7 +949,7 @@
 				memset(ip_addr,0,13);
 				get_ip_from_hostname_02(nbr_name->name,ip_addr);
 				printf("IP Address: %s \n",ip_addr);
-				int face_id=add_ccn_face(nlsr->ccn, (const char *)nbr_name->name, (const char *)ip_addr, 9695);
+				int face_id=add_ccn_face(nlsr->ccn, (const char *)nbr_name->name, (const char *)ip_addr, 9695,nlsr->tunnel_type);
 				update_face_to_adl_for_nbr(nbr_name->name, face_id);		
 				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_REG, face_id);				
 
@@ -1188,6 +1221,8 @@
 	nlsr->cor_r=-1.0;
 	nlsr->cor_theta=-1.0;
 
+	nlsr->tunnel_type=IPPROTO_UDP;
+
 	return 0;
 }
 
@@ -1229,7 +1264,7 @@
 
 	readConfigFile(config_file);
 
-	if ( nlsr->cor_r == -1.0 && nlsr->cor_theta== -1.0 ) 	
+	if ( nlsr->is_hyperbolic_calc == 1 && (nlsr->cor_r == -1.0 && nlsr->cor_theta== -1.0) ) 	
 	{
 		fprintf(stderr,"Hyperbolic codinate has not been defined :(\n");
 		ON_ERROR_DESTROY(-1);
@@ -1293,13 +1328,13 @@
 	add_faces_for_nbrs();
 	print_name_prefix_from_npl();
 	print_adjacent_from_adl();
-	build_and_install_name_lsas();
-	print_name_lsdb();
-
-	build_and_install_cor_lsa();	
+	build_and_install_name_lsas();	
 
 	sync_monitor(nlsr->topo_prefix,nlsr->slice_prefix);
 
+
+	print_name_lsdb();
+	build_and_install_cor_lsa();
 	write_name_lsdb_to_repo(nlsr->slice_prefix);
 
 	nlsr->sched = ccn_schedule_create(nlsr, &ndn_rtr_ticker);
diff --git a/nlsr-sync-0.0/nlsr.h b/nlsr-sync-0.0/nlsr.h
index 1155688..b1b279f 100755
--- a/nlsr-sync-0.0/nlsr.h
+++ b/nlsr-sync-0.0/nlsr.h
@@ -105,6 +105,8 @@
 	int is_hyperbolic_calc;
 	double cor_r;
 	double cor_theta;
+
+	int tunnel_type;
 	
 	
 };
diff --git a/nlsr-sync-0.0/nlsr_face.c b/nlsr-sync-0.0/nlsr_face.c
index 533fe9e..708fab7 100644
--- a/nlsr-sync-0.0/nlsr_face.c
+++ b/nlsr-sync-0.0/nlsr_face.c
@@ -263,7 +263,7 @@
  */
 static struct 
 ccn_face_instance *construct_face(const unsigned char *ccndid, size_t ccndid_size,
-        const char *address, const char *port)
+        const char *address, const char *port, unsigned int tunnel_proto)
 {
 	struct ccn_face_instance *fi = calloc(1, sizeof(*fi));
 	char rhostnamebuf[NI_MAXHOST];
@@ -295,7 +295,7 @@
 	}
 
 	fi->store = store;
-	fi->descr.ipproto = IPPROTO_UDP;
+	fi->descr.ipproto = tunnel_proto;
 	fi->descr.mcast_ttl = CCN_FIB_MCASTTTL;
 	fi->lifetime = CCN_FIB_LIFETIME;
 
@@ -333,7 +333,7 @@
 }
 
 static int 
-add_delete_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int p, int operation)
+add_delete_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int p, int operation,unsigned int tunnel_proto)
 {
 	struct ccn_charbuf *prefix;
 	char port[6];
@@ -362,7 +362,7 @@
 	}
 
 	/* construct a face instance for new face request */
-	fi = construct_face(ccndid, ccndid_size, address, port);
+	fi = construct_face(ccndid, ccndid_size, address, port,tunnel_proto);
 	ON_NULL_CLEANUP(fi);
 
 	/* send new face request to actually create a new face */
@@ -396,15 +396,15 @@
 
 
 int 
-add_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port)
+add_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port, unsigned int tunnel_proto)
 {
-	return add_delete_ccn_face(h, uri, address, port, OP_REG);
+	return add_delete_ccn_face(h, uri, address, port, OP_REG,tunnel_proto);
 }
 
 
 int 
-delete_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port)
+delete_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port,unsigned int tunnel_proto)
 {
-	return add_delete_ccn_face(h, uri, address, port, OP_UNREG);
+	return add_delete_ccn_face(h, uri, address, port, OP_UNREG,tunnel_proto);
 }
 
diff --git a/nlsr-sync-0.0/nlsr_face.h b/nlsr-sync-0.0/nlsr_face.h
index aae75f8..d50ea09 100644
--- a/nlsr-sync-0.0/nlsr_face.h
+++ b/nlsr-sync-0.0/nlsr_face.h
@@ -6,7 +6,7 @@
 #define OP_REG  0
 #define OP_UNREG 1
 
-int add_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port);
-int delete_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port);
+int add_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port,unsigned int tunnel_proto);
+int delete_ccn_face(struct ccn *h, const char *uri, const char *address, const unsigned int port,unsigned int tunnel_proto);
 
 #endif
diff --git a/nlsr-sync-0.0/nlsr_fib.c b/nlsr-sync-0.0/nlsr_fib.c
index 251bf95..6ef81cb 100755
--- a/nlsr-sync-0.0/nlsr_fib.c
+++ b/nlsr-sync-0.0/nlsr_fib.c
@@ -72,7 +72,7 @@
 	forwarding_entry->ccnd_id_size =ccnd_id_size;
 	forwarding_entry->faceid = faceid;
 	forwarding_entry->flags = -1;
-	forwarding_entry->lifetime = (~0U) >> 1;
+	forwarding_entry->lifetime = 2100;
 
 	prefixreg = ccn_charbuf_create();
 	ccnb_append_forwarding_entry(prefixreg, forwarding_entry);
diff --git a/nlsr-sync-0.0/nlsr_route.c b/nlsr-sync-0.0/nlsr_route.c
index 7754af1..36a9957 100755
--- a/nlsr-sync-0.0/nlsr_route.c
+++ b/nlsr-sync-0.0/nlsr_route.c
@@ -186,8 +186,7 @@
 			sort_queue_by_distance(Q,dist,head,V);
 		}
 	}
-	free(Q);
-	//free(dist);	
+	free(Q);	
 }
 
 void