asn1-codec 0.1.0 → 0.2.0
raw patch · 4 files changed
+44/−3 lines, 4 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Language.Asn.Types.Internal: instance Data.Semigroup.Semigroup (Language.Asn.Types.Internal.Subtypes a)
+ Net.Snmp.Decoding: genericTrap :: AsnDecoding GenericTrap
+ Net.Snmp.Decoding: trapPdu :: AsnDecoding TrapPdu
+ Net.Snmp.Types: GenericTrapAuthenticationFailure :: GenericTrap
+ Net.Snmp.Types: GenericTrapColdStart :: GenericTrap
+ Net.Snmp.Types: GenericTrapEgpNeighborLoss :: GenericTrap
+ Net.Snmp.Types: GenericTrapEnterpriseSpecific :: GenericTrap
+ Net.Snmp.Types: GenericTrapLinkDown :: GenericTrap
+ Net.Snmp.Types: GenericTrapLinkUp :: GenericTrap
+ Net.Snmp.Types: GenericTrapWarmStart :: GenericTrap
+ Net.Snmp.Types: TrapPdu :: !ObjectIdentifier -> !Word32 -> !GenericTrap -> !Integer -> !Integer -> [VarBind] -> TrapPdu
+ Net.Snmp.Types: [trapPduAgentAddress] :: TrapPdu -> !Word32
+ Net.Snmp.Types: [trapPduEnterprise] :: TrapPdu -> !ObjectIdentifier
+ Net.Snmp.Types: [trapPduGenericTrap] :: TrapPdu -> !GenericTrap
+ Net.Snmp.Types: [trapPduSpecificTrap] :: TrapPdu -> !Integer
+ Net.Snmp.Types: [trapPduTimeStamp] :: TrapPdu -> !Integer
+ Net.Snmp.Types: [trapPduVariableBindings] :: TrapPdu -> [VarBind]
+ Net.Snmp.Types: data GenericTrap
+ Net.Snmp.Types: data TrapPdu
Files
- asn1-codec.cabal +2/−2
- src/Language/Asn/Types/Internal.hs +2/−1
- src/Net/Snmp/Decoding.hs +24/−0
- src/Net/Snmp/Types.hs +16/−0
asn1-codec.cabal view
@@ -1,5 +1,5 @@ name: asn1-codec-version: 0.1.0+version: 0.2.0 synopsis: Encode and decode ASN.1 description: Add a better description later homepage: https://github.com/andrewthad/asn1-codec@@ -26,7 +26,7 @@ Net.Snmp.Decoding Net.Snmp.Client build-depends:- base >= 4.7 && < 5+ base >= 4.9 && < 5 , integer-gmp , bytestring , contravariant
src/Language/Asn/Types/Internal.hs view
@@ -19,6 +19,7 @@ import Data.ByteString.Builder (Builder) import Data.Text (Text) import Data.Monoid+import Data.Semigroup (Semigroup) import Data.Word import Data.Int import Data.Bits@@ -69,7 +70,7 @@ UniversalValueNull -> UniversalValueNull newtype Subtypes a = Subtypes { getSubtypes :: [Subtype a] }- deriving (Monoid)+ deriving (Semigroup,Monoid) newtype ObjectIdentifier = ObjectIdentifier { getObjectIdentifier :: Vector Integer } deriving (Eq,Ord,Show,Read,Generic)
src/Net/Snmp/Decoding.hs view
@@ -27,6 +27,30 @@ import qualified Data.ByteString.Lazy as LB import qualified Language.Asn.Decoding as AsnDecoding +trapPdu :: AsnDecoding TrapPdu+trapPdu = sequence $ TrapPdu+ <$> required "enterprise" objectIdentifier+ <*> required "agent-addr"+ ( choice+ [ option "internet" $ tag Application 0 Implicit octetStringWord32+ ]+ )+ <*> required "generic-trap" genericTrap+ <*> required "specific-trap" integer+ <*> required "time-stamp" integer+ <*> required "variable-bindings" (sequenceOf varBind)++genericTrap :: AsnDecoding GenericTrap+genericTrap = flip mapFailable integer $ \i -> case i of+ 0 -> Right GenericTrapColdStart+ 1 -> Right GenericTrapWarmStart+ 2 -> Right GenericTrapLinkDown+ 3 -> Right GenericTrapLinkUp+ 4 -> Right GenericTrapAuthenticationFailure+ 5 -> Right GenericTrapEgpNeighborLoss+ 6 -> Right GenericTrapEnterpriseSpecific+ _ -> Left "unrecognized generic-trap number"+ messageV2 :: AsnDecoding MessageV2 messageV2 = sequence $ MessageV2 <$ required "version" integer -- make this actually demand that it's 1
src/Net/Snmp/Types.hs view
@@ -165,5 +165,21 @@ , bulkPduVariableBindings :: !(Vector VarBind) } deriving (Eq,Show) +data TrapPdu = TrapPdu+ { trapPduEnterprise :: !ObjectIdentifier+ , trapPduAgentAddress :: !Word32+ , trapPduGenericTrap :: !GenericTrap+ , trapPduSpecificTrap :: !Integer+ , trapPduTimeStamp :: !Integer+ , trapPduVariableBindings :: [VarBind]+ } +data GenericTrap+ = GenericTrapColdStart+ | GenericTrapWarmStart+ | GenericTrapLinkDown+ | GenericTrapLinkUp+ | GenericTrapAuthenticationFailure+ | GenericTrapEgpNeighborLoss+ | GenericTrapEnterpriseSpecific