1pub const IPPROTO_ICMP: u8 = 1;
16pub const IPPROTO_TCP: u8 = 6;
18pub const IPPROTO_UDP: u8 = 17;
20pub const IPPROTO_ICMPV6: u8 = 58;
22
23pub const DEFAULT_PROTO_WHITELIST: u64 = (1u64 << IPPROTO_TCP)
28 | (1u64 << IPPROTO_UDP)
29 | (1u64 << IPPROTO_ICMP)
30 | (1u64 << IPPROTO_ICMPV6);
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn test_default_whitelist_covers_tcp_udp_icmp_icmpv6() {
38 assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_TCP), 0);
39 assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_UDP), 0);
40 assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_ICMP), 0);
41 assert_ne!(DEFAULT_PROTO_WHITELIST & (1u64 << IPPROTO_ICMPV6), 0);
42 assert_eq!(DEFAULT_PROTO_WHITELIST & (1u64 << 47u8), 0);
44 }
45
46 #[test]
47 fn test_default_whitelist_exact_value() {
48 let expected = (1u64 << 6) | (1u64 << 17) | (1u64 << 1) | (1u64 << 58);
49 assert_eq!(DEFAULT_PROTO_WHITELIST, expected);
50 }
51
52 #[test]
53 fn test_ipproto_protocol_numbers() {
54 assert_eq!(IPPROTO_ICMP, 1);
55 assert_eq!(IPPROTO_TCP, 6);
56 assert_eq!(IPPROTO_UDP, 17);
57 assert_eq!(IPPROTO_ICMPV6, 58);
58 }
59}