snmp 0.2.0.0 → 0.2.0.1
raw patch · 2 files changed
+14/−6 lines, 2 files
Files
- snmp.cabal +1/−1
- src/Network/Snmp/Client/Version3.hs +13/−5
snmp.cabal view
@@ -1,5 +1,5 @@ name: snmp-version: 0.2.0.0+version: 0.2.0.1 synopsis: API for write snmp client. description: API for write snmp client. license: BSD3
src/Network/Snmp/Client/Version3.hs view
@@ -35,7 +35,7 @@ data ST = ST { authCache' :: IORef (Maybe ByteString) , privCache' :: IORef (Maybe ByteString)- , engine' :: IORef (Maybe (ByteString, Int32, Int32))+ , engine' :: IORef (Maybe (ByteString, ContextEngineID, Int32, Int32)) , ref' :: IORef Int32 , salt32 :: IORef Int32 , salt64 :: IORef Int64@@ -71,7 +71,7 @@ } -init' :: ST -> IO (ByteString, Int32, Int32)+init' :: ST -> IO (ByteString, ContextEngineID, Int32, Int32) init' st = withSocketsDo $ do rid <- predCounter (ref' st) sendAll (socket' st) $ encode $ packet' rid@@ -79,8 +79,9 @@ case result of Left _ -> throwIO TimeoutException Right resp -> do- atomicWriteIORef (engine' st) $ Just (getEngineIdP resp, getEngineBootsP resp, getEngineTimeP resp) - return (getEngineIdP resp, getEngineBootsP resp, getEngineTimeP resp)+ let pdu = (getPDU resp :: PDU V3)+ atomicWriteIORef (engine' st) $ Just (getEngineIdP resp, getContextEngineID pdu, getEngineBootsP resp, getEngineTimeP resp) + return (getEngineIdP resp, getContextEngineID pdu, getEngineBootsP resp, getEngineTimeP resp) where packet' x = ( setIDP (ID x) . setMaxSizeP (MaxSize 1500)@@ -163,7 +164,7 @@ packet st suite r = do rid <- predCounter (ref' st) eid' <- readIORef (engine' st)- (eid, boots, time) <- case eid' of+ (eid, ceid, boots, time) <- case eid' of Just x -> return x Nothing -> init' st let wrapBulk (GetBulk rid' x _) = GetBulk rid' x 10@@ -172,6 +173,7 @@ . (setPrivAuthP (securityLevel' st)) . (setUserNameP (login' st)) . (setEngineIdP eid)+ . (setContextEngineIDPacket ceid) . (setEngineBootsP boots) . (setEngineTimeP time) . (setAuthenticationParametersP cleanPass) @@ -180,6 +182,12 @@ . (setSuite suite) ) v3 return full++setContextEngineIDPacket :: ContextEngineID -> Packet -> Packet+setContextEngineIDPacket ceid packet =+ let pdu = (getPDU packet :: PDU V3)+ newpdu = setContextEngineID ceid pdu+ in setPDU newpdu packet sendPacket :: ST -> Packet -> IO ()