use std::fmt;
#[allow(non_camel_case_types)]
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum Error {
NATPMP_ERR_INVALIDARGS,
NATPMP_ERR_SOCKETERROR,
NATPMP_ERR_CANNOTGETGATEWAY,
NATPMP_ERR_CLOSEERR,
NATPMP_ERR_RECVFROM,
NATPMP_ERR_NOPENDINGREQ,
NATPMP_ERR_NOGATEWAYSUPPORT,
NATPMP_ERR_CONNECTERR,
NATPMP_ERR_WRONGPACKETSOURCE,
NATPMP_ERR_SENDERR,
NATPMP_ERR_FCNTLERROR,
NATPMP_ERR_GETTIMEOFDAYERR,
NATPMP_ERR_UNSUPPORTEDVERSION,
NATPMP_ERR_UNSUPPORTEDOPCODE,
NATPMP_ERR_UNDEFINEDERROR,
NATPMP_ERR_NOTAUTHORIZED,
NATPMP_ERR_NETWORKFAILURE,
NATPMP_ERR_OUTOFRESOURCES,
NATPMP_TRYAGAIN,
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Error::NATPMP_ERR_INVALIDARGS => write!(f, "invalid arguments"),
Error::NATPMP_ERR_SOCKETERROR => write!(f, "socket failed"),
Error::NATPMP_ERR_CANNOTGETGATEWAY => {
write!(f, "cannot get default gateway ip address")
}
Error::NATPMP_ERR_CLOSEERR => write!(f, "close failed"),
Error::NATPMP_ERR_RECVFROM => write!(f, "recvfrom failed"),
Error::NATPMP_ERR_NOPENDINGREQ => write!(f, "no pending request"),
Error::NATPMP_ERR_NOGATEWAYSUPPORT => write!(f, "the gateway does not support nat-pmp"),
Error::NATPMP_ERR_CONNECTERR => write!(f, "connect failed"),
Error::NATPMP_ERR_WRONGPACKETSOURCE => {
write!(f, "packet not received from the gateway")
}
Error::NATPMP_ERR_SENDERR => write!(f, "send failed"),
Error::NATPMP_ERR_FCNTLERROR => write!(f, "fcntl failed"),
Error::NATPMP_ERR_GETTIMEOFDAYERR => write!(f, "get time failed"),
Error::NATPMP_ERR_UNSUPPORTEDVERSION => {
write!(f, "unsupported nat-pmp version error from server")
}
Error::NATPMP_ERR_UNSUPPORTEDOPCODE => {
write!(f, "unsupported nat-pmp opcode error from server")
}
Error::NATPMP_ERR_UNDEFINEDERROR => write!(f, "undefined nat-pmp server error"),
Error::NATPMP_ERR_NOTAUTHORIZED => write!(f, "not authorized"),
Error::NATPMP_ERR_NETWORKFAILURE => write!(f, "network failure"),
Error::NATPMP_ERR_OUTOFRESOURCES => write!(f, "nat-pmp server out of resources"),
Error::NATPMP_TRYAGAIN => write!(f, "try again"),
}
}
}
impl std::error::Error for Error {}