This is really a huge ball of confusion.
The user asks for a device to bind to, and they want the device which
had a particular name at the time of the call.
If you allow setting this via ifindex, the issues and races are the
same whether the name-->ifindex translation is done before the
sockopt() call or during it.
Furthermore both the name and the ifindex can change (that latter
via module unload/load).
If you want me to consider these changes seriously, talk less about
obtuse issues like symmetry and more about what problems it actually
solves. As far as I can tell, all the same real issues still exist
even if we had this new interface.
In fact, I wouldn't mind if a getsockopt() on SO_BINDTODEVICE returned
BOTH the name and the ifindex in a special structure. Then you could
actually construct a more foolproof mechanism on the user side to try
various ways to get the same device bound to during restart.
Symmetry is over-rated.