pio 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +20 -18
  4. data/features/{packet_data/arp-storm.pcap → arp-storm.pcap} +0 -0
  5. data/features/arp.feature +1 -1
  6. data/features/{packet_data/arp.pcap → arp.pcap} +0 -0
  7. data/features/dhcp.feature +210 -3
  8. data/features/{packet_data/dhcp.pcap → dhcp.pcap} +0 -0
  9. data/features/icmp.feature +1 -1
  10. data/features/{packet_data/icmp.pcap → icmp.pcap} +0 -0
  11. data/features/{packet_data/lldp.detailed.pcap → lldp.detailed.pcap} +0 -0
  12. data/features/lldp.feature +5 -5
  13. data/features/{packet_data/lldp.minimal.pcap → lldp.minimal.pcap} +0 -0
  14. data/features/{packet_data → open_flow10}/aggregate_stats_reply.raw +0 -0
  15. data/features/{packet_data → open_flow10}/aggregate_stats_request.raw +0 -0
  16. data/features/{packet_data → open_flow10}/barrier_reply.raw +0 -0
  17. data/features/{packet_data → open_flow10}/barrier_request.raw +0 -0
  18. data/features/{packet_data → open_flow10}/desc_stats_reply.raw +0 -0
  19. data/features/{packet_data → open_flow10}/desc_stats_request.raw +0 -0
  20. data/features/open_flow10/echo_reply.feature +10 -10
  21. data/features/{packet_data → open_flow10}/echo_reply.raw +0 -0
  22. data/features/open_flow10/echo_request.feature +10 -10
  23. data/features/{packet_data → open_flow10}/echo_request.raw +0 -0
  24. data/features/{packet_data → open_flow10}/error.raw +0 -0
  25. data/features/open_flow10/exact_match.feature +33 -33
  26. data/features/open_flow10/features_reply.feature +71 -71
  27. data/features/{packet_data → open_flow10}/features_reply.raw +0 -0
  28. data/features/open_flow10/features_request.feature +9 -9
  29. data/features/{packet_data → open_flow10}/features_request.raw +0 -0
  30. data/features/open_flow10/flow_mod.feature +167 -167
  31. data/features/{packet_data → open_flow10}/flow_mod_add.raw +0 -0
  32. data/features/{packet_data → open_flow10}/flow_mod_delete.raw +0 -0
  33. data/features/{packet_data → open_flow10}/flow_mod_delete_strict.raw +0 -0
  34. data/features/{packet_data → open_flow10}/flow_mod_modify.raw +0 -0
  35. data/features/{packet_data → open_flow10}/flow_mod_modify_strict.raw +0 -0
  36. data/features/{packet_data → open_flow10}/flow_removed.raw +0 -0
  37. data/features/{packet_data → open_flow10}/flow_stats_reply.raw +0 -0
  38. data/features/{packet_data → open_flow10}/flow_stats_request.raw +0 -0
  39. data/features/{packet_data → open_flow10}/get_config_reply.raw +0 -0
  40. data/features/{packet_data → open_flow10}/get_config_request.raw +0 -0
  41. data/features/open_flow10/hello.feature +9 -9
  42. data/features/{packet_data → open_flow10}/hello.raw +0 -0
  43. data/features/open_flow10/packet_in.feature +4 -4
  44. data/features/{packet_data → open_flow10}/packet_in_arp_request.raw +0 -0
  45. data/features/{packet_data → open_flow10}/packet_in_cbench.raw +0 -0
  46. data/features/open_flow10/packet_out.feature +3 -3
  47. data/features/{packet_data → open_flow10}/packet_out.raw +0 -0
  48. data/features/{packet_data → open_flow10}/port_mod.raw +0 -0
  49. data/features/{packet_data → open_flow10}/port_stats_reply.raw +0 -0
  50. data/features/{packet_data → open_flow10}/port_stats_request.raw +0 -0
  51. data/features/open_flow10/port_status.feature +3 -3
  52. data/features/{packet_data → open_flow10}/port_status.raw +0 -0
  53. data/features/{packet_data → open_flow10}/queue_get_config_reply.raw +0 -0
  54. data/features/{packet_data → open_flow10}/queue_get_config_request.raw +0 -0
  55. data/features/{packet_data → open_flow10}/set_config.raw +0 -0
  56. data/features/{packet_data → open_flow10}/table_stats_reply.raw +0 -0
  57. data/features/{packet_data → open_flow10}/table_stats_request.raw +0 -0
  58. data/features/{packet_data → open_flow10}/vendor.raw +0 -0
  59. data/features/{packet_data → open_flow10}/vendor_stats_request.raw +0 -0
  60. data/features/open_flow13/echo_reply.feature +64 -61
  61. data/features/{packet_data/echo13_reply_body.raw → open_flow13/echo_reply_body.raw} +0 -0
  62. data/features/{packet_data/echo13_reply_no_body.raw → open_flow13/echo_reply_no_body.raw} +0 -0
  63. data/features/open_flow13/echo_request.feature +64 -61
  64. data/features/{packet_data/echo13_request_body.raw → open_flow13/echo_request_body.raw} +0 -0
  65. data/features/{packet_data/echo13_request_no_body.raw → open_flow13/echo_request_no_body.raw} +0 -0
  66. data/features/open_flow13/features_reply.feature +53 -0
  67. data/features/open_flow13/features_reply.raw +0 -0
  68. data/features/open_flow13/features_request.feature +89 -0
  69. data/features/open_flow13/features_request.raw +0 -0
  70. data/features/open_flow13/hello.feature +26 -23
  71. data/features/{packet_data/hello13_no_version_bitmap.raw → open_flow13/hello_no_version_bitmap.raw} +0 -0
  72. data/features/{packet_data/hello13_version_bitmap.raw → open_flow13/hello_version_bitmap.raw} +0 -0
  73. data/features/step_definitions/open_flow_steps.rb +3 -0
  74. data/features/step_definitions/packet_data_steps.rb +9 -9
  75. data/features/udp.feature +3 -3
  76. data/features/{packet_data/udp_no_payload.raw → udp_no_payload.raw} +0 -0
  77. data/features/{packet_data/udp_with_payload.raw → udp_with_payload.raw} +0 -0
  78. data/lib/pio.rb +1 -9
  79. data/lib/pio/open_flow/actions.rb +8 -8
  80. data/lib/pio/open_flow/open_flow_header.rb +10 -0
  81. data/lib/pio/open_flow10.rb +15 -0
  82. data/lib/pio/open_flow10/echo.rb +15 -0
  83. data/lib/pio/open_flow10/exact_match.rb +51 -0
  84. data/lib/pio/{features.rb → open_flow10/features.rb} +8 -7
  85. data/lib/pio/{flow_mod.rb → open_flow10/flow_mod.rb} +1 -1
  86. data/lib/pio/{hello.rb → open_flow10/hello.rb} +0 -0
  87. data/lib/pio/{match.rb → open_flow10/match.rb} +46 -43
  88. data/lib/pio/{packet_in.rb → open_flow10/packet_in.rb} +0 -0
  89. data/lib/pio/{packet_out.rb → open_flow10/packet_out.rb} +0 -0
  90. data/lib/pio/{port_status.rb → open_flow10/port_status.rb} +0 -0
  91. data/lib/pio/open_flow13.rb +12 -0
  92. data/lib/pio/{echo.rb → open_flow13/echo.rb} +9 -13
  93. data/lib/pio/open_flow13/features_reply.rb +91 -0
  94. data/lib/pio/open_flow13/features_request.rb +54 -0
  95. data/lib/pio/{hello13.rb → open_flow13/hello.rb} +4 -1
  96. data/lib/pio/{set_eth_addr.rb → set_ether_address.rb} +7 -7
  97. data/lib/pio/{set_ip_addr.rb → set_ip_address.rb} +7 -7
  98. data/lib/pio/set_ip_tos.rb +1 -1
  99. data/lib/pio/set_transport_port.rb +2 -2
  100. data/lib/pio/version.rb +1 -1
  101. data/pio.gemspec +2 -2
  102. data/spec/pio/flow_mod_spec.rb +45 -45
  103. data/spec/pio/match_spec.rb +122 -120
  104. data/spec/pio/{hello13_spec.rb → open_flow13/hello_spec.rb} +11 -11
  105. data/spec/pio/packet_out_spec.rb +19 -19
  106. data/spec/pio/set_ether_destination_address_spec.rb +28 -0
  107. data/spec/pio/set_ether_source_address_spec.rb +28 -0
  108. data/spec/pio/set_ip_destination_address_spec.rb +27 -0
  109. data/spec/pio/set_ip_source_address_spec.rb +25 -0
  110. data/spec/pio/set_transport_destination_port_spec.rb +44 -0
  111. data/spec/pio/set_transport_source_port_spec.rb +44 -0
  112. data/spec/pio/wildcards_spec.rb +23 -21
  113. metadata +179 -165
  114. data/bin/byebug +0 -16
  115. data/lib/pio/exact_match.rb +0 -51
  116. data/spec/pio/set_eth_dst_addr_spec.rb +0 -28
  117. data/spec/pio/set_eth_src_addr_spec.rb +0 -28
  118. data/spec/pio/set_ip_dst_addr_spec.rb +0 -25
  119. data/spec/pio/set_ip_src_addr_spec.rb +0 -25
  120. data/spec/pio/set_transport_dst_port_spec.rb +0 -42
  121. data/spec/pio/set_transport_src_port_spec.rb +0 -42
