packetgen 2.8.4 → 2.8.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd941670ed94baa729f5ee91da53062195f6764b3e75d7e70cbbc09075adfdc2
4
- data.tar.gz: 4e5b3082f9ada7a234fc559baf53f8abb0ab374e76391c938505f82235a2a58a
3
+ metadata.gz: 6763c9433901ae848d2186d92ec47e3894b493b951c048d68e3a01bd52504563
4
+ data.tar.gz: 68ec7d1ea6a27fa2101d8c7b72800083cdebe80cf8eec93d52255d459fbc5f73
5
5
  SHA512:
6
- metadata.gz: ebe8bf700763779d708b96bc7731dec2e73b2aa9c23308b9b2f63743c785bc989dfeea01d1b04dba8210f031f6047791151f06a4671b0980bd429becc653403c
7
- data.tar.gz: 9243425668eba786664e28a55edb7458b0d51bb27e3ca09ac68573b9d41e0cb5f087fe677f93c5d05aef05ac55adc08220475c643e1da81958259ab07b34407c
6
+ metadata.gz: d8166a6b1fee9a6d8ed45af7f100368272576cc6242e367e1735b204362e75fe5b76839fb53b75046a42cb7e5e3518705142ee9ef2a4326f44ea080f9f70c35b
7
+ data.tar.gz: 7079595e88887e39e1bb5b2e6d24689710cc0edcf2399d67fcf20964fa160481654b3e0ce1375739844465d51428b7c3a67f55fa0e008c9e379cbddff8cf5847
@@ -4,15 +4,17 @@ module PacketGen
4
4
  # @author Sylvain Daubert
5
5
  # @api private
6
6
  module Deprecation
7
- def self.deprecated(klass, deprecated_method, new_method, klass_method: false, remove_version: '3.0.0')
7
+ def self.deprecated(klass, deprecated_method, new_method=nil, klass_method: false, remove_version: '3.0.0')
8
8
  separator = klass_method ? '.' : '#'
9
9
  base_name = klass.to_s + separator
10
10
  complete_deprecated_method_name = base_name + deprecated_method.to_s
11
- complete_new_method_name = base_name + new_method.to_s
11
+ complete_new_method_name = base_name + new_method.to_s unless new_method.nil?
12
12
 
13
13
  file, line = caller(2).first.split(':')[0, 2]
14
- warn "#{file}:#{line}: #{complete_deprecated_method_name} is deprecated in favor of #{complete_new_method_name}. " \
15
- "It will be remove in PacketGen #{remove_version}."
14
+ message = +"#{file}:#{line}: #{complete_deprecated_method_name} is deprecated"
15
+ message << "in favor of #{complete_new_method_name}" unless new_method.nil?
16
+ message << ". It will be remove in PacketGen #{remove_version}."
17
+ warn message
16
18
  end
17
19
  end
18
20
  end
@@ -64,6 +64,60 @@ module PacketGen
64
64
  self
65
65
  end
66
66
 
67
+ # Get destination MAC address
68
+ # @return [String]
69
+ def dst
70
+ ds = frame_ctrl & 3
71
+ case ds
72
+ when 0, 2
73
+ self.mac1
74
+ when 1, 3
75
+ self.mac3
76
+ end
77
+ end
78
+
79
+ # Set destination MAC address
80
+ # @param [String] mac MAC address to set
81
+ # @return [String]
82
+ def dst=(mac)
83
+ ds = frame_ctrl & 3
84
+ case ds
85
+ when 0, 2
86
+ self.mac1 = mac
87
+ when 1, 3
88
+ self.mac3 = mac
89
+ end
90
+ end
91
+
92
+ # Get source MAC address
93
+ # @return [String]
94
+ def src
95
+ ds = frame_ctrl & 3
96
+ case ds
97
+ when 0, 1
98
+ self.mac2
99
+ when 2
100
+ self.mac3
101
+ when 3
102
+ self.mac4
103
+ end
104
+ end
105
+
106
+ # Set source MAC address
107
+ # @param [String] mac MAC address to set
108
+ # @return [String]
109
+ def src=(mac)
110
+ ds = frame_ctrl & 3
111
+ case ds
112
+ when 0, 1
113
+ self.mac2 = mac
114
+ when 2
115
+ self.mac3 = mac
116
+ when 3
117
+ self.mac4 = mac
118
+ end
119
+ end
120
+
67
121
  private
