use netlink_packet_core::{ErrorMessage, NetlinkMessage};
use netlink_packet_route::RouteNetlinkMessage;
use thiserror::Error;
#[derive(Clone, Eq, PartialEq, Debug, Error)]
pub enum Error {
#[error("Received an unexpected message {0:?}")]
UnexpectedMessage(NetlinkMessage<RouteNetlinkMessage>),
#[error("Received a netlink error message {0}")]
NetlinkError(ErrorMessage),
#[error("A netlink request failed")]
RequestFailed,
#[error("Namespace error {0}")]
NamespaceError(String),
#[error(
"Received a link message (RTM_GETLINK, RTM_NEWLINK, RTM_SETLINK or RTMGETLINK) with an invalid hardware address attribute: {0:?}."
)]
InvalidHardwareAddress(Vec<u8>),
#[error("Failed to parse an IP address: {0:?}")]
InvalidIp(Vec<u8>),
#[error("Failed to parse a network address (IP and mask): {0:?}/{1:?}")]
InvalidAddress(Vec<u8>, Vec<u8>),
#[error("Attempting to set and Invalid NLA: {0}")]
InvalidNla(String),
}