PageRenderTime 41ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/racket/l3/ipv6.rb

https://bitbucket.org/jrossi/metasploit
Ruby | 66 lines | 23 code | 3 blank | 40 comment | 0 complexity | 31761d35fb62211539e8b9c9d6b36933 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, BSD-3-Clause
  1. # $Id: ipv6.rb 14 2008-03-02 05:42:30Z warchild $
  2. #
  3. # Copyright (c) 2008, Jon Hart
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions are met:
  8. # * Redistributions of source code must retain the above copyright
  9. # notice, this list of conditions and the following disclaimer.
  10. # * 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. # * Neither the name of the <organization> nor the
  14. # names of its contributors may be used to endorse or promote products
  15. # derived from this software without specific prior written permission.
  16. #
  17. # THIS SOFTWARE IS PROVIDED BY Jon Hart ``AS IS'' AND ANY
  18. # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  19. # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  20. # DISCLAIMED. IN NO EVENT SHALL Jon Hart BE LIABLE FOR ANY
  21. # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  22. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  23. # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  24. # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  25. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  26. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. #
  28. module Racket
  29. module L3
  30. # Internet Protocol Version 6 (IPV6)
  31. # RFC2460
  32. class IPv6 < RacketPart
  33. # IP Version (defaults to 6)
  34. unsigned :version, 4, { :default => 6 }
  35. # Traffic class
  36. unsigned :tclass, 8
  37. # Flow label
  38. unsigned :flow, 20
  39. # Payload length
  40. unsigned :plen, 16
  41. # Next header type
  42. unsigned :nhead, 8
  43. # Hop limit
  44. unsigned :ttl, 8, { :default => 200 }
  45. # Source IP address. Must be passed as an integer
  46. unsigned :src_ip, 128
  47. # Destination IP address. Must be passed as an integer
  48. unsigned :dst_ip, 128
  49. # Payload
  50. rest :payload
  51. def initialize(*args)
  52. @headers = []
  53. super
  54. @autofix = true
  55. end
  56. # Adjust plen to match the payload
  57. def fix!
  58. self.plen = self.payload.length
  59. end
  60. end
  61. end
  62. end
  63. # vim: set ts=2 et sw=2: