module Network.DomainAuth.SPF.Types where
import Data.IP
import Network.DNS (Domain)
import Data.ByteString (ByteString)
data Qualifier = Q_Pass | Q_HardFail | Q_Softfail | Q_Neutral
deriving (Eq,Enum,Bounded,Show)
qualifierSymbol :: ByteString
qualifierSymbol = "+-~?"
data SPF = SPF_IPv4Range Qualifier (AddrRange IPv4)
| SPF_IPv6Range Qualifier (AddrRange IPv6)
| SPF_Address Qualifier (Maybe Domain) (Int,Int)
| SPF_MX Qualifier (Maybe Domain) (Int,Int)
| SPF_Include Qualifier Domain
| SPF_All Qualifier
| SPF_Redirect Domain
deriving Show
data SpfSeq = SS_All Qualifier
| SS_IPv4Range Qualifier (AddrRange IPv4)
| SS_IPv6Range Qualifier (AddrRange IPv6)
| SS_IPv4Ranges Qualifier [AddrRange IPv4]
| SS_IPv6Ranges Qualifier [AddrRange IPv6]
| SS_IF_Pass Qualifier [IO SpfSeq]
| SS_SpfSeq [IO SpfSeq]