lib/pio/icmp/reply.rb in pio-0.3.0 vs lib/pio/icmp/reply.rb in pio-0.4.0
- old
+ new
@@ -1,17 +1,44 @@
-# -*- coding: utf-8 -*-
+# encoding: utf-8
+
require 'pio/icmp/message'
+require 'pio/icmp/options'
+require 'pio/mac'
module Pio
class Icmp
# ICMP Reply packet generator
class Reply < Message
TYPE = 0
+ public_class_method :new
+
+ # User options for creating an ICMP Reply.
+ class Options < Pio::Icmp::Options
+ mandatory_option :source_mac
+ mandatory_option :destination_mac
+ mandatory_option :ip_source_address
+ mandatory_option :ip_destination_address
+ mandatory_option :identifier
+ mandatory_option :sequence_number
+ option :echo_data
+
+ # rubocop:disable MethodLength
+
+ def initialize(options)
+ validate options
+ @type = TYPE
+ @source_mac = Mac.new(options[:source_mac]).freeze
+ @destination_mac = Mac.new(options[:destination_mac]).freeze
+ @ip_source_address =
+ IPv4Address.new(options[:ip_source_address]).freeze
+ @ip_destination_address =
+ IPv4Address.new(options[:ip_destination_address]).freeze
+ @identifier = options[:identifier]
+ @sequence_number = options[:sequence_number]
+ @echo_data = options[:echo_data] || DEFAULT_ECHO_DATA
+ end
+
+ # rubocop:enable MethodLength
+ end
end
end
end
-
-### Local variables:
-### mode: Ruby
-### coding: utf-8-unix
-### indent-tabs-mode: nil
-### End: