module Network.Types.ICMPv6 (
ICMPv6Type(..)
, ICMPv6CodeNum(..)
, ICMPv6Code(..)
, icmpv6CodesForType
, icmpv6TypeToStringNum
, icmpv6TypeFromStringNum
, icmpv6TypeToNum
, isICMPv6TypeDeprecated
) where
import Data.String (IsString)
import Data.Word (Word8)
newtype ICMPv6TypeNum = ICMPv6TypeNum Word8
data ICMPv6Type
= ICMPv6TypeUnknown
| ICMPv6Type0Reserved
| ICMPv6Type1DestinationUnreachable
| ICMPv6Type2PacketTooBig
| ICMPv6Type3TimeExceeded
| ICMPv6Type4ParameterProblem
| ICMPv6Type100PrivateExperimentation
| ICMPv6Type101PrivateExperimentation
| ICMPv6Type127ReservedForExpansionOfIcmpv6ErrorMessages
| ICMPv6Type128EchoRequest
| ICMPv6Type129EchoReply
| ICMPv6Type130MulticastListenerQuery
| ICMPv6Type131MulticastListenerReport
| ICMPv6Type132MulticastListenerDone
| ICMPv6Type133RouterSolicitation
| ICMPv6Type134RouterAdvertisement
| ICMPv6Type135NeighborSolicitation
| ICMPv6Type136NeighborAdvertisement
| ICMPv6Type137RedirectMessage
| ICMPv6Type138RouterRenumbering
| ICMPv6Type139IcmpNodeInformationQuery
| ICMPv6Type140IcmpNodeInformationResponse
| ICMPv6Type141InverseNeighborDiscoverySolicitationMessage
| ICMPv6Type142InverseNeighborDiscoveryAdvertisementMessage
| ICMPv6Type143Version2MulticastListenerReport
| ICMPv6Type144HomeAgentAddressDiscoveryRequestMessage
| ICMPv6Type145HomeAgentAddressDiscoveryReplyMessage
| ICMPv6Type146MobilePrefixSolicitation
| ICMPv6Type147MobilePrefixAdvertisement
| ICMPv6Type148CertificationPathSolicitationMessage
| ICMPv6Type149CertificationPathAdvertisementMessage
| ICMPv6Type150IcmpMessagesUtilizedByExperimentalMobilityProtocolsSuchAsSeamoby
| ICMPv6Type151MulticastRouterAdvertisement
| ICMPv6Type152MulticastRouterSolicitation
| ICMPv6Type153MulticastRouterTermination
| ICMPv6Type154Fmipv6Messages
| ICMPv6Type155RplControlMessage
| ICMPv6Type156Ilnpv6LocatorUpdateMessage
| ICMPv6Type157DuplicateAddressRequest
| ICMPv6Type158DuplicateAddressConfirmation
| ICMPv6Type159MplControlMessage
| ICMPv6Type160ExtendedEchoRequest
| ICMPv6Type161ExtendedEchoReply
| ICMPv6Type200PrivateExperimentation
| ICMPv6Type201PrivateExperimentation
| ICMPv6Type255ReservedForExpansionOfIcmpv6InformationalMessages
deriving stock (Bounded, Eq, Enum, Ord, Show)
newtype ICMPv6CodeNum = ICMPv6CodeNum Word8
data ICMPv6Code
= ICMPv6CodeUnknown
| ICMPv6Type1Code0
| ICMPv6Type1Code1
| ICMPv6Type1Code2
| ICMPv6Type1Code3
| ICMPv6Type1Code4
| ICMPv6Type1Code5
| ICMPv6Type1Code6
| ICMPv6Type1Code7
| ICMPv6Type1Code8
| ICMPv6Type2Code0
| ICMPv6Type3Code0
| ICMPv6Type3Code1
| ICMPv6Type4Code0
| ICMPv6Type4Code1
| ICMPv6Type4Code2
| ICMPv6Type4Code3
| ICMPv6Type4Code4
| ICMPv6Type4Code5
| ICMPv6Type4Code6
| ICMPv6Type4Code7
| ICMPv6Type4Code8
| ICMPv6Type4Code9
| ICMPv6Type4Code10
| ICMPv6Type128Code0
| ICMPv6Type129Code0
| ICMPv6Type130Code0
| ICMPv6Type131Code0
| ICMPv6Type132Code0
| ICMPv6Type133Code0
| ICMPv6Type134Code0
| ICMPv6Type135Code0
| ICMPv6Type136Code0
| ICMPv6Type137Code0
| ICMPv6Type138Code0
| ICMPv6Type138Code1
| ICMPv6Type138Code255
| ICMPv6Type139Code0
| ICMPv6Type139Code1
| ICMPv6Type139Code2
| ICMPv6Type140Code0
| ICMPv6Type140Code1
| ICMPv6Type140Code2
| ICMPv6Type141Code0
| ICMPv6Type142Code0
| ICMPv6Type144Code0
| ICMPv6Type145Code0
| ICMPv6Type146Code0
| ICMPv6Type147Code0
| ICMPv6Type157Code0
| ICMPv6Type157Code1
| ICMPv6Type157Code2
| ICMPv6Type157Code3
| ICMPv6Type157Code4
| ICMPv6Type158Code0
| ICMPv6Type158Code1
| ICMPv6Type158Code2
| ICMPv6Type158Code3
| ICMPv6Type158Code4
| ICMPv6Type160Code0
| ICMPv6Type161Code0
| ICMPv6Type161Code1
| ICMPv6Type161Code2
| ICMPv6Type161Code3
| ICMPv6Type161Code4
icmpv6CodesForType :: ICMPv6Type -> [ICMPv6Code]
icmpv6CodesForType ty = case ty of
ICMPv6TypeUnknown -> []
ICMPv6Type0Reserved -> [
]
ICMPv6Type1DestinationUnreachable -> [
ICMPv6Type1Code0,
ICMPv6Type1Code1,
ICMPv6Type1Code2,
ICMPv6Type1Code3,
ICMPv6Type1Code4,
ICMPv6Type1Code5,
ICMPv6Type1Code6,
ICMPv6Type1Code7,
ICMPv6Type1Code8
]
ICMPv6Type2PacketTooBig -> [
ICMPv6Type2Code0
]
ICMPv6Type3TimeExceeded -> [
ICMPv6Type3Code0,
ICMPv6Type3Code1
]
ICMPv6Type4ParameterProblem -> [
ICMPv6Type4Code0,
ICMPv6Type4Code1,
ICMPv6Type4Code2,
ICMPv6Type4Code3,
ICMPv6Type4Code4,
ICMPv6Type4Code5,
ICMPv6Type4Code6,
ICMPv6Type4Code7,
ICMPv6Type4Code8,
ICMPv6Type4Code9,
ICMPv6Type4Code10
]
ICMPv6Type100PrivateExperimentation -> [
]
ICMPv6Type101PrivateExperimentation -> [
]
ICMPv6Type127ReservedForExpansionOfIcmpv6ErrorMessages -> [
]
ICMPv6Type128EchoRequest -> [
ICMPv6Type128Code0
]
ICMPv6Type129EchoReply -> [
ICMPv6Type129Code0
]
ICMPv6Type130MulticastListenerQuery -> [
ICMPv6Type130Code0
]
ICMPv6Type131MulticastListenerReport -> [
ICMPv6Type131Code0
]
ICMPv6Type132MulticastListenerDone -> [
ICMPv6Type132Code0
]
ICMPv6Type133RouterSolicitation -> [
ICMPv6Type133Code0
]
ICMPv6Type134RouterAdvertisement -> [
ICMPv6Type134Code0
]
ICMPv6Type135NeighborSolicitation -> [
ICMPv6Type135Code0
]
ICMPv6Type136NeighborAdvertisement -> [
ICMPv6Type136Code0
]
ICMPv6Type137RedirectMessage -> [
ICMPv6Type137Code0
]
ICMPv6Type138RouterRenumbering -> [
ICMPv6Type138Code0,
ICMPv6Type138Code1,
ICMPv6Type138Code255
]
ICMPv6Type139IcmpNodeInformationQuery -> [
ICMPv6Type139Code0,
ICMPv6Type139Code1,
ICMPv6Type139Code2
]
ICMPv6Type140IcmpNodeInformationResponse -> [
ICMPv6Type140Code0,
ICMPv6Type140Code1,
ICMPv6Type140Code2
]
ICMPv6Type141InverseNeighborDiscoverySolicitationMessage -> [
ICMPv6Type141Code0
]
ICMPv6Type142InverseNeighborDiscoveryAdvertisementMessage -> [
ICMPv6Type142Code0
]
ICMPv6Type143Version2MulticastListenerReport -> [
]
ICMPv6Type144HomeAgentAddressDiscoveryRequestMessage -> [
ICMPv6Type144Code0
]
ICMPv6Type145HomeAgentAddressDiscoveryReplyMessage -> [
ICMPv6Type145Code0
]
ICMPv6Type146MobilePrefixSolicitation -> [
ICMPv6Type146Code0
]
ICMPv6Type147MobilePrefixAdvertisement -> [
ICMPv6Type147Code0
]
ICMPv6Type148CertificationPathSolicitationMessage -> [
]
ICMPv6Type149CertificationPathAdvertisementMessage -> [
]
ICMPv6Type150IcmpMessagesUtilizedByExperimentalMobilityProtocolsSuchAsSeamoby -> [
]
ICMPv6Type151MulticastRouterAdvertisement -> [
]
ICMPv6Type152MulticastRouterSolicitation -> [
]
ICMPv6Type153MulticastRouterTermination -> [
]
ICMPv6Type154Fmipv6Messages -> [
]
ICMPv6Type155RplControlMessage -> [
]
ICMPv6Type156Ilnpv6LocatorUpdateMessage -> [
]
ICMPv6Type157DuplicateAddressRequest -> [
ICMPv6Type157Code0,
ICMPv6Type157Code1,
ICMPv6Type157Code2,
ICMPv6Type157Code3,
ICMPv6Type157Code4
]
ICMPv6Type158DuplicateAddressConfirmation -> [
ICMPv6Type158Code0,
ICMPv6Type158Code1,
ICMPv6Type158Code2,
ICMPv6Type158Code3,
ICMPv6Type158Code4
]
ICMPv6Type159MplControlMessage -> [
]
ICMPv6Type160ExtendedEchoRequest -> [
ICMPv6Type160Code0
]
ICMPv6Type161ExtendedEchoReply -> [
ICMPv6Type161Code0,
ICMPv6Type161Code1,
ICMPv6Type161Code2,
ICMPv6Type161Code3,
ICMPv6Type161Code4
]
ICMPv6Type200PrivateExperimentation -> [
]
ICMPv6Type201PrivateExperimentation -> [
]
ICMPv6Type255ReservedForExpansionOfIcmpv6InformationalMessages -> [
]
icmpv6TypeToStringNum :: IsString a => ICMPv6Type -> a
icmpv6TypeToStringNum t = case t of
ICMPv6Type0Reserved -> "0"
ICMPv6Type1DestinationUnreachable -> "1"
ICMPv6Type2PacketTooBig -> "2"
ICMPv6Type3TimeExceeded -> "3"
ICMPv6Type4ParameterProblem -> "4"
ICMPv6Type100PrivateExperimentation -> "100"
ICMPv6Type101PrivateExperimentation -> "101"
ICMPv6Type127ReservedForExpansionOfIcmpv6ErrorMessages -> "127"
ICMPv6Type128EchoRequest -> "128"
ICMPv6Type129EchoReply -> "129"
ICMPv6Type130MulticastListenerQuery -> "130"
ICMPv6Type131MulticastListenerReport -> "131"
ICMPv6Type132MulticastListenerDone -> "132"
ICMPv6Type133RouterSolicitation -> "133"
ICMPv6Type134RouterAdvertisement -> "134"
ICMPv6Type135NeighborSolicitation -> "135"
ICMPv6Type136NeighborAdvertisement -> "136"
ICMPv6Type137RedirectMessage -> "137"
ICMPv6Type138RouterRenumbering -> "138"
ICMPv6Type139IcmpNodeInformationQuery -> "139"
ICMPv6Type140IcmpNodeInformationResponse -> "140"
ICMPv6Type141InverseNeighborDiscoverySolicitationMessage -> "141"
ICMPv6Type142InverseNeighborDiscoveryAdvertisementMessage -> "142"
ICMPv6Type143Version2MulticastListenerReport -> "143"
ICMPv6Type144HomeAgentAddressDiscoveryRequestMessage -> "144"
ICMPv6Type145HomeAgentAddressDiscoveryReplyMessage -> "145"
ICMPv6Type146MobilePrefixSolicitation -> "146"
ICMPv6Type147MobilePrefixAdvertisement -> "147"
ICMPv6Type148CertificationPathSolicitationMessage -> "148"
ICMPv6Type149CertificationPathAdvertisementMessage -> "149"
ICMPv6Type150IcmpMessagesUtilizedByExperimentalMobilityProtocolsSuchAsSeamoby -> "150"
ICMPv6Type151MulticastRouterAdvertisement -> "151"
ICMPv6Type152MulticastRouterSolicitation -> "152"
ICMPv6Type153MulticastRouterTermination -> "153"
ICMPv6Type154Fmipv6Messages -> "154"
ICMPv6Type155RplControlMessage -> "155"
ICMPv6Type156Ilnpv6LocatorUpdateMessage -> "156"
ICMPv6Type157DuplicateAddressRequest -> "157"
ICMPv6Type158DuplicateAddressConfirmation -> "158"
ICMPv6Type159MplControlMessage -> "159"
ICMPv6Type160ExtendedEchoRequest -> "160"
ICMPv6Type161ExtendedEchoReply -> "161"
ICMPv6Type200PrivateExperimentation -> "200"
ICMPv6Type201PrivateExperimentation -> "201"
ICMPv6Type255ReservedForExpansionOfIcmpv6InformationalMessages -> "255"
ICMPv6TypeUnknown -> "?"
icmpv6TypeFromStringNum :: (Eq a, IsString a) => a -> ICMPv6Type
icmpv6TypeFromStringNum s = case s of
"0" -> ICMPv6Type0Reserved
"1" -> ICMPv6Type1DestinationUnreachable
"2" -> ICMPv6Type2PacketTooBig
"3" -> ICMPv6Type3TimeExceeded
"4" -> ICMPv6Type4ParameterProblem
"100" -> ICMPv6Type100PrivateExperimentation
"101" -> ICMPv6Type101PrivateExperimentation
"127" -> ICMPv6Type127ReservedForExpansionOfIcmpv6ErrorMessages
"128" -> ICMPv6Type128EchoRequest
"129" -> ICMPv6Type129EchoReply
"130" -> ICMPv6Type130MulticastListenerQuery
"131" -> ICMPv6Type131MulticastListenerReport
"132" -> ICMPv6Type132MulticastListenerDone
"133" -> ICMPv6Type133RouterSolicitation
"134" -> ICMPv6Type134RouterAdvertisement
"135" -> ICMPv6Type135NeighborSolicitation
"136" -> ICMPv6Type136NeighborAdvertisement
"137" -> ICMPv6Type137RedirectMessage
"138" -> ICMPv6Type138RouterRenumbering
"139" -> ICMPv6Type139IcmpNodeInformationQuery
"140" -> ICMPv6Type140IcmpNodeInformationResponse
"141" -> ICMPv6Type141InverseNeighborDiscoverySolicitationMessage
"142" -> ICMPv6Type142InverseNeighborDiscoveryAdvertisementMessage
"143" -> ICMPv6Type143Version2MulticastListenerReport
"144" -> ICMPv6Type144HomeAgentAddressDiscoveryRequestMessage
"145" -> ICMPv6Type145HomeAgentAddressDiscoveryReplyMessage
"146" -> ICMPv6Type146MobilePrefixSolicitation
"147" -> ICMPv6Type147MobilePrefixAdvertisement
"148" -> ICMPv6Type148CertificationPathSolicitationMessage
"149" -> ICMPv6Type149CertificationPathAdvertisementMessage
"150" -> ICMPv6Type150IcmpMessagesUtilizedByExperimentalMobilityProtocolsSuchAsSeamoby
"151" -> ICMPv6Type151MulticastRouterAdvertisement
"152" -> ICMPv6Type152MulticastRouterSolicitation
"153" -> ICMPv6Type153MulticastRouterTermination
"154" -> ICMPv6Type154Fmipv6Messages
"155" -> ICMPv6Type155RplControlMessage
"156" -> ICMPv6Type156Ilnpv6LocatorUpdateMessage
"157" -> ICMPv6Type157DuplicateAddressRequest
"158" -> ICMPv6Type158DuplicateAddressConfirmation
"159" -> ICMPv6Type159MplControlMessage
"160" -> ICMPv6Type160ExtendedEchoRequest
"161" -> ICMPv6Type161ExtendedEchoReply
"200" -> ICMPv6Type200PrivateExperimentation
"201" -> ICMPv6Type201PrivateExperimentation
"255" -> ICMPv6Type255ReservedForExpansionOfIcmpv6InformationalMessages
_ -> ICMPv6TypeUnknown
icmpv6TypeToNum :: ICMPv6Type -> ICMPv6TypeNum
icmpv6TypeToNum t = case t of
ICMPv6Type0Reserved -> ICMPv6TypeNum 0
ICMPv6Type1DestinationUnreachable -> ICMPv6TypeNum 1
ICMPv6Type2PacketTooBig -> ICMPv6TypeNum 2
ICMPv6Type3TimeExceeded -> ICMPv6TypeNum 3
ICMPv6Type4ParameterProblem -> ICMPv6TypeNum 4
ICMPv6Type100PrivateExperimentation -> ICMPv6TypeNum 100
ICMPv6Type101PrivateExperimentation -> ICMPv6TypeNum 101
ICMPv6Type127ReservedForExpansionOfIcmpv6ErrorMessages -> ICMPv6TypeNum 127
ICMPv6Type128EchoRequest -> ICMPv6TypeNum 128
ICMPv6Type129EchoReply -> ICMPv6TypeNum 129
ICMPv6Type130MulticastListenerQuery -> ICMPv6TypeNum 130
ICMPv6Type131MulticastListenerReport -> ICMPv6TypeNum 131
ICMPv6Type132MulticastListenerDone -> ICMPv6TypeNum 132
ICMPv6Type133RouterSolicitation -> ICMPv6TypeNum 133
ICMPv6Type134RouterAdvertisement -> ICMPv6TypeNum 134
ICMPv6Type135NeighborSolicitation -> ICMPv6TypeNum 135
ICMPv6Type136NeighborAdvertisement -> ICMPv6TypeNum 136
ICMPv6Type137RedirectMessage -> ICMPv6TypeNum 137
ICMPv6Type138RouterRenumbering -> ICMPv6TypeNum 138
ICMPv6Type139IcmpNodeInformationQuery -> ICMPv6TypeNum 139
ICMPv6Type140IcmpNodeInformationResponse -> ICMPv6TypeNum 140
ICMPv6Type141InverseNeighborDiscoverySolicitationMessage -> ICMPv6TypeNum 141
ICMPv6Type142InverseNeighborDiscoveryAdvertisementMessage -> ICMPv6TypeNum 142
ICMPv6Type143Version2MulticastListenerReport -> ICMPv6TypeNum 143
ICMPv6Type144HomeAgentAddressDiscoveryRequestMessage -> ICMPv6TypeNum 144
ICMPv6Type145HomeAgentAddressDiscoveryReplyMessage -> ICMPv6TypeNum 145
ICMPv6Type146MobilePrefixSolicitation -> ICMPv6TypeNum 146
ICMPv6Type147MobilePrefixAdvertisement -> ICMPv6TypeNum 147
ICMPv6Type148CertificationPathSolicitationMessage -> ICMPv6TypeNum 148
ICMPv6Type149CertificationPathAdvertisementMessage -> ICMPv6TypeNum 149
ICMPv6Type150IcmpMessagesUtilizedByExperimentalMobilityProtocolsSuchAsSeamoby -> ICMPv6TypeNum 150
ICMPv6Type151MulticastRouterAdvertisement -> ICMPv6TypeNum 151
ICMPv6Type152MulticastRouterSolicitation -> ICMPv6TypeNum 152
ICMPv6Type153MulticastRouterTermination -> ICMPv6TypeNum 153
ICMPv6Type154Fmipv6Messages -> ICMPv6TypeNum 154
ICMPv6Type155RplControlMessage -> ICMPv6TypeNum 155
ICMPv6Type156Ilnpv6LocatorUpdateMessage -> ICMPv6TypeNum 156
ICMPv6Type157DuplicateAddressRequest -> ICMPv6TypeNum 157
ICMPv6Type158DuplicateAddressConfirmation -> ICMPv6TypeNum 158
ICMPv6Type159MplControlMessage -> ICMPv6TypeNum 159
ICMPv6Type160ExtendedEchoRequest -> ICMPv6TypeNum 160
ICMPv6Type161ExtendedEchoReply -> ICMPv6TypeNum 161
ICMPv6Type200PrivateExperimentation -> ICMPv6TypeNum 200
ICMPv6Type201PrivateExperimentation -> ICMPv6TypeNum 201
ICMPv6Type255ReservedForExpansionOfIcmpv6InformationalMessages -> ICMPv6TypeNum 255
ICMPv6TypeUnknown -> ICMPv6TypeNum 0
isICMPv6TypeDeprecated :: ICMPv6Type -> Bool
isICMPv6TypeDeprecated ty = case ty of
ICMPv6Type0Reserved-> False
ICMPv6Type1DestinationUnreachable-> False
ICMPv6Type2PacketTooBig-> False
ICMPv6Type3TimeExceeded-> False
ICMPv6Type4ParameterProblem-> False
ICMPv6Type100PrivateExperimentation-> False
ICMPv6Type101PrivateExperimentation-> False
ICMPv6Type127ReservedForExpansionOfIcmpv6ErrorMessages-> False
ICMPv6Type128EchoRequest-> False
ICMPv6Type129EchoReply-> False
ICMPv6Type130MulticastListenerQuery-> False
ICMPv6Type131MulticastListenerReport-> False
ICMPv6Type132MulticastListenerDone-> False
ICMPv6Type133RouterSolicitation-> False
ICMPv6Type134RouterAdvertisement-> False
ICMPv6Type135NeighborSolicitation-> False
ICMPv6Type136NeighborAdvertisement-> False
ICMPv6Type137RedirectMessage-> False
ICMPv6Type138RouterRenumbering-> False
ICMPv6Type139IcmpNodeInformationQuery-> False
ICMPv6Type140IcmpNodeInformationResponse-> False
ICMPv6Type141InverseNeighborDiscoverySolicitationMessage-> False
ICMPv6Type142InverseNeighborDiscoveryAdvertisementMessage-> False
ICMPv6Type143Version2MulticastListenerReport-> False
ICMPv6Type144HomeAgentAddressDiscoveryRequestMessage-> False
ICMPv6Type145HomeAgentAddressDiscoveryReplyMessage-> False
ICMPv6Type146MobilePrefixSolicitation-> False
ICMPv6Type147MobilePrefixAdvertisement-> False
ICMPv6Type148CertificationPathSolicitationMessage-> False
ICMPv6Type149CertificationPathAdvertisementMessage-> False
ICMPv6Type150IcmpMessagesUtilizedByExperimentalMobilityProtocolsSuchAsSeamoby-> False
ICMPv6Type151MulticastRouterAdvertisement-> False
ICMPv6Type152MulticastRouterSolicitation-> False
ICMPv6Type153MulticastRouterTermination-> False
ICMPv6Type154Fmipv6Messages-> False
ICMPv6Type155RplControlMessage-> False
ICMPv6Type156Ilnpv6LocatorUpdateMessage-> False
ICMPv6Type157DuplicateAddressRequest-> False
ICMPv6Type158DuplicateAddressConfirmation-> False
ICMPv6Type159MplControlMessage-> False
ICMPv6Type160ExtendedEchoRequest-> False
ICMPv6Type161ExtendedEchoReply-> False
ICMPv6Type200PrivateExperimentation-> False
ICMPv6Type201PrivateExperimentation-> False
ICMPv6Type255ReservedForExpansionOfIcmpv6InformationalMessages-> False
ICMPv6TypeUnknown -> False