The ip command is capable of adding routes to the table that simultaneously define the next-hop and interface.
The current set protocols static route, set protocols static interface-route , and their respective IPv6 sister commands do not reflect this capability. Attempting to use both of these command sets at once causes weird routing table entries, while ip works as expected.
I suggest the following syntax:
set protocols static route <CIDR> next-hop <ADDR>/blackhole set protocols static route <CIDR> interface <DEV> set protocols static route <CIDR> distance <1-255> set protocols static route <CIDR> dhcp-interface set protocols static route <CIDR> disable
or
set protocols static route <CIDR> next-hop <ADDR> set protocols static route <CIDR> interface <DEV> set protocols static route <CIDR> distance <1-255> set protocols static route <CIDR> dhcp-interface set protocols static route <CIDR> status blackhole set protocols static route <CIDR> status disable
or
set protocols static route <CIDR> next-hop <ADDR> set protocols static route <CIDR> interface <DEV> set protocols static route <CIDR> distance <1-255> set protocols static route <CIDR> dhcp-interface set protocols static route <CIDR> blackhole set protocols static route <CIDR> disable
With any necessary changes also made to the ipv6 command variants.
I'm not familiar enough with the code base to tell if this is actually a limitation of Quagga or not.