Struct.new(:ipv6_v, :ipv6_class, :ipv6_label, :ipv6_len, :ipv6_next, :ipv6_hop, :ipv6_src, :ipv6_dst, :body)
IPv6Header is complete IPv6 struct, used in IPv6Packet.
Fixnum (4 bits) :ipv6_v Default: 6 # Versiom Fixnum (8 bits) :ipv6_class Defualt: 0 # Class Fixnum (20 bits) :ipv6_label Defualt: 0 # Label Int16 :ipv6_len Default: calc # Payload length Int8 :ipv6_next # Next Header Int8 :ipv6_hop Default: 0xff # Hop limit AddrIpv6 :ipv6_src AddrIpv6 :ipv6_dst String :body
# File lib/packetfu/protos/ipv6/header.rb, line 78 def initialize(args={}) super( (args[:ipv6_v] || 6), (args[:ipv6_class] || 0), (args[:ipv6_label] || 0), Int16.new(args[:ipv6_len]), Int8.new(args[:ipv6_next]), Int8.new(args[:ipv6_hop] || 0xff), AddrIpv6.new.read(args[:ipv6_src] || ("\x00" * 16)), AddrIpv6.new.read(args[:ipv6_dst] || ("\x00" * 16)), StructFu::String.new.read(args[:body]) ) end
Calculates the payload length.
# File lib/packetfu/protos/ipv6/header.rb, line 150 def ipv6_calc_len self[:ipv6_len] = body.to_s.length end
Getter for the traffic class.
# File lib/packetfu/protos/ipv6/header.rb, line 123 def ipv6_class; self[:ipv6_class].to_i; end
Setter for the traffic class.
# File lib/packetfu/protos/ipv6/header.rb, line 121 def ipv6_class=(i); self[:ip_class] = i.to_i; end
Get the destination address in a more readable form.
# File lib/packetfu/protos/ipv6/header.rb, line 175 def ipv6_daddr self[:ipv6_dst].to_x end
Set the destination address in a more readable form.
# File lib/packetfu/protos/ipv6/header.rb, line 180 def ipv6_daddr=(str) self[:ipv6_dst].read_x(str) end
Getter for the destination address.
# File lib/packetfu/protos/ipv6/header.rb, line 147 def ipv6_dst; self[:ipv6_dst].to_i; end
Setter for the destination address.
# File lib/packetfu/protos/ipv6/header.rb, line 145 def ipv6_dst=(i); typecast i; end
Getter for the hop limit.
# File lib/packetfu/protos/ipv6/header.rb, line 139 def ipv6_hop; self[:ipv6_hop].to_i; end
Setter for the hop limit.
# File lib/packetfu/protos/ipv6/header.rb, line 137 def ipv6_hop=(i); typecast i; end
Getter for the flow label.
# File lib/packetfu/protos/ipv6/header.rb, line 127 def ipv6_label; self[:ipv6_label].to_i; end
Setter for the flow label.
# File lib/packetfu/protos/ipv6/header.rb, line 125 def ipv6_label=(i); self[:ip_label] = i.to_i; end
Getter for the payload length.
# File lib/packetfu/protos/ipv6/header.rb, line 131 def ipv6_len; self[:ipv6_len].to_i; end
Setter for the payload length.
# File lib/packetfu/protos/ipv6/header.rb, line 129 def ipv6_len=(i); typecast i; end
Getter for the next protocol header.
# File lib/packetfu/protos/ipv6/header.rb, line 135 def ipv6_next; self[:ipv6_next].to_i; end
Setter for the next protocol header.
# File lib/packetfu/protos/ipv6/header.rb, line 133 def ipv6_next=(i); typecast i; end
Recalculates the calculatable fields for this object.
# File lib/packetfu/protos/ipv6/header.rb, line 155 def ipv6_recalc(arg=:all) case arg when :ipv6_len ipv6_calc_len when :all ipv6_recalc(:len) end end
Get the source address in a more readable form.
# File lib/packetfu/protos/ipv6/header.rb, line 165 def ipv6_saddr self[:ipv6_src].to_x end
Set the source address in a more readable form.
# File lib/packetfu/protos/ipv6/header.rb, line 170 def ipv6_saddr=(str) self[:ipv6_src].read_x(str) end
Getter for the source address.
# File lib/packetfu/protos/ipv6/header.rb, line 143 def ipv6_src; self[:ipv6_src].to_i; end
Setter for the source address.
# File lib/packetfu/protos/ipv6/header.rb, line 141 def ipv6_src=(i); typecast i; end
Getter for the version (usually, 6).
# File lib/packetfu/protos/ipv6/header.rb, line 119 def ipv6_v; self[:ipv6_v].to_i; end
Setter for the version (usually, 6).
# File lib/packetfu/protos/ipv6/header.rb, line 117 def ipv6_v=(i); self[:ip_v] = i.to_i; end
Reads a string to populate the object.
# File lib/packetfu/protos/ipv6/header.rb, line 101 def read(str) force_binary(str) return self if str.nil? self[:ipv6_v] = str[0,1].unpack("C").first >> 4 self[:ipv6_class] = (str[0,2].unpack("n").first & 0x0ff0) >> 4 self[:ipv6_label] = str[0,4].unpack("N").first & 0x000fffff self[:ipv6_len].read(str[4,2]) self[:ipv6_next].read(str[6,1]) self[:ipv6_hop].read(str[7,1]) self[:ipv6_src].read(str[8,16]) self[:ipv6_dst].read(str[24,16]) self[:body].read(str[40,str.size]) if str.size > 40 self end
Generated with the Darkfish Rdoc Generator 2.