Hi all I want to attach a udp agent to a node through my agent .c code. I used from following code. But I have a problem. I have two segment code that are similar completely. but when I run it second piece of code cause Segmentation Fault! error. this error is from shown line of code. Can anybody help me, Please? It's so Important ans urgent for me!
%%%%%%%%%%%%%% Tcl& tcl = Tcl::instance(); char * Source; char * Destination; char * Name; //get Source & Dest node ID & Name Name=const_cast<char *>(name()); sprintf(tcl.buffer(), "%s set sourcenode_id", Name); tcl.eval(); assert(*tcl.result()); int sourcenode_id = atoi(tcl.result()); Source=const_cast<char *>(tcl.result()); Node *SourceNode=Node::get_node_by_address(sourcenode_id); char *SAddr=const_cast<char *>(SourceNode->name()); // //runs successfully cout << "Get SADDR :" << SAddr << "\n" ; //// Dest Name=const_cast<char *>(name()); sprintf(tcl.buffer(), "%s set destnode_id", Name); tcl.eval(); assert(*tcl.result()); int destnode_id = atoi(tcl.result()); Destination=const_cast<char *>(tcl.result()); // I checked it, I have the node ID now Node *DestNode=Node::get_node_by_address(destnode_id); // This line runs successfully cout << "Get Dest Node \n "; char *DAddr=const_cast<char *>(DestNode->name()); //this line causes ERROR cout << "Get DADDR :" << DAddr << "\n" ; // from now code is true and runs successfully //get Simulator instance name tcl.evalf("Simulator instance"); char simName[32]; strncpy(simName, tcl.result(), 32); cout << "Get Simulator instance \n" ; //UDP Source tcl.eval("set udp1 [new Agent/UDP]"); assert(*tcl.result()); char *Udp_Agent=const_cast<char *>(tcl.result()); cout << Udp_Agent; printf("%s attach-agent %s %s \n",simName,SAddr,Udp_Agent); sprintf(tcl.buffer(), "%s attach-agent %s %s",simName,SAddr,Udp_Agent); tcl.eval(); //UDP Sink tcl.eval("set null [new Agent/Null]"); assert(*tcl.result()); char *Null_Agent=const_cast<char *>(tcl.result()); printf("%s attach-agent %s %s",simName,DAddr,Null_Agent); sprintf(tcl.buffer(), "%s attach-agent %s %s",simName,DAddr,Null_Agent); tcl.eval(); //connect source to sink printf("%s connect %s %s",simName,Udp_Agent,Null_Agent); sprintf(tcl.buffer(), "%s connect %s %s",simName,Udp_Agent,Null_Agent); tcl.eval(); cout << "Connect UDP to SINK \n" ; //CBR App. tcl.eval("set cbr1 [new Application/Traffic/CBR]"); assert(*tcl.result()); char *CBR=const_cast<char *>(tcl.result()); sprintf(tcl.buffer(), "%s attach-agent %s ",CBR,Udp_Agent); tcl.eval(); sprintf(tcl.buffer(), "%s set PacketSize_ 1000",CBR); tcl.eval(); sprintf(tcl.buffer(), "%s set rate_ 0.01Mb",CBR); tcl.eval(); cout << "before CBR start \n"; sprintf(tcl.buffer(), "%s at-now \"%s start\" ",simName,CBR); tcl.eval();