Class: SNMP::IpAddress

Inherits:
Object
  • Object
show all
Includes:
BER::Encode
Defined in:
lib/snmp/varbind.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from BER::Encode

#encode_exception, #encode_integer, #encode_length, #encode_null, #encode_object_id, #encode_octet_string, #encode_sequence, #encode_tagged_integer, #encode_tlv, #integer_to_octets

Constructor Details

#initialize(value_data, validate = true) ⇒ IpAddress

Create an IpAddress object. The constructor accepts either a raw four-octet string or a formatted string of integers separated by dots (i.e. “10.1.2.3”). Validation of the format can be disabled by setting the ‘validate’ flag to false.



287
288
289
290
291
292
293
294
295
296
297
# File 'lib/snmp/varbind.rb', line 287

def initialize(value_data, validate=true)
  ip = value_data.to_str
  if (validate)
    if ip.length > 4
      ip = parse_string(ip)
    elsif ip.length != 4
      raise InvalidIpAddress, "Expected 4 octets or formatted string, got #{value_data.inspect}"
    end
  end
  @value = ip
end

Class Method Details

.decode(value_data) ⇒ Object



272
273
274
# File 'lib/snmp/varbind.rb', line 272

def decode(value_data)
  IpAddress.new(value_data, false)
end

Instance Method Details

#==(other) ⇒ Object



321
322
323
324
325
326
327
# File 'lib/snmp/varbind.rb', line 321

def ==(other)
  if other.respond_to? :to_str
    return @value.eql?(other.to_str)
  else
    return false
  end
end

#asn1_typeObject



277
278
279
# File 'lib/snmp/varbind.rb', line 277

def asn1_type
  "IpAddress"
end

#encodeObject



337
338
339
# File 'lib/snmp/varbind.rb', line 337

def encode
  encode_tlv(BER::IpAddress_TAG, @value)
end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


329
330
331
# File 'lib/snmp/varbind.rb', line 329

def eql?(other)
  self == other
end

#hashObject



333
334
335
# File 'lib/snmp/varbind.rb', line 333

def hash
  @value.hash
end

#to_oidObject



315
316
317
318
319
# File 'lib/snmp/varbind.rb', line 315

def to_oid
  oid = ObjectId.new
  @value.each_byte { |b| oid << b }
  oid
end

#to_sObject

Returns a formatted, dot-separated string representing this IpAddress.



309
310
311
312
313
# File 'lib/snmp/varbind.rb', line 309

def to_s
  octets = []
  @value.each_byte { |b| octets << b.to_s }
  octets.join('.')
end

#to_strObject

Returns a raw four-octet string representing this IpAddress.



302
303
304
# File 'lib/snmp/varbind.rb', line 302

def to_str
  @value.dup
end