1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
pub use snafu::{ensure, Backtrace, ErrorCompat, ResultExt, Snafu}; use std::io; use crate::Packet; #[derive(Debug, Snafu)] #[snafu(visibility = "pub")] pub enum TunError { #[snafu(display("fail to create tunnel: {}", source))] CreateTun { source: io::Error }, #[snafu(display("execute shell command \"{}\" fail: {}", cmd, source))] RunShellError { source: io::Error, cmd: String }, #[snafu(display("execute shell command:\n\t{}\nfail:\n\t{}", cmd, result))] ShellResultError { result: String, cmd: String, backtrace: Backtrace, }, #[snafu(display("read error: {}", source))] ReadError { source: io::Error }, #[snafu(display("write error: {}", source))] WriteError { source: io::Error }, #[snafu(display("parse addr to ipNet fail: {}", source))] ParseAddrFail { source: ipnet::AddrParseError }, #[snafu(display("write error: {}", source))] PktWriteError { source: async_channel::SendError<Packet>, },} pub type Result<T, E = TunError> = std::result::Result<T, E>;