Dear NS2 Users
I am facing a very serious problem regarding modification to AODV protocol.
I have customized AODV Protocol to work as VANET Beaconing Protocol
according to DSRC Standard.
I also having implemented the duplicity mechansim where each node on
receiving a beacon, stores it for certain time to check for duplicity,
because i want the beacons to travel for multihops.
i have divided the road into regions and there is a linked list for every
region which stores the hashes of certain values taken from every beacon.
i have implemented all this, and when i run my tcl script, it gives
segmentation fault.
basically i get the segmentation fault after adding the following code (This
whole code is included in aodv.cc and aodv is no more a routing protocol. it
is just a VANET Beaconing protocol now which i optimized for my
simulations).
aodv/aodv.cc
recev_beacon()
{
...
...
.....
receive the beacon and calculate the hash from some values
////////// Now Save the Beacons
if (xx<=x && x<(xx+200))
{
bool flag=obj.search(hash2);
if (flag==TRUE)
{
cout<<"Already exists in the linked list"<<endl;
}
else
{
obj.add(hash2, 1);
//ofstream list1;//for saving hash values
//list1.open("linkedlist1.dat", ios::app);
//list1<<hash2<<endl;
}
} // end of if
else if (x>=xx && (xx<=x && x<(xx+400)))
{
obj.add(hash2, 2);
ofstream list2;//for saving hash values
list2.open("linkedlist2.dat", ios::app);
list2<<hash2<<endl;
}
else if (x>=xx && (xx<=x && x<(xx+600)))
{
obj.add(hash2, 3);
}
else if (x>=xx && (xx<=x && x<(xx+1000)))
{
obj.add(hash2, 4);
}
the linked list implemented is given below
//++++++++++++++++++++++++++++++++++++
// Defining Linked Lists
//++++++++++++++++++++++++++++++++++++
struct list1{
unsigned int bid;list1 *link;
};
struct list2{
unsigned int bid;list2 *link;
};
struct list3{
unsigned int bid;list3 *link;
};
struct list4{
unsigned int bid;list4 *link;
};
class list{
private:
int i;
list1 *cur1,*temp1,*start1;
list2 *cur2,*temp2,*start2;
list3 *cur3,*temp3,*start3;
list4 *cur4,*temp4,*start4;
public:
list()
{
start1=NULL;
start2=NULL;
start3=NULL;
start4=NULL;
}
void add(unsigned int hashval, int listno)
{
//cout<<"Enter the list number to add element to";cin>>i;
// check for list no.
if (listno==1)
{
if(start1==NULL)
{
start1=new list1;
cur1=start1;
cur1->bid=hashval;
cur1->link=NULL;
}
else
{
cur1->link=new list1;
cur1=cur1->link;
cur1->bid=hashval;
cur1->link=NULL;
}
}
else if (listno==2)
{
if(start2==NULL)
{
start2=new list2;
cur2=start2;
cur2->bid=hashval;
cur2->link=NULL;
}
else
{
cur2->link=new list2;
cur2=cur2->link;
cur2->bid=hashval;
cur2->link=NULL;
}
}
else if (listno==3)
{
if(start3==NULL)
{
start3=new list3;
cur3=start3;
cur3->bid=hashval;
cur3->link=NULL;
}
else
{
cur3->link=new list3;
cur3=cur3->link;
cur3->bid=hashval;
cur3->link=NULL;
}
}
else if (listno==4)
{
if(start4==NULL)
{
start4=new list4;
cur4=start4;
cur4->bid=hashval;
cur4->link=NULL;
}
else
{
cur4->link=new list4;
cur4=cur4->link;
cur4->bid=hashval;
cur4->link=NULL;
}
}
}
////////////////// searching method
bool search(unsigned int hashval)
{
bool b;
cur1=start1;
while (cur1->link!=NULL)
{
if(cur1->bid==hashval)
b=TRUE;
else
b=FALSE;
cur1=cur1->link;
}
return b;
}
I will be looking for some help as soon as possible.
THanks to all concerned in advance!!
Rasheed