@@ -1,3 +1,4 @@
1
+ require 'forwardable'
1
2
  require 'pio/open_flow'
2
3
 
3
4
  module Pio
@@ -30,13 +31,13 @@ module Pio
30
31
  :set_vlan_vid,
31
32
  :set_vlan_pcp,
32
33
  :strip_vlan,
33
- :set_dl_src,
34
- :set_dl_dst,
35
- :set_nw_src,
36
- :set_nw_dst,
37
- :set_nw_tos,
38
- :set_tp_src,
39
- :set_tp_dst,
34
+ :set_ether_source_address,
35
+ :set_ether_destination_address,
36
+ :set_ip_source_address,
37
+ :set_ip_destination_address,
38
+ :set_ip_tos,
39
+ :set_transport_source_port,
40
+ :set_transport_destination_port,
40
41
  :enqueue]
41
42
 
42
43
  endian :big
@@ -1,5 +1,5 @@
1
- require 'pio/match'
2
1
  require 'pio/open_flow'
2
+ require 'pio/open_flow10/match'
3
3
 
4
4
  # Base module.
5
5
  module Pio
File without changes
@@ -11,32 +11,32 @@ module Pio
11
11
  class Wildcards < BinData::Primitive
12
12
  BITS = {
13
13
  in_port: 1 << 0,
14
- dl_vlan: 1 << 1,
15
- dl_src: 1 << 2,
16
- dl_dst: 1 << 3,
17
- dl_type: 1 << 4,
18
- nw_proto: 1 << 5,
19
- tp_src: 1 << 6,
20
- tp_dst: 1 << 7,
21
- nw_src: 0,
22
- nw_src0: 1 << 8,
23
- nw_src1: 1 << 9,
24
- nw_src2: 1 << 10,
25
- nw_src3: 1 << 11,
26
- nw_src4: 1 << 12,
27
- nw_src_all: 1 << 13,
28
- nw_dst: 0,
29
- nw_dst0: 1 << 14,
30
- nw_dst1: 1 << 15,
31
- nw_dst2: 1 << 16,
32
- nw_dst3: 1 << 17,
33
- nw_dst4: 1 << 18,
34
- nw_dst_all: 1 << 19,
35
- dl_vlan_pcp: 1 << 20,
36
- nw_tos: 1 << 21
14
+ vlan_vid: 1 << 1,
15
+ ether_source_address: 1 << 2,
16
+ ether_destination_address: 1 << 3,
17
+ ether_type: 1 << 4,
18
+ ip_protocol: 1 << 5,
19
+ transport_source_port: 1 << 6,
20
+ transport_destination_port: 1 << 7,
21
+ ip_source_address: 0,
22
+ ip_source_address0: 1 << 8,
23
+ ip_source_address1: 1 << 9,
24
+ ip_source_address2: 1 << 10,
25
+ ip_source_address3: 1 << 11,
26
+ ip_source_address4: 1 << 12,
27
+ ip_source_address_all: 1 << 13,
28
+ ip_destination_address: 0,
29
+ ip_destination_address0: 1 << 14,
30
+ ip_destination_address1: 1 << 15,
31
+ ip_destination_address2: 1 << 16,
32
+ ip_destination_address3: 1 << 17,
33
+ ip_destination_address4: 1 << 18,
34
+ ip_destination_address_all: 1 << 19,
35
+ vlan_priority: 1 << 20,
36
+ ip_tos: 1 << 21
37
37
  }
