refer from:   

http://shagin45.blogspot.com/2008/02/ns2-nistmobility.html

http://chenyicheng.spaces.live.com/blog/cns!E734B7072C927719!525.entry


今天在安裝NIST所release支援mobility的ns-2.29版本http://www.antd.nist.gov/seamlessandsecure/download.html,在編譯時遇到以下幾個問題:

問題1:
./sctp/sctp.h:705: error: extra qualification 'SctpAgent::' on member 'DumpSendBuffer'
make: *** [trace/trace.o] Error 1
解決方法:
將sctp.h裡面第705行DumpSendBuffer function前面的'SctpAgent::'去掉.

問題2:
./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!=’
解決方法:
分別將mobile/god.h內相對應的‘vector::’刪去.

問題3:
./mac/mac-802_11.h:620: error: extra qualification 'Mac802_11::' on member 'calFreq'
make: *** [mac/mac-802_11.o] Error 1
解決方法:
將mac/mac-802_11.h內相對應的'Mac802_11::'刪去.

會有以上三種類似的問題是因為gcc版本的關係!!
 
問題4:
dsr/dsragent.cc: In member function ‘void DSRAgent::handleFlowForwarding(SRPacket&, int)’:
dsr/dsragent.cc:828: error: ‘XmitFlowFailureCallback’ was not declared in this scope
dsr/dsragent.cc: In member function ‘void DSRAgent::sendOutPacketWithRoute(SRPacket&, bool, Time)’:
dsr/dsragent.cc:1385: error: ‘XmitFailureCallback’ was not declared in this scope
dsr/dsragent.cc:1386: error: ‘XmitFlowFailureCallback’ was not declared in this scope
dsr/dsragent.cc:1403: error: ‘XmitFailureCallback’ was not declared in this scope
make: *** [dsr/dsragent.o] Error 1
解決方法:

