@@ -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