38
- NW_FLAGS = [:nw_src, :nw_dst]
39
- FLAGS = BITS.keys.select { |each| !(/^nw_(src|dst)/=~ each) }
38
+ NW_FLAGS = [:ip_source_address, :ip_destination_address]
39
+ FLAGS = BITS.keys.select { |each| !(/^ip_(source|destination)/=~ each) }
40
40
 
41
41
  endian :big
42
42
 
@@ -46,7 +46,7 @@ module Pio
46
46
  def get
47
47
  BITS.each_with_object(Hash.new(0)) do |(key, bit), memo|
48
48
  next if flags & bit == 0
49
- if /(nw_src|nw_dst)(\d)/=~ key
49
+ if /(ip_source_address|ip_destination_address)(\d)/=~ key
50
50
  memo[$LAST_MATCH_INFO[1].intern] |= 1 << $LAST_MATCH_INFO[2].to_i
51
51
  else
52
52
  memo[key] = true
@@ -57,22 +57,23 @@ module Pio
57
57
  def set(params)
58
58
  self.flags = params.inject(0) do |memo, (key, val)|
59
59
  memo | case key
60
- when :nw_src, :nw_dst
61
- (params.fetch(key) & 31) << (key == :nw_src ? 8 : 14)
60
+ when :ip_source_address, :ip_destination_address
61
+ (params.fetch(key) & 31) <<
62
+ (key == :ip_source_address ? 8 : 14)
62
63
  else
