| Предыдущий | Следующий |
| ENOPROTOOPT | ENOSR |
EAFNOSUPPORT
Представление адреса не соответствует запрошенному коммуникационному домену
EAFNOSUPPORT возникает для неподдерживаемого или несовместимого семейства адресов. Solaris описывает использование адреса, несовместимого с запрошенным протоколом. POSIX socket() также использует это значение errno, когда реализация не поддерживает указанное семейство адресов.
Это отличается от EPFNOSUPPORT, ошибки семейства протоколов Solaris, и от EPROTONOSUPPORT, который относится к реализации протокола. Распространённая ошибка диагностики — проверять только текст назначения, игнорируя значения sa_familyили домена, переданные вместе с адресом.
Проверяйте семейство адресов и при создании, и при использовании
- Запишите домен сокета и семейство переданной адресной структуры для
bind()илиconnect(). - Убедитесь, что тип и длина структуры соответствуют выбранному семейству; приведение типа может скрыть несовпадение семейств IPv4 и IPv6.
- В двухстековом коде трассируйте разрешение адресов и фильтрацию по семействам, чтобы адрес одного семейства не передавался сокету, созданному для другого.
Ссылки
- Oracle Solaris: каталог errno intro(2)
- POSIX: правила domain, type и protocol для socket()
- POSIX: правила локального адреса bind()
Нужно найти другой код? Найти другой код состояния или ошибки.