I've noticed that all the firewall4 entries except for link-local use iifname/oifname which does a string comparison and is resource intensive. Wouldn't it be possible for firewall4 to use iif/oif exclusively given that it reloads automatically on any interface change?