68
122
 
69
123
  def define_applicable_fields
@@ -94,249 +94,258 @@ module PacketGen
94
94
  # offset subfield from +frag+ field.
95
95
  # @author Sylvain Daubert
96
96
  class Fields
97
- # @private
97
+ # @private field names, ordered as they were declared
98
98
  @ordered_fields = []
99
- # @private
99
+ # @private field definitions
100
100
  @field_defs = {}
101
- # @private
101
+ # @private bit field definitions
102
102
  @bit_fields = {}
103
103
 
104
- # On inheritage, create +@field_defs+ class variable
105
- # @param [Class] klass
106
- # @return [void]
107
- def self.inherited(klass)
108
- field_defs = {}
109
- @field_defs.each do |k, v|
110
- field_defs[k] = v.clone
111
- end
112
- ordered = @ordered_fields.clone
113
- bf = @bit_fields.clone
114
- klass.class_eval do
115
- @ordered_fields = ordered
116
- @field_defs = field_defs
117
- @bit_fields = bf
104
+ class <<self
105
+ # On inheritage, create +@field_defs+ class variable
106
+ # @param [Class] klass
107
+ # @return [void]
108
+ def inherited(klass)
109
+ field_defs = {}
110
+ @field_defs.each do |k, v|
111
+ field_defs[k] = v.clone
112
+ end
113
+ ordered = @ordered_fields.clone
114
+ bf = @bit_fields.clone
115
+ klass.class_eval do
116
+ @ordered_fields = ordered
117
+ @field_defs = field_defs
118
+ @bit_fields = bf
119
+ end
118
120
  end
119
- end
120
121
 
121
- # Define a field in class
122
- # class BinaryStruct < PacketGen::Types::Fields
123
- # # 8-bit value
124
- # define_field :value1, Types::Int8
125
- # # 16-bit value
126
- # define_field :value2, Types::Int16
127
- # # specific class, may use a specific constructor
128
- # define_field :value3, MyClass, builder: ->(obj, type) { type.new(obj) }
129
- # end
130
- #
131
- # bs = BinaryStruct.new
132
- # bs[value1] # => Types::Int8
133
- # bs.value1 # => Integer
134
- # @param [Symbol] name field name
135
- # @param [Object] type class or instance
136
- # @param [Hash] options Unrecognized options are passed to object builder if
137
- # +:builder+ option is not set.
138
- # @option options [Object] :default default value. May be a proc. This lambda
139
- # take one argument: the caller object.
140
- # @option options [Lambda] :builder lambda to construct this field.
141
- # Parameters to this lambda is the caller object and the field type class.
142
- # @option options [Lambda] :optional define this field as optional. Given lambda
143
- # is used to known if this field is present or not. Parameter to this lambda is
144
- # the being defined Field object.
145
- # @option options [Hash] :enum mandatory option for an {Enum} type.
146
- # Define enumeration: hash's keys are +String+, and values are +Integer+.
147
- # @return [void]
148
- def self.define_field(name, type, options={})
149
- define = []
150
- if type < Types::Enum
151
- define << "def #{name}; self[:#{name}].to_i; end"
152
- define << "def #{name}=(val) self[:#{name}].value = val; end"
153
- elsif type < Types::Int
154
- define << "def #{name}; self[:#{name}].to_i; end"
155
- define << "def #{name}=(val) self[:#{name}].read val; end"
156
- elsif type.instance_methods.include?(:to_human) &&
157
- type.instance_methods.include?(:from_human)
158
- define << "def #{name}; self[:#{name}].to_human; end"
159
- define << "def #{name}=(val) self[:#{name}].from_human val; end"
160
- else
161
- define << "def #{name}; self[:#{name}]; end\n"
162
- define << "def #{name}=(val) self[:#{name}].read val; end"
122
+ # Get field names
123
+ # @return [Array<Symbol>]
124
+ def fields
125
+ @ordered_fields
163
126
  end
164
127
 
165
- define.delete(1) if type.instance_methods.include? "#{name}=".to_sym
166
- define.delete(0) if type.instance_methods.include? name
167
- class_eval define.join("\n")
168
- @field_defs[name] = [type, options.delete(:default),
169
- options.delete(:builder),
170
- options.delete(:optional),
171
- options.delete(:enum),
172
- options]
173
- @ordered_fields << name
174
- end
175
-
176
- # Define a field, before another one
177
- # @param [Symbol,nil] other field name to create a new one before. If +nil+,
178
- # new field is appended.
179
- # @param [Symbol] name field name to create
180
- # @param [Object] type class or instance
181
- # @param [Hash] options See {.define_field}.
182
- # @return [void]
183
- # @see .define_field
184
- def self.define_field_before(other, name, type, options={})
185
- define_field name, type, options
186
- return if other.nil?
187
-
188
- @ordered_fields.delete name
189
- idx = @ordered_fields.index(other)
190
- raise ArgumentError, "unknown #{other} field" if idx.nil?
128
+ # Define a field in class
129
+ # class BinaryStruct < PacketGen::Types::Fields
130
+ # # 8-bit value
131
+ # define_field :value1, Types::Int8
132
+ # # 16-bit value
133
+ # define_field :value2, Types::Int16
134
+ # # specific class, may use a specific constructor
135
+ # define_field :value3, MyClass, builder: ->(obj, type) { type.new(obj) }
136
+ # end
137
+ #
138
+ # bs = BinaryStruct.new
139
+ # bs[value1] # => Types::Int8
140
+ # bs.value1 # => Integer
141
+ # @param [Symbol] name field name
142
+ # @param [Object] type class or instance
143
+ # @param [Hash] options Unrecognized options are passed to object builder if
144
+ # +:builder+ option is not set.
145
+ # @option options [Object] :default default value. May be a proc. This lambda
146
+ # take one argument: the caller object.
147
+ # @option options [Lambda] :builder lambda to construct this field.
148
+ # Parameters to this lambda is the caller object and the field type class.
149
+ # @option options [Lambda] :optional define this field as optional. Given lambda
150
+ # is used to known if this field is present or not. Parameter to this lambda is
151
+ # the being defined Field object.
152
+ # @option options [Hash] :enum mandatory option for an {Enum} type.
153
+ # Define enumeration: hash's keys are +String+, and values are +Integer+.
154
+ # @return [void]
155
+ def define_field(name, type, options={})
156
+ define = []
157
+ if type < Types::Enum
158
+ define << "def #{name}; self[:#{name}].to_i; end"
159
+ define << "def #{name}=(val) self[:#{name}].value = val; end"
160
+ elsif type < Types::Int
161
+ define << "def #{name}; self[:#{name}].to_i; end"
162
+ define << "def #{name}=(val) self[:#{name}].read val; end"
163
+ elsif type.instance_methods.include?(:to_human) &&
164
+ type.instance_methods.include?(:from_human)
165
+ define << "def #{name}; self[:#{name}].to_human; end"
166
+ define << "def #{name}=(val) self[:#{name}].from_human val; end"
167
+ else
168
+ define << "def #{name}; self[:#{name}]; end\n"
169
+ define << "def #{name}=(val) self[:#{name}].read val; end"
170
+ end
191
171
 
192
- @ordered_fields[idx, 0] = name
193
- end
172
+ define.delete(1) if type.instance_methods.include? "#{name}=".to_sym
173
+ define.delete(0) if type.instance_methods.include? name
174
+ class_eval define.join("\n")
175
+ @field_defs[name] = [type, options.delete(:default),
176
+ options.delete(:builder),
177
+ options.delete(:optional),
178
+ options.delete(:enum),
179
+ options]
180
+ fields << name
181
+ end
194
182
 
195
- # Define a field, after another one
196
- # @param [Symbol,nil] other field name to create a new one after. If +nil+,
197
- # new field is appended.
198
- # @param [Symbol] name field name to create
199
- # @param [Object] type class or instance
200
- # @param [Hash] options See {.define_field}.
201
- # @return [void]
202
- # @see .define_field
203
- def self.define_field_after(other, name, type, options={})
204
- define_field name, type, options
205
- return if other.nil?
183
+ # Define a field, before another one
184
+ # @param [Symbol,nil] other field name to create a new one before. If +nil+,
185
+ # new field is appended.
186
+ # @param [Symbol] name field name to create
187
+ # @param [Object] type class or instance
188
+ # @param [Hash] options See {.define_field}.
189
+ # @return [void]
190
+ # @see .define_field
191
+ def define_field_before(other, name, type, options={})
192
+ define_field name, type, options
193
+ return if other.nil?
194
+
195
+ fields.delete name
196
+ idx = fields.index(other)
197
+ raise ArgumentError, "unknown #{other} field" if idx.nil?
198
+
199
+ fields[idx, 0] = name
200
+ end
206
201
 
