Skip to content

Commit 0bf35f8

Browse files
author
blackhedd
committed
additional packet formats supported
1 parent 3f14b54 commit 0bf35f8

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

lib/net/snmp.rb

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ class SNMP
4444
:primitive => {
4545
},
4646
:constructed => {
47-
0 => :array # GetRequest PDU (RFC1157 pgh 4.1.2)
47+
0 => :array, # GetRequest PDU (RFC1157 pgh 4.1.2)
48+
1 => :array, # GetNextRequest PDU (RFC1157 pgh 4.1.3)
49+
2 => :array # GetResponse PDU (RFC1157 pgh 4.1.4)
4850
}
4951
}
5052
})
@@ -115,6 +117,10 @@ def parse_ber_object ber_object
115117
when 0
116118
send :pdu_type=, :get_request
117119
parse_get_request data
120+
when 1
121+
send :pdu_type=, :get_next_request
122+
# This PDU is identical to get-request except for the type.
123+
parse_get_request data
118124
else
119125
raise Error.new( "unknown snmp-pdu type: #{app_tag}" )
120126
end
@@ -139,6 +145,7 @@ def parse_get_request data
139145
end
140146
private :parse_get_request
141147

148+
142149
def version= ver
143150
unless [0,2].include?(ver)
144151
raise Error.new("unknown snmp-version: #{ver}")
@@ -165,7 +172,7 @@ def community= c
165172

166173
#--
167174
# Syntactic sugar
168-
def add_variable_binding name, value
175+
def add_variable_binding name, value=nil
169176
@variables ||= []
170177
@variables << [name, value]
171178
end
@@ -194,6 +201,17 @@ def pdu_to_ber_string
194201
}
195202
].to_ber_sequence
196203
].to_ber_contextspecific(0)
204+
when :get_next_request
205+
[
206+
request_id.to_ber,
207+
error_status.to_ber,
208+
error_index.to_ber,
209+
[
210+
@variables.map {|n,v|
211+
[n.to_ber_oid, Net::BER::BerIdentifiedNull.new.to_ber].to_ber_sequence
212+
}
213+
].to_ber_sequence
214+
].to_ber_contextspecific(1)
197215
when :get_response
198216
[
199217
request_id.to_ber,

0 commit comments

Comments
 (0)