Network Simulator v2

 Problems of ns-2.28 installation in ubuntu 11.04



The most commonly faced errors in ns-2 installation in Ubuntu are listed as follows:



1.
ERROR:

"checking system version (for dynamic loading)... ./configure: line
7624: syntax error near unexpected token ')'
./configure: line 7624: ' OSF*)'
tcl8.3.2 configuration failed! Exiting ...




SOLUTION:

tcl_install_path/unix/configure
tcl_install_path/unix/tcl.m4
tk_install_path/unix/configure
tk_install_path/unix/tcl.m4
otcl_install_path/unix/configure

The modification is replacing
system=MP-RAS-`awk ‘{print }’ /etc/.relid’`
With this:
system=MP-RAS-`awk ‘{print }’ /etc/.relid`




2.

ERROR:


otcl.o: In function `OTclDispatch':
 /home/ns/ns-allinone-2.34/otcl/otcl.c:495: undefined reference to `__stack_chk_fail_local'
 otcl.o: In function `Otcl_Init':
 /home/ns/ns-allinone-2.34/otcl/otcl.c:2284: undefined reference to `__stack_chk_fail_local'
 ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
 ld: final link failed: Nonrepresentable section on output
 make: *** [libotcl.so] Error 1
SOLUTION:
This error is because the linker being used is "ld -shared" instead of "gcc -shared". If you edit one line in otcl-1.13/configure, and rerun install, it should work:


--- configure.orig      2009-11-02 12:14:52.556167945 -0800
 +++ configure   2009-11-02 12:17:28.966706099 -0800
 @@ -6301,7 +6301,7 @@
          ;;
      Linux*)
          SHLIB_CFLAGS="-fpic"
 -        SHLIB_LD="ld -shared"
 +        SHLIB_LD="gcc -shared"
          SHLIB_SUFFIX=".so"
          DL_LIBS="-ldl"
          SHLD_FLAGS=""
 
3.
ERROR:

Tcl.cc: In member function ‘void Tcl::eval(char*)’:
Tcl.cc:180:8: warning: deprecated conversion from string constant to ‘char*’
Tcl.cc: In member function ‘int TclObject::traceVar(const char*, TclObject*)’:
Tcl.cc:419:50: warning: deprecated conversion from string constant to ‘char*’
Tcl.cc: In static member function ‘static int TclClass::create_shadow(void*, Tcl_Interp*, int, const char**)’:
Tcl.cc:507:41: warning: deprecated conversion from string constant to ‘char*’
Tcl.cc:509:45: warning: deprecated conversion from string constant to ‘char*’
Tcl.cc: In static member function ‘static int TclClass::dispatch_instvar(void*, Tcl_Interp*, int, const char**)’:
Tcl.cc:564:35: error: invalid conversion from ‘const char*’ to ‘char*’
Tcl.cc:569:72: warning: deprecated conversion from string constant to ‘char*’
Tcl.cc: In member function ‘virtual void TclClass::bind()’:
Tcl.cc:601:44: warning: deprecated conversion from string constant to ‘char*’
Tcl.cc:603:44: warning: deprecated conversion from string constant to ‘char*’
make: *** [Tcl.o] Error 1
tclcl-1.16 make failed! Exiting ...
 
SOLUTION:
Go to file tcl.cc at line no. 564 replace the line following line


- char *p =strchr(localName, '(');
+ char *p =const_cast<char*>( strchr(localName, '('));




4.
Error:
./sctp/sctp.h:630:8: error: extra qualification ‘SctpAgent::’ on member ‘DumpSendBuffer’
trace/trace.cc:185:1: warning: deprecated conversion from string constant to ‘char*’
trace/trace.cc:185:1: warning: deprecated conversion from string constant to ‘char*’
trace/trace.cc:185:1: warning: deprecated conversion from string constant to ‘char*’
trace/trace.cc:185:1: warning: deprecated conversion from string constant to ‘char*’
trace/trace.cc:185:1: warning: deprecated conversion from string constant to ‘char*’
make: *** [trace/trace.o] Error 1
Ns make failed!