207
- @ordered_fields.delete name
208
- idx = @ordered_fields.index(other)
209
- raise ArgumentError, "unknown #{other} field" if idx.nil?
202
+ # Define a field, after another one
203
+ # @param [Symbol,nil] other field name to create a new one after. If +nil+,
204
+ # new field is appended.
205
+ # @param [Symbol] name field name to create
206
+ # @param [Object] type class or instance
207
+ # @param [Hash] options See {.define_field}.
208
+ # @return [void]
209
+ # @see .define_field
210
+ def define_field_after(other, name, type, options={})
211
+ define_field name, type, options
212
+ return if other.nil?
213
+
214
+ fields.delete name
215
+ idx = fields.index(other)
216
+ raise ArgumentError, "unknown #{other} field" if idx.nil?
217
+
218
+ fields[idx + 1, 0] = name
219
+ end
210
220
 
211
- @ordered_fields[idx + 1, 0] = name
212
- end
221
+ # Remove a previously defined field
222
+ # @param [Symbol] name
223
+ # @return [void]
224
+ # @since 2.8.4
225
+ def remove_field(name)
226
+ fields.delete name
227
+ @field_defs.delete name
228
+ undef_method name
229
+ undef_method "#{name}="
230
+ end
213
231
 
214
- # Remove a previously defined field
215
- # @param [Symbol] name
216
- # @return [void]
217
- # @since 2.8.4
218
- def self.remove_field(name)
219
- @ordered_fields.delete name
220
- @field_defs.delete name
221
- undef_method name
222
- undef_method "#{name}="
223
- end
232
+ # Delete a previously defined field
233
+ # @param [Symbol] name
234
+ # @return [void]
235
+ # @deprecated Use {.remove_field} instead.
236
+ # @since 2.8.4 deprecated
237
+ def delete_field(name)
238
+ Deprecation.deprecated(self, __method__, 'remove_field', klass_method: true)
239
+ remove_field name
240
+ end
224
241
 
225
- # Delete a previously defined field
226
- # @param [Symbol] name
227
- # @return [void]
228
- # @deprecated Use {.remove_field} instead.
229
- # @since 2.8.4 deprecated
230
- def self.delete_field(name)
231
- Deprecation.deprecated(self, __method__, 'remove_field', klass_method: true)
232
- remove_field name
233
- end
234
- # Update a previously defined field
235
- # @param [Symbol] field field name to create
236
- # @param [Hash] options See {.define_field}.
237
- # @return [void]
238
- # @see .define_field
239
- # @raise [ArgumentError] unknown +field+
240
- # @since 2.8.4
241
- def self.update_field(field, options)
242
- raise ArgumentError, "unkown #{field} field for #{self}" unless @field_defs.key?(field)
243
-
244
- @field_defs[field][1] = options.delete(:default) if options.key?(:default)
245
- @field_defs[field][2] = options.delete(:builder) if options.key?(:builder)
246
- @field_defs[field][3] = options.delete(:optional) if options.key?(:optional)
247
- @field_defs[field][4] = options.delete(:enum) if options.key?(:enum)
248
- @field_defs[field][5].merge!(options)
249
- end
242
+ # Update a previously defined field
243
+ # @param [Symbol] field field name to create
244
+ # @param [Hash] options See {.define_field}.
245
+ # @return [void]
246
+ # @see .define_field
247
+ # @raise [ArgumentError] unknown +field+
248
+ # @since 2.8.4
249
+ def update_field(field, options)
250
+ raise ArgumentError, "unkown #{field} field for #{self}" unless @field_defs.key?(field)
251
+
252
+ @field_defs[field][1] = options.delete(:default) if options.key?(:default)
253
+ @field_defs[field][2] = options.delete(:builder) if options.key?(:builder)
254
+ @field_defs[field][3] = options.delete(:optional) if options.key?(:optional)
255
+ @field_defs[field][4] = options.delete(:enum) if options.key?(:enum)
256
+ @field_defs[field][5].merge!(options)
257
+ end
250
258
 
