test-suite-wireless-diffusion.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:19k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # -*- Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-
  2. Agent/TCP set tcpTick_ 0.1
  3. # The default for tcpTick_ is being changed to reflect a changing reality.
  4. Agent/TCP set rfc2988_ false
  5. # The default for rfc2988_ is being changed to true.
  6. # FOR UPDATING GLOBAL DEFAULTS:
  7. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  8. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  9. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  10. Agent/TCP set minrto_ 1
  11. # default changed on 10/14/2004.
  12. Agent/TCP set windowInit_ 1
  13. # The default is being changed to 2.
  14. Agent/TCP set singledup_ 0
  15. # The default is being changed to 1
  16. Mac/802_11 set bugFix_timer_ false;     # default changed 2006/1/30
  17. #
  18. # Copyright (c) 1998,2000 University of Southern California.
  19. # All rights reserved.                                            
  20. #                                                                
  21. # Redistribution and use in source and binary forms are permitted
  22. # provided that the above copyright notice and this paragraph are
  23. # duplicated in all such forms and that any documentation, advertising
  24. # materials, and other materials related to such distribution and use
  25. # acknowledge that the software was developed by the University of
  26. # Southern California, Information Sciences Institute.  The name of the
  27. # University may not be used to endorse or promote products derived from
  28. # this software without specific prior written permission.
  29. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  30. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  31. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  32. # $Header: /cvsroot/nsnam/ns-2/tcl/test/test-suite-wireless-diffusion.tcl,v 1.10 2006/01/30 21:27:52 mweigle Exp $
  33. # To run all tests: test-all-wireless-diffusion
  34. # to run individual test:
  35. # ns test-suite-wireless-diffusion.tcl diff-rate-default
  36. # ns test-suite-wireless-diffusion.tcl diff-rate-other
  37. # ns test-suite-wireless-diffusion.tcl diff-prob
  38. # ns test-suite-wireless-diffusion.tcl omnimcast
  39. # ns test-suite-wireless-diffusion.tcl flooding
  40. #
  41. # To view a list of available test to run with this script:
  42. # ns test-suite-wireless-diffusion.tcl
  43. # ======================================================================
  44. # Define options
  45. # ======================================================================
  46. global opt
  47. set opt(chan) Channel/WirelessChannel
  48. set opt(prop) Propagation/TwoRayGround
  49. set opt(netif) Phy/WirelessPhy
  50. set opt(mac) Mac/802_11
  51. set opt(ifq) Queue/DropTail/PriQueue
  52. set opt(ll) LL
  53. set opt(ant)            Antenna/OmniAntenna
  54. set opt(ifqlen) 50 ;# max packet in ifq
  55. set opt(seed) 1
  56. set opt(tr) estudy.tr ;# trace file
  57. set opt(nam) temp.rands
  58. set opt(lm)             "off"           ;# log movement
  59. set opt(engmodel)       EnergyModel     ;
  60. set opt(initeng)        1.1               ;# Initial energy in Joules
  61. set opt(txPower)        0.660;
  62. set opt(rxPower)        0.395;
  63. set opt(idlePower)      0.035;
  64. set opt(x) 800 ;# X dimension of the topography
  65. set opt(y) 800     ;# Y dimension of the topography
  66. set opt(nn) 30 ;# number of nodes
  67. set opt(stop) 25 ;# simulation time
  68. set opt(prestop)        23      ;# time to prepare to stop
  69. # ======================================================================
  70. LL set mindelay_ 50us
  71. LL set delay_ 25us
  72. LL set bandwidth_ 0 ;# not used
  73. Agent/Null set sport_ 0
  74. Agent/Null set dport_ 0
  75. Agent/CBR set sport_ 0
  76. Agent/CBR set dport_ 0
  77. Agent/TCPSink set sport_ 0
  78. Agent/TCPSink set dport_ 0
  79. Agent/TCP set sport_ 0
  80. Agent/TCP set dport_ 0
  81. Agent/TCP set packetSize_ 1460
  82. Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1
  83. # unity gain, omni-directional antennas
  84. # set up the antennas to be centered in the node and 1.5 meters above it
  85. Antenna/OmniAntenna set X_ 0
  86. Antenna/OmniAntenna set Y_ 0
  87. Antenna/OmniAntenna set Z_ 1.5
  88. Antenna/OmniAntenna set Gt_ 1.0
  89. Antenna/OmniAntenna set Gr_ 1.0
  90. # Initialize the SharedMedia interface with parameters to make
  91. # it work like the 914MHz Lucent WaveLAN DSSS radio interface
  92. Phy/WirelessPhy set CPThresh_ 10.0
  93. Phy/WirelessPhy set CSThresh_ 1.559e-11
  94. Phy/WirelessPhy set RXThresh_ 3.652e-10
  95. Phy/WirelessPhy set Rb_ 2*1e6
  96. Phy/WirelessPhy set Pt_ 0.2818
  97. Phy/WirelessPhy set freq_ 914e+6 
  98. Phy/WirelessPhy set L_ 1.0
  99. # ======================================================================
  100. proc usage {}  {
  101.         global argv0
  102. puts stderr "usage: ns $argv0 <tests> "
  103. puts "Valid <tests> : diff-rate-default diff-rate-other diff-prob omnicast flooding "
  104.         exit 1
  105. }
  106. proc getopt {argc argv} {
  107. global opt
  108. lappend optlist cp nn seed sc stop tr x y
  109. for {set i 0} {$i < $argc} {incr i} {
  110. set arg [lindex $argv $i]
  111. if {[string range $arg 0 0] != "-"} continue
  112. set name [string range $arg 1 end]
  113. set opt($name) [lindex $argv [expr $i+1]]
  114. }
  115. }
  116. Class TestSuite
  117. Class Test/diff-rate-default -superclass TestSuite
  118. Class Test/diff-rate-other -superclass TestSuite
  119. Class Test/diff-prob -superclass TestSuite
  120. Class Test/omnimcast -superclass TestSuite
  121. Class Test/flooding -superclass TestSuite
  122. TestSuite instproc init {} {
  123. global opt 
  124. $self instvar ns_ topo  god_
  125. set ns_ [new Simulator]
  126. puts "Seeding Random number generator with $opt(seed)n"
  127. ns-random $opt(seed)
  128. set topo [new Topography]
  129. #set god_         [new God]
  130. set tracefd [open $opt(tr) w]
  131. set namtrace    [open $opt(nam) w]
  132. $topo load_flatgrid $opt(x) $opt(y)
  133. $ns_ trace-all $tracefd
  134. $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
  135. set god_ [create-god $opt(nn)]
  136. }
  137. Test/diff-rate-default instproc init {} {
  138.    global opt
  139.    $self instvar ns_ topo god_
  140.     set opt(god)            on
  141.     set opt(traf) "sk-30-3-3-1-1-6-64.tcl"      ;# traffic file
  142.     set opt(topo) "scen-800x800-30-500-1.0-1"   ;# topology file
  143.     set opt(onoff)          ""                        ;# node on-off
  144.     set opt(adhocRouting)   DIFFUSION/RATE       
  145.     set opt(enablePos)      "true"
  146.     set opt(enableNeg)      "true"
  147.     set opt(subTxType)      BROADCAST
  148.     set opt(orgTxType)      UNICAST
  149.     set opt(posType)        ALL
  150.     set opt(posNodeType)    INTM
  151.     set opt(negWinType)     TIMER
  152.     set opt(negThrType)     ABSOLUTE
  153.     set opt(negMaxType)     FIXED
  154.     set opt(suppression)    "true"
  155.     set opt(duplicate)      "enable-duplicate"
  156.    $self next
  157. }
  158. Test/diff-rate-default instproc run {} {
  159.    global opt
  160.    $self instvar ns_ topo god_
  161.     $god_ $opt(god)
  162.     $god_ allow_to_stop
  163.     $god_ num_data_types 1
  164.     
  165.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  166.  -llType $opt(ll) 
  167.  -macType $opt(mac) 
  168.  -ifqType $opt(ifq) 
  169.  -ifqLen $opt(ifqlen) 
  170.  -antType $opt(ant) 
  171.  -propType $opt(prop) 
  172.  -phyType $opt(netif) 
  173.  -channel [new $opt(chan)] 
  174.  -topoInstance $topo 
  175.  -agentTrace ON 
  176.                  -routerTrace ON 
  177.                  -macTrace ON 
  178.  -energyModel $opt(engmodel) 
  179.  -initialEnergy $opt(initeng) 
  180.  -txPower  $opt(txPower) 
  181.  -rxPower  $opt(rxPower) 
  182.  -idlePower  $opt(idlePower)
  183.  
  184.     for {set i 0} {$i < $opt(nn) } {incr i} {
  185. set node_($i) [$ns_ node $i]
  186. $node_($i) random-motion 0 ;# disable random motion
  187.         $god_ new_node $node_($i)
  188.     }
  189.     if { $opt(topo) == "" } {
  190. puts "*** NOTE: no topology file specified."
  191.         set opt(topo) "none"
  192.     } else {
  193. puts "Loading topology file..."
  194. source $opt(topo)
  195. puts "Load complete..."
  196.     }
  197.     if { $opt(onoff) == "" } {
  198. puts "*** NOTE: no node-on-off file specified."
  199.         set opt(onoff) "none"
  200.     } else {
  201. puts "Loading node on-off file..."
  202. source $opt(onoff)
  203. puts "Load complete..."
  204.     }
  205.     if { $opt(traf) == "" } {
  206. puts "*** NOTE: no traffic file specified."
  207.         set opt(traf) "none"
  208.     } else {
  209. puts "Loading traffic file..."
  210. source $opt(traf)
  211. puts "Load complete..."
  212.     }
  213. #
  214. # Tell all the nodes when the simulation ends
  215. #
  216. $ns_ at $opt(prestop) "$ns_ prepare-to-stop"
  217. for {set i 0} {$i < $opt(nn) } {incr i} {
  218.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  219. }
  220. $ns_ at $opt(stop).00000001 "finish"
  221. # Define node initial position in nam
  222. for {set i 0} {$i < $opt(nn)} {incr i} {
  223.     # 20 defines the node size in nam, must adjust it according to your scenario
  224.     # The function must be called after mobility model is defined
  225.     $ns_ initial_node_pos $node_($i) 20
  226. }
  227. $ns_ run
  228. }
  229. Test/diff-rate-other instproc init {} {
  230.    global opt
  231.    $self instvar ns_ topo god_
  232.     set opt(god)            on
  233.     set opt(traf) "sk-30-3-3-1-1-6-64.tcl"      ;# traffic file
  234.     set opt(topo) "scen-800x800-30-500-1.0-1"   ;# topology file
  235.     set opt(onoff)      "onoff-30-3-3-1-1-500-10.tcl" ;# node on-off
  236.     set opt(adhocRouting)   DIFFUSION/RATE       
  237.     set opt(enablePos)      "true"
  238.     set opt(enableNeg)      "true"
  239.     set opt(subTxType)      BROADCAST
  240.     set opt(orgTxType)      UNICAST
  241.     set opt(posType)        LAST
  242.     set opt(posNodeType)    END
  243.     set opt(negWinType)     COUNTER
  244.     set opt(negThrType)     ABSOLUTE
  245.     set opt(negMaxType)     FIXED
  246.     set opt(suppression)    "false"
  247.     set opt(duplicate)      "disable-duplicate"
  248.    $self next
  249. }
  250. Test/diff-rate-other instproc run {} {
  251.    global opt
  252.    $self instvar ns_ topo god_
  253.     $god_ $opt(god)
  254.     $god_ allow_to_stop
  255.     $god_ num_data_types 1
  256.     
  257.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  258.  -llType $opt(ll) 
  259.  -macType $opt(mac) 
  260.  -ifqType $opt(ifq) 
  261.  -ifqLen $opt(ifqlen) 
  262.  -antType $opt(ant) 
  263.  -propType $opt(prop) 
  264.  -phyType $opt(netif) 
  265.  -channel [new $opt(chan)] 
  266.  -topoInstance $topo 
  267.  -agentTrace ON 
  268.                  -routerTrace ON 
  269.                  -macTrace ON 
  270.  -energyModel $opt(engmodel) 
  271.  -initialEnergy $opt(initeng) 
  272.  -txPower  $opt(txPower) 
  273.  -rxPower  $opt(rxPower) 
  274.  -idlePower  $opt(idlePower)
  275.  
  276.     for {set i 0} {$i < $opt(nn) } {incr i} {
  277. set node_($i) [$ns_ node $i]
  278. $node_($i) random-motion 0 ;# disable random motion
  279.         $god_ new_node $node_($i)
  280.     }
  281.     if { $opt(topo) == "" } {
  282. puts "*** NOTE: no topology file specified."
  283.         set opt(topo) "none"
  284.     } else {
  285. puts "Loading topology file..."
  286. source $opt(topo)
  287. puts "Load complete..."
  288.     }
  289.     if { $opt(onoff) == "" } {
  290. puts "*** NOTE: no node-on-off file specified."
  291.         set opt(onoff) "none"
  292.     } else {
  293. puts "Loading node on-off file..."
  294. source $opt(onoff)
  295. puts "Load complete..."
  296.     }
  297.     if { $opt(traf) == "" } {
  298. puts "*** NOTE: no traffic file specified."
  299.         set opt(traf) "none"
  300.     } else {
  301. puts "Loading traffic file..."
  302. source $opt(traf)
  303. puts "Load complete..."
  304.     }
  305. #
  306. # Tell all the nodes when the simulation ends
  307. #
  308. $ns_ at $opt(prestop) "$ns_ prepare-to-stop"
  309. for {set i 0} {$i < $opt(nn) } {incr i} {
  310.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  311. }
  312. $ns_ at $opt(stop).00000001 "finish"
  313. # Define node initial position in nam
  314. for {set i 0} {$i < $opt(nn)} {incr i} {
  315.     # 20 defines the node size in nam, must adjust it according to your scenario
  316.     # The function must be called after mobility model is defined
  317.     $ns_ initial_node_pos $node_($i) 20
  318. }
  319. $ns_ run
  320. }
  321. Test/diff-prob instproc init {} {
  322.     global opt
  323.     $self instvar ns_ topo god_
  324.     set opt(god)            on
  325.     set opt(traf) "sk-30-1-1-1-1-6-64.tcl"      ;# traffic file
  326.     set opt(topo) "scen-800x800-30-500-1.0-1"   ;# topology file
  327.     set opt(onoff)          ""                        ;# node on-off
  328.     set opt(adhocRouting)   DIFFUSION/PROB       
  329.     set opt(enablePos)      "true"
  330.     set opt(enableNeg)      "true"
  331.     set opt(duplicate)      "enable-duplicate"
  332.     $self next
  333. }
  334. Test/diff-prob instproc run {} {
  335.     global opt
  336.     $self instvar ns_ topo god_
  337.     $god_ $opt(god)
  338.     $god_ allow_to_stop
  339.     $god_ num_data_types 1
  340.     
  341.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  342.  -llType $opt(ll) 
  343.  -macType $opt(mac) 
  344.  -ifqType $opt(ifq) 
  345.  -ifqLen $opt(ifqlen) 
  346.  -antType $opt(ant) 
  347.  -propType $opt(prop) 
  348.  -phyType $opt(netif) 
  349.  -channel [new $opt(chan)] 
  350.  -topoInstance $topo 
  351.  -agentTrace ON 
  352.                  -routerTrace ON 
  353.                  -macTrace ON 
  354.  -energyModel $opt(engmodel) 
  355.  -initialEnergy $opt(initeng) 
  356.  -txPower  $opt(txPower) 
  357.  -rxPower  $opt(rxPower) 
  358.  -idlePower  $opt(idlePower)
  359.  
  360.     for {set i 0} {$i < $opt(nn) } {incr i} {
  361. set node_($i) [$ns_ node $i]
  362. $node_($i) random-motion 0 ;# disable random motion
  363.         $god_ new_node $node_($i)
  364.     }
  365.     if { $opt(topo) == "" } {
  366. puts "*** NOTE: no topology file specified."
  367.         set opt(topo) "none"
  368.     } else {
  369. puts "Loading topology file..."
  370. source $opt(topo)
  371. puts "Load complete..."
  372.     }
  373.     if { $opt(onoff) == "" } {
  374. puts "*** NOTE: no node-on-off file specified."
  375.         set opt(onoff) "none"
  376.     } else {
  377. puts "Loading node on-off file..."
  378. source $opt(onoff)
  379. puts "Load complete..."
  380.     }
  381.     if { $opt(traf) == "" } {
  382. puts "*** NOTE: no traffic file specified."
  383.         set opt(traf) "none"
  384.     } else {
  385. puts "Loading traffic file..."
  386. source $opt(traf)
  387. puts "Load complete..."
  388.     }
  389. #
  390. # Tell all the nodes when the simulation ends
  391. #
  392. $ns_ at $opt(prestop) "$ns_ prepare-to-stop"
  393. for {set i 0} {$i < $opt(nn) } {incr i} {
  394.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  395. }
  396. $ns_ at $opt(stop).00000001 "finish"
  397. # Define node initial position in nam
  398. for {set i 0} {$i < $opt(nn)} {incr i} {
  399.     # 20 defines the node size in nam, must adjust it according to your scenario
  400.     # The function must be called after mobility model is defined
  401.     $ns_ initial_node_pos $node_($i) 20
  402. }
  403. $ns_ run
  404. }
  405. Test/omnimcast instproc init {} {
  406.    global opt
  407.    $self instvar ns_ topo god_
  408.     set opt(god)            on
  409.     set opt(traf) "sk-30-3-3-1-1-6-64.tcl"      ;# traffic file
  410.     set opt(topo) "scen-800x800-30-500-1.0-1"   ;# topology file
  411.     set opt(onoff)          ""                        ;# node on-off
  412.     set opt(adhocRouting)   OMNIMCAST       
  413.     set opt(duplicate)      "enable-duplicate"
  414.    $self next
  415. }
  416. Test/omnimcast instproc run {} {
  417.    global opt
  418.    $self instvar ns_ topo god_
  419.     $god_ $opt(god)
  420.     $god_ allow_to_stop
  421.     $god_ num_data_types 1
  422.     
  423.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  424.  -llType $opt(ll) 
  425.  -macType $opt(mac) 
  426.  -ifqType $opt(ifq) 
  427.  -ifqLen $opt(ifqlen) 
  428.  -antType $opt(ant) 
  429.  -propType $opt(prop) 
  430.  -phyType $opt(netif) 
  431.  -channel [new $opt(chan)] 
  432.  -topoInstance $topo 
  433.  -agentTrace ON 
  434.                  -routerTrace ON 
  435.                  -macTrace ON 
  436.  -energyModel $opt(engmodel) 
  437.  -initialEnergy $opt(initeng) 
  438.  -txPower  $opt(txPower) 
  439.  -rxPower  $opt(rxPower) 
  440.  -idlePower  $opt(idlePower)
  441.  
  442.     for {set i 0} {$i < $opt(nn) } {incr i} {
  443. set node_($i) [$ns_ node $i]
  444. $node_($i) random-motion 0 ;# disable random motion
  445.         $god_ new_node $node_($i)
  446.     }
  447.     if { $opt(topo) == "" } {
  448. puts "*** NOTE: no topology file specified."
  449.         set opt(topo) "none"
  450.     } else {
  451. puts "Loading topology file..."
  452. source $opt(topo)
  453. puts "Load complete..."
  454.     }
  455.     if { $opt(onoff) == "" } {
  456. puts "*** NOTE: no node-on-off file specified."
  457.         set opt(onoff) "none"
  458.     } else {
  459. puts "Loading node on-off file..."
  460. source $opt(onoff)
  461. puts "Load complete..."
  462.     }
  463.     if { $opt(traf) == "" } {
  464. puts "*** NOTE: no traffic file specified."
  465.         set opt(traf) "none"
  466.     } else {
  467. puts "Loading traffic file..."
  468. source $opt(traf)
  469. puts "Load complete..."
  470.     }
  471. #
  472. # Tell all the nodes when the simulation ends
  473. #
  474. $ns_ at $opt(prestop) "$ns_ prepare-to-stop"
  475. for {set i 0} {$i < $opt(nn) } {incr i} {
  476.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  477. }
  478. $ns_ at $opt(stop).00000001 "finish"
  479. # Define node initial position in nam
  480. for {set i 0} {$i < $opt(nn)} {incr i} {
  481.     # 20 defines the node size in nam, must adjust it according to your scenario
  482.     # The function must be called after mobility model is defined
  483.     $ns_ initial_node_pos $node_($i) 20
  484. }
  485. $ns_ run
  486. }
  487. Test/flooding instproc init {} {
  488.    global opt
  489.    $self instvar ns_ topo god_
  490.     set opt(god)            on
  491.     set opt(traf) "sk-30-3-3-1-1-6-64.tcl"      ;# traffic file
  492.     set opt(topo) "scen-800x800-30-500-1.0-1"   ;# topology file
  493.     set opt(onoff)          ""                        ;# node on-off
  494.     set opt(adhocRouting)   FLOODING       
  495.     set opt(duplicate)      "enable-duplicate"
  496.    $self next
  497. }
  498. Test/flooding instproc run {} {
  499.    global opt
  500.    $self instvar ns_ topo god_
  501.     $god_ $opt(god)
  502.     $god_ allow_to_stop
  503.     $god_ num_data_types 1
  504.     
  505.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  506.  -llType $opt(ll) 
  507.  -macType $opt(mac) 
  508.  -ifqType $opt(ifq) 
  509.  -ifqLen $opt(ifqlen) 
  510.  -antType $opt(ant) 
  511.  -propType $opt(prop) 
  512.  -phyType $opt(netif) 
  513.  -channel [new $opt(chan)] 
  514.  -topoInstance $topo 
  515.  -agentTrace ON 
  516.                  -routerTrace ON 
  517.                  -macTrace ON 
  518.  -energyModel $opt(engmodel) 
  519.  -initialEnergy $opt(initeng) 
  520.  -txPower  $opt(txPower) 
  521.  -rxPower  $opt(rxPower) 
  522.  -idlePower  $opt(idlePower)
  523.  
  524.     for {set i 0} {$i < $opt(nn) } {incr i} {
  525. set node_($i) [$ns_ node $i]
  526. $node_($i) random-motion 0 ;# disable random motion
  527.         $god_ new_node $node_($i)
  528.     }
  529.     if { $opt(topo) == "" } {
  530. puts "*** NOTE: no topology file specified."
  531.         set opt(topo) "none"
  532.     } else {
  533. puts "Loading topology file..."
  534. source $opt(topo)
  535. puts "Load complete..."
  536.     }
  537.     if { $opt(onoff) == "" } {
  538. puts "*** NOTE: no node-on-off file specified."
  539.         set opt(onoff) "none"
  540.     } else {
  541. puts "Loading node on-off file..."
  542. source $opt(onoff)
  543. puts "Load complete..."
  544.     }
  545.     if { $opt(traf) == "" } {
  546. puts "*** NOTE: no traffic file specified."
  547.         set opt(traf) "none"
  548.     } else {
  549. puts "Loading traffic file..."
  550. source $opt(traf)
  551. puts "Load complete..."
  552.     }
  553. #
  554. # Tell all the nodes when the simulation ends
  555. #
  556. $ns_ at $opt(prestop) "$ns_ prepare-to-stop"
  557. for {set i 0} {$i < $opt(nn) } {incr i} {
  558.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  559. }
  560. $ns_ at $opt(stop).00000001 "finish"
  561. # Define node initial position in nam
  562. for {set i 0} {$i < $opt(nn)} {incr i} {
  563.     # 20 defines the node size in nam, must adjust it according to your scenario
  564.     # The function must be called after mobility model is defined
  565.     $ns_ initial_node_pos $node_($i) 20
  566. }
  567. $ns_ run
  568. }
  569. proc finish {} {
  570. puts "NS EXITING ..."
  571. set ns_ [Simulator instance]
  572. set god_ [God instance]
  573. $ns_ terminate-all-agents 
  574. $god_ dump_num_send
  575. $ns_ flush-trace
  576. exit 0
  577. }
  578. proc runtest {arg} {
  579.         global quiet
  580.         set quiet 0
  581. set b [llength $arg]
  582. if {$b == 1} {
  583.         set test $arg
  584.         } elseif {$b == 2} {
  585.         set test [lindex $arg 0]
  586.             if {[lindex $arg 1] == "QUIET"} {
  587.         set quiet 1
  588.             }
  589.         } else {
  590.         usage
  591.         }
  592. switch $test {
  593.         diff-rate-default -
  594.         diff-rate-other -
  595.         diff-prob -
  596.         omnimcast -
  597. flooding {
  598.                      set t [new Test/$test]
  599.                 }
  600.                 default {
  601.              stderr "Unknown test $test"
  602.      exit 1
  603.                 }
  604.          }
  605.  $t run
  606. }
  607. global argv arg0 
  608. runtest $argv