ekko 0.1.1

Ekko is a simple utility for sending echo requests, giving you (mostly) everything you need.
Documentation
use thiserror::{Error};

#[derive(Error, Debug)]
pub enum EkkoError {
    #[error("Socket send, reason: {0}")]
    SocketSend(String),
    #[error("Failed to create socket, reason: {0}")]
    SocketCreateIcmpv4(String),
    #[error("Failed to create socket, reason: {0}")]
    SocketCreateIcmpv6(String),
    #[error("Socket failed binding to address: {0}")]
    SocketBindIpv4(String),
    #[error("Socket failed binding to address: {0}")]
    SocketBindIpv6(String),
    #[error("Socket returned no address for responder.")]
    SocketReceiveNoIpv4,
    #[error("Socket returned no address for responder.")]
    SocketReceiveNoIpv6,
    #[error("Cannot combine address '{src:?}' (source) with '{tgt:?}' (target).")]
    SocketIpMismatch { src: String, tgt: String },
    #[error("Could not set sockets receive buffer size.")]
    SocketSetReceiveBufferSize,
    #[error("Could not set sockets read timeout.")]
    SocketSetReadTimeout,
    #[error("Could not set sockets max hops.")]
    SocketSetMaxHops,
    #[error("Failed to read response field: '{0}'")]
    ResponseReadField(&'static str),
    #[error("Failed to read request field: '{0}'")]
    RequestReadField(&'static str),
    #[error("Failed to write Icmpv4 request field: '{0}'")]
    RequestWriteIcmpv4Field(&'static str),
    #[error("Failed to write Icmpv6 request field: '{0}'")]
    RequestWriteIcmpv6Field(&'static str),
    #[error("Failed to write request payload.")]
    RequestWriteIcmpv4Payload,
    #[error("Failed to write request payload.")]
    RequestWriteIcmpv6Payload,
    #[error("Failed to create resolver, reason: {0}")]
    ResolverCreate(String),
    #[error("Failed to resolve address for hostname: '{0}'")]
    ResolverIpLookup(String),
    #[error("Failed to resolve domain for address: '{0}'")]
    ResolverDomainLookup(String),
    #[error("Failed to retrieve domain from cache for address: '{0}'")]
    ResolverDomainCacheLookup(String),
}