UDPHeader is a complete UDP struct, used in UDPPacket. Many Internet-critical protocols rely on UDP, such as DNS and World of Warcraft.

For more on UDP packets, see www.networksorcery.com/enp/protocol/udp.htm

Header Definition

 Int16   :udp_src
 Int16   :udp_dst
 Int16   :udp_len  Default: calculated
 Int16   :udp_sum  Default: 0. Often calculated.
 String  :body
Methods
N
R
T
U
Included Modules
Class Public methods
new(args={})
# File lib/packetfu/protos/udp.rb, line 18
                def initialize(args={})
                        super(
                                Int16.new(args[:udp_src]),
                                Int16.new(args[:udp_dst]),
                                Int16.new(args[:udp_len] || udp_calc_len),
                                Int16.new(args[:udp_sum]),
                                StructFu::String.new.read(args[:body])
                        )
                end
Instance Public methods
read(str)

Reads a string to populate the object.

# File lib/packetfu/protos/udp.rb, line 34
                def read(str)
                        force_binary(str)
                        return self if str.nil?
                        self[:udp_src].read(str[0,2])
                        self[:udp_dst].read(str[2,2])
                        self[:udp_len].read(str[4,2])
                        self[:udp_sum].read(str[6,2])
                        self[:body].read(str[8,str.size])
                        self
                end
to_s()

Returns the object in string form.

# File lib/packetfu/protos/udp.rb, line 29
                def to_s
                        self.to_a.map {|x| x.to_s}.join
                end
udp_calc_len()

Returns the true length of the UDP packet.

# File lib/packetfu/protos/udp.rb, line 63
                def udp_calc_len
                        body.to_s.size + 8
                end
udp_dport()

Equivalent to udp_dst

# File lib/packetfu/protos/udp.rb, line 91
                def udp_dport
                        self.udp_dst
                end
udp_dport=(arg)

Equivalent to udp_dst=

# File lib/packetfu/protos/udp.rb, line 96
                def udp_dport=(arg)
                        self.udp_dst=(arg)
                end
udp_dst()

Getter for the UDP destination port.

# File lib/packetfu/protos/udp.rb, line 52
                def udp_dst; self[:udp_dst].to_i; end
udp_dst=(i)

Setter for the UDP destination port.

# File lib/packetfu/protos/udp.rb, line 50
                def udp_dst=(i); typecast i; end
udp_len()

Getter for the length field.

# File lib/packetfu/protos/udp.rb, line 56
                def udp_len; self[:udp_len].to_i; end
udp_len=(i)

Setter for the length field. Usually should be recalc()’ed instead.

# File lib/packetfu/protos/udp.rb, line 54
                def udp_len=(i); typecast i; end
udp_recalc(args=:all)

Recalculates calculated fields for UDP.

# File lib/packetfu/protos/udp.rb, line 68
                def udp_recalc(args=:all)
                        arg = arg.intern if arg.respond_to? :intern
                        case args
                        when :udp_len
                                self.udp_len = udp_calc_len
                        when :all
                                self.udp_recalc(:udp_len)
                        else
                                raise ArgumentError, "No such field `#{arg}'"
                        end
                end
udp_sport()

Equivalent to udp_src.to_i

# File lib/packetfu/protos/udp.rb, line 81
                def udp_sport
                        self.udp_src
                end
udp_sport=(arg)

Equivalent to udp_src=

# File lib/packetfu/protos/udp.rb, line 86
                def udp_sport=(arg)
                        self.udp_src=(arg)
                end
udp_src()

Getter for the UDP source port.

# File lib/packetfu/protos/udp.rb, line 48
                def udp_src; self[:udp_src].to_i; end
udp_src=(i)

Setter for the UDP source port.

# File lib/packetfu/protos/udp.rb, line 46
                def udp_src=(i); typecast i; end
udp_sum()

Getter for the checksum.

# File lib/packetfu/protos/udp.rb, line 60
                def udp_sum; self[:udp_sum].to_i; end
udp_sum=(i)

Setter for the checksum. Usually should be recalc()’ed instad.

# File lib/packetfu/protos/udp.rb, line 58
                def udp_sum=(i); typecast i; end
udp_sum_readable()

Readability aliases

# File lib/packetfu/protos/udp.rb, line 102
                def udp_sum_readable
                        "0x%04x" % udp_sum
                end