Implements the Explict Congestion Notification for TCPHeader.
Fixnum (1 bit) :n Fixnum (1 bit) :c Fixnum (1 bit) :e
# File lib/packetfu/protos/tcp/ecn.rb, line 14 def initialize(args={}) super(args[:n], args[:c], args[:e]) if args end
Reads a string to populate the object.
# File lib/packetfu/protos/tcp/ecn.rb, line 25 def read(str) force_binary(str) return self if str.nil? || str.size < 2 if 1.respond_to? :ord byte1 = str[0].ord byte2 = str[1].ord else byte1 = str[0] byte2 = str[1] end self[:n] = byte1 & 0b00000001 == 0b00000001 ? 1 : 0 self[:c] = byte2 & 0b10000000 == 0b10000000 ? 1 : 0 self[:e] = byte2 & 0b01000000 == 0b01000000 ? 1 : 0 self end
Returns the TcpEcn field as an integer… even though it's going to be split across a byte boundary.
# File lib/packetfu/protos/tcp/ecn.rb, line 20 def to_i (n.to_i << 2) + (c.to_i << 1) + e.to_i end