NetSNMP 0.3.2.2 → 0.3.2.3
raw patch · 2 files changed
+11/−8 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- NetSNMP.cabal +1/−1
- src/Network/Protocol/NetSNMP.hsc +10/−7
NetSNMP.cabal view
@@ -1,5 +1,5 @@ name: NetSNMP-version: 0.3.2.2+version: 0.3.2.3 synopsis: Bindings for net-snmp's C API for clients description: Network.Protocol.NetSNMP is a partial binding to the library portion of the net-snmp package. It uses the
src/Network/Protocol/NetSNMP.hsc view
@@ -367,14 +367,14 @@ -- * snmpBulkWalk \"localhost\" \"public\" [1,3,6,1,2,1,1] -- -- * snmpBulkWalk \"tcp:localhost:5161\" \"mypassword\" [1,3,6,1,2,1,1]-snmpBulkWalk +snmpBulkWalk :: Hostname -- ^IP or hostname of the agent to be queried. May have -- prefix of @tcp:@ or suffix of @:port@ -> Community -- ^SNMP community (password) -> RawOID -- ^OID to be queried -> IO (Either String [SnmpResult]) snmpBulkWalk hostname community walkoid = snmpBulkWalkN hostname community walkoid 30- + snmpBulkWalkN :: Hostname -- ^IP or hostname of the agent to be queried. May have -- prefix of @tcp:@ or suffix of @:port@@@ -393,12 +393,15 @@ where bulkWalk :: RawOID -> RawOID -> Session -> Trouble [SnmpResult] bulkWalk rootoid startoid session = do- vals <- filter (\r -> oid r `isSubIdOf` rootoid) <$> mkSnmpBulkGet 0 maxReps startoid session- case vals of+ res <- filter (onlySubIds rootoid) <$> mkSnmpBulkGet 0 maxReps startoid session+ let resOids = map oid res+ unless (nub(resOids) == resOids)+ (throwT "OID does not increase. There is a loop somewhere.")+ case res of [] -> return []- rs -> (vals ++) <$> bulkWalk rootoid (oid (last rs)) session- isSubIdOf :: RawOID -> RawOID -> Bool- isSubIdOf oa ob = ob `isPrefixOf` oa+ rs -> (res ++) <$> bulkWalk rootoid (oid (last rs)) session+ onlySubIds :: RawOID -> SnmpResult -> Bool+ onlySubIds rootoid res = rootoid `isPrefixOf` oid res -- getbulk, using session info from a 'data Session' and