251
- # Define a bitfield on given attribute
252
- # class MyHeader < PacketGen::Types::Fields
253
- # define_field :flags, Types::Int16
254
- # # define a bit field on :flag attribute:
255
- # # flag1, flag2 and flag3 are 1-bit fields
256
- # # type and stype are 3-bit fields. reserved is a 6-bit field
257
- # define_bit_fields_on :flags, :flag1, :flag2, :flag3, :type, 3, :stype, 3, :reserved, 7
258
- # end
259
- # A bitfield of size 1 bit defines 2 methods:
260
- # * +#field?+ which returns a Boolean,
261
- # * +#field=+ which takes and returns a Boolean.
262
- # A bitfield of more bits defines 2 methods:
263
- # * +#field+ which returns an Integer,
264
- # * +#field=+ which takes and returns an Integer.
265
- # @param [Symbol] attr attribute name (attribute should be a {Types::Int}
266
- # subclass)
267
- # @param [Array] args list of bitfield names. Name may be followed
268
- # by bitfield size. If no size is given, 1 bit is assumed.
269
- # @return [void]
270
- def self.define_bit_fields_on(attr, *args)
271
- attr_def = @field_defs[attr]
272
- raise ArgumentError, "unknown #{attr} field" if attr_def.nil?
259
+ # Define a bitfield on given attribute
260
+ # class MyHeader < PacketGen::Types::Fields
261
+ # define_field :flags, Types::Int16
262
+ # # define a bit field on :flag attribute:
263
+ # # flag1, flag2 and flag3 are 1-bit fields
264
+ # # type and stype are 3-bit fields. reserved is a 6-bit field
265
+ # define_bit_fields_on :flags, :flag1, :flag2, :flag3, :type, 3, :stype, 3, :reserved, 7
266
+ # end
267
+ # A bitfield of size 1 bit defines 2 methods:
268
+ # * +#field?+ which returns a Boolean,
269
+ # * +#field=+ which takes and returns a Boolean.
270
+ # A bitfield of more bits defines 2 methods:
271
+ # * +#field+ which returns an Integer,
272
+ # * +#field=+ which takes and returns an Integer.
273
+ # @param [Symbol] attr attribute name (attribute should be a {Types::Int}
274
+ # subclass)
275
+ # @param [Array] args list of bitfield names. Name may be followed
276
+ # by bitfield size. If no size is given, 1 bit is assumed.
277
+ # @return [void]
278
+ def define_bit_fields_on(attr, *args)
279
+ attr_def = @field_defs[attr]
280
+ raise ArgumentError, "unknown #{attr} field" if attr_def.nil?
281
+
282
+ type = attr_def.first
283
+ unless type < Types::Int
284
+ raise TypeError, "#{attr} is not a PacketGen::Types::Int"
285
+ end
273
286
 
274
- type = attr_def.first
275
- unless type < Types::Int
276
- raise TypeError, "#{attr} is not a PacketGen::Types::Int"
277
- end
287
+ total_size = type.new.width * 8
288
+ idx = total_size - 1
278
289
 
