Я пытаюсь написать код, не зависящий от IP, и, как было предложено в различных источниках, я попытался использовать sockaddr_storage. Однако все вызовы API (getaddrinfo, getnameinfo) по-прежнему зависят от struct sockaddr. И переключение между ними - не совсем хороший вариант, это порождает множество других проблем.
И приведение к sockaddr_in и sockaddr_in6 по отдельности как бы побеждает цель моей попытки использовать sockaddr_storage.
Любой, кто эффективно использовал sockaddr_storage при разработке простого приложения клиент-серверного сокета.