SOULTION:
In file sctp/sctp.h in line 630, please change as follows:


- void SctpAgent::DumpSendBuffer();
+void DumpSendBuffer();


5.
ERROR:


./mobile/god.h: At global scope:
./mobile/god.h:88:14: error: extra qualification ‘vector::’ on member ‘operator=’
./mobile/god.h:93:14: error: extra qualification ‘vector::’ on member ‘operator+=’
./mobile/god.h:98:13: error: extra qualification ‘vector::’ on member ‘operator==’
./mobile/god.h:101:13: error: extra qualification ‘vector::’ on member ‘operator!=’
make: *** [src_rtg/sragent.o] Error 1
Ns make failed!



SOLUTION:
The changes to be done to solve this problem is in the file mobile/god.h


In line 88, 93, 98 and 101  remove vector::


6.
ERROR:


queue/red.cc: In member function ‘virtual void REDQueue::trace(TracedVar*)’:
queue/red.cc:874:35: error: invalid conversion from ‘const char*’ to ‘char*’
queue/red.cc:875:36: error: invalid conversion from ‘const char*’ to ‘char*’
queue/red.cc:876:36: error: invalid conversion from ‘const char*’ to ‘char*’
queue/red.cc:877:41: error: invalid conversion from ‘const char*’ to ‘char*’
make: *** [queue/red.o] Error 1
 

SOLUTION:

In queue/red.cc at 874 line do the following changes


