use super::{NamedSubver, ProtoKind};
use paste::paste;
macro_rules! def_named {
{ $( $protocol:ident {
$(
$(#[$meta:meta])*
$subver:ident = $num:expr;
)*
})*
} => {paste!{
$($(
$(#[$meta])*
pub const [<$protocol:upper _ $subver>] : NamedSubver = NamedSubver::new(ProtoKind::$protocol, $num);
)*)*
}}
}
def_named! {
Link {
V1 = 1;
V2 = 2;
V3 = 3;
V4 = 4;
V5 = 5;
}
LinkAuth {
ED25519_SHA256_EXPORTER = 3;
}
Relay {
NTOR = 2;
EXTEND_IPv6 = 3;
NTORV3 = 4;
NEGOTIATE_SUBPROTO = 5;
CRYPT_CGO = 6;
}
HSIntro {
V3 = 4;
RATELIM = 5;
}
HSRend {
V3 = 2;
}
HSDir {
V3 = 2;
}
DirCache {
CONSDIFF = 2;
}
Desc {
CROSSSIGN = 2;
NO_TAP = 3;
FAMILY_IDS = 4;
}
Microdesc {
ED25519_KEY = 2;
NO_TAP = 3;
}
Cons {
ED25519_MDS = 2;
}
Padding {
MACHINES_CIRC_SETUP = 2;
}
FlowCtrl {
AUTH_SENDME = 1;
CC = 2;
}
Conflux {
BASE = 1;
}
}