279
- total_size = type.new.width * 8
280
- idx = total_size - 1
281
-
282
- field = args.shift
283
- while field
284
- next unless field.is_a? Symbol
285
-
286
- size = if args.first.is_a? Integer
287
- args.shift
288
- else
289
- 1
290
- end
291
- unless field == :_
292
- shift = idx - (size - 1)
293
- field_mask = (2**size - 1) << shift
294
- clear_mask = (2**total_size - 1) & (~field_mask & (2**total_size - 1))
295
-
296
- if size == 1
297
- class_eval <<-METHODS
298
- def #{field}?
299
- val = (self[:#{attr}].to_i & #{field_mask}) >> #{shift}
300
- val != 0
301
- end
302
- def #{field}=(v)
303
- val = v ? 1 : 0
304
- self[:#{attr}].value = self[:#{attr}].to_i & #{clear_mask}
305
- self[:#{attr}].value |= val << #{shift}
306
- end
307
- METHODS
308
- else
309
- class_eval <<-METHODS
310
- def #{field}
311
- (self[:#{attr}].to_i & #{field_mask}) >> #{shift}
312
- end
313
- def #{field}=(v)
314
- self[:#{attr}].value = self[:#{attr}].to_i & #{clear_mask}
315
- self[:#{attr}].value |= (v & #{2**size - 1}) << #{shift}
290
+ field = args.shift
291
+ while field
292
+ next unless field.is_a? Symbol
293
+
294
+ size = if args.first.is_a? Integer
295
+ args.shift
296
+ else
297
+ 1
298
+ end
299
+ unless field == :_
300
+ shift = idx - (size - 1)
301
+ field_mask = (2**size - 1) << shift
302
+ clear_mask = (2**total_size - 1) & (~field_mask & (2**total_size - 1))
303
+
304
+ if size == 1
305
+ class_eval <<-METHODS
306
+ def #{field}?
307
+ val = (self[:#{attr}].to_i & #{field_mask}) >> #{shift}
308
+ val != 0
309
+ end
310
+ def #{field}=(v)
311
+ val = v ? 1 : 0
312
+ self[:#{attr}].value = self[:#{attr}].to_i & #{clear_mask}
313
+ self[:#{attr}].value |= val << #{shift}
314
+ end
315
+ METHODS
316
+ else
317
+ class_eval <<-METHODS
318
+ def #{field}
319
+ (self[:#{attr}].to_i & #{field_mask}) >> #{shift}
320
+ end
321
+ def #{field}=(v)
322
+ self[:#{attr}].value = self[:#{attr}].to_i & #{clear_mask}
323
+ self[:#{attr}].value |= (v & #{2**size - 1}) << #{shift}
324
+ end
325
+ METHODS
316
326
  end
317
- METHODS
327
+
328
+ @bit_fields[attr] = {} if @bit_fields[attr].nil?
329
+ @bit_fields[attr][field] = size
318
330
  end
319
331
 
320
- @bit_fields[attr] = {} if @bit_fields[attr].nil?
321
- @bit_fields[attr][field] = size
332
+ idx -= size
333
+ field = args.shift
322
334
  end
323
-
324
- idx -= size
325
- field = args.shift
326
335
  end
327
- end
328
336
 
329
- # Remove all bit fields defined on +attr+
330
- # @param [Symbol] attr attribute defining bit fields
331
- # @return [void]
332
- # @since 2.8.4
333
- def self.remove_bit_fields_on(attr)
334
- fields = @bit_fields.delete(attr)
335
- return if fields.nil?
336
-
337
- fields.each do |field, size|
338
- undef_method "#{field}="
339
- undef_method(size == 1 ? "#{field}?" : "#{field}")
337
+ # Remove all bit fields defined on +attr+
338
+ # @param [Symbol] attr attribute defining bit fields
339
+ # @return [void]
340
+ # @since 2.8.4
341
+ def remove_bit_fields_on(attr)
342
+ fields = @bit_fields.delete(attr)
343
+ return if fields.nil?
344
+
345
+ fields.each do |field, size|
346
+ undef_method "#{field}="
347
+ undef_method(size == 1 ? "#{field}?" : "#{field}")
348
+ end
340
349
  end
341
350
  end
342
351
 
@@ -405,7 +414,7 @@ module PacketGen
405
414
  # Get all field names
406
415
  # @return [Array<Symbol>]
407
416
  def fields
408
- @ordered_fields ||= self.class.class_eval { @ordered_fields }
417
+ self.class.fields
409
418
  end
410
419
 
411
420
  # Get all optional field name
@@ -435,6 +444,7 @@ module PacketGen
435
444
 
436
445
  # Say if an optional field is present
437
446
  # @return [Boolean]
447
+ # @deprecated Use {#present?} instead.
438
448
  def is_present?(field)
439
449
  Deprecation.deprecated(self.class, __method__, 'present?', klass_method: true)
440
450
  present? field
@@ -507,7 +517,9 @@ module PacketGen
507
517
  # @return [void]
508
518
  # @raise [BodyError] no body on given object
509
519
  # @raise [ArgumentError] cannot cram +body+ in +:body+ field
520
+ # @deprecated
510
521
  def body=(value)
522
+ Deprecation.deprecated(self.class, __method__)
511
523
  raise BodyError, 'no body field' unless @fields.key? :body
512
524
 
513
525
  case body
@@ -525,6 +537,7 @@ module PacketGen
525
537
  # Force str to binary encoding
526
538
  # @param [String] str
527
539
  # @return [String]
540
+ # @deprecated Will be a private method
528
541
  def force_binary(str)
529
542
  PacketGen.force_binary(str)
530
543
  end
@@ -10,5 +10,5 @@
10
10
  # @author Sylvain Daubert
11
11
  module PacketGen
12
12
  # PacketGen version
13
- VERSION = '2.8.4'
13
+ VERSION = '2.8.5'
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packetgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.4
4
+ version: 2.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Daubert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-02 00:00:00.000000000 Z
11
+ date: 2018-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: interfacez