That looks better, let me do a pass over this tomorow.
Address comments, except making the constructor of the test map element explicit, as it makes the test way more complex and the upside is not very clear.
add some regression tests
Renamed variable error -> responseCode, fixed smurf naming, and moved enum to dns.cpp.
Solved Bitcoin-QT test
PR16161 was merged.