#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u8)]
pub enum Socks5Method {
None = 0x00,
GssApi = 0x01,
UserPass = 0x02,
IanaAssigned(u8),
Private(u8),
Unacceptable = 0xff,
}
impl From<u8> for Socks5Method {
fn from(value: u8) -> Self {
match value {
0x00 => Self::None,
0x01 => Self::GssApi,
0x02 => Self::UserPass,
0x03..=0x7f => Self::IanaAssigned(value),
0x80..=0xfe => Self::Private(value),
0xff => Self::Unacceptable,
}
}
}
impl Into<u8> for Socks5Method {
fn into(self) -> u8 {
match self {
Self::None => 0x00,
Self::GssApi => 0x01,
Self::UserPass => 0x02,
Self::IanaAssigned(value) => value,
Self::Private(value) => value,
Self::Unacceptable => 0xff,
}
}
}