63
64
  val ? BITS.fetch(key) : 0
64
65
  end
65
66
  end
66
67
  end
67
68
 
68
- def nw_src
69
- get.fetch(:nw_src)
69
+ def ip_source_address
70
+ get.fetch(:ip_source_address)
70
71
  rescue KeyError
71
72
  0
72
73
  end
73
74
 
74
- def nw_dst
75
- get.fetch(:nw_dst)
75
+ def ip_destination_address
76
+ get.fetch(:ip_destination_address)
76
77
  rescue KeyError
77
78
  0
78
79
  end
@@ -105,21 +106,23 @@ module Pio
105
106
 
106
107
  wildcards :wildcards
107
108
  uint16 :in_port
108
- mac_address :dl_src
109
- mac_address :dl_dst
110
- uint16 :dl_vlan
111
- uint8 :dl_vlan_pcp
109
+ mac_address :ether_source_address
110
+ mac_address :ether_destination_address
111
+ uint16 :vlan_vid
112
+ uint8 :vlan_priority
112
113
  uint8 :padding1
113
114
  hide :padding1
114
- uint16 :dl_type
115
- uint8 :nw_tos
116
- uint8 :nw_proto
115
+ uint16 :ether_type
116
+ uint8 :ip_tos
117
+ uint8 :ip_protocol
117
118
  uint16 :padding2
118
119
  hide :padding2
119
- match_ip_address :nw_src, bitcount: -> { wildcards.nw_src }
120
- match_ip_address :nw_dst, bitcount: -> { wildcards.nw_dst }
121
- uint16 :tp_src
122
- uint16 :tp_dst
120
+ match_ip_address :ip_source_address,
121
+ bitcount: -> { wildcards.ip_source_address }
122
+ match_ip_address :ip_destination_address,
123
+ bitcount: -> { wildcards.ip_destination_address }
124
+ uint16 :transport_source_port
125
+ uint16 :transport_destination_port
123
126
  end
124
127
 
125
128
  def self.read(binary)
File without changes
@@ -0,0 +1,12 @@
1
+ module Pio
2
+ # OpenFlow specific types.
3
+ module OpenFlow
4
+ remove_const :VERSION
5
+ VERSION = 4
6
+ end
7
+ end
8
+
9
+ require 'pio/open_flow13/echo'
10
+ require 'pio/open_flow13/features_reply'
11
+ require 'pio/open_flow13/features_request'
12
+ require 'pio/open_flow13/hello'
@@ -1,19 +1,11 @@
1
1
  require 'forwardable'
2
2
  require 'pio/open_flow'
3
3
 
4
+ # Base module.
4
5
  module Pio
5
- # OpenFlow 1.0 Echo Request and Reply message.
6
- module Echo
7
- # OpenFlow 1.0 Echo Request message.
8
- class Request; end
9
- OpenFlow::Message.factory(Request, OpenFlow::ECHO_REQUEST)
10
-
11
- # OpenFlow 1.0 Echo Reply message.
12
- class Reply; end
13
- OpenFlow::Message.factory(Reply, OpenFlow::ECHO_REPLY)
14
- end
6
+ remove_const :Echo
15
7
 
16
- module Echo13
8
+ module Echo
17
9
  # Base class of Echo Request and Reply.
18
10
  class Message
19
11
  def self.message_name
@@ -54,12 +46,16 @@ module Pio
54
46
  def_delegators :open_flow_header, :message_length
55
47
  def_delegators :open_flow_header, :transaction_id
56
48
  def_delegator :open_flow_header, :transaction_id, :xid
49
+
50
+ def to_binary
51
+ to_binary_s
52
+ end
57
53
  end
58
54
 
59
55
  # OpenFlow 1.3 Echo Request message.
60
56
  class Request < Message
61
57
  # OpenFlow 1.3 Echo Request message format.
62
- class Format < Echo13::Format
58
+ class Format < Echo::Format
63
59
  endian :big
64
60
  open_flow_header :open_flow_header,
65
61
  ofp_version_value: 4, message_type_value: 2
@@ -70,7 +66,7 @@ module Pio
70
66
  # OpenFlow 1.3 Echo Reply message.
71
67
  class Reply < Message
72
68
  # OpenFlow 1.3 Echo Request message format.
73
- class Format < Echo13::Format
69
+ class Format < Echo::Format
74
70
  endian :big
75
71
  open_flow_header :open_flow_header,
76
72
  ofp_version_value: 4, message_type_value: 3
