Exclude in Interest Sending
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index f3b4a0e..84a0219 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -145,16 +145,25 @@
if(!strcmp((char *)comp_ptr1,"lsdb"))
{
- //send_hello_response_content(selfp,info);
+ process_incoming_interest_lsdb(selfp,info);
}
- else if(!strcmp((char *)comp_ptr1,"lsa"))
- {
- //process_iHaveUpdate_incoming_interest(selfp,info);
- }
- else if(!strcmp((char *)comp_ptr1,"lsaupdate"))
- {
- //process_sendlsdb_incoming_interest(selfp,info);
- }
+
+
+}
+
+
+void
+process_incoming_interest_lsdb(struct ccn_closure *selfp, struct ccn_upcall_info *info)
+{
+ printf("process_incoming_interest_lsdb called \n");
+
+ int i,m;
+ struct upcalldata *data=selfp->data;
+
+ m=data->n_excl;
+ for(i=0; i<m; i++)
+ printf("%s ",ccn_charbuf_as_string(data->excl[i]));
+
}
@@ -199,7 +208,27 @@
ccn_name_append_str(name,lsdb_str);
ccn_name_append_str(name,rnumstr);
- res=ccn_express_interest(nlsr->ccn,name,&(nlsr->in_content),NULL);
+ /* adding filter */
+ unsigned char bf_all[9] = { 3, 1, 'A', 0, 0, 0, 0, 0, 0xFF };
+ struct ccn_charbuf *templ = NULL;
+ templ = ccn_charbuf_create();
+ ccn_charbuf_append_tt(templ, CCN_DTAG_Interest, CCN_DTAG);
+ ccn_charbuf_append_tt(templ, CCN_DTAG_Name, CCN_DTAG);
+ ccn_charbuf_append_closer(templ); /* </Name> */
+ ccn_charbuf_append_tt(templ, CCN_DTAG_Exclude, CCN_DTAG);
+
+ ccn_charbuf_append_tt(templ, CCN_DTAG_Bloom, CCN_DTAG);
+ ccn_charbuf_append_tt(templ, sizeof(bf_all), CCN_BLOB);
+ ccn_charbuf_append(templ, bf_all, sizeof(bf_all));
+ ccn_charbuf_append_closer(templ);
+
+
+ ccn_charbuf_append_closer(templ); /* </Exclude> */
+ //answer_passive(templ);
+ ccn_charbuf_append_closer(templ); /* </Interest> */
+
+
+ res=ccn_express_interest(nlsr->ccn,name,&(nlsr->in_content),templ);
if ( res >= 0 )
printf("Interest sending Successfull .... \n");
ccn_charbuf_destroy(&name);
diff --git a/nlsr_ndn.h b/nlsr_ndn.h
index 24e1cd1..be2a8f6 100644
--- a/nlsr_ndn.h
+++ b/nlsr_ndn.h
@@ -1,10 +1,20 @@
#ifndef _NLSR_NDN_H_
#define _NLSR_NDN_H_
+struct upcalldata {
+ int magic; /* 856372 */
+ long *counter;
+ unsigned warn;
+ int flags;
+ int n_excl;
+ struct ccn_charbuf **excl; /* Array of n_excl items */
+};
+
int send_lsdb_interest(struct ccn_schedule *sched, void *clienth, struct ccn_scheduled_event *ev, int flags);
enum ccn_upcall_res incoming_interest(struct ccn_closure *selfp, enum ccn_upcall_kind kind, struct ccn_upcall_info *info);
void process_incoming_interest(struct ccn_closure *selfp, struct ccn_upcall_info *info);
+void process_incoming_interest_lsdb(struct ccn_closure *selfp, struct ccn_upcall_info *info);
enum ccn_upcall_res incoming_content(struct ccn_closure* selfp, enum ccn_upcall_kind kind, struct ccn_upcall_info* info);