pub const IPPROTO_ICMP: u8 = 1;
pub const IPPROTO_TCP: u8 = 6;
pub const IPPROTO_UDP: u8 = 17;
pub const IPPROTO_ICMPV6: u8 = 58;
pub const DEFAULT_PROTO_WHITELIST: u64 = (1u64 << IPPROTO_TCP)
| (1u64 << IPPROTO_UDP)
| (1u64 << IPPROTO_ICMP)
| (1u64 << IPPROTO_ICMPV6);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_whitelist_covers_tcp_udp_icmp_icmpv6() {
assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_TCP), 0);
assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_UDP), 0);
assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_ICMP), 0);
assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_ICMPV6), 0);
assert_eq!(DEFAULT_PROTO_WHITELIST & (1u64 << 47u8), 0);
}
#[test]
fn test_default_whitelist_exact_value() {
let expected = (1u64 << 6) | (1u64 << 17) | (1u64 << 1) | (1u64 << 58);
assert_eq!(DEFAULT_PROTO_WHITELIST, expected);
}
#[test]
fn test_ipproto_protocol_numbers() {
assert_eq!(IPPROTO_ICMP, 1);
assert_eq!(IPPROTO_TCP, 6);
assert_eq!(IPPROTO_UDP, 17);
assert_eq!(IPPROTO_ICMPV6, 58);
}
}