It's not clear to me if dropping support for this functionality was intentional.

Chain of events:

- #21689 removed test coverage due to a misunderstanding due, I believe, to this functionality being generally supported by all platforms except macOS which does not and returns a different format
- #21756 removed support and caused this regression
- #21690 restores the test coverage that would have caught this regression

Currently, neither the test coverage before #21689 nor the coverage restored by #21690 pass since the merge of #21756.

{
    if (!valid || !addr.IsValid() || network.m_net != addr.m_net)
        return false;
    switch (network.m_net) {
    case NET_IPV4:
    case NET_IPV6:
        break;
    case NET_ONION:
    case NET_I2P:
    case NET_CJDNS:
    case NET_INTERNAL:
        return addr == network;
    case NET_UNROUTABLE:
    case NET_MAX:
        return false;
    }
    assert(network.m_addr.size() == addr.m_addr.size());
    for (size_t x = 0; x < addr.m_addr.size(); ++x) {
        if ((addr.m_addr[x] & netmask[x]) != network.m_addr[x]) {
            return false;
        }
    }
    return true;
}
std::string CSubNet::ToString() const