Than you should take this approach, I do this all of the time in cisco world, but never with a firewall, since we have numerous bgp speakers ahead of the firewall concept would be similar;
edit " upstream"
set type expanded
config rule
edit 1
set action permit
set regexp " 3549:66001"
next
edit 2
set action permit
set regexp " 1239:66002"
next
edit 3
set action permit
set regexp " 174:66003"
next
end
next
end
and
config router route-map
edit " match-community"
config rule
edit 1
set match-community " upstream"
next
end
next
end
In the above I would tag the routes learned by gblx, sprint and cogent and then any matches I would handle via my route-map/route-policies in my arena.
So you might have to be created and tag certain prefixes or maybe orgination ASes.
In my setup, I tag all my routes from myupstream with an additive community and and then , routes that I want to manipulate for selection ( blackholes, policy routing,etc...) I add or swap communities and have route-map ( ios ) or route-policy ( ios-xr ) to make decision on what' s matched.
This could be something as simple as locl_pref, next-hop or like in your scenarion route-redistribution.
NOTE: If the firewall is directly connected to your upstream, your going to have challenges unless you have the provide tag prefixes ahead and for you.
I hope that helps