class Mu::Pcap::SCTP::Parameter

Attributes

size[RW]
type[RW]

Public Class Methods

dummy_parameter(type, size, bytes) click to toggle source
# File lib/woolen_common/pcap/mu/pcap/sctp/parameter.rb, line 91
def self.dummy_parameter type, size, bytes
    # Create new dummy parameter
    parameter = Parameter.new
    parameter.type = type
    parameter.size = size

    # Save the payload
    parameter.payload = bytes[4..parameter.padded_size - 1]
    parameter.payload_raw = parameter.payload

    # Return the result
    return parameter
end
from_bytes(bytes) click to toggle source
# File lib/woolen_common/pcap/mu/pcap/sctp/parameter.rb, line 19
def self.from_bytes bytes
    # Basic validation
    Pcap.assert(bytes.length >= 4,
                "Truncated parameter header: 4 > #{bytes.length}")

    # Read chunk header
    type, size = bytes.unpack('nn')

    # Validate chunk size
    Pcap.assert(bytes.length >= size,
                "Truncated parameter: #{size} set, #{bytes.length} available")

    # Create chunk based on type
    case type
        when PARAM_IPV4
            parameter = IpAddress.from_bytes(type, size, bytes[4..-1])
        when PARAM_IPV6
            parameter = IpAddress.from_bytes(type, size, bytes[4..-1])
        when PARAM_STATE_COOKIE
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_COOKIE_PRESERVATIVE
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_HOST_NAME_ADDR
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_SUPPORTED_ADDR_TYPES
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_ECN
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_RANDOM
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_CHUNK_LIST
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_HMAC_ALGORITHM
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_PADDING
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_SUPPORTED_EXTENSIONS
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_FORWARD_TSN
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_SET_PRIMARY_ADDR
            parameter = dummy_parameter(type, size, bytes)
        when PARAM_ADAPTATION_LAYER_INDICATION
            parameter = dummy_parameter(type, size, bytes)
        else
            parameter = dummy_parameter(type, size, bytes)
    end

    # Return the result
    return parameter
end
new() click to toggle source
Calls superclass method Mu::Pcap::Packet::new
# File lib/woolen_common/pcap/mu/pcap/sctp/parameter.rb, line 12
def initialize
    super

    @type = 0
    @size = 0
end

Public Instance Methods

padded_size() click to toggle source
# File lib/woolen_common/pcap/mu/pcap/sctp/parameter.rb, line 79
def padded_size
    if 0 == @size % 4
        return @size
    else
        return (@size + 4 - (@size % 4))
    end
end
to_s() click to toggle source
# File lib/woolen_common/pcap/mu/pcap/sctp/parameter.rb, line 87
def to_s
    return "parameter(%d, %d)" % [@type, @size]
end
write(io, ip) click to toggle source
# File lib/woolen_common/pcap/mu/pcap/sctp/parameter.rb, line 71
def write io, ip
    header = [@type, @size].pack('nn')

    # Write Parameter header followed by the payload
    io.write(header)
    io.write(@payload_raw)
end