Merge branch 'master' of github.com:NDN-Routing/NLSR0.0
diff --git a/macbook.conf b/macbook.conf
index 52e84f7..6923325 100644
--- a/macbook.conf
+++ b/macbook.conf
@@ -20,6 +20,6 @@
tunnel-type udp
topo-prefix /ndn/routing/nlsr/
-slice-prefix /ndn/routing/nlsr/LSA
+slice-prefix /ndn/routing/nlsr/test
logdir /Users/akmhoque/NLSR2.0
diff --git a/nlsr.c b/nlsr.c
index a498264..2efd619 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -714,10 +714,6 @@
{
process_command_ccnname(remainder);
}
- /*else if(!strcmp(cmd_type,"lsdb-synch-interval") )
- {
- process_command_lsdb_synch_interval(remainder);
- }*/
else if(!strcmp(cmd_type,"interest-retry") )
{
process_command_interest_retry(remainder);
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index 258c954..c0e5db8 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -158,9 +158,6 @@
if ( nlsr->detailed_logging )
writeLogg(__FILE__,__FUNCTION__,__LINE__,"LSA Identifier: %s Length: %d\n",lsaId->name,lsaId->length-1);
- //printf("LSA Identifier: %s Length: %d\n",lsaId->name,lsaId->length-1);
-
-
}
int
@@ -301,23 +298,47 @@
int res;
struct ccn_charbuf *data=ccn_charbuf_create();
struct ccn_charbuf *name=ccn_charbuf_create();
- struct ccn_signing_params sp=CCN_SIGNING_PARAMS_INIT;
+
res=ccn_charbuf_append(name, info->interest_ccnb + info->pi->offset[CCN_PI_B_Name],info->pi->offset[CCN_PI_E_Name] - info->pi->offset[CCN_PI_B_Name]);
if (res >= 0)
{
- sp.template_ccnb=ccn_charbuf_create();
- ccn_charbuf_append_tt(sp.template_ccnb,CCN_DTAG_SignedInfo, CCN_DTAG);
- ccnb_tagged_putf(sp.template_ccnb, CCN_DTAG_FreshnessSeconds, "%ld", 10);
- sp.sp_flags |= CCN_SP_TEMPL_FRESHNESS;
+
+
+ struct ccn_charbuf *pubid = ccn_charbuf_create();
+ struct ccn_charbuf *pubkey = ccn_charbuf_create();
+
+ //pubid is the digest_result pubkey is result
+ ccn_get_public_key(nlsr->ccn, NULL, pubid, pubkey);
+
+
+
+ struct ccn_signing_params sp=CCN_SIGNING_PARAMS_INIT;
+ sp.template_ccnb=ccn_charbuf_create();
+ ccn_charbuf_append_tt(sp.template_ccnb, CCN_DTAG_SignedInfo, CCN_DTAG);
+ ccn_charbuf_append_tt(sp.template_ccnb, CCN_DTAG_KeyLocator, CCN_DTAG);
+ ccn_charbuf_append_tt(sp.template_ccnb, CCN_DTAG_KeyName, CCN_DTAG);
+ ccn_charbuf_append_charbuf(sp.template_ccnb, name);
ccn_charbuf_append_closer(sp.template_ccnb);
+ ccn_charbuf_append_closer(sp.template_ccnb);
+ ccn_charbuf_append_closer(sp.template_ccnb);
+
+ sp.sp_flags |= CCN_SP_TEMPL_KEY_LOCATOR;
+ sp.sp_flags |= CCN_SP_FINAL_BLOCK;
+ sp.type = CCN_CONTENT_KEY;
+ sp.freshness = 10;
+
+ //ccn_charbuf_append_tt(sp.template_ccnb,CCN_DTAG_SignedInfo, CCN_DTAG);
+ //ccnb_tagged_putf(sp.template_ccnb, CCN_DTAG_FreshnessSeconds, "%ld", 10);
+ //sp.sp_flags |= CCN_SP_TEMPL_FRESHNESS;
+ //ccn_charbuf_append_closer(sp.template_ccnb);
char *raw_data=(char *)malloc(20);
memset(raw_data,0,20);
sprintf(raw_data,"%s", nlsr->lsdb->lsdb_version);
- res= ccn_sign_content(nlsr->ccn, data, name, &sp, raw_data,strlen(raw_data));
+ res= ccn_sign_content(nlsr->ccn, data, name, &sp, pubkey->buf,pubkey->length);
if(res >= 0)
{
if ( nlsr->debugging )
@@ -357,6 +378,8 @@
free(nbr);
free(raw_data);
ccn_charbuf_destroy(&sp.template_ccnb);
+ ccn_charbuf_destroy(&pubid);
+ ccn_charbuf_destroy(&pubkey);
}
ccn_charbuf_destroy(&data);
@@ -405,15 +428,14 @@
struct ccn_charbuf*ito;
ito=ccn_charbuf_create();
ccn_uri_append(ito,info->interest_ccnb,info->pi->offset[CCN_PI_E],0);
-
if ( nlsr->debugging )
printf("%s\n",ccn_charbuf_as_string(ito));
if ( nlsr->detailed_logging )
writeLogg(__FILE__,__FUNCTION__,__LINE__,"%s\n",ccn_charbuf_as_string(ito));
-
- //printf("%s\n",ccn_charbuf_as_string(ito));
ccn_charbuf_destroy(&ito);
+
+
process_incoming_timed_out_interest(selfp,info);
break;
@@ -484,17 +506,23 @@
writeLogg(__FILE__,__FUNCTION__,__LINE__,"Info Content Received For Neighbor: %s Length:%d\n",nbr->name,nbr->length);
- //const unsigned char *ptr;
- //size_t length;
- //ccn_content_get_value(info->content_ccnb, info->pco->offset[CCN_PCO_E_Content]-info->pco->offset[CCN_PCO_B_Content], info->pco, &ptr, &length);
+ 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 *key_uri = ccn_charbuf_create();
+ ccn_uri_append(key_uri, key_name->buf, key_name->length, 1);
- //long int interval=atoi((char *)ptr);
+ if(nlsr->debugging)
+ printf("Key Name: %s\n",ccn_charbuf_as_string(key_uri));
+
+ ccn_charbuf_destroy(&key_uri);
+ ccn_charbuf_destroy(&key_name);
+ }
update_adjacent_timed_out_zero_to_adl(nbr);
update_adjacent_status_to_adl(nbr,NBR_ACTIVE);
- //update_lsdb_synch_interval_to_adl(nbr,interval);
print_adjacent_from_adl();
@@ -722,5 +750,28 @@
}
ccn_charbuf_destroy(&name);
free(int_name);
+}
+int
+contain_key_name(const unsigned char *ccnb, struct ccn_parsed_ContentObject *pco)
+{
+ if (pco->offset[CCN_PCO_B_KeyLocator] == pco->offset[CCN_PCO_E_KeyLocator])
+ return -1;
+
+ struct ccn_buf_decoder decoder;
+ struct ccn_buf_decoder *d;
+ d = ccn_buf_decoder_start(&decoder, ccnb + pco->offset[CCN_PCO_B_Key_Certificate_KeyName], pco->offset[CCN_PCO_E_Key_Certificate_KeyName] - pco->offset[CCN_PCO_B_Key_Certificate_KeyName]);
+ if (ccn_buf_match_dtag(d, CCN_DTAG_KeyName))
+ return 1;
+
+ return -1;
+}
+
+struct ccn_charbuf *
+get_key_name(const unsigned char *ccnb, struct ccn_parsed_ContentObject *pco)
+{
+ struct ccn_charbuf *key_name = ccn_charbuf_create();
+ ccn_charbuf_append(key_name, ccnb + pco->offset[CCN_PCO_B_KeyName_Name], pco->offset[CCN_PCO_E_KeyName_Name] - pco->offset[CCN_PCO_B_KeyName_Name]);
+
+ return key_name;
}
diff --git a/nlsr_ndn.h b/nlsr_ndn.h
index 1e34284..b084b8c 100644
--- a/nlsr_ndn.h
+++ b/nlsr_ndn.h
@@ -21,5 +21,8 @@
int send_info_interest(struct ccn_schedule *sched, void *clienth, struct ccn_scheduled_event *ev, int flags);
void send_info_interest_to_neighbor(struct name_prefix *nbr);
+struct ccn_charbuf * get_key_name(const unsigned char *ccnb, struct ccn_parsed_ContentObject *pco);
+int contain_key_name(const unsigned char *ccnb, struct ccn_parsed_ContentObject *pco);
+
#endif
diff --git a/nlsr_sync.c b/nlsr_sync.c
index 7ae108a..789a0c5 100644
--- a/nlsr_sync.c
+++ b/nlsr_sync.c
@@ -138,30 +138,6 @@
}
-int
-get_lsa_position(struct ccn_charbuf * ccnb, struct ccn_indexbuf *comps)
-{
-
-
-
- int res,i;
- int lsa_position=0;
- int name_comps=(int)comps->n;
-
- for(i=0;i<name_comps;i++)
- {
- res=ccn_name_comp_strcmp(ccnb->buf,comps,i,"LSA");
- if( res == 0)
- {
- lsa_position=i;
- break;
- }
- }
-
- return lsa_position;
-
-}
-
void
get_name_part(struct name_prefix *name_part,struct ccn_charbuf * interest_ccnb, struct ccn_indexbuf *interest_comps, int offset)
{
@@ -460,8 +436,6 @@
void
process_content_from_sync(struct ccn_charbuf *content_name, struct ccn_indexbuf *components)
{
- //int lsa_position;
- //int res;
size_t comp_size;
char *lst;
char *lsid;
@@ -487,18 +461,8 @@
struct name_prefix *orig_router=(struct name_prefix *)malloc(sizeof(struct name_prefix));
- struct ccn_indexbuf cid={0};
- struct ccn_indexbuf *temp_components=&cid;
- struct ccn_charbuf *name=ccn_charbuf_create();
- ccn_name_from_uri(name,nlsr->slice_prefix);
- ccn_name_split (name, temp_components);
- //lsa_position=temp_components->n-2;
- ccn_charbuf_destroy(&name);
-
- //res=ccn_name_comp_get(content_name->buf, components,lsa_position+1,&lst, &comp_size);
- ccn_name_comp_get(content_name->buf, components,components->n-2-1,&second_last_comp, &comp_size);
- //ls_type=atoi((char *)lst);
+ ccn_name_comp_get(content_name->buf, components,components->n-1-2,&second_last_comp, &comp_size);
if (nlsr->debugging)
printf("2nd Last Component: %s \n",second_last_comp);
@@ -520,7 +484,7 @@
int lsa_life_time=get_time_diff(time_stamp,(char *)origtime);
- if ( (strcmp((char *)orig_router,nlsr->router_name) == 0 && lsa_life_time < nlsr->lsa_refresh_time) || (strcmp((char *)orig_router,nlsr->router_name) != 0 && lsa_life_time < nlsr->router_dead_interval) )
+ if ( (strcmp(orig_router->name,nlsr->router_name) == 0 && lsa_life_time < nlsr->lsa_refresh_time) || (strcmp(orig_router->name,nlsr->router_name) != 0 && lsa_life_time < nlsr->router_dead_interval) )
{
int is_new_name_lsa=check_is_new_name_lsa(orig_router->name,(char *)lst,(char *)lsid,(char *)origtime);
if ( is_new_name_lsa == 1 )
@@ -562,7 +526,7 @@
printf("Orig Router: %s Ls Type: %d Orig Time: %s\n",orig_router->name,ls_type,origtime);
int lsa_life_time=get_time_diff(time_stamp,(char *)origtime);
- if ( (strcmp((char *)orig_router,nlsr->router_name) == 0 && lsa_life_time < nlsr->lsa_refresh_time) || (strcmp((char *)orig_router,nlsr->router_name) != 0 && lsa_life_time < nlsr->router_dead_interval) )
+ if ( (strcmp(orig_router->name,nlsr->router_name) == 0 && lsa_life_time < nlsr->lsa_refresh_time) || (strcmp(orig_router->name,nlsr->router_name) != 0 && lsa_life_time < nlsr->router_dead_interval) )
{
int is_new_adj_lsa=check_is_new_adj_lsa(orig_router->name,(char *)lst,(char *)origtime);
if ( is_new_adj_lsa == 1 )
@@ -600,7 +564,7 @@
printf("Orig Router: %s Ls Type: %d Orig Time: %s\n",orig_router->name,ls_type,origtime);
int lsa_life_time=get_time_diff(time_stamp,(char *)origtime);
- if ( (strcmp((char *)orig_router,nlsr->router_name) == 0 && lsa_life_time < nlsr->lsa_refresh_time) || (strcmp((char *)orig_router,nlsr->router_name) != 0 && lsa_life_time < nlsr->router_dead_interval) )
+ if ( (strcmp(orig_router->name,nlsr->router_name) == 0 && lsa_life_time < nlsr->lsa_refresh_time) || (strcmp(orig_router->name,nlsr->router_name) != 0 && lsa_life_time < nlsr->router_dead_interval) )
{
int is_new_cor_lsa=check_is_new_cor_lsa(orig_router->name,(char *)lst,(char *)origtime);
if ( is_new_cor_lsa == 1 )
@@ -631,8 +595,8 @@
}
}
- //if (content_data != NULL)
- //free(content_data);
+ free(orig_router->name);
+ free(orig_router);
ccn_charbuf_destroy(&uri);
//01/31/2013
free(time_stamp);