The rc script, /etc/rc.d/ipfw, does correctly calls load_rc_config, and loads /etc/rc.conf.d/ipfw - however, revision 190575 added the concept of calling /etc/rc.firewall with the firewall_type passed in as the arguments to the function.
Durning boot, no additional arguments are passed to RC scripts, so, unless /etc/rc.d/ipfw is called manually, or by externals scripts, no firewall type is passed, if not in the global rc.conf files. The /etc/rc.firewall scripts does load rc.conf, rc.conf.local, and defaults, however does not load_rc_config ipfw.
Since rc.firewall loads defaults, the firewall_type is always overwritten from the defaults.
17 of 22 $firewall_ variables are also in defaults and rc.firewall, so to have consistent behavior in freebsd RC, I think rc.firewall should also load_rc_config.
Both correcting ipfw rc script to a allow for an override and legacy support, while adding load_rc_config to the rc.firewall allowing the rc.cond.d configs to correctly work.
Variables in rc.firewall and defaults/rc.conf:
firewall_allowservices="" # List of IPs which have access to firewall_client_net="192.0.2.0/24" # IPv4 Network address for "client" firewall_flags="" # Flags passed to ipfw when type is a file firewall_logdeny="NO" # Set to YES to log default denied incoming firewall_myservices="" # List of TCP ports on which this host firewall_myservices="" # List of TCP ports on which this host firewall_nat_enable="NO" # Enable kernel NAT (if firewall_enable == YES) firewall_nat_flags="" # Additional configuration parameters firewall_nat_interface="" # Public interface or IPaddress to use firewall_nologports="135-139,445 1026,1027 1433,1434" # List of TCP/UDP ports firewall_quiet="NO" # Set to YES to suppress rule display firewall_simple_iif="ed1" # Inside network interface for "simple" firewall_simple_inet="192.0.2.16/28" # Inside network address for "simple" firewall_simple_oif="ed0" # Outside network interface for "simple" firewall_simple_onet="192.0.2.0/28" # Outside network address for "simple" firewall_trusted="" # List of IPs which have full access to this firewall_type="UNKNOWN" # Firewall type (see /etc/rc.firewall)