use binrw::binrw;
pub mod arch;
pub mod connect;
pub mod cryptography;
pub mod trans;
pub mod userauth;
#[cfg(doc)]
use trans::{KexEcdhInit, KexEcdhReply};
macro_rules! message {
($( $name:ident($path:path) ),+ $(,)?) => {
#[non_exhaustive]
#[binrw]
#[derive(Debug, Clone)]
#[brw(big)]
pub enum Message {
$(
#[doc = concat!("See [`", stringify!($path), "`] for more details.")]
$name($path)
),+
}
};
}
message! {
Disconnect(trans::Disconnect),
Ignore(trans::Ignore),
Unimplemented(trans::Unimplemented),
Debug(trans::Debug),
ServiceRequest(trans::ServiceRequest),
ServiceAccept(trans::ServiceAccept),
KexInit(trans::KexInit),
NewKeys(trans::NewKeys),
AuthRequest(userauth::Request),
AuthFailure(userauth::Failure),
AuthSuccess(userauth::Success),
AuthBanner(userauth::Banner),
GlobalRequest(connect::GlobalRequest),
RequestSuccess(connect::RequestSuccess),
ChannelOpen(connect::ChannelOpen),
ChannelOpenConfirmation(connect::ChannelOpenConfirmation),
ChannelOpenFailure(connect::ChannelOpenFailure),
ChannelWindowAdjust(connect::ChannelWindowAdjust),
ChannelData(connect::ChannelData),
ChannelExtendedData(connect::ChannelExtendedData),
ChannelEof(connect::ChannelEof),
ChannelClose(connect::ChannelClose),
ChannelRequest(connect::ChannelRequest),
ChannelSuccess(connect::ChannelSuccess),
ChannelFailure(connect::ChannelFailure),
}