Mailing list post about the general scheme of iterating over network ranges, and then iterating over individual addresses within those ranges.
Summary of expected behavior for large/small local/remote combinations
The idea is to automatically do the right thing. Multicast ping large networks when possible, otherwise show an error. Small networks are fine to unicast ping if we can't do multicast. "Large" and "small" are somewhat arbitrary, but the threshold is probably at 232 or below.
Imagine an option -Pm for "multicast ping." This ping type would be the default for local IPv6 networks, just as -PR is the default for local IPv6 networks. Specifying a different ping type like -PS would disable
|Small IPv6 local network||multicast||multicast||unicast|
|Large IPv6 local network||multicast||multicast||error|
|Small IPv6 remote network||unicast||error||unicast|
|Large IPv6 remote network||error||error||error|
We should recognize square bracket notation for IPv6 addresses. https://tools.ietf.org/html/rfc3986#section-3.2.2