void flowlet(struct Packet pkt) { pkt.new_hop = hash6(pkt.src_port, pkt.dst_port, pkt.src_addr, pkt.dst_addr, pkt.protocol, pkt.arrival_time); pkt.last_time_idx = hash5(pkt.src_port, pkt.dst_port, pkt.src_addr, pkt.dst_addr, pkt.protocol) % NUM_FLOWLETS; pkt.saved_hop_idx = hash5(pkt.src_port, pkt.dst_port, pkt.src_addr, pkt.dst_addr, pkt.protocol) % NUM_FLOWLETS; if (pkt.arrival_time - last_time[pkt.last_time_idx] > FLOWLET_THRESHOLD) { saved_hop[pkt.saved_hop_idx] = pkt.new_hop; } last_time[pkt.last_time_idx] = pkt.arrival_time; pkt.next_hop = saved_hop[pkt.saved_hop_idx]; }
BIGNUM bloom_hash (bloom * bloom, char *str, int i, int length) { BIGNUM ret = 0; ret = (BIGNUM) hash5 (str, seed[i], length) % (BIGNUM) bloom->stat.elements; return ret; }
int main() { int n,m,i,j,q,num,flag=0,falsecases=0; float probfalse; unsigned int x,y,z; scanf("%d",&m); n=14.43*m+1; for(i=0;i<m;i++) { scanf("%d",&numarr[i]); x=murmurhash3_32(numarr[i],n); y=fnv1(numarr[i],n); z=jenkins_hash(numarr[i],n); bitarr[x]=1; bitarr[y]=1; bitarr[z]=1; bitarr[hash4(x,y,z)]=1; bitarr[hash5(x,y,z)]=1; bitarr[hash6(x,y,z)]=1; bitarr[hash7(x,y,z)]=1; bitarr[hash8(x,y,z)]=1; bitarr[hash9(x,y,z)]=1; bitarr[hash10(x,y,z)]=1; } //printf("Enter no. of queries: "); scanf("%d",&q); for(i=0;i<q;i++) { //printf("Enter value to check: "); scanf("%d",&num); x=murmurhash3_32(num,n); y=fnv1(num,n); z=jenkins_hash(num,n); if(bitarr[x]==1 && bitarr[y]==1 && bitarr[z]==1 && bitarr[hash4(x,y,z)]==1 && bitarr[hash5(x,y,z)]==1 && bitarr[hash6(x,y,z)]==1 && bitarr[hash7(x,y,z)]==1 && bitarr[hash8(x,y,z)]==1 && bitarr[hash9(x,y,z)]==1 && bitarr[hash10(x,y,z)]==1) found++; else notfound++; //printf("Element not in set\n"); } printf("NUMBER OF FLASE OUTPUTS: %d\n",falsecases); probfalse=(falsecases*100)/q; printf("PROBABILITY OF FLASE OUTPUTS: %.2f %\n",probfalse); printf("No. actually there: %d\nNo. actually not there: %d\n",found,notfound); return 0; }