В relibc появился системный вызов shutdown и фильтрация пакетов UDP
19.01.2026В сетевом стеке Redox реализованы вызов shutdown для сокетов и фильтрация входящих UDP-пакетов. Добавлен также getsockopt для сетевых сокетов.
Зачем нужен shutdown
close освобождает сокет полностью. shutdown закрывает направление: можно остановить отправку, оставив возможность читать, или наоборот. В TCP это позволяет корректно сообщить собеседнику «я больше не буду писать», не разрывая соединение и не теряя входящие данные.
Без него код, который должен сначала дочитать ответ, а потом закрыть соединение, вынужден либо ждать, либо обрывать связь одновременно в обе стороны. Первое — лишняя задержка, второе — потеря данных.
Функция есть в POSIX и в Linux давно. Для сетевого кода на Rust это обычный вызов, и без него часть привычных приёмов на Redox просто не работала.
Зачем фильтрация UDP
Фильтрация — это правило, по которому часть входящих пакетов отбрасывается. Применений два. Первое: ограничение источника — принимать пакеты только с ожидаемого адреса, то есть примитив, на котором строятся простые реализации протоколов обмена. Второе: отбрасывание мусора, чтобы он не занимал обработку.
На Linux для этого есть механизм присоединения фильтров к сокету и правила в межсетевом экране. Здесь фильтрация реализована в сетевом стеке Redox — как и почти всё в системе, в userspace.
Что именно можно фильтровать и как это задаётся, сводка не уточняет, поэтому подробностей здесь не будет.
Про getsockopt
Функция чтения параметров сокета, реализованная через общий системный вызов Redox. Она читает свойства сокета — состояние, размеры буферов и прочее — по номеру параметра.
Оригинал
Коммит Implement socket shutdown от 19 января 2026 года в репозитории redox-os/base, обёртка в redox-os/relibc того же дня; фильтрация UDP — тот же день. Сводка «This Month in Redox — January 2026», раздел «Networking Improvements»
Упоминаний: 1 · Просмотров: 1