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