class Ronin::Support::Binary::Packet

Represents a network packet in network byte-order.

## Examples

### Defining Packet Fields

class Packet < Ronin::Support::Binary::Packet

  member :flags,  :uint8
  member :src,    :uint32
  member :dst,    :uint32
  member :length, :uint32

end

### Initializing Packets

From a Hash:

packet = Packet.new(
  flags:  0x0c,
  src:    IPAddr.new('1.2.3.4').to_i,
  dst:    IPAddr.new('5.6.7.8').to_i,
  length: 1024
)

From a buffer:

packet = Packet.unpack("\f\x01\x02\x03\x04\x05\x06\a\b\x00\x00\x04\x00")

### Reading Fields

packet = Packet.new("\f\x01\x02\x03\x04\x05\x06\a\b\x00\x00\x04\x00")
packet[:flags]
# => 12
packet.flags
# => 12

### Packing Packets

class Packet < Ronin::Support::Binary::Packet

  member :flags,  :uint8
  member :src,    :uint32
  member :dst,    :uint32
  member :length, :uint32

end

packet = Packet.new(
  flags:  0x0c,
  src:    IPAddr.new('1.2.3.4').to_i,
  dst:    IPAddr.new('5.6.7.8').to_i,
  length: 1024
)
packet.pack
# => "\f\x01\x02\x03\x04\x05\x06\a\b\x00\x00\x04\x00"

### Unpacking Packets

class Packet < Ronin::Support::Binary::Packet

  member :flags,  :uint8
  member :src,    :uint32
  member :dst,    :uint32
  member :length, :uint32

end

packet = Packet.unpack("\f\x01\x02\x03\x04\x05\x06\a\b\x00\x00\x04\x00")
packet.flags
# => 12
packet.src
# => 16909060
packet.dst
# => 84281096
packet.length
# => 1024