An interesting case of how DUAL route FSM operates.
First let’s note that an EIGRP router send a Query to its neighbor to find a better route to a destination that has passed from Passive to Active state; that is actively searching for a new feasible route to a destination that no more satisfies the Feasibility Condition.
After EIGRP packet generic input processing, a router that receives a Query message checks if corresponding route is Passive or Active.
If router is Passive for this route and neighbor reported an unreachable metric, by means of 0xffffffff put in the field corresponding to the cumulative Delay part of Metric, a reply is sent immediately to this neighbor hinting him to consider rather information contained in Reply message.
If metric is not unreachable, then router considers checking FC condition by adding Query information to its computation. If FC condition is still met, it replies to its neighbor. If Not, it put its own prefix in Active state. Further, it sends a Reply to its neighbor if does not correspond to the current Successor. If the Query was received from the Successor only the Query Origin code is set to 3 in FSM (event IE2). Otherwise, it is set to 1 (FSM event IE3).
If router is Active for this route upon reception of the Query message, then it changes the current route Query Origin code to corresond to 2 (FSM event IE10), if the message was received from the Successor. Otherwise, it sends a Reply to this neighbor.
It is interesting to see that whenever the router considers it has a better route to a destination it replies to its neighbor.
If it considers that it may not have the best route, route is passed to Active state and it replies back to the neighbor provided that it’s not the current route Successor.