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();          

Reply via email to