Merge branch 'master' of github.com:NDN-Routing/NLSR0.0
diff --git a/macbook.conf b/macbook.conf
index fbff79a..7310e35 100644
--- a/macbook.conf
+++ b/macbook.conf
@@ -1,9 +1,8 @@
#----configuration file for macbook----------
#
router-name /ndn/memphis.edu/netlab/macbook
-ccnneighbor /ndn/memphis.edu/cs/maia
-#ccnneighbor /ndn/memphis.edu/cs/mira
-#ccnneighbor /ndn/memphis.edu/cs/castor
+ccnneighbor /ndn/memphis.edu/cs/gemeni
+ccnneighbor /ndn/memphis.edu/cs/altair
ccnneighbor /ndn/memphis.edu/cs/pollux 141.225.11.132
ccnname /ndn/memphis.edu/macbook/patterson
ccnname /ndn/memphis.edu/macbook/houston/
diff --git a/nlsr.c b/nlsr.c
index 4f50669..b3816b5 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -162,9 +162,7 @@
char *rtr_name;
char *nbr_ip_addr;
int is_ip_configured=0;
- //char *face;
char *ip_addr=(char *)calloc(20,sizeof(char));
- //memset(ip_addr,0,12);
rtr_name=strtok_r(command,sep,&rem);
if(rtr_name==NULL)
@@ -185,7 +183,6 @@
}
struct name_prefix *nbr=(struct name_prefix *)calloc(1,sizeof(struct name_prefix ));
nbr->name=(char *)calloc(strlen(rtr_name)+1,sizeof(char));
- //memset(nbr->name,0,strlen(rtr_name)+1);
memcpy(nbr->name,rtr_name,strlen(rtr_name)+1);
nbr->length=strlen(rtr_name)+1;
@@ -204,7 +201,7 @@
}
else
{
- memcpy(ip_addr,nbr_ip_addr,strlen(nbr_ip_addr));
+ memcpy(ip_addr,nbr_ip_addr,strlen(nbr_ip_addr)+1);
if (nlsr->debugging)
{
printf("Name of neighbor: %s ",nbr->name);
@@ -483,8 +480,7 @@
}
nlsr->logDir=(char *)calloc(strlen(dir)+1,sizeof(char));
- //memset(nlsr->logDir,0,strlen(dir)+1);
- memcpy(nlsr->logDir,dir,strlen(dir));
+ memcpy(nlsr->logDir,dir,strlen(dir)+1);
}
void
@@ -564,7 +560,7 @@
topo_prefix[strlen(topo_prefix)-1]='\0';
nlsr->topo_prefix=(char *)calloc(strlen(topo_prefix)+1,sizeof(char));
- memcpy(nlsr->topo_prefix,topo_prefix,strlen(topo_prefix));
+ memcpy(nlsr->topo_prefix,topo_prefix,strlen(topo_prefix)+1);
printf ("Topo prefix is: %s", nlsr->topo_prefix);;
}
}
@@ -596,7 +592,7 @@
slice_prefix[strlen(slice_prefix)-1]='\0';
nlsr->slice_prefix=(char *)calloc(strlen(slice_prefix)+1,sizeof(char));
- memcpy(nlsr->slice_prefix,slice_prefix,strlen(slice_prefix));
+ memcpy(nlsr->slice_prefix,slice_prefix,strlen(slice_prefix)+1);
}
}
@@ -1211,7 +1207,6 @@
nlsr->lsdb=(struct linkStateDatabase *)malloc(sizeof(struct linkStateDatabase));
char *time_stamp=(char *) calloc (20,sizeof(char));
- //memset(time_stamp,0,20);
get_current_timestamp_micro(time_stamp);
nlsr->lsdb->lsdb_version=(char *)malloc(strlen(time_stamp)+1);
memset(nlsr->lsdb->lsdb_version,0,strlen(time_stamp));
diff --git a/nlsr_adl.c b/nlsr_adl.c
index 947d5ac..6076f89 100644
--- a/nlsr_adl.c
+++ b/nlsr_adl.c
@@ -31,7 +31,7 @@
void
add_nbr_to_adl(struct name_prefix *new_nbr,int face,char *ip)
{
- struct ndn_neighbor *nbr;//=(struct ndn_neighbor *)malloc(sizeof(struct ndn_neighbor )); //free
+ struct ndn_neighbor *nbr;
struct hashtb_enumerator ee;
struct hashtb_enumerator *e = ⅇ
@@ -45,7 +45,7 @@
nbr = e->data;
- nbr->neighbor=(struct name_prefix *)malloc(sizeof( struct name_prefix )); //free
+ nbr->neighbor=(struct name_prefix *)malloc(sizeof( struct name_prefix ));
nbr->neighbor->name=(char *)malloc(new_nbr->length);
memcpy(nbr->neighbor->name,new_nbr->name,new_nbr->length);
nbr->neighbor->length=new_nbr->length;
@@ -58,18 +58,17 @@
nbr->metric=LINK_METRIC;
nbr->is_lsdb_send_interest_scheduled=0;
- nbr->ip_address=(char *)malloc(strlen(ip)+1);
- memset(nbr->ip_address,0,strlen(ip)+1);
- memcpy(nbr->ip_address,ip,strlen(ip));
+ nbr->ip_address=(char *)calloc(strlen(ip)+1,sizeof(char));
+ memcpy(nbr->ip_address,ip,strlen(ip)+1);
char *time_stamp=(char *)malloc(20);
get_current_timestamp_micro(time_stamp);
- nbr->last_lsdb_version=(char *)malloc(strlen(time_stamp)+1); //free
+ nbr->last_lsdb_version=(char *)calloc(strlen(time_stamp)+1,sizeof(char));
memcpy(nbr->last_lsdb_version,time_stamp,strlen(time_stamp)+1);
- memset(nbr->last_lsdb_version,'0',strlen(time_stamp));
- nbr->last_info_version=(char *)malloc(strlen(time_stamp)+1); //free
+ memset(nbr->last_lsdb_version,'0',strlen(time_stamp)+1);
+ nbr->last_info_version=(char *)calloc(strlen(time_stamp)+1,sizeof(char));
memcpy(nbr->last_info_version,time_stamp,strlen(time_stamp)+1);
- memset(nbr->last_info_version,'0',strlen(time_stamp));
+ memset(nbr->last_info_version,'0',strlen(time_stamp)+1);
free(time_stamp);
nbr->last_lsdb_requested=0;
@@ -399,7 +398,14 @@
if (res == HT_OLD_ENTRY)
{
- hashtb_delete(e);
+ struct ndn_neighbor *nbr=e->data;
+ free(nbr->neighbor->name);
+ free(nbr->neighbor);
+ free(nbr->last_lsdb_version);
+ free(nbr->last_info_version);
+ free(nbr->ip_address);
+ hashtb_delete(e);
+
}
else if(res == HT_NEW_ENTRY)
{
@@ -535,14 +541,6 @@
free(temp_length);
ccn_charbuf_append_string(c,"|");
- /*char *temp_face=(char *)malloc(20);
- memset(temp_face,0,20);
- sprintf(temp_face,"%d",nbr->face);
- ccn_charbuf_append_string(c,temp_face);
- free(temp_face);
- ccn_charbuf_append_string(c,"|");
- */
-
char *temp_metric=(char *)malloc(20);
memset(temp_metric,0,20);
sprintf(temp_metric,"%d",nbr->metric);
@@ -557,314 +555,6 @@
hashtb_end(e);
}
-long int
-get_nbr_time_diff_lsdb_req(char *nbr)
-{
- if ( nlsr->debugging )
- printf("get_nbr_time_diff_lsdb_req called\n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"get_nbr_time_diff_lsdb_req called\n");
-
- long int time_diff=get_lsdb_synch_interval(nbr)+1;
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if (res == HT_OLD_ENTRY)
- {
- nnbr=e->data;
-
- if (nnbr->last_lsdb_requested == 0)
- time_diff=get_lsdb_synch_interval(nbr)+1;
- else time_diff=get_current_time_sec() - get_nbr_last_lsdb_requested(nbr);
-
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
- return time_diff;
-}
-
-long int
-get_nbr_last_lsdb_requested(char *nbr)
-{
- if ( nlsr->debugging )
- printf("get_timed_out_number called\n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"get_timed_out_number called\n");
-
- long int last_lsdb_requested=0;
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if (res == HT_OLD_ENTRY)
- {
- nnbr=e->data;
- last_lsdb_requested=nnbr->last_lsdb_requested;
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
- return last_lsdb_requested;
-}
-
-
-int
-get_nbr_random_time_component(char *nbr)
-{
- if ( nlsr->debugging )
- printf("get_nbr_random_time_component called\n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"get_nbr_random_time_component called\n");
-
- int time=0;
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if (res == HT_OLD_ENTRY)
- {
- nnbr=e->data;
- time=nnbr->lsdb_random_time_component * (int)pow(-1,nnbr->lsdb_interest_timed_out+1);
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
- return time;
-}
-
-long int
-get_lsdb_synch_interval(char *nbr)
-{
- if ( nlsr->debugging )
- printf("get_lsdb_synch_interval called \n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"get_lsdb_synch_interval called \n");
-
- long int lsdb_synch_interval=300;
-
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if (res == HT_OLD_ENTRY)
- {
- nnbr=e->data;
- lsdb_synch_interval=nnbr->lsdb_synch_interval;
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
- return lsdb_synch_interval;
-
-}
-
-char *
-get_nbr_lsdb_version(char *nbr)
-{
- if ( nlsr->debugging )
- printf("get_nbr_lsdb_version called \n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"get_nbr_lsdb_version called \n");
-
- char *version=NULL;
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if (res == HT_OLD_ENTRY)
- {
- nnbr=e->data;
- version=(char *)malloc(strlen(nnbr->last_lsdb_version)+1);
- memset(version,0,strlen(nnbr->last_lsdb_version)+1);
- memcpy(version,nnbr->last_lsdb_version,strlen(nnbr->last_lsdb_version)+1);
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
- return version;
-}
-
-void
-update_adjacent_last_lsdb_requested_to_adl(char *nbr, long int timestamp)
-{
- if ( nlsr->debugging )
- printf("update_adjacent_last_lsdb_requested_to_adl called \n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"update_adjacent_last_lsdb_requested_to_adl called \n");
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if( res == HT_OLD_ENTRY )
- {
- nnbr=e->data;
- nnbr->last_lsdb_requested=timestamp;
-
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-}
-
-void
-set_is_lsdb_send_interest_scheduled_to_zero(char *nbr)
-{
- if ( nlsr->debugging )
- printf("set_is_lsdb_send_interest_scheduled_to_zero called \n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"set_is_lsdb_send_interest_scheduled_to_zero called\n");
-
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if (res == HT_OLD_ENTRY)
- {
- nnbr=e->data;
- nnbr->is_lsdb_send_interest_scheduled=0;
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-}
-
-void
-update_adjacent_lsdb_version_to_adl(struct name_prefix *nbr, char *version)
-{
- if ( nlsr->debugging )
- printf("update_adjacent_timed_out_to_adl called \n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"update_adjacent_timed_out_to_adl called\n");
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr->name, nbr->length, 0);
-
- if( res == HT_OLD_ENTRY )
- {
- nnbr=e->data;
- free(nnbr->last_lsdb_version);
- nnbr->last_lsdb_version=(char *)malloc(strlen(version)+1);
- memset(nnbr->last_lsdb_version,0,strlen(version)+1);
- memcpy(nnbr->last_lsdb_version,version,strlen(version)+1);
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
-}
-
-void
-adjust_adjacent_last_lsdb_requested_to_adl(char *nbr, long int sec)
-{
- printf("update_adjacent_last_lsdb_requested_to_adl called \n");
-
- if ( nlsr->debugging )
- printf("update_adjacent_last_lsdb_requested_to_adl called \n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"update_adjacent_last_lsdb_requested_to_adl called\n");
-
-
- int res;
- struct ndn_neighbor *nnbr;
-
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
-
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
- if( res == HT_OLD_ENTRY )
- {
- nnbr=e->data;
- nnbr->last_lsdb_requested=nnbr->last_lsdb_requested-sec;
-
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
-}
int
get_next_hop_face_from_adl(char *nbr)
@@ -1024,8 +714,7 @@
}
- name_part->name=(char *)malloc(strlen(neighbor)+1);
- memset(name_part->name,0,strlen(neighbor)+1);
+ name_part->name=(char *)calloc(strlen(neighbor)+1,sizeof(char));
memcpy(name_part->name,neighbor,strlen(neighbor)+1);
name_part->length=strlen(neighbor)+1;
diff --git a/nlsr_lsdb.c b/nlsr_lsdb.c
index 46a9428..6c18921 100644
--- a/nlsr_lsdb.c
+++ b/nlsr_lsdb.c
@@ -34,16 +34,18 @@
void
set_new_lsdb_version(void)
{
- char *time_stamp=(char *)malloc(20);
- memset(time_stamp,0,20);
- get_current_timestamp_micro(time_stamp);
+ //char *time_stamp=(char *)malloc(20);
+ //memset(time_stamp,0,20);
+ //get_current_timestamp_micro(time_stamp);
+ char *time_stamp=get_current_timestamp_micro_v2();
free(nlsr->lsdb->lsdb_version);
- nlsr->lsdb->lsdb_version=(char *)malloc(strlen(time_stamp)+1);
- memset(nlsr->lsdb->lsdb_version,0,strlen(time_stamp)+1);
+ nlsr->lsdb->lsdb_version=(char *)calloc(strlen(time_stamp)+1,sizeof(char));
memcpy(nlsr->lsdb->lsdb_version,time_stamp,strlen(time_stamp)+1);
-
free(time_stamp);
+ //memcpy(nlsr->lsdb->lsdb_version,time_stamp,strlen(time_stamp)+1);
+
+ //free(time_stamp);
}
diff --git a/utility.c b/utility.c
index 0c0be75..6a7cb0c 100644
--- a/utility.c
+++ b/utility.c
@@ -62,7 +62,17 @@
}
-
+int
+get_width_of_number(long int number)
+{
+ int i=0;
+ while(number>0)
+ {
+ i++;
+ number/=10;
+ }
+ return i;
+}
long int
get_current_time_sec(void)
@@ -81,6 +91,18 @@
sprintf(microSec,"%ld%06ld",now.tv_sec,(long int)now.tv_usec);
}
+char *
+get_current_timestamp_micro_v2()
+{
+ struct timeval now;
+ gettimeofday(&now, NULL);
+ //sprintf(microSec,"%ld%06ld",now.tv_sec,(long int)now.tv_usec);
+ char *microSec=(char *)calloc(get_width_of_number(now.tv_sec)+7,sizeof(char));
+ sprintf(microSec,"%ld%06ld",now.tv_sec,(long int)now.tv_usec);
+ microSec[strlen(microSec)]='\0';
+
+ return microSec;
+}
long int
get_time_diff(const char *time1, const char *time2)
@@ -268,9 +290,10 @@
for(i = 0; addr_list[i] != NULL; i++)
{
strcpy(ip , inet_ntoa(*addr_list[i]) );
+ ip[strlen(ip)]='\0';
return 0;
}
- return 1;
+ return -1;
}
diff --git a/utility.h b/utility.h
index f90c281..bbca9f6 100644
--- a/utility.h
+++ b/utility.h
@@ -11,4 +11,5 @@
void writeLogg(const char *source_file, const char *function, const int line, const char *format, ...);
struct sockaddr_in * get_ip_from_hostname(char *hostname);
int get_ip_from_hostname_02(char * hostname , char* ip);
+char * get_current_timestamp_micro_v2();
#endif