Class: PacketGen::Header::SCTP::DataChunk

Inherits:
BaseChunk
  • Object
show all
Defined in:
lib/packetgen/header/sctp/chunk.rb

Overview

Data chunk. This SCTP chunk embeds user data. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 0 | Res |I|U|B|E| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TSN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Stream Identifier S | Stream Sequence Number n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Protocol Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \
/ User Data (seq n of Stream S) / \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Author:

  • Sylvain Daubert

Since:

  • 3.4.0

  • 4.1.0 Remove ErrorMixin and ParameterMixin

Constant Summary

Constants inherited from BaseChunk

BaseChunk::TYPES

Instance Attribute Summary collapse

Attributes inherited from BaseChunk

#length, #type

Method Summary

Methods inherited from BaseChunk

#calc_length, #human_type, #to_human

Methods included from Padded32

#padded?, #to_s

Methods inherited from Base

bind, calculate_and_set_length, #header_id, inherited, #initialize, #ip_header, #ll_header

Methods included from PacketGen::Headerable

#added_to_packet, included, #method_name, #packet, #packet=, #parse?, #protocol_name, #read, #to_s

Constructor Details

This class inherits a constructor from PacketGen::Header::Base

Instance Attribute Details

#body ⇒ String

User data

Returns:

  • (String)


164
# File 'lib/packetgen/header/sctp/chunk.rb', line 164

define_attr :body, BinStruct::String, builder: ->(h, t) { t.new(length_from: -> { h.length - 4 }) }

#flag_b ⇒ Integer

BEGINNING fragment flag. If set, indicate the first fragment of a user message.

Returns:

  • (Integer)


179
# File 'lib/packetgen/header/sctp/chunk.rb', line 179

define_bit_attr_after :type, :flags, flag_res: 4, flag_i: 1, flag_u: 1, flag_b: 1, flag_e: 1

#flag_e ⇒ Integer

ENDING fragment flag. If set, indicate the last fragment of a user message.

Returns:

  • (Integer)


179
# File 'lib/packetgen/header/sctp/chunk.rb', line 179

define_bit_attr_after :type, :flags, flag_res: 4, flag_i: 1, flag_u: 1, flag_b: 1, flag_e: 1

#flag_i ⇒ Integer

IMMEDIATE flag

Returns:

  • (Integer)


179
# File 'lib/packetgen/header/sctp/chunk.rb', line 179

define_bit_attr_after :type, :flags, flag_res: 4, flag_i: 1, flag_u: 1, flag_b: 1, flag_e: 1

#flag_u ⇒ Integer

UNORDERED flag. If set, no Stream Sequence Number is assigned to this chunk.

Returns:

  • (Integer)


179
# File 'lib/packetgen/header/sctp/chunk.rb', line 179

define_bit_attr_after :type, :flags, flag_res: 4, flag_i: 1, flag_u: 1, flag_b: 1, flag_e: 1

#ppid ⇒ Integer

32-bit payload protocol identifier

Returns:

  • (Integer)


160
# File 'lib/packetgen/header/sctp/chunk.rb', line 160

define_attr :ppid, BinStruct::Int32

#stream_id ⇒ Integer

16-bit stream identifier

Returns:

  • (Integer)


152
# File 'lib/packetgen/header/sctp/chunk.rb', line 152

define_attr :stream_id, BinStruct::Int16

#stream_sn ⇒ Integer

16-bit stream sequence number

Returns:

  • (Integer)


156
# File 'lib/packetgen/header/sctp/chunk.rb', line 156

define_attr :stream_sn, BinStruct::Int16

#tsn ⇒ Integer

32-bit Transmission Sequence Number for this DATA chunk

Returns:

  • (Integer)


148
# File 'lib/packetgen/header/sctp/chunk.rb', line 148

define_attr :tsn, BinStruct::Int32