So the "Proper use of self" post made me ponder about the proper use of "quick". My ruleset consists of a lot of "quick" rules (more than 90%) because in my mind its faster to stop evaluating any further rules if it isn't needed. But it feels weird that every rule I write now always has "quick" and it's making me wonder if that's wrong because nearly all other pf ruleset's I see don't use "quick" so much. Is heavy use of "quick" bad / be avoided or am I just writing my rules wrong? I am actually curious myself how nearly all my rules devolved into being "quick".
Here is an example of some rules for ipv6 I have: ``` ..// More rules above # Allow ipv6 NDP neighbor solicitation and neighbor advertisements # to/from our router. Packets sent to the router will not be forwarded # to other subnets. Pass in rule must come before our urpf-failed check. pass in quick on !egress inet6 proto icmp6 from <local_src_addrs_ipv6> to ff02::1:ff00:0/104 icmp6-type neighbrsol pass out quick on !egress inet6 proto icmp6 from (self) to { fe80::/10 fc00::/7 ff02::1:ff00:0/104 2000::/3 } icmp6-type neighbrsol pass in quick on !egress inet6 proto icmp6 to { (self) ff02::1 } icmp6-type neighbradv pass out quick on !egress inet6 proto icmp6 from (self) to { fe80::/10 fc00::/7 ff02::1 2000::/3 } icmp6-type neighbradv # Allow ipv6 NDP router solicitation to our router and router advertisements from our router pass in quick on !egress inet6 proto icmp6 from <local_src_addrs_ipv6> to ff02::2 icmp6-type routersol pass out quick on !egress inet6 proto icmp6 from (self) to { ff02::1 fe80::/10 fc00::/7 } icmp6-type routeradv # RFC951 Allow BOOTP/DHCP DISCOVER in the scenario that the router is # the intended bootp server or the router is a bootp client. If required # across subnets additional rules will be required. This rule must come # before the check on urpf-failed rule as that rule will explicitly # block these packets pass in quick on !egress inet proto udp from port bootpc to { (self) 255.255.255.255 } port bootps no state pass out quick on !egress proto udp from (self) port bootpc to port bootps ### block packets that fail a reverse path check. we look up the routing ### table, check to make sure that the outbound is the same as the source ### it came in on. if not, it is probably source address spoofed. ### No need for antispoof rules with this rule. block in log quick from urpf-failed # Allow ipv6 MLDv2/3 packets (the ipv6 version of IGMP) to reach and be # sent from router # https://en.wikipedia.org/wiki/Multicast_Listener_Discovery pass in quick on !egress proto icmp6 to ff02::16 icmp6-type listenrep pass in quick on !egress proto icmp6 to ff02::2 icmp6-type listendone pass out quick on !egress inet6 proto icmp6 from (self) to <localnet_multicast> icmp6-type listqry pass quick on !egress proto udp to <localnet_multicast> ..// More rules below ``` Thanks, Adonis