Создание сокетов IPv4 и IPv6 для ядра Linux: ошибки EPROTONOSUPPORT и ESOCKTNOSUPPORT

Я пытаюсь понять реализации ядра Linux для сокетов IPv4 и IPv6.

Оба метода inet_create() а также inet6_create() выглядит очень похоже. Они оба могут вернуться в пользовательское пространство EPROTONOSUPPORT или же ESOCKTNOSUPPORT Интересно, при каких обстоятельствах это может произойти.

1 ответ

Решение

ESOCKTNOSUPPORT означает, что тип сокета не поддерживается для выбранного протокола. Например, вы не можете создать SOCK_SEQPACKET с IPPROTO_IP, Согласно справочной странице ip(7), только SOCK_STREAM, SOCK_DGRAM а также SOCK_RAW допустимые типы сокетов для ip.

EPROTONOSUPPORT означает, что выбранный протокол сокета не поддерживается. Например, если вы попросите AF_INET6 и системный администратор отключил IPv6 путем внесения в черный список модуля.

Другие вопросы по тегам