use windows_sys::Win32::NetworkManagement::WindowsFilteringPlatform::FWPM_LAYER_ALE_AUTH_CONNECT_V4;use windows_sys::Win32::NetworkManagement::WindowsFilteringPlatform::FWPM_LAYER_ALE_AUTH_CONNECT_V6;use windows_sys::Win32::NetworkManagement::WindowsFilteringPlatform::FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4;use windows_sys::Win32::NetworkManagement::WindowsFilteringPlatform::FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6;use windows_sys::Win32::Networking::WinSock::IPPROTO_ICMP;use windows_sys::Win32::Networking::WinSock::IPPROTO_ICMPV6;use windows_sys::core::GUID;#[derive(Clone, Copy)]pub(super) enum ConditionSpec { User, Protocol(u8), RemotePort(u16),}#[derive(Clone, Copy)]pub(super) struct FilterSpec { pub(super) key: GUID, pub(super) name: &'static str, pub(super) description: &'static str, pub(super) layer_key: GUID, pub(super) conditions: &'static [ConditionSpec],}pub(super) const FILTER_SPECS: &[FilterSpec] = &[ FilterSpec { key: GUID::from_u128(0x9f5f3812_79f0_4fe9_9615_4c2c92d2f0ff), name: "codex_wfp_icmp_connect_v4", description: "Block sandbox-account ICMP connect v4", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V4, conditions: &[ ConditionSpec::User, ConditionSpec::Protocol(IPPROTO_ICMP as u8), ], }, FilterSpec { key: GUID::from_u128(0x87498484_45ab_4510_845e_ece8b791b3bc), name: "codex_wfp_icmp_connect_v6", description: "Block sandbox-account ICMP connect v6", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V6, conditions: &[ ConditionSpec::User, ConditionSpec::Protocol(IPPROTO_ICMPV6 as u8), ], }, FilterSpec { key: GUID::from_u128(0xaf4751de_f874_4a7b_a34d_f0d0f22d1d9b), name: "codex_wfp_icmp_assign_v4", description: "Block sandbox-account ICMP resource assignment v4", layer_key: FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, conditions: &[ ConditionSpec::User, ConditionSpec::Protocol(IPPROTO_ICMP as u8), ], }, FilterSpec { key: GUID::from_u128(0xea10db66_a928_4b2e_a82e_a376a54f93ba), name: "codex_wfp_icmp_assign_v6", description: "Block sandbox-account ICMP resource assignment v6", layer_key: FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, conditions: &[ ConditionSpec::User, ConditionSpec::Protocol(IPPROTO_ICMPV6 as u8), ], }, // NAME_RESOLUTION_CACHE filters are intentionally omitted because ordinary // static filter shapes returned FWP_E_OUT_OF_BOUNDS during validation. FilterSpec { key: GUID::from_u128(0x83172805_f6be_4ae1_9dc6_6847aef04e7f), name: "codex_wfp_dns_53_v4", description: "Block sandbox-account DNS TCP or UDP port 53 v4", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V4, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(53)], }, FilterSpec { key: GUID::from_u128(0xd23b2efb_1efb_46b2_96f3_b0ccda5690c8), name: "codex_wfp_dns_53_v6", description: "Block sandbox-account DNS TCP or UDP port 53 v6", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V6, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(53)], }, FilterSpec { key: GUID::from_u128(0x420b026f_9dc9_4aea_88f4_0f2b9feab39a), name: "codex_wfp_dns_853_v4", description: "Block sandbox-account DNS-over-TLS port 853 v4", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V4, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(853)], }, FilterSpec { key: GUID::from_u128(0x8d917c81_99cc_45e7_84d6_824df860cfb8), name: "codex_wfp_dns_853_v6", description: "Block sandbox-account DNS-over-TLS port 853 v6", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V6, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(853)], }, FilterSpec { key: GUID::from_u128(0xe1d6e0af_ce5f_471b_b2d3_15ca00e966f3), name: "codex_wfp_smb_445_v4", description: "Block sandbox-account SMB port 445 v4", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V4, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(445)], }, FilterSpec { key: GUID::from_u128(0xc2bceca4_66ef_4a0f_ba80_f4f761b8c6f0), name: "codex_wfp_smb_445_v6", description: "Block sandbox-account SMB port 445 v6", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V6, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(445)], }, FilterSpec { key: GUID::from_u128(0xba10c618_84e7_4b83_8f74_36e22b2fa1ff), name: "codex_wfp_smb_139_v4", description: "Block sandbox-account SMB port 139 v4", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V4, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(139)], }, FilterSpec { key: GUID::from_u128(0xfe7f22b8_5cf5_4adb_b2aa_71fc0a8f5d44), name: "codex_wfp_smb_139_v6", description: "Block sandbox-account SMB port 139 v6", layer_key: FWPM_LAYER_ALE_AUTH_CONNECT_V6, conditions: &[ConditionSpec::User, ConditionSpec::RemotePort(139)], },];