-if (((p = strstr(v->name(), "ave")) == NULL) &&
-       ((p = strstr(v->name(), "prob")) == NULL) &&
-        ((p = strstr(v->name(), "curq")) == NULL) &&
-        ((p = strstr(v->name(), "cur_max_p"))==NULL) ) {

+ if (((p = const_cast<char*>(strstr(v->name(), "ave"))) == NULL) &&
+       ((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
+        ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL) &&
 +       ((p = const_cast<char*>(strstr(v->name(), "cur_max_p")))==NULL) ) {


7.

ERROR:


queue/cbq.cc: At global scope:
queue/cbq.cc:112:2: error: ‘CBQueue’ does not name a type
queue/cbq.cc: In member function ‘virtual int CBQueue::insert_class(CBQClass*)’:
queue/cbq.cc:488:5: error: ‘class CBQClass’ has no member named ‘cbq_’
queue/cbq.cc: In constructor ‘CBQClass::CBQClass()’:
queue/cbq.cc:805:24: error: class ‘CBQClass’ does not have any field named ‘cbq_’
queue/cbq.cc: In member function ‘virtual void CBQClass::recv(Packet*, Handler*)’:
queue/cbq.cc:850:6: error: ‘cbq_’ was not declared in this scope
queue/cbq.cc:856:7: error: ‘cbq_’ was not declared in this scope
queue/cbq.cc: In member function ‘void CBQClass::update(Packet*, double)’:
queue/cbq.cc:873:19: error: ‘cbq_’ was not declared in this scope
queue/cbq.cc: In member function ‘int CBQClass::desc_with_demand()’:
queue/cbq.cc:928:16: error: ‘cbq_’ was not declared in this scope
queue/cbq.cc: In member function ‘void CBQClass::newallot(double)’:
queue/cbq.cc:975:20: error: ‘cbq_’ was not declared in this scope
queue/cbq.cc: In member function ‘virtual int CBQClass::command(int, const char* const*)’:
queue/cbq.cc:1002:8: error: ‘cbq_’ was not declared in this scope
make: *** [queue/cbq.o] Error 1



SOLUTION: 
In file queue/cbq.cc

 #define LEAF_LEVEL 1 /* level# for leaves */
 #define POWEROFTWO 16

+class CBQueue;
+
 class CBQClass : public Connector {


8.

ERROR:


./tora/tora_neighbor.h: At global scope:
./tora/tora_neighbor.h:72:9: error: ‘toraAgent’ does not name a type
tora/tora.cc: In member function ‘void toraAgent::rt_resolve(Packet*)’:
tora/tora.cc:238:33: warning: deprecated conversion from string constant to ‘char*’
tora/tora.cc: In member function ‘void toraAgent::recvTORA(Packet*)’:
tora/tora.cc:343:37: warning: reading through null pointer (argument 3)
tora/tora.cc: In member function ‘void toraAgent::recvUPD(Packet*)’:
tora/tora.cc:462:45: warning: deprecated conversion from string constant to ‘char*’
tora/tora.cc: In member function ‘void toraAgent::recvCLR(Packet*)’:
tora/tora.cc:648:50: warning: deprecated conversion from string constant to ‘char*’
make: *** [tora/tora.o] Error 1



SOLUTION:
In /tora/tora_neighbor.h


 #ifndef __tora_neighbor_h__
 #define __tora_neighbor_h__

+class toraAgent;
+
 enum LinkStatus {
  LINK_UP = 0x0001, // upstream
  LINK_DN = 0x0002, // downstream


9.

ERROR:
dsr/dsragent.cc:1361:46: error: ‘XmitFailureCallback’ was not declared in this scope
dsr/dsragent.cc:1362:11: error: ‘XmitFlowFailureCallback’ was not declared in this scope
dsr/dsragent.cc:1379:31: error: ‘XmitFailureCallback’ was not declared in this scope



SOLUTION:
In file dsr/dsragent.cc:


@ -188,6 +188,9 @@

 */

+void XmitFlowFailureCallback(Packet *pkt, void *data);
+void XmitFailureCallback(Packet *pkt, void *data);
+

10.
ERROR:


diffusion/diffusion.cc: In member function ‘void DiffusionAgent::MACprepare(Packet*, nsaddr_t, int, bool)’:
diffusion/diffusion.cc:404:26: error: ‘XmitFailedCallback’ was not declared in this scope
make: *** [diffusion/diffusion.o] Error 1



SOLUTION:
In file diffusion/diffusion.cc


@@ -58,6 +58,8 @@
 #include "god.h"
 #include "routing_table.h"

+void XmitFailedCallback(Packet *pkt, void *data);
+
 char *MsgStr[]= {"", "INTEREST", "DATA", "DATA_READY", "DATA_REQUEST",
   "POS_REINFORCE", "NEG_REINFORCE", "INHIBIT", "TX_FAILED",
   "DATA_STOP" };


11. 
ERROR:


diffusion/omni_mcast.cc: In member function ‘void OmniMcastAgent::MACprepare(Packet*, nsaddr_t, unsigned int, bool)’:
diffusion/omni_mcast.cc:367:26: error: ‘OmniMcastXmitFailedCallback’ was not declared in this scope
make: *** [diffusion/omni_mcast.o] Error 1


SOLUTION:
In diffusion/omni_mcast.cc

@ -59,6 +59,8 @@
 #include "dsr/path.h"
 #include "god.h"
 
+void OmniMcastXmitFailedCallback(Packet *pkt, void *data);
+
 static class OmniMcastClass : public TclClass {





12.
ERROR:


queue/rio.cc: In member function ‘virtual void RIOQueue::trace(TracedVar*)’:
queue/rio.cc:565:35: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rio.cc:566:38: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rio.cc:567:39: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rio.cc:568:36: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rio.cc:569:39: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rio.cc:570:40: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rio.cc:571:36: error: invalid conversion from ‘const char*’ to ‘char*’
make: *** [queue/rio.o] Error 1
Ns make failed!
 

SOLUTION:
Do the following changes in queue/rio.cc:565


-if (((p = strstr(v->name(), "ave")) == NULL) &&
-        ((p = strstr(v->name(), "in_ave")) == NULL) &&
-        ((p = strstr(v->name(), "out_ave")) == NULL) &&
-        ((p = strstr(v->name(), "prob")) == NULL) &&
-        ((p = strstr(v->name(), "in_prob")) == NULL) &&
-        ((p = strstr(v->name(), "out_prob")) == NULL) &&
-        ((p = strstr(v->name(), "curq")) == NULL)) { 



+if (((p = const_cast<char*>(strstr(v->name(), "ave"))) == NULL) &&
+       ((p = const_cast<char*>(strstr(v->name(), "in_ave"))) == NULL) &&
+        ((p = const_cast<char*>(strstr(v->name(), "out_ave"))) == NULL) &&

+       ((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
+        ((p = const_cast<char*>(strstr(v->name(), "in_prob"))) == NULL) &&
+        ((p = const_cast<char*>(strstr(v->name(), "out_prob"))) == NULL) &&
+        ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL)) {



13.
ERROR:

tcp/tcp-sack-rh.cc: At global scope:
tcp/tcp-sack-rh.cc:68:15: error: extra qualification ‘SackRHTcpAgent::’ on member ‘newack’
make: *** [tcp/tcp-sack-rh.o] Error 1




SOLUTION:

The following changes in tcp/tcp-sack-rh.cc will work fine.


  virtual void estadjust();
  virtual void rhclear();
  virtual void computefack();
- virtual void SackRHTcpAgent::newack(Packet* pkt);
+ virtual void newack(Packet* pkt);
  protected:
  int fack_;           /* the FACK state variable  */




14.
ERROR:


queue/pi.cc: In member function ‘virtual void PIQueue::trace(TracedVar*)’:
queue/pi.cc:316:36: error: invalid conversion from ‘const char*’ to ‘char*’
queue/pi.cc:317:36: error: invalid conversion from ‘const char*’ to ‘char*’
make: *** [queue/pi.o] Error 1



SOLUTION:
Do the changes in queue/pi.cc at 316


-    if (((p = strstr(v->name(), "prob")) == NULL) &&
-        ((p = strstr(v->name(), "curq")) == NULL)) {

+    if (((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
+        ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL)) {


15.
ERROR:


queue/vq.cc: In member function ‘virtual void Vq::trace(TracedVar*)’:
queue/vq.cc:333:35: error: invalid conversion from ‘const char*’ to ‘char*’
make: *** [queue/vq.o] Error 1




SOULTION:

-     if ((p = strstr(v->name(), "curq")) == NULL) {
+      if ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL) {



16. 

ERROR:


queue/rem.cc: In member function ‘virtual void REMQueue::trace(TracedVar*)’:
queue/rem.cc:336:35: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rem.cc:337:36: error: invalid conversion from ‘const char*’ to ‘char*’
queue/rem.cc:338:36: error: invalid conversion from ‘const char*’ to ‘char*’
make: *** [queue/rem.o] Error 1


SOLUTION:

In queue/rem.cc:336 change as follows:


-    if (((p =strstr(v->name(), "ave")) == NULL) &&
-        ((p = strstr(v->name(), "prob")) == NULL) &&
-        ((p = strstr(v->name(), "curq")) == NULL)) {

+   if (((p =const_cast<char*>(strstr(v->name(), "ave"))) == NULL) &&
+       ((p =
const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
+       ((p =
const_cast<char*>(strstr(v->name(), "curq"))) == NULL)) {




 17. 
ERROR:


queue/gk.cc: In member function ‘virtual void GK::trace(TracedVar*)’:
queue/gk.cc:207:35: error: invalid conversion from ‘const char*’ to ‘char*’
make: *** [queue/gk.o] Error 1

SOLUTION:

Do the changes in queue/gk.cc:207


-    if ((p = strstr(v->name(), "curq")) == NULL) {
+  if ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL) {


18.

ERROR:


pgm/pgm-agent.cc: At global scope:
pgm/pgm-agent.cc:278:8: error: extra qualification ‘PgmAgent::’ on member ‘trace_event’
pgm/pgm-agent.cc: In member function ‘void PgmAgent::handle_rdata(Packet*)’:
pgm/pgm-agent.cc:578:30: warning: deprecated conversion from string constant to ‘char*’
pgm/pgm-agent.cc: In member function ‘void PgmAgent::handle_nak(Packet*)’:
pgm/pgm-agent.cc:727:43: warning: deprecated conversion from string constant to ‘char*’
pgm/pgm-agent.cc: In member function ‘void PgmAgent::handle_ncf(Packet*)’:
pgm/pgm-agent.cc:824:28: warning: deprecated conversion from string constant to ‘char*’
make: *** [pgm/pgm-agent.o] Error 1


SOLUTION:


Do as follows in pgm/pgm-agent.cc:


@278
-  void PgmAgent::trace_event(char *evType, double evTime);
+  void trace_event(char *evType, double evTime);


19.
ERROR:


pgm/pgm-sender.cc: At global scope:
pgm/pgm-sender.cc:160:8: error: extra qualification ‘PgmSender::’ on member ‘trace_event’
pgm/pgm-sender.cc: In member function ‘virtual void PgmSender::handle_nak(Packet*)’:
pgm/pgm-sender.cc:472:67: warning: deprecated conversion from string constant to ‘char*’
pgm/pgm-sender.cc: In member function ‘virtual void PgmSender::send_rdata(RdataItem*)’:
pgm/pgm-sender.cc:619:52: warning: deprecated conversion from string constant to ‘char*’
make: *** [pgm/pgm-sender.o] Error 1


SOLUTION:


In  pgm/pgm-sender.cc at  619


-  void PgmSender::trace_event(char *evType, nsaddr_t daddr, double evTime); 
+  void trace_event(char *evType, nsaddr_t daddr, double evTime);


20.

ERROR:



pgm/pgm-receiver.cc: At global scope:
pgm/pgm-receiver.cc:157:8: error: extra qualification ‘PgmReceiver::’ on member ‘trace_event’
pgm/pgm-receiver.cc: In member function ‘void PgmReceiver::generate_Nak(int)’:
pgm/pgm-receiver.cc:589:34: warning: deprecated conversion from string constant to ‘char*’
make: *** [pgm/pgm-receiver.o] Error 1


SOLUTION:

Go to file pgm/pgm-receiver.cc in line 157

-  void PgmReceiver::trace_event(char *evType, double evTime);
+void trace_event(char *evType, double evTime);


 



21.
ERROR:


./diffusion3/filter_core/filter_core.hh: At global scope:
./diffusion3/filter_core/filter_core.hh:111:39: error: expected ‘)’ before ‘*’ token
make: *** [diffusion3/ns/diffagent.o] Error 1



SOLUTION:


edit ns-2.27/diffusion3/filter_core/filter_core.hh

class DiffusionCoreAgent;
class HashEntry;
class NeighborEntry;
+class DiffRoutingAgent;

typedef list NeighborList;
typedef list HashList;



22.
ERROR:
webcache/webtraf.cc: In member function ‘virtual int WebTrafPool::command(int, const char* const*)’:
webcache/webtraf.cc:415: error: ISO C++ forbids initialization in array new
make: *** [webcache/webtraf.o] Error 1



Solution

In  webcache/webtraf.cc  at line number 362, modify as follows:


     return (TCL_OK);
    } else if (strcmp(argv[1], "set-num-server") == 0) {
     nServer_ = atoi(argv[2]);
-    if (server_ != NULL) 
-     delete []server_;
-    server_ = new WebServer[nServer_](this);
-
+    if (server_ != NULL)
+     free(server_);
+    server_ = (WebServer*)malloc(nServer_ * sizeof(WebServer));
+    for (int i = 0; i < nServer_; i++) {
+     server_[i] = WebServer(this);
+    }
     return (TCL_OK);
    } else if (strcmp(argv[1], "set-num-client") == 0) {