tora.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # -*- Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-
  2. #
  3. # Copyright (c) 1996-1998 Regents of the University of California.
  4. # All rights reserved.
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in the
  12. #    documentation and/or other materials provided with the distribution.
  13. # 3. All advertising materials mentioning features or use of this software
  14. #    must display the following acknowledgement:
  15. #  This product includes software developed by the MASH Research
  16. #  Group at the University of California Berkeley.
  17. # 4. Neither the name of the University nor of the Research Group may be
  18. #    used to endorse or promote products derived from this software without
  19. #    specific prior written permission.
  20. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  21. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  24. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  25. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  26. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  27. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  28. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  29. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. # SUCH DAMAGE.
  31. #
  32. # $Header: /cvsroot/nsnam/ns-2/tcl/mobility/tora.tcl,v 1.3 2000/08/30 23:27:51 haoboy Exp $
  33. # ======================================================================
  34. # Default Script Options
  35. # ======================================================================
  36. set opt(imep) "ON" ;# Enable/Disable IMEP
  37. set opt(ragent) Agent/rtProto/TORA
  38. set opt(pos) NONE ;# Box or NONE
  39. if { $opt(pos) == "Box" } {
  40. puts "*** TORA using Box configuration..."
  41. }
  42. # ======================================================================
  43. Agent instproc init args {
  44.         $self next $args
  45. }       
  46. Agent/rtProto instproc init args {
  47.         puts "DOWN HERE 2"
  48.         $self next $args
  49. }       
  50. Agent/rtProto/TORA instproc init args {
  51.        puts "DOWN HERE" 
  52.        $self next $args
  53. }       
  54. Agent/rtProto/TORA set sport_ 0
  55. Agent/rtProto/TORA set dport_ 0
  56. # ======================================================================
  57. proc create-routing-agent { node id } {
  58. global ns_ ragent_ tracefd opt
  59. #
  60. #  Create the Routing Agent and attach it to port 255.
  61. #
  62. set ragent_($id) [new $opt(ragent) $id]
  63. set ragent $ragent_($id)
  64. $node attach $ragent [Node set rtagent_port_]
  65. $ragent if-queue [$node set ifq_(0)] ;# ifq between LL and MAC
  66. # now that the Beacon/Hello messages have been
  67. # moved to the IMEP layer, this is not necessary.
  68. # $ns_ at 0.$id "$ragent_($id) start" ;# start BEACON/HELLO Messages
  69.         #
  70.         # XXX: The routing protocol and the IMEP agents needs handles
  71.         # to each other.
  72.         #
  73.         $ragent imep-agent [$node set imep_(0)]
  74.         [$node set imep_(0)] rtagent $ragent
  75. #
  76. # Drop Target (always on regardless of other tracing)
  77. #
  78. set drpT [cmu-trace Drop "RTR" $node]
  79. $ragent drop-target $drpT
  80. #
  81. # Log Target
  82. #
  83. set T [new Trace/Generic]
  84. $T target [$ns_ set nullAgent_]
  85. $T attach $tracefd
  86. $T set src_ $id
  87. $ragent log-target $T
  88.         #
  89.         # XXX: let the IMEP agent use the same log target.
  90.         #
  91.         [$node set imep_(0)] log-target $T
  92. }
  93. proc create-mobile-node { id } {
  94. global ns_ chan prop topo tracefd opt node_
  95. global chan prop tracefd topo opt
  96. set node_($id) [new Node/MobileNode]
  97. set node $node_($id)
  98. $node random-motion 0 ;# disable random motion
  99. $node topography $topo
  100. #
  101. # This Trace Target is used to log changes in direction
  102. # and velocity for the mobile node.
  103. #
  104. set T [new Trace/Generic]
  105. $T target [$ns_ set nullAgent_]
  106. $T attach $tracefd
  107. $T set src_ $id
  108. $node log-target $T
  109. $node add-interface $chan $prop $opt(ll) $opt(mac)
  110. $opt(ifq) $opt(ifqlen) $opt(netif) $opt(ant)
  111. #
  112. # Create a Routing Agent for the Node
  113. #
  114. create-routing-agent $node $id
  115. # ============================================================
  116. if { $opt(pos) == "Box" } {
  117. #
  118. # Box Configuration
  119. #
  120. set spacing 200
  121. set maxrow 7
  122. set col [expr ($id - 1) % $maxrow]
  123. set row [expr ($id - 1) / $maxrow]
  124. $node set X_ [expr $col * $spacing]
  125. $node set Y_ [expr $row * $spacing]
  126. $node set Z_ 0.0
  127. $node set speed_ 0.0
  128. $ns_ at 0.0 "$node_($id) start"
  129. }
  130. }