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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 1996 Regents of the University of California.
  3. # All rights reserved.
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions
  6. # are met:
  7. # 1. Redistributions of source code must retain the above copyright
  8. #    notice, this list of conditions and the following disclaimer.
  9. # 2. Redistributions in binary form must reproduce the above copyright
  10. #    notice, this list of conditions and the following disclaimer in the
  11. #    documentation and/or other materials provided with the distribution.
  12. # 3. All advertising materials mentioning features or use of this software
  13. #    must display the following acknowledgement:
  14. #  This product includes software developed by the MASH Research
  15. #  Group at the University of California Berkeley.
  16. # 4. Neither the name of the University nor of the Research Group may be
  17. #    used to endorse or promote products derived from this software without
  18. #    specific prior written permission.
  19. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  20. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  23. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  24. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  25. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  26. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  27. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  28. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  29. # SUCH DAMAGE.
  30. #
  31. #
  32. # THE CODE INCLUDED IN THIS FILE IS USED FOR BACKWARD COMPATIBILITY ONLY
  33. Class MobileNode/MIPBS -superclass Node/MobileNode/BaseStationNode
  34. MobileNode/MIPBS instproc init {args} {
  35. $self next $args
  36. $self instvar regagent_ encap_ decap_ agents_ address_ dmux_ id_
  37. if { $dmux_ == "" } {
  38. set dmux_ [new Classifier/Port/Reserve]
  39. $dmux_ set mask_ 0x7fffffff
  40. $dmux_ set shift_ 0
  41. $self add-route $address_ $dmux_
  42. set regagent_ [new Agent/MIPBS $self]
  43. $self attach $regagent_ [Node/MobileNode  set REGAGENT_PORT]
  44. $self attach-encap 
  45. $self attach-decap
  46. }
  47. MobileNode/MIPBS instproc attach-encap {} {
  48. $self instvar encap_ address_ 
  49. set encap_ [new MIPEncapsulator]
  50. set mask 0x7fffffff
  51. set shift 0
  52. set nodeaddr [AddrParams addr2id $address_]
  53. $encap_ set addr_ [expr ( ~($mask << $shift) & $nodeaddr)]
  54. $encap_ set port_ 1
  55. $encap_ target [$self entry]
  56. $encap_ set node_ $self
  57. }
  58. MobileNode/MIPBS instproc attach-decap {} {
  59. $self instvar decap_ dmux_ agents_
  60. set decap_ [new Classifier/Addr/MIPDecapsulator]
  61. lappend agents_ $decap_
  62. $dmux_ install [Node/MobileNode set DECAP_PORT] $decap_
  63. }
  64.     
  65. Class MobileNode/MIPMH -superclass Node/MobileNode/BaseStationNode
  66. MobileNode/MIPMH instproc init { args } {
  67. eval $self next $args
  68. $self instvar regagent_ dmux_ address_
  69.  
  70. if { $dmux_ == "" } {
  71. set dmux_ [new Classifier/Port/Reserve]
  72. $dmux_ set mask_ 0x7fffffff
  73. $dmux_ set shift_ 0
  74. $self add-route $address_ $dmux_
  75.     
  76. set regagent_ [new Agent/MIPMH $self]
  77. $self attach $regagent_ [Node/MobileNode set REGAGENT_PORT]
  78. $regagent_ node $self
  79. }
  80. Class SRNode/MIPMH -superclass SRNode
  81. SRNode/MIPMH instproc init { args } {
  82. eval $self next $args
  83. $self instvar regagent_ dmux_ address_
  84.     
  85. if { $dmux_ == "" } {
  86. set dmux_ [new Classifier/Port/Reserve]
  87. $dmux_ set mask_ 0x7fffffff
  88. $dmux_ set shift_ 0
  89. $self add-route $address_ $dmux_
  90. eval $self next $args
  91. set regagent_ [new Agent/MIPMH $self]
  92. $self attach $regagent_ [Node/MobileNode set REGAGENT_PORT]
  93. $regagent_ node $self
  94. }