To answer your question directly, this is expected behavior by OSPF and not a bug in Quagga.
So first, let's take a look at the DR/BDR section of the RFC.
Designated Router
The Designated Router selected for the attached network. The
Designated Router is selected on all broadcast and NBMA networks
by the Hello Protocol. Two pieces of identification are kept
for the Designated Router: its Router ID and its IP interface
address on the network. The Designated Router advertises link
state for the network; this network-LSA is labelled with the
Designated Router's IP address. The Designated Router is
initialized to 0.0.0.0, which indicates the lack of a Designated
Router.
Backup Designated Router
The Backup Designated Router is also selected on all broadcast
and NBMA networks by the Hello Protocol. All routers on the
attached network become adjacent to both the Designated Router
and the Backup Designated Router. The Backup Designated Router
becomes Designated Router when the current Designated Router
fails. The Backup Designated Router is initialized to 0.0.0.0,
indicating the lack of a Backup Designated Router.
If the BDR field in the Hello packet header is set to 0.0.0.0, it means you do not have a BDR elected.
In your case this is because you have your other router set to a priority of 0, this makes the router ineligible to become a BDR (this is why you see "DROther" and not "BDR"). You just need to set the priority on your other router to something that isn't 0.
Here is the other piece from the RFC for some more context.
Router Priority
An 8-bit unsigned integer. When two routers attached to a
network both attempt to become Designated Router, the one with
the highest Router Priority takes precedence. A router whose
Router Priority is set to 0 is ineligible to become Designated
Router on the attached network. Advertised in Hello packets
sent out this interface.
https://www.ietf.org/rfc/rfc2328.txt
Based on your comment:
I'm trying to prevent any routes with a tag of 12000 from being
redistributed into the MPLS.
Any routes redistributed into OSPF from EIGRP will be OSPF external routes. It is easy to redistribute only internal routes from OSPF into BGP:
router bgp 100
redistribute ospf 1
!
Alternatively, you can use a route map to match a tag and deny redistribution:
route-map FROM_OSPF deny 10
match tag 12000
route-map FROM_OSPF permit 20
!
router bgp 100
redistribute ospf 1 route-map FROM_OSPF
!
You can also use a route map to set the routes with the tag to the BGP community no-advertise
and/or no-export
:
route-map FROM_OSPF permit 10
match tag 12000
set community no-advertise no-export
route-map FROM_OSPF permit 20
!
router bgp 100
redistribute ospf 1 route-map FROM_OSPF
!
Route-Maps for IP Routing Protocol Redistribution Configuration:
Best Answer
In a nutshell, the designated router is the one responsible for synchronizing the LS databases of all routers on the network and flooding LS updates to all other routers. If one of the spokes is the designated router, then all database synchronization and LS update traffic must flow down the spoke link to the DR and then back to the hub and then to the other spoke routers. This is very inefficient and will likely overload the spoke link. In addition, often spoke routers are small with limited memory and processing ability, and may not be able to process all the LS traffic. We set the spokes' priority to 0 to prevent them from accidentally becoming the DR.
I recommend you read OSPF and IS-IS by Jeff Doyle. He goes into much more detail on the role of designated routers and their operation.