@@ -0,0 +1,91 @@
1
+ require 'forwardable'
2
+ require 'pio/open_flow'
3
+
4
+ # Base module.
5
+ module Pio
6
+ # OpenFlow 1.3 Features Request and Reply message.
7
+ class Features
8
+ remove_const :Reply
9
+
10
+ # OpenFlow 1.3 Features Reply message.
11
+ class Reply
12
+ # OpenFlow 1.3 Features Reply message body.
13
+ class Body < BinData::Record
14
+ extend OpenFlow::Flags
15
+
16
+ flags_32bit(:capabilities,
17
+ [:flow_stats,
18
+ :table_stats,
19
+ :port_stats,
20
+ :group_stats,
21
+ :NOT_USED,
22
+ :ip_reasm,
23
+ :queue_stats,
24
+ :NOT_USED,
25
+ :port_blocked])
26
+
27
+ endian :big
28
+
29
+ uint64 :datapath_id
30
+ uint32 :n_buffers
31
+ uint8 :n_tables
32
+ uint8 :auxiliary_id
33
+ uint16 :padding
34
+ hide :padding
35
+ capabilities :capabilities
36
+ uint32 :reserved
37
+
38
+ def length
39
+ 24
40
+ end
41
+ end
42
+
43
+ # OpenFlow 1.3 Features Reply message format.
44
+ class Format < BinData::Record
45
+ extend Forwardable
46
+
47
+ endian :big
48
+ open_flow_header(:open_flow_header,
49
+ ofp_version_value: 4, message_type_value: 6)
50
+ body :body
51
+
52
+ def_delegators :open_flow_header, :ofp_version
53
+ def_delegators :open_flow_header, :message_type
54
+ def_delegators :open_flow_header, :message_length
55
+ def_delegators :open_flow_header, :transaction_id
56
+ def_delegator :open_flow_header, :transaction_id, :xid
57
+ def_delegators :body, :datapath_id
58
+ def_delegators :body, :n_buffers
59
+ def_delegators :body, :n_tables
60
+ def_delegators :body, :auxiliary_id
61
+ def_delegators :body, :capabilities
62
+ def_delegators :body, :reserved
63
+
64
+ def dpid
65
+ datapath_id
66
+ end
67
+ end
68
+
69
+ def self.read(raw_data)
70
+ allocate.tap do |message|
71
+ message.instance_variable_set(:@format, Format.read(raw_data))
72
+ end
73
+ rescue BinData::ValidityError
74
+ raise Pio::ParseError, 'Invalid Features Reply 1.3 message.'
75
+ end
76
+
77
+ def initialize(user_attrs = {})
78
+ header_options = OpenFlowHeader::Options.parse(user_attrs)
79
+ body_options = user_attrs.dup
80
+ body_options[:datapath_id] =
81
+ body_options[:dpid] || body_options[:datapath_id]
82
+ @format = Format.new(open_flow_header: header_options,
83
+ body: body_options)
84
+ end
85
+
86
+ def method_missing(method, *args, &block)
87
+ @format.__send__ method, *args, &block
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,54 @@
1
+ require 'forwardable'
2
+ require 'pio/open_flow'
3
+
4
+ # Base module.
5
+ module Pio
6
+ # OpenFlow 1.3 Features Request and Reply message.
7
+ class Features
8
+ remove_const :Request
9
+
10
+ # OpenFlow 1.3 Features Request message.
11
+ class Request
12
+ # OpenFlow 1.3 Features Request message format.
13
+ class Format < BinData::Record
14
+ extend Forwardable
15
+
16
+ endian :big
17
+ open_flow_header(:open_flow_header,
18
+ ofp_version_value: 4, message_type_value: 5)
19
+ string :body, value: ''
20
+
21
+ def_delegators :open_flow_header, :ofp_version
22
+ def_delegators :open_flow_header, :message_type
23
+ def_delegators :open_flow_header, :message_length
24
+ def_delegators :open_flow_header, :transaction_id
25
+ def_delegator :open_flow_header, :transaction_id, :xid
26
+
27
+ def to_binary
28
+ to_binary_s
29
+ end
30
+ end
31
+
32
+ def self.read(raw_data)
33
+ allocate.tap do |message|
34
+ message.instance_variable_set(:@format, Format.read(raw_data))
35
+ end
36
+ rescue BinData::ValidityError
37
+ raise Pio::ParseError, 'Invalid Features Request 1.3 message.'
38
+ end
39
+
40
+ def initialize(user_attrs = {})
41
+ unknown_attrs = user_attrs.keys - [:transaction_id, :xid]
42
+ unless unknown_attrs.empty?
43
+ fail "Unknown keyword: #{unknown_attrs.first}"
44
+ end
45
+ header_options = OpenFlowHeader::Options.parse(user_attrs)
46
+ @format = Format.new(open_flow_header: header_options)
47
+ end
48
+
49
+ def method_missing(method, *args, &block)
50
+ @format.__send__ method, *args, &block
51
+ end
52
+ end
53
+ end
54
+ end
@@ -3,9 +3,12 @@ require 'forwardable'
3
3
  require 'pio/open_flow'
