В 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