I have a scenario mocked up in our lab and I am having issues getting the routing worked out. Basically I have a "Branch" router that has a primary connection and a backup connection. The primary connection is running BGP which terminates to a "Branch Headend" router which then redistributes the BGP routes to the rest of the network via EIGRP (shows as External EIGRP with an AD of 170 and metric of 25856. The backup connection is a DMVPN connection that is running EIGRP over GRE that termintes to "DMVPN" router, the branch router is redistributing the LAN network via route-map - the DMVPN router then shares that with the rest of the network (shows as External EIGRP with an AD of 170 and metric of 297244928).
When I shutdown the primary connection on the branch router it flips over to the backup connection and the rest of the network learns of the branch LAN via the backup connection. The problem that I am having is that when I turn on the primary connection the branch flips back over to the primary but the rest of the network still thinks the branch LAN is still located via the backup connection instead of the primary (until I actually shut down the backup connection then the rest of the network adds the primary connection). The AD is the same for both routes and the primary connection has the lower metric so shouldn't that always take precedence? Attached is a Visio of this scenario.
Ok so looks like your issue occurs when BGP learns of the backup route from EIGRP. Initially before the primary link goes down, the headend router would never know of the backup link because it's metric is much better. After the primary link fails, BGP learns of the route and due to the redistribution, it automatically sets the weight to 32768. Thus when the primary link comes back up, with no weight set (aka weight of 0), it is not a preferred route. BGP Best path selection dictates that highest weight is preferred, followed by local preference, etc.
You have a few options with which to fix this.
Set the weight on your BGP neighbor for all learned routes to something higher than 32768
router bgp 65100
neighbor 172.16.0.2 weight 40000
Create a route map set the eigrp redistribution weight to 0 andset the local preference to 90 (lower than the default 100 for routes from your bgp neighbor)
set weight 0
set local-preference 90
router bgp 65100
redistribute eigrp 100 route-map eigrp->bgp
Give that a shot - hope it helps!