Sha256: 7c132553fedb8e4e4c24ed651a3fd9ea7ccc727945ce4772dfa4db8b1b80da4d

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

# coding: utf-8
# This file is part of PacketGen
# See https://github.com/sdaubert/packetgen for more informations
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
# This program is published under MIT license.
require 'socket'

module PacketGen

  # Module handling some helper methods for protocols
  # @author Sylvain Daubert
  # @since 2.1.2
  module Proto

    # @private cache information used by {.getprotobyname} and
    #  {.getprotobynumber}
    def self.prepare_cache
      proto_constants = Socket.constants.grep(/IPPROTO_/)
      @cache = {}
      proto_constants.each do |const_sym|
        name = const_sym.to_s[8..-1].downcase
        number = Socket.const_get(const_sym)
        @cache[name] = number
      end
    end
    prepare_cache

    # Get protocol number from its name
    # @param [String] name
    # @return [Integer,nil] return nil for unknown protocol names
    def self.getprotobyname(name)
      @cache[name]
    end

    # Get protocol name from its number
    # @param [Integer] num
    # @return [String,nil] return nil for unknown protocol numbers
    def self.getprotobynumber(num)
      @cache.key(num)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
packetgen-2.4.0 lib/packetgen/proto.rb
packetgen-2.3.0 lib/packetgen/proto.rb
packetgen-2.2.0 lib/packetgen/proto.rb
packetgen-2.1.4 lib/packetgen/proto.rb
packetgen-2.1.3 lib/packetgen/proto.rb