I believe that release planning and iteration planning are both required. You can have a plan in mind and think about every aspect of it then when it is time to be released, will you just release it depending on what you think will be most ideal for you? It does not work that way, unfortunately.
What you need to do is to plan both things which means that D. is the answer to this question. Release planning will hold information about when the features will be implemented well. It is also needed in order to monitor the project well. If this would not be planned, it can be problematic for the whole plan. It is always ideal that both will be planned instead of just doing iteration planning.
I have a doubt of this answer , since I can not imagine that we could have a plan and start working without release planning ? When shall I write the user stories and discuss the overall backlog and decide the number of iteration needed then ? If we managed to have this discussion in the iteration planning then the planing will take more than the defined time boxing , I think that both are required