voidXmitFailureCallback(Packet *pkt, void *data){ DSRAgent *agent = (DSRAgent *)data; // cast of trust agent->xmitFailed(pkt);}
voidXmitFlowFailureCallback(Packet *pkt, void *data){ DSRAgent *agent = (DSRAgent *)data; agent->xmitFlowFailed(pkt);}

這兩個function移到218行左右,或是在218行加上
void XmitFlowFailureCallback(Packet *pkt, void *data);
void XmitFailureCallback(Packet *pkt, void *data);
 
問題5:
diffusion/diffusion.cc: In member function 'void DiffusionAgent::MACprepare(Packet*, nsaddr_t, int, bool)':
diffusion/diffusion.cc:429: error: 'XmitFailedCallback' was not declared in this scope
make: *** [diffusion/diffusion.o] Error 1
解決方法:
參考問題4.
 
問題6:
diffusion/omni_mcast.cc: In member function 'void OmniMcastAgent::MACprepare(Packet*, nsaddr_t, unsigned int, bool)':
diffusion/omni_mcast.cc:388: error: 'OmniMcastXmitFailedCallback'was not de clared in this scope
make: *** [diffusion/omni_mcast.o] Error 1
解決方法:
參考問題4.

問題7:
tcp/tcp-sack-rh.cc:68: error: extra qualification 'SackRHTcpAgent::' on member 'newack'
make: *** [tcp/tcp-sack-rh.o] Error 1
解決方法:
將tcp/tcp-sack-rh.cc內相對應位置的SackRHTcpAgent::刪去.

問題8:
pgm/pgm-agent.cc:307: error: extra qualification 'PgmAgent::'on member 'trace_event'
make: *** [pgm/pgm-agent.o] Error 1
解決方法:
將pgm/pgm-agent.cc內相對應位置的PgmAgent::刪去.

問題9:
pgm/pgm-sender.cc:189: error: extra qualification 'PgmSender::' on member 'trace_event'
make: *** [pgm/pgm-sender.o] Error 1
解決方法:
將pgm/pgm-sender.cc內相對應位置的PgmSender::刪去.

問題10:
pgm/pgm-receiver.cc:186: error: extra qualification 'PgmReceiver::' on member 'trace_event'
make: *** [pgm/pgm-receiver.o] Error 1
解決方法:
將pgm/pgm-receiver.cc內相對應位置的PgmReceiver::刪去.

問題11:
bluetooth/lmp-link.h:296: error: extra qualification 'LMPLink::' on member 'LMPLink'
bluetooth/bt-node.h:100: error: extra qualification 'BTNode::' on member 'setup'
make: *** [bluetooth/baseband.o] Error 1
解決方法:
將bluetooth/lmp-link.h與bluetooth/bt-node.h內相對應位置的LMPLink::和BTNode::刪去.

 


 

另外,我在compile的時候下列的檔案也出現類似問題,稍微照上面的方式改就可以了^^

另外有:

bluetooth/tora-bt.h:12: error: extra qualification ‘TORA_BT::’ on member ‘recvReply’
make: *** [bluetooth/tora-bt.o] Error 1

bluetooth/dsr-bt.h:12: error: extra qualification ‘DSR_BT::’ on member ‘recvReply’
make: *** [bluetooth/dsr-bt.o] Error 1

umts/rlc.h:55: error: extra qualification ‘RLC::’ on member ‘RLC’
umts/rlc.h:62: error: extra qualification ‘RLC_HS::’ on member ‘RLC_HS’
make: *** [umts/am.o] Error 1

wimax/scheduling/ssscheduler.h:184: error: extra qualification ‘SSscheduler::’ on member ‘link_connect’
make: *** [wimax/scheduling/ssscheduler.o] Error 1

可以讓大家做一個對照^^

 

另外,在

Error free NIST mobility NS2.29 installation

某位熱心的人士已經寫好patch了^^

只要多下一個指令,前面的需要手動修改的事情"應該"就統統解決^^(我倒是還沒有試過=,=|||)

 


 

補注+後記:

有關wimax-wimax handover的TCL範例檔還是沒有辦法成功handover過去,

縱使我成功的make過了....

之前也有先使用NIST的wimax 802.16e module並且使用2.31來compile,

雖然也是很成功的compile過,但是也在卡在handover不過去--

所謂的問題就是在於mobile station一直嘗試著收/送封包到某個base station,

雖然早已經脫離那個BS的訊號範圍,並且已經進入了另一個BS的訊號範圍

我po上我在PTT的Network_Sim板上的部分文章 :D   #1BaVu80-

NIST中的WiMAX module中的example:
l2handover.tcl
我沒有辦法用他的tcl呈現出handover的現象
也就是說MS一直試圖連接到其中一個BS並傳送CBR traffic(在MS是傳送端的時候)
而wired node一直試圖傳送CBR traffic到其中一個BS,無論那個BS是否可以連到MS
(在wired node是CBR傳送端的時候)

我最後得到結論:

1.只會試圖連到BS_1,若是可以連到的話,BS_1和MS都會發現有CBR traffic:
有關NIST 802.16 Module的問題:
#set wl_node [$ns node 1.0.1]
#$wl_node base-station [AddrParams addr2id [$bstation node-addr]] ;
#PS: it means that it attaches mn to basestation
#[$bstation set mac_(0)] set-channel 1
#[$bstation2 set mac_(0)] set-channel 0
#[$wl_node set mac_(0)] set-channel 1

2.只會試圖連到BS_2,若是可以連到的話,BS_2和MS都會發現有CBR traffic:
#set wl_node [$ns node 2.0.1]
#$wl_node base-station [AddrParams addr2id [$bstation2 node-addr]] ;
#PS: it means that it attaches mn to basestation
#[$bstation set mac_(0)] set-channel 0
#[$bstation2 set mac_(0)] set-channel 1
#[$wl_node set mac_(0)] set-channel 1

最後....只有這樣的一個半成品以及一個小結論.....

我最後只好將我的topology

Homogeneous Networks Handover改成Heterogeneous Networks Handover

還好這時候就發生問題  ;D

arrow
arrow
    全站熱搜

    Hentyduary 發表在 痞客邦 留言(0) 人氣()