Fresh Rewritten Copy
diff --git a/nlsr_adl.c b/nlsr_adl.c
index 7ebc8af..c04aeda 100644
--- a/nlsr_adl.c
+++ b/nlsr_adl.c
@@ -18,34 +18,31 @@
#include <ccn/hashtb.h>
#include "nlsr.h"
-#include "nlsr_ndn.h"
-#include "utility.h"
+#include "nlsr_npl.h"
#include "nlsr_adl.h"
+#include "utility.h"
-void
-add_adjacent_to_adl(struct name_prefix *np, int face)
+void
+add_nbr_to_adl(struct name_prefix *new_nbr,int face)
{
- printf("\nadd_adjacent_to_adl called\n");
- printf("Neighbor: %s Length: %d Face:%d\n",np->name,np->length,face);
-
- struct ndn_neighbor *nbr=(struct ndn_neighbor *)malloc(sizeof(struct ndn_neighbor));
+ struct ndn_neighbor *nbr=(struct ndn_neighbor *)malloc(sizeof(struct ndn_neighbor )); //free
struct hashtb_enumerator ee;
struct hashtb_enumerator *e = ⅇ
int res;
hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, np->name, np->length, 0);
+ res = hashtb_seek(e, new_nbr->name, new_nbr->length, 0);
if(res == HT_NEW_ENTRY )
{
nbr = e->data;
- nbr->neighbor=(struct name_prefix *)malloc(sizeof( struct name_prefix ));
- nbr->neighbor->name=(char *)malloc(np->length);
- memcpy(nbr->neighbor->name,np->name,np->length);
- nbr->neighbor->length=np->length;
+ nbr->neighbor=(struct name_prefix *)malloc(sizeof( struct name_prefix )); //free
+ nbr->neighbor->name=(char *)malloc(new_nbr->length);
+ memcpy(nbr->neighbor->name,new_nbr->name,new_nbr->length);
+ nbr->neighbor->length=new_nbr->length;
nbr->face=face;
nbr->status=NBR_DOWN;
nbr->info_interest_timed_out=0;
@@ -53,28 +50,28 @@
nbr->metric=10;
nbr->is_lsdb_send_interest_scheduled=0;
-
- char *time_stamp=get_current_timestamp_micro();
- nbr->last_lsdb_version=(char *)malloc(strlen(time_stamp)+1);
+ char *time_stamp=(char *)malloc(20);
+ get_current_timestamp_micro(time_stamp);
+ nbr->last_lsdb_version=(char *)malloc(strlen(time_stamp)+1); //free
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
+ memcpy(nbr->last_info_version,time_stamp,strlen(time_stamp)+1);
+ memset(nbr->last_info_version,'0',strlen(time_stamp));
+ free(time_stamp);
nbr->last_lsdb_requested=0;
-
- //nbr->last_lsdb_requested=(char *)malloc(strlen(time_stamp)+1);
- //memcpy(nbr->last_lsdb_requested,time_stamp,strlen(time_stamp)+1);
- //memset(nbr->last_lsdb_requested,'0',strlen(time_stamp));
-
}
hashtb_end(e);
}
+
void
print_adjacent(struct ndn_neighbor *nbr)
{
- printf("\nprint_adjacent called\n");
+ printf("print_adjacent called\n");
printf("--------Neighbor---------------------------\n");
printf(" Neighbor: %s \n",nbr->neighbor->name);
printf(" Length : %d \n",nbr->neighbor->length);
@@ -82,9 +79,13 @@
printf(" Metric : %d \n",nbr->metric);
printf(" Status : %d \n",nbr->status);
printf(" LSDB Version: %s \n",nbr->last_lsdb_version);
+ printf(" Info Version: %s \n",nbr->last_info_version);
printf(" Info Interest Timed Out : %d \n",nbr->info_interest_timed_out);
printf(" LSDB Synch Interval : %ld \n",nbr->lsdb_synch_interval);
printf(" Las Time LSDB Requested: %ld \n",nbr->last_lsdb_requested);
+ printf(" IS_lsdb_send_interest_scheduled : %d \n",nbr->is_lsdb_send_interest_scheduled);
+
+ printf("\n");
}
@@ -113,11 +114,108 @@
}
+int
+get_adjacent_status(struct name_prefix *nbr)
+{
+ printf("get_adjacent_status called \n");
+
+ int res;
+ int status=-1;
+ 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;
+ status=nnbr->status;
+ }
+ else if(res == HT_NEW_ENTRY)
+ {
+ hashtb_delete(e);
+ }
+
+ hashtb_end(e);
+
+ return status;
+
+}
+
+int
+get_timed_out_number(struct name_prefix *nbr)
+{
+ printf("get_timed_out_number called \n");
+
+ int res,ret=-1;
+ 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;
+ ret=nnbr->info_interest_timed_out;
+ }
+ else if(res == HT_NEW_ENTRY)
+ {
+ hashtb_delete(e);
+ }
+
+ hashtb_end(e);
+
+ return ret;
+}
+
+
+void
+update_adjacent_timed_out_to_adl(struct name_prefix *nbr, int increment)
+{
+ printf("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;
+ nnbr->info_interest_timed_out += increment;
+ }
+ else if(res == HT_NEW_ENTRY)
+ {
+ hashtb_delete(e);
+ }
+
+ hashtb_end(e);
+}
+
+void
+update_adjacent_timed_out_zero_to_adl(struct name_prefix *nbr)
+{
+ printf("update_adjacent_timed_out_zero_to_adl called \n");
+ int time_out_number=get_timed_out_number(nbr);
+ update_adjacent_timed_out_to_adl(nbr,-time_out_number);
+
+}
+
void
update_adjacent_status_to_adl(struct name_prefix *nbr, int status)
{
printf("update_adjacent_status_to_adl called \n");
- //int ret;
+
int res;
struct ndn_neighbor *nnbr;
@@ -166,7 +264,7 @@
if ( nnbr->lsdb_synch_interval!= interval )
{
nnbr->lsdb_synch_interval=interval;
-
+
}
}
else if(res == HT_NEW_ENTRY)
@@ -175,108 +273,32 @@
}
hashtb_end(e);
-
-
}
-void
-update_adjacent_timed_out_to_adl(struct name_prefix *nbr, int increment)
-{
- printf("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;
- nnbr->info_interest_timed_out += increment;
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-}
-
-void
-update_adjacent_timed_out_zero_to_adl(struct name_prefix *nbr)
-{
- printf("update_adjacent_timed_out_zero_to_adl called \n");
- int time_out_number=get_timed_out_number(nbr);
- update_adjacent_timed_out_to_adl(nbr,-time_out_number);
-
-}
-
-
-void
-update_adjacent_lsdb_version_to_adl(struct name_prefix *nbr, char *version)
-{
- printf("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);
-
-}
-
int
-get_timed_out_number(struct name_prefix *nbr)
+no_active_nbr(void)
{
- printf("get_timed_out_number called \n");
-
- int res,ret=-1;
- struct ndn_neighbor *nnbr;
-
+ int i, adl_element;
+ int no_link=0;
+ struct ndn_neighbor *nbr;
struct hashtb_enumerator ee;
struct hashtb_enumerator *e = ⅇ
+ hashtb_start(nlsr->adl, e);
+ adl_element=hashtb_n(nlsr->adl);
- hashtb_start(nlsr->adl, e);
- res = hashtb_seek(e, nbr->name, nbr->length, 0);
-
- if( res == HT_OLD_ENTRY )
+ for(i=0;i<adl_element;i++)
{
- nnbr=e->data;
- ret=nnbr->info_interest_timed_out;
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
+ nbr=e->data;
+ if( nbr->status == 1 )
+ no_link++;
+ hashtb_next(e);
}
hashtb_end(e);
- return ret;
+ return no_link;
- return 0;
}
int
@@ -312,87 +334,10 @@
hashtb_end(e);
if(nbr_count == adl_element)
ret=1;
-
+
return ret;
}
-int
-no_active_nbr(void)
-{
- int i, adl_element;
- int no_link=0;
- struct ndn_neighbor *nbr;
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
- hashtb_start(nlsr->adl, e);
- adl_element=hashtb_n(nlsr->adl);
-
- for(i=0;i<adl_element;i++)
- {
- nbr=e->data;
- if( nbr->status == 1 )
- no_link++;
- hashtb_next(e);
- }
-
- hashtb_end(e);
-
- return no_link;
-
-}
-
-long int
-len_active_nbr_data(void)
-{
- int i, adl_element;
- int no_link=0;
- long int len=0;
- struct ndn_neighbor *nbr;
- struct hashtb_enumerator ee;
- struct hashtb_enumerator *e = ⅇ
- hashtb_start(nlsr->adl, e);
- adl_element=hashtb_n(nlsr->adl);
-
- for(i=0;i<adl_element;i++)
- {
- nbr=e->data;
- if( nbr->status == 1 )
- {
- char *temp_face=(char *)malloc(20);
- char *temp_metric=(char *)malloc(20);
- char *temp_length=(char *)malloc(20);
-
- len+=strlen(nbr->neighbor->name);
-
- memset( temp_face,0,20);
- sprintf(temp_face,"%d",nbr->face);
- len+=strlen(temp_face);
-
- memset( temp_metric,0,20);
- sprintf(temp_face,"%d",nbr->metric);
- len+=strlen(temp_metric);
-
- memset( temp_length,0,20);
- sprintf(temp_length,"%d",nbr->neighbor->length);
- len+=strlen(temp_length);
-
- no_link++;
-
- free(temp_face);
- free(temp_metric);
- free(temp_length);
-
- }
- hashtb_next(e);
- }
-
- hashtb_end(e);
-
- len=len+ no_link*4+1;
-
- return len;
-
-}
void
get_active_nbr_adj_data(struct ccn_charbuf *c)
@@ -412,7 +357,7 @@
{
ccn_charbuf_append_string(c,nbr->neighbor->name);
ccn_charbuf_append_string(c,"|");
-
+
char *temp_length=(char *)malloc(20);
memset(temp_length,0,20);
sprintf(temp_length,"%d",nbr->neighbor->length);
@@ -441,6 +386,104 @@
hashtb_end(e);
}
+long int
+get_nbr_time_diff_lsdb_req(char *nbr)
+{
+ printf("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)
+{
+ printf("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;
+}
+
+long int
+get_lsdb_synch_interval(char *nbr)
+{
+ printf("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)
{
@@ -456,7 +499,7 @@
hashtb_start(nlsr->adl, e);
res = hashtb_seek(e, nbr, strlen(nbr)+1, 0);
-
+
if (res == HT_OLD_ENTRY)
{
nnbr=e->data;
@@ -492,7 +535,64 @@
{
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)
+{
+ printf("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)
+{
+ printf("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)
{
@@ -521,7 +621,7 @@
{
nnbr=e->data;
nnbr->last_lsdb_requested=nnbr->last_lsdb_requested-sec;
-
+
}
else if(res == HT_NEW_ENTRY)
{
@@ -533,161 +633,3 @@
}
-long int
-get_nbr_last_lsdb_requested(char *nbr)
-{
- printf("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;
-}
-
-long int
-get_nbr_time_diff_lsdb_req(char *nbr)
-{
- printf("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_lsdb_synch_interval(char *nbr)
-{
- printf("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;
-
-}
-
-void
-set_is_lsdb_send_interest_scheduled_to_zero(char *nbr)
-{
- printf("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);
-
-}
-
-
-int
-get_adjacent_status(struct name_prefix *nbr)
-{
- printf("get_adjacent_status called \n");
-
- int res;
- int status=-1;
- 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;
- status=nnbr->status;
- }
- else if(res == HT_NEW_ENTRY)
- {
- hashtb_delete(e);
- }
-
- hashtb_end(e);
-
- return status;
-
-}
-