75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/netsnmp/varbind.rb', line 75
def convert_to_asn(typ, value)
asn_type = typ
asn_val = value
if typ.is_a?(Symbol)
asn_type = case typ
when :ipaddress then 0
when :counter32
asn_val = [value].pack("N*")
asn_val = asn_val[1..-1] while asn_val[0] == "\x00".b && asn_val[1].unpack1("B") != "1"
1
when :gauge
asn_val = [value].pack("N*")
asn_val = asn_val[1..-1] while asn_val[0] == "\x00".b && asn_val[1].unpack1("B") != "1"
2
when :timetick
return Timetick.new(value).to_asn
when :opaque then 4
when :nsap then 5
when :counter64
asn_val = [
(value >> 96) & 0xFFFFFFFF,
(value >> 64) & 0xFFFFFFFF,
(value >> 32) & 0xFFFFFFFF,
value & 0xFFFFFFFF
].pack("NNNN")
asn_val = asn_val[1..-1] while asn_val.start_with?("\x00")
6
when :uinteger then 7
else
raise Error, "#{typ}: unsupported application type"
end
end
OpenSSL::ASN1::ASN1Data.new(asn_val, asn_type, :APPLICATION)
end
|