Installation guide of NS-2.27 on Linux 32 bits (by David Marín Sánchez) This guide has been tested with NS-2.27 on Ubuntu 10.04 (32 bits) Step 1) Dowload NS-2.27: ftp://ftp.isi.edu/nsnam/ns-allinone-2.27.tar.gz Step 2) Dowload ns227-gcc34.patch: http://sertel.upc.es/~maguilar/ns2_code_victor/ns227-gcc34.patch Step 3) Install the necessary libraries: sudo apt-get install build-essential sudo apt-get install libX11-dev sudo apt-get install xorg-dev Step 4) Unpack tar.gz NS-2.27 file: cd tar -xvf ns-allinone-2.27.tar.gz mv ns-allinone-2.27 /usr/src cd /usr/src Step 5) Apply ns227-gcc34.patch: cd /usr/src patch -p0 < /ns227-gcc34.patch Step 5) Install NS-2.27: cd /usr/src/ns-allinone-2.27 ./install Step 6) Solve the errors that appear in the installation process (you should replace the lines with a "-" for the lines with a "+" of the respective files) and repeat step 5: Error1: checking system version (for dynamic loading)... ./configure: 1: Syntax error: Unterminated quoted string tcl8.3.2 configuration failed! Exiting ... patch file: ns-allinone-2.27/tcl8.4.5/unix/configure - system=MP-RAS-`awk '{print }' /etc/.relid'` + system=MP-RAS-`awk '{print }' /etc/.relid` Error2: checking system version (for dynamic loading)... ./configure: 1: Syntax error: Unterminated quoted string tk8.3.2 configuration failed! Exiting ... patch file: ns-allinone-2.27/tk8.4.5/unix/configure - system=MP-RAS-`awk '{print }' /etc/.relid'` + system=MP-RAS-`awk '{print }' /etc/.relid` Error3: checking system version (for dynamic loading)... ./configure: 1: Syntax error: Unterminated quoted string otcl-1.8 configuration failed! Exiting ... patch file: ns-allinone-2.27/otcl-1.8/configure - system=MP-RAS-`awk '{print $3}' /etc/.relid'` + system=MP-RAS-`awk '{print $3}' /etc/.relid` Error4: otcl.o: In function `OTclDispatch': /usr/src/ns-allinone-2.27/otcl-1.8/otcl.c:493: undefined reference to `__stack_chk_fail_local' otcl.o: In function `Otcl_Init': /usr/src/ns-allinone-2.27/otcl-1.8/otcl.c:2281: 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 otcl-1.8 make failed! Exiting ... patch file: ns-allinone-2.27/otcl-1.8/configure Linux*) SHLIB_CFLAGS="-fpic" - SHLIB_LD="ld -shared" + SHLIB_LD="gcc -shared" SHLIB_SUFFIX=".so" DL_LIBS="-ldl" SHLD_FLAGS="" Error5: 27/include -I/usr/src/ns-allinone-2.27/include -o Tcl.o Tcl.cc Tcl.cc: In member function ‘void Tcl::eval(char*)’: Tcl.cc:180: warning: deprecated conversion from string constant to ‘char*’ Tcl.cc: In member function ‘int TclObject::traceVar(const char*, TclObject*)’: Tcl.cc:419: 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: warning: deprecated conversion from string constant to ‘char*’ Tcl.cc:509: 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: error: invalid conversion from ‘const char*’ to ‘char*’ Tcl.cc:569: warning: deprecated conversion from string constant to ‘char*’ Tcl.cc: In member function ‘virtual void TclClass::bind()’: Tcl.cc:601: warning: deprecated conversion from string constant to ‘char*’ Tcl.cc:603: warning: deprecated conversion from string constant to ‘char*’ make: *** [Tcl.o] Error 1 tclcl-1.15 make failed! Exiting ... patch file: ns-allinone-2.27/tclcl-1.15/Tcl.cc if (need_parse) { - char *p = strchr(localName, '('); + char* p = const_cast (strchr(localName, '(')); if (p) *p = 0; }; Error6: ./sctp/sctp.h:632: error: extra qualification ‘SctpAgent::’ on member ‘DumpSendBuffer’ trace/trace.cc:185: warning: deprecated conversion from string constant to ‘char*’ trace/trace.cc:185: warning: deprecated conversion from string constant to ‘char*’ trace/trace.cc:185: warning: deprecated conversion from string constant to ‘char*’ trace/trace.cc:185: warning: deprecated conversion from string constant to ‘char*’ trace/trace.cc:185: warning: deprecated conversion from string constant to ‘char*’ make: *** [trace/trace.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/sctp/sctp.h /* debugging functions */ - void SctpAgent::DumpSendBuffer(); + void DumpSendBuffer(); /* sctp association state variable */ Error7: In file included from ./trace/cmu-trace.h:43, from src_rtg/sragent.cc:53: ./mobile/god.h: At global scope: ./mobile/god.h:88: error: extra qualification ‘vector::’ on member ‘operator=’ ./mobile/god.h:93: error: extra qualification ‘vector::’ on member ‘operator+=’ ./mobile/god.h:98: error: extra qualification ‘vector::’ on member ‘operator==’ ./mobile/god.h:101: error: extra qualification ‘vector::’ on member ‘operator!=’ make: *** [src_rtg/sragent.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/mobile/god.h return sqrt(X*X + Y*Y + Z*Z); } - inline void vector::operator=(const vector a) { + inline void operator=(const vector a) { X = a.X; Y = a.Y; Z = a.Z; } - inline void vector::operator+=(const vector a) { + inline void operator+=(const vector a) { X += a.X; Y += a.Y; Z += a.Z; } - inline int vector::operator==(const vector a) { + inline int operator==(const vector a) { return (X == a.X && Y == a.Y && Z == a.Z); } - inline int vector::operator!=(const vector a) { + inline int operator!=(const vector a) { return (X != a.X || Y != a.Y || Z != a.Z); } inline vector operator-(const vector a) { Error8: queue/red.cc: In member function ‘virtual void REDQueue::trace(TracedVar*)’: queue/red.cc:807: error: invalid conversion from ‘const char*’ to ‘char*’ queue/red.cc:808: error: invalid conversion from ‘const char*’ to ‘char*’ queue/red.cc:809: error: invalid conversion from ‘const char*’ to ‘char*’ queue/red.cc:810: error: invalid conversion from ‘const char*’ to ‘char*’ make: *** [queue/red.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/red.cc REDQueue::trace(TracedVar* v) { - char wrk[500], *p; + char wrk[500]; + char* p; - 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 (strstr(v->name(), "ave"))) == NULL) && + ((p = const_cast (strstr(v->name(), "prob"))) == NULL) && + ((p = const_cast (strstr(v->name(), "curq"))) == NULL) && + ((p = const_cast (strstr(v->name(), "cur_max_p")))==NULL) ) { fprintf(stderr, "RED:unknown trace var %s\n", v->name()); return; } Error9: queue/cbq.cc:112: error: ISO C++ forbids declaration of ‘CBQueue’ with no type queue/cbq.cc:112: error: expected ‘;’ before ‘*’ token queue/cbq.cc: In member function ‘virtual int CBQueue::insert_class(CBQClass*)’: queue/cbq.cc:488: error: ‘class CBQClass’ has no member named ‘cbq_’ queue/cbq.cc: In constructor ‘CBQClass::CBQClass()’: queue/cbq.cc:805: 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: error: ‘cbq_’ was not declared in this scope queue/cbq.cc:856: error: ‘cbq_’ was not declared in this scope queue/cbq.cc: In member function ‘void CBQClass::update(Packet*, double)’: queue/cbq.cc:873: error: ‘cbq_’ was not declared in this scope queue/cbq.cc: In member function ‘int CBQClass::desc_with_demand()’: queue/cbq.cc:928: error: ‘cbq_’ was not declared in this scope queue/cbq.cc: In member function ‘void CBQClass::newallot(double)’: queue/cbq.cc:975: 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: error: ‘cbq_’ was not declared in this scope make: *** [queue/cbq.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/cbq.cc +class CBQueue; class CBQClass : public Connector { Error10: ./tora/tora_neighbor.h: At global scope: ./tora/tora_neighbor.h:72: error: ISO C++ forbids declaration of ‘toraAgent’ with no type ./tora/tora_neighbor.h:72: error: expected ‘;’ before ‘*’ token tora/tora.cc: In member function ‘void toraAgent::rt_resolve(Packet*)’: tora/tora.cc:238: warning: deprecated conversion from string constant to ‘char*’ tora/tora.cc: In member function ‘void toraAgent::recvTORA(Packet*)’: tora/tora.cc:343: warning: reading through null pointer (argument 3) tora/tora.cc: In member function ‘void toraAgent::recvUPD(Packet*)’: tora/tora.cc:462: warning: deprecated conversion from string constant to ‘char*’ tora/tora.cc: In member function ‘void toraAgent::recvCLR(Packet*)’: tora/tora.cc:648: warning: deprecated conversion from string constant to ‘char*’ make: *** [tora/tora.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/tora/tora_neighbor.h #define __tora_neighbor_h__ +class toraAgent; enum LinkStatus { Error11: dsr/dsragent.cc: In member function ‘void DSRAgent::dropSendBuff(SRPacket&)’: dsr/dsragent.cc:206: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::stickPacketInSendBuffer(SRPacket&)’: dsr/dsragent.cc:222: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘virtual int DSRAgent::command(int, const char* const*)’: dsr/dsragent.cc:431: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:435: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:439: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:443: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘virtual void DSRAgent::recv(Packet*, Handler*)’: dsr/dsragent.cc:591: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::handlePktWithoutSR(SRPacket&, bool)’: dsr/dsragent.cc:666: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:675: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::handleFlowForwarding(SRPacket&, int)’: dsr/dsragent.cc:787: error: ‘XmitFlowFailureCallback’ was not declared in this scope dsr/dsragent.cc:803: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:811: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::handleForwarding(SRPacket&)’: dsr/dsragent.cc:916: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::handleRouteRequest(SRPacket&)’: dsr/dsragent.cc:967: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1030: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1041: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1056: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘bool DSRAgent::replyFromRouteCache(SRPacket&)’: dsr/dsragent.cc:1154: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1197: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::sendOutPacketWithRoute(SRPacket&, bool, Time)’: dsr/dsragent.cc:1237: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1341: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1344: error: ‘XmitFailureCallback’ was not declared in this scope dsr/dsragent.cc:1345: error: ‘XmitFlowFailureCallback’ was not declared in this scope dsr/dsragent.cc:1362: error: ‘XmitFailureCallback’ was not declared in this scope dsr/dsragent.cc: In member function ‘void DSRAgent::getRouteForPacket(SRPacket&, bool)’: dsr/dsragent.cc:1519: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::sendOutRtReq(SRPacket&, int)’: dsr/dsragent.cc:1567: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::returnSrcRouteToRequestor(SRPacket&)’: dsr/dsragent.cc:1617: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::acceptRouteReply(SRPacket&)’: dsr/dsragent.cc:1674: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1699: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1736: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::processUnknownFlowError(SRPacket&, bool)’: dsr/dsragent.cc:1777: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::processBrokenRouteError(SRPacket&)’: dsr/dsragent.cc:1846: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:1876: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘virtual void DSRAgent::tap(const Packet*)’: dsr/dsragent.cc:2012: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2021: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2038: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::sendRouteShortening(SRPacket&, int, int)’: dsr/dsragent.cc:2127: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2177: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::undeliverablePkt(Packet*, int)’: dsr/dsragent.cc:2346: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2358: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2380: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2393: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::sendUnknownFlow(SRPacket&, bool, u_int16_t)’: dsr/dsragent.cc:2444: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2460: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2470: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc: In member function ‘void DSRAgent::xmitFailed(Packet*, const char*)’: dsr/dsragent.cc:2576: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2584: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2608: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2680: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2696: warning: deprecated conversion from string constant to ‘char*’ dsr/dsragent.cc:2715: warning: deprecated conversion from string constant to ‘char*’ make: *** [dsr/dsragent.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/dsr/dsragent.cc +void XmitFlowFailureCallback(Packet *pkt, void *data); +void XmitFailureCallback(Packet *pkt, void *data); /*=========================================================================== SendBuf management and helpers Error12: diffusion/diffusion.cc: At global scope: diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc:63: warning: deprecated conversion from string constant to ‘char*’ diffusion/diffusion.cc: In member function ‘void DiffusionAgent::MACprepare(Packet*, nsaddr_t, int, bool)’: diffusion/diffusion.cc:404: error: ‘XmitFailedCallback’ was not declared in this scope make: *** [diffusion/diffusion.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/diffusion/diffusion.cc #include "routing_table.h" +void XmitFailedCallback(Packet *pkt, void *data); char *MsgStr[]= {"", "INTEREST", "DATA", "DATA_READY", "DATA_REQUEST", Error13: diffusion/omni_mcast.cc: In member function ‘void OmniMcastAgent::MACprepare(Packet*, nsaddr_t, unsigned int, bool)’: diffusion/omni_mcast.cc:367: error: ‘OmniMcastXmitFailedCallback’ was not declared in this scope make: *** [diffusion/omni_mcast.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/diffusion/omni_mcast.cc #include "god.h" +void OmniMcastXmitFailedCallback(Packet *pkt, void *data); static class OmniMcastClass : public TclClass { Error14: queue/rio.cc: In member function ‘virtual void RIOQueue::trace(TracedVar*)’: queue/rio.cc:556: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rio.cc:557: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rio.cc:558: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rio.cc:559: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rio.cc:560: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rio.cc:561: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rio.cc:562: error: invalid conversion from ‘const char*’ to ‘char*’ make: *** [queue/rio.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/rio.cc RIOQueue::trace(TracedVar* v) { - char wrk[500], *p; + char wrk[500]; + char* p; - 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 (strstr(v->name(), "ave"))) == NULL) && + ((p = const_cast (strstr(v->name(), "in_ave"))) == NULL) && + ((p = const_cast (strstr(v->name(), "out_ave"))) == NULL) && + ((p = const_cast (strstr(v->name(), "prob"))) == NULL) && + ((p = const_cast (strstr(v->name(), "in_prob"))) == NULL) && + ((p = const_cast (strstr(v->name(), "out_prob"))) == NULL) && + ((p = const_cast (strstr(v->name(), "curq"))) == NULL)) { fprintf(stderr, "RIO:unknown trace var %s\n", v->name()); return; } Error15: tcp/tcp-sack-rh.cc: At global scope: tcp/tcp-sack-rh.cc:68: error: extra qualification ‘SackRHTcpAgent::’ on member ‘newack’ make: *** [tcp/tcp-sack-rh.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/tcp/tcp-sack-rh.cc - virtual void SackRHTcpAgent::newack(Packet* pkt); + virtual void newack(Packet* pkt); Error16: queue/pi.cc: In member function ‘virtual void PIQueue::trace(TracedVar*)’: queue/pi.cc:316: error: invalid conversion from ‘const char*’ to ‘char*’ queue/pi.cc:317: error: invalid conversion from ‘const char*’ to ‘char*’ make: *** [queue/pi.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/pi.cc void PIQueue::trace(TracedVar* v) { - char wrk[500], *p; + char wrk[500]; + char* p; - if (((p = strstr(v->name(), "prob")) == NULL) && - ((p = strstr(v->name(), "curq")) == NULL)) { + if (((p = const_cast (strstr(v->name(), "prob"))) == NULL) && + ((p = const_cast (strstr(v->name(), "curq"))) == NULL)) { fprintf(stderr, "PI:unknown trace var %s\n", v->name()); return; } Error17: queue/vq.cc: In member function ‘virtual void Vq::trace(TracedVar*)’: queue/vq.cc:333: error: invalid conversion from ‘const char*’ to ‘char*’ make: *** [queue/vq.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/vq.cc void Vq::trace(TracedVar* v) { - char wrk[500], *p; + char wrk[500]; + char* p; - if ((p = strstr(v->name(), "curq")) == NULL) { + if ((p = const_cast (strstr(v->name(), "curq"))) == NULL) { fprintf(stderr, "Vq:unknown trace var %s\n", v->name()); return; } Error18: queue/rem.cc: In member function ‘virtual void REMQueue::trace(TracedVar*)’: queue/rem.cc:336: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rem.cc:337: error: invalid conversion from ‘const char*’ to ‘char*’ queue/rem.cc:338: error: invalid conversion from ‘const char*’ to ‘char*’ make: *** [queue/rem.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/rem.cc REMQueue::trace(TracedVar* v) { - char wrk[500], *p; + char wrk[500]; + char* p; - if (((p = strstr(v->name(), "ave")) == NULL) && - ((p = strstr(v->name(), "prob")) == NULL) && - ((p = strstr(v->name(), "curq")) == NULL)) { + if (((p = const_cast (strstr(v->name(), "ave"))) == NULL) && + ((p = const_cast (strstr(v->name(), "prob"))) == NULL) && + ((p = const_cast (strstr(v->name(), "curq"))) == NULL)) { fprintf(stderr, "REM:unknown trace var %s\n", v->name()); return; } Error19: queue/gk.cc: In member function ‘virtual void GK::trace(TracedVar*)’: queue/gk.cc:207: error: invalid conversion from ‘const char*’ to ‘char*’ make: *** [queue/gk.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/queue/gk.cc void GK::trace(TracedVar* v) { - char wrk[500], *p; + char wrk[500]; + char* p; - if ((p = strstr(v->name(), "curq")) == NULL) { + if ((p = const_cast (strstr(v->name(), "curq"))) == NULL) { fprintf(stderr, "Vq:unknown trace var %s\n", v->name()); return; } Error20: pgm/pgm-agent.cc: At global scope: pgm/pgm-agent.cc:278: 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: 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: 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: warning: deprecated conversion from string constant to ‘char*’ make: *** [pgm/pgm-agent.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/pgm/pgm-agent.cc - void PgmAgent::trace_event(char *evType, double evTime); + void trace_event(char *evType, double evTime); Error21: pgm/pgm-sender.cc: At global scope: pgm/pgm-sender.cc:160: 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: 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: warning: deprecated conversion from string constant to ‘char*’ make: *** [pgm/pgm-sender.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/pgm/pgm-sender.cc - void PgmSender::trace_event(char *evType, nsaddr_t daddr, double evTime); + void trace_event(char *evType, nsaddr_t daddr, double evTime); Error22: pgm/pgm-receiver.cc: At global scope: pgm/pgm-receiver.cc:157: 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: warning: deprecated conversion from string constant to ‘char*’ make: *** [pgm/pgm-receiver.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/pgm/pgm-receiver.cc - void PgmReceiver::trace_event(char *evType, double evTime); + void trace_event(char *evType, double evTime); Error23: ./diffusion3/filter_core/filter_core.hh: At global scope: ./diffusion3/filter_core/filter_core.hh:111: error: expected ‘)’ before ‘*’ token make: *** [diffusion3/ns/diffagent.o] Error 1 Ns make failed! patch file: ns-allinone-2.27/ns-2.27/diffusion3/filter_core/filter_core.hh class NeighborEntry; + class DiffRoutingAgent; typedef list NeighborList; Error24: node.h:226: error: extra qualification ‘Node::’ on member ‘getTclScriptLabel’ node.h: In member function ‘virtual char* BoxNode::style()’: node.h:280: warning: deprecated conversion from string constant to ‘char*’ node.h: In member function ‘virtual char* CircleNode::style()’: node.h:291: warning: deprecated conversion from string constant to ‘char*’ node.h: In member function ‘virtual char* HexagonNode::style()’: node.h:302: warning: deprecated conversion from string constant to ‘char*’ node.h: In member function ‘virtual char* VirtualNode::style()’: node.h:318: warning: deprecated conversion from string constant to ‘char*’ make: *** [netview.o] Error 1 patch file: ns-allinone-2.27/nam-1.10/node.h - char * Node::getTclScriptLabel(); + char * getTclScriptLabel(); Error25: netgraph.h:71: error: extra qualification ‘NetGraph::’ on member ‘render’ make: *** [graphview.o] Error 1 patch file: ns-allinone-2.27/nam-1.10/netgraph.h - virtual void NetGraph::render(GraphView* view); + virtual void render(GraphView* view); Error26: In file included from setdest.cc:57: setdest.h:26: error: extra qualification ‘vector::’ on member ‘operator=’ setdest.h:31: error: extra qualification ‘vector::’ on member ‘operator+=’ setdest.h:36: error: extra qualification ‘vector::’ on member ‘operator==’ setdest.h:39: error: extra qualification ‘vector::’ on member ‘operator!=’ make[1]: *** [setdest.o] Error 1 patch file: ns-allinone-2.27/ns-2.27/indep-utils/cmu-scen-gen/setdest/setdest.h class vector { public: vector(double x = 0.0, double y = 0.0, double z = 0.0) { X = x; Y = y; Z = z; } double length() { return sqrt(X*X + Y*Y + Z*Z); } - inline void vector::operator=(const vector a) { + inline void operator=(const vector a) { X = a.X; Y = a.Y; Z = a.Z; } - inline void vector::operator+=(const vector a) { + inline void operator+=(const vector a) { X += a.X; Y += a.Y; Z += a.Z; } - inline int vector::operator==(const vector a) { + inline int operator==(const vector a) { return (X == a.X && Y == a.Y && Z == a.Z); } - inline int vector::operator!=(const vector a) { + inline int operator!=(const vector a) { return (X != a.X || Y != a.Y || Z != a.Z); } inline vector operator-(const vector a) { return vector(X-a.X, Y-a.Y, Z-a.Z); } Step 7) Modify bashrc file (gedit ~/.bashrc) adding the following lines: # LD_LIBRARY_PATH OTCL_LIB=/usr/src/ns-allinone-2.27/otcl-1.8 NS2_LIB=/usr/src/ns-allinone-2.27/lib #X11_LIB=/usr/X11R6/lib USR_LOCAL_LIB=/usr/local/lib #AEJ_LIB=/home/ahmad/arcgis/ArcExplorer/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB: #$USR_LOCAL:$AEJ_LIB # TCL_LIBRARY TCL_LIB=/usr/src/ns-allinone-2.27/tcl8.4.5/library USR_LIB=/usr/lib export TCL_LIBRARY=$TCL_LIB:$USR_LIB # PATH XGRAPH=/usr/src/ns-allinone-2.27/bin:/usr/src/ns-allinone-2.27/tcl8.4.5/unix:/usr/src/ns-allinone-2.27/tk8.4.5/unix NS=/usr/src/ns-allinone-2.27/ns-2.27/ NAM=/usr/src/ns-allinone-2.27/nam-1.10/ export PATH=$PATH PATH=$PATH:$XGRAPH:$NS:$NAM Step 8) Apply changes of bashrc file: source ~/.bashrc Step 9) Validate the installation (this process may take several minutes) cd /usr/src/ns-allinone-2.27/ns-2.27 ./validate