4
4
  require 'pio/parse_error'
5
5
 
6
+ # Base module.
6
7
  module Pio
8
+ remove_const :Hello
9
+
7
10
  # OpenFlow 1.3 Hello message parser and generator
8
- class Hello13
11
+ class Hello
9
12
  # ofp_hello_elem_header and value
10
13
  class Element < BinData::Record
11
14
  VERSION_BITMAP = 1
@@ -4,7 +4,7 @@ require 'pio/type/mac_address'
4
4
 
5
5
  module Pio
6
6
  # An action to modify the source/destination Ethernet address of a packet.
7
- class SetEthAddr
7
+ class SetEtherAddress
8
8
  # rubocop:disable MethodLength
9
9
  def self.def_format(action_type)
10
10
  str = %(
@@ -23,10 +23,10 @@ module Pio
23
23
  # rubocop:enable MethodLength
24
24
 
25
25
  def self.read(raw_data)
26
- set_eth_addr = allocate
27
- set_eth_addr.instance_variable_set(:@format,
28
- const_get(:Format).read(raw_data))
29
- set_eth_addr
26
+ set_ether_address = allocate
27
+ set_ether_address.instance_variable_set(:@format,
28
+ const_get(:Format).read(raw_data))
29
+ set_ether_address
30
30
  end
31
31
 
32
32
  extend Forwardable
@@ -41,12 +41,12 @@ module Pio
41
41
  end
42
42
 
43
43
  # An action to modify the source Ethernet address of a packet.
44
- class SetEthSrcAddr < SetEthAddr
44
+ class SetEtherSourceAddr < SetEtherAddress
45
45
  def_format 4
46
46
  end
47
47
 
48
48
  # An action to modify the destination Ethernet address of a packet.
49
- class SetEthDstAddr < SetEthAddr
49
+ class SetEtherDestinationAddr < SetEtherAddress
50
50
  def_format 5
51
51
  end
52
52
  end
@@ -4,7 +4,7 @@ require 'pio/type/ip_address'
4
4
 
5
5
  module Pio
6
6
  # An action to modify the IPv4 source/destination address of a packet.
7
- class SetIpAddr
7
+ class SetIpAddress
8
8
  def self.def_format(action_type)
9
9
  str = %(
10
10
  class Format < BinData::Record
@@ -19,10 +19,10 @@ module Pio
19
19
  end
20
20
 
21
21
  def self.read(raw_data)
22
- set_ip_addr = allocate
23
- set_ip_addr.instance_variable_set(:@format,
24
- const_get(:Format).read(raw_data))
25
- set_ip_addr
22
+ set_ip_address = allocate
23
+ set_ip_address.instance_variable_set(:@format,
24
+ const_get(:Format).read(raw_data))
25
+ set_ip_address
26
26
  end
27
27
 
28
28
  extend Forwardable
@@ -38,12 +38,12 @@ module Pio
38
38
  end
39
39
 
40
40
  # An action to modify the IPv4 source address of a packet.
41
- class SetIpSrcAddr < SetIpAddr
41
+ class SetIpSourceAddress < SetIpAddress
42
42
  def_format 6
43
43
  end
44
44
 
45
45
  # An action to modify the IPv4 source address of a packet.
46
- class SetIpDstAddr < SetIpAddr
46
+ class SetIpDestinationAddress < SetIpAddress
47
47
  def_format 7
48
48
  end
49
49
  end