这个好办,只要修改:/ns-2.27/tcl/lib/ns-mobilenode.tcl ,加上两句话就可以在mac里面得到ifq了。
(1) 在这里加一句:
#
# Link Layer
#
$ll arptable $arptable_
$ll mac $mac
$ll down-target $ifq
#added by figo
$ll ifq $ifq ,#这句话把ifq的对象给了 ll 里面的ifq变量,
(2)在mac这儿再来一句:
#
# Mac Layer
#
$mac netif $netif
$mac up-target $ll
#added by figo
$mac ll $ll ,#这句话把ll对象给了mac里面的ll变量,
现在就可以在mac里面调用queue length了,具体如下:
ll_->ifq()->length(), 返回的是一个int值。
现在虽然在Mac可以调用了,但是routing agent里面的ifq 除了dsragent被cmu那帮人特别指定了,其他的都还是NULL。如何在routing agent里面得到我还没搞定,我记得dsdv里面加ifq的command是ll-queue.有兴趣的朋友可